#1910: ExternalLibraries/HDF5 does not set HDF5_INC_DIRS ----------------------------+----------------------------------------------- Reporter: barry.wardell | Owner: eschnett Type: defect | Status: assigned Priority: unset | Milestone: Component: Other | Version: development version Resolution: | Keywords: ----------------------------+-----------------------------------------------
Comment (by eschnett):
Yes, the logic that sets HDF5_INC_DIRS if it is unset and if a system library is used is missing. The same logic is present in many (I hope all?) other external libraries. I don't know when it got lost; I assume that one of the hacks to improve the user experience broke things.
Clearly, the configuration script has been edited in ways that have more do to with copy-and-paste than understanding shell scripting. For example, internal variables are set via the {{{ : ${var:=value} }}} syntax that only makes sense if {{{var}} might be set before; the traditional distinction between upper case (user input) and lower case (internal) variables has not been kept; user input variables are modified, saved, and restored in the good old ways of BASIC where all variables are global, etc. The whole coding style reeks of "I don't understand what happens, so I'll voodoo some changes in front and in the back of some thing that I treat as black box. Hey -- it doesn't break the tests, so it must be correct".
I've put a lot of effort into clean external libraries over the past years, but I'm giving up now. Apparently too many people think they can dabble, and break things left and right. My fault for not setting up a barrage of virtual machines against which each commit must be tested.
These are the lines that are missing: {{{ # Set options if [ "${FFTW3_DIR}" != 'NO_BUILD' ]; then : ${FFTW3_INC_DIRS="${FFTW3_DIR}/include"} : ${FFTW3_LIB_DIRS="${FFTW3_DIR}/lib"} fi }}} (taken from FFTW3; obviously the library name need to be changed.)
It is left as exercise for the reader to find out where these lines should go.
For the release, I suggest setting HDF5_INC_DIRS manually, together with HDF5_DIR, as well as HDF5_LIB_DIRS and HDF5_LIBS.