#767: removing the last REQUIRES item from configuration.ccl leads to build failures --------------------+------------------------------------------------------- Reporter: rhaas | Owner: Type: defect | Status: new Priority: minor | Milestone: Component: Cactus | Version: Keywords: | --------------------+------------------------------------------------------- The underlying issue seems to be that changing configuration.ccl does not necessarily rebuild all files the were generated using information in it.
to reproduce: # get a fresh ET checkout (trunk will do) # add to {{{arrangements/EinsteinBase/CoordGauge/configuration.ccl}}} {{{ REQUIRES Carpet }}} # build Cactus # make sure that you have a file {{{configs/et/bindings/Configuration/Thorns/cctki_CoordGauge.h}}}. If such a file does not exists then most likely you did not start from a fresh checkout. touch the other .ccl files and src/Slicing.c in CoordGauge and build again. The file should appear. Make sure that {{{configs/et/build/CoordGauge/Slicing.c.d}}} contains {{{.../configs/et/bindings/include/../Configuration/Thorns/cctki_CoordGauge.h}}} if not, same as above. # remove the {{{REQUIRES}}} line you added # try to build Cactus # the build should fail with: {{{ Checking status of thorn CoordGauge make[2]: *** [make.checked] Error 2 make[1]: *** [/data/rhaas/postdoc/gr/ET/configs/et/lib/libthorn_CoordGauge.a] Error 2 make: *** [et] Error 2 }}} If you make is the buggy version 3.81 then no reason is given. (make SILENT=no or make -d does not help you either)
If you are lucky and have a non buggy version of make (https://savannah.gnu.org/bugs/?15110#comment7) then it might actually tell you that it cannot find {{{ configs/et/bindings/Configuration/Thorns/cctki_CoordGauge.h}}}. To test this touch the file and try to build again. It should work now. Also Slicing.c.d will no longer contain a reference to the offending file.
A workaround is to not unlink {{{cctki_CoordGauge.h}}} in {{{lib/sbin/CreateConfigurationBindings.pl}}} around line 176. This generates an empty file which makes make happy.
To work around the buggy make (to get an error message) one can replace all {{{ -include foo bar baz }}} lines by {{{ -include $(filter-out $(wildcard foo bar baz),foo bar baz)) include $(filter $(wildcard foo bar baz),foo bar baz)) }}} ie use {{{-include}}} for non-existing files and {{{include}}} for existing ones.
The buggy make is what makes this hard, you don't know why the compilation fails and trying to force recompile of CoordGauge by touching any of its .ccl or source files does not help. I usually ended up doing a realclean. Very annoying if this happens on say Kraken.