[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