So I tried compiling HDF5 this morning by hand using all EB CFLAGS as
well as the mentioned extra "-D_FloatXX" flags and it is definitely a
configure (autoconf) issue and how it handles the spaces in e.g.
"-D_Float64=*long double*" when parsing the CFLAGS variable.
At the moment I cannot find any solution as how to solve this. Using
different quotes does not help and I can only find one old thread online
where someone is having similar issues trying to pass a path name
containing spaces, but he could not solve the problem either.
Maybe someone has and idea how to handle this problem?
Best
Sebastian
On 21.11.18 22:21, Sebastian Potthoff wrote:
Hi Kenneth,
thanks for the help. I also read about the triple quotes.
Unfortunately I get the same error as before (from the config.log):
*configure:4560: mpiicc -O2 -xHost -ftz -fp-speculation=safe
-fp-model source -fPIC -D_Float32=float -D_Float64='long double' -I...*
*icc: error #10236: File not found: 'double''*
I will try to compile HDF5 tomorrow by hand to make sure its really an
EB issue and not just related to how configure works or the intel
compiler.
Best
Sebastian
Am 21.11.2018 um 22:06 schrieb Kenneth Hoste <[email protected]
<mailto:[email protected]>>:
Dear Sebastian,
How about this:
preconfigopts = """CFLAGS="$CFLAGS -D_Float32=float -D_Float64='long
double'" """
In Python, you can use triple quotes (""") to define string values
that have both single and double quotes (or newlines) in them.
Note that I'm also avoiding that you're hard overwriting the $CFLAGS
defined by EasyBuild (I need to use double quotes CFLAGS="$CFLAGS
..." to ensure that bash will expand the $CFLAGS with the value
defined by EasyBuild, single quotes would prevent expansion...).
I hope this helps...
regards,
Kenneth
On 21/11/2018 21:43, Sebastian Potthoff wrote:
Dear EasyBuilders,
I need help. I would like to compile HDF5 on the intel-2018b
toolchain. My problem is that the hosts are running on Ubuntu
18.04.1 which means glibc 2.27. This again means some
incompatibilities regarding the intel 2018 compilers, see these two
threads:
https://software.intel.com/en-us/forums/intel-c-compiler/topic/742701
https://software.intel.com/en-us/forums/intel-c-compiler/topic/777003
A workaround for now seems to be to set the following CFLAGS beforehand:
*
*
*-DFloat32=float -D_Float64='long double' -D_Float32x=double
-D_Float64x='long double'*
*
*
When I call mpiicc by hand using those flags (on some test file)
everything seems fine (no complains here).
So I downloaded the HDF5-1.10.2-intel-2018b.eb easyconfig file and
modified it to include *preconfigopts* and *buildopts (*are these
the correct ones btw? HDF5 is using configure*). *For the *opts
lines I tried e.g. the following variants (I didn’t include all of
them for example purposes). The errors I get when I try to build are
in the line below (red):
*preconfigopts = 'CFLAGS="-D_Float32=float -D_Float64=long double“*
*>> config.log >> File not found: 'double'*
*
*
*preconfigopts = 'CFLAGS="-D_Float32=float -D_Float64=\'long double\'"'*
*>> config.log >> File not found: 'double''*
*
*
*preconfigopts = 'CFLAGS="-D_Float32=float -D_Float64="long double""'*
*>> EasyBuild.log >> double: command not found*
*
*
If I only pass one flag without spaces in the argument (e.g.
*'CFLAGS="-D_Float32=float**“'*) it works fine until I run into the
errors mentioned in the two links above.
*
*
I tried many more variants, but I gave up at some point. I am having
some combination of Python string problem with spaces in CFLAGS
variables as well as passing multiple compiler options at once and
how to specify them correctly in the easyconfig file. If someone can
help me out here, I would be very grateful.
Many thanks,
Sebastian