-
Notifications
You must be signed in to change notification settings - Fork 935
Description
I'm trying to build relocatable installations able to install and run in Python environments. As an additional feature, I'm trying to make the builds reproducible, which eventually requires removing hardwired paths to the source or build directory. This can be (partially) accomplished with compiler flags to handle things like __FILE__. But then I discovered that not all sources in 3rd-party/ are compiled with the flags I'm seeing via CFLAGS.
I guess the best way to notice the problem is doing a out-of-source configure with internal libraries. For this test I'm using the sources from the 5.0.5 tarball.
mkdir BUILD && cd BUILD
../configure --with-pmix=internal --with-prrte=internaland after configure is done, within the same BUILD directory, run
grep CFLAGS_BEFORE_PICKY -r 3rd-party/
3rd-party/openpmix/src/util/keyval/Makefile:CFLAGS = $(PMIX_CFLAGS_BEFORE_PICKY)
3rd-party/openpmix/test/python/Makefile:CFLAGS = $(PMIX_CFLAGS_BEFORE_PICKY)
3rd-party/openpmix/test/sshot/Makefile:CFLAGS = $(PMIX_CFLAGS_BEFORE_PICKY)
3rd-party/openpmix/bindings/python/Makefile:CFLAGS = $(PMIX_CFLAGS_BEFORE_PICKY)
3rd-party/prrte/src/mca/rmaps/rank_file/Makefile:CFLAGS = $(PRTE_CFLAGS_BEFORE_PICKY)
3rd-party/prrte/src/util/hostfile/Makefile:CFLAGS = $(PMIX_CFLAGS_BEFORE_PICKY)BTW, note that under prrte, both PRTE_CFLAGS_BEFORE_PICKY and PMIX_CFLAGS_BEFORE_PICKY are used. I suspect the the PMIX_CFLAGS_BEFORE_PICKY one is wrong, the other should be used.
As a workaround, for the v5.0.x tarball, I'm "hotfixing" the unpacked sources the following way:
makefiles=(
3rd-party/openpmix/src/util/keyval/Makefile.in
3rd-party/prrte/src/mca/rmaps/rank_file/Makefile.in
3rd-party/prrte/src/util/hostfile/Makefile.in
)
variables=(
PRTE_CFLAGS_BEFORE_PICKY
PMIX_CFLAGS_BEFORE_PICKY
)
for makefile in "${makefiles[@]}"; do
for variable in "${variables[@]}"; do
echo "$variable = @CFLAGS@" >> "$makefile"
done
done
After this patching, everything works as expected. This is of course not the proper fix. My only point is to prove that the generated Makefile files are missing the assignments (PMIX|PRTE)_CFLAGS_BEFORE_PICKY = ....
I'm not an autotools expert. Maybe the various Makefile.am with lines like:
CFLAGS = $(PRTE_CFLAGS_BEFORE_PICKY)are missing the following line
PRTE_CFLAGS_BEFORE_PICKY = @PRTE_CFLAGS_BEFORE_PICKY@
such that configure can do its magic? NO, this does not seem to make it π .
cc @rhc54