[ET Trac] [Einstein Toolkit] #767: removing the last REQUIRES item from configuration.ccl leads to build failures

Einstein Toolkit trac-noreply at einsteintoolkit.org
Tue Mar 6 00:22:34 CST 2012


#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.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/767>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list