#1173: ExternalLibraries build environment problems -----------------------------------+---------------------------------------- Reporter: hinder | Owner: Type: defect | Status: new Priority: major | Milestone: Component: EinsteinToolkit thorn | Version: Keywords: zlib hwloc | -----------------------------------+---------------------------------------- After updating to the latest hwloc in ExternalLibraries, I am running into trouble building it. The error is
{{{ ../libtool: line 6000: cd: NO_BUILD/lib: No such file or directory libtool: link: cannot determine absolute directory name of `NO_BUILD/lib' }}}
and I believe that this is caused by my having
{{{ ZLIB_DIR = NO_BUILD }}}
in my optionlist. This causes the following variables to be set:
{{{ ZLIB_INC_DIRS=NO_BUILD/include ZLIB_LIB_DIRS=NO_BUILD/lib ZLIB_DIR=NO_BUILD }}}
and hwloc now has the following references to these variables in its configure.sh script:
{{{ export HWLOC_PCI_CFLAGS="$(echo $(for dir in ${PCIUTILS_INC_DIRS} ${ZLIB_INC_DIRS}; do echo $dir; done | sed -e 's/^/-I/'))" export HWLOC_PCI_LIBS="$(echo $(for dir in ${PCIUTILS_LIB_DIRS} ${ZLIB_LIB_DIRS}; do echo $dir; done | sed -e 's/^/-L/') $(for dir in ${PCIUTILS_LIBS} ${ZLIB_LIBS}; do echo $dir; done | sed -e 's/^/-l/'))" }}}
The zlib configure.sh script has:
{{{ # Set options if [ "${ZLIB_DIR}" = '/usr' -o "${ZLIB_DIR}" = '/usr/local' ]; then ZLIB_INC_DIRS='' ZLIB_LIB_DIRS='' else ZLIB_INC_DIRS="${ZLIB_DIR}/include" ZLIB_LIB_DIRS="${ZLIB_DIR}/lib" fi }}}
I am setting ZLIB_DIR to NO_BUILD and I am not setting ZLIB_INC_DIRS or ZLIB_LIB_DIRS because the linker can find the zlib library without any additional options, but it is not installed in /usr or /usr/local. It is in fact in: {{{ /usr/lib/x86_64-linux-gnu/libz.a /usr/lib/x86_64-linux-gnu/libz.so }}} I think eventually the correct solution, as Erik has suggested in the past, is to attempt to build a small program which uses the library to find out whether any extra options are needed. In this case, this would succeed, and no variables would need to be set.
As a simpler short-term solution, would it be correct to change the conditional to
{{{ if [ "${ZLIB_DIR}" = '/usr' -o "${ZLIB_DIR}" = '/usr/local' -o "${ZLIB_DIR}" = 'NO_BUILD' ]; then }}} ?