Skip to content

H5Fopen check false negative #4347

@hugary1995

Description

@hugary1995

This is a fun corner case. We are trying to build libmesh on Argonne's AURORA. It configures and builds fine, until we try to load an exodus file it reports:

EXODUS: Error: Attempting to open the netcdf-4 file:
	'/lus/flare/projects/ai4ns-composites/scratch/tmplfdetu5k/mesh.exo'
	with a netcdf library that does not support netcdf-4

and indeed, the nc-config in libmesh bin suggests netcdf-4 is disabled.

We then looked into the config.log. The issue is kinda convoluted, but the relevant bits of the log is

configure:61236: checking for hdf5.h
configure:61236: mpicc -c   -Werror=recommended-option  -I/flare/ai4ns-composites/packages/moose/scripts/../petsc/include -I/flare/ai4ns-composites/packages/moose/scripts/../petsc/arch-moose/include -I/flare/ai4ns-composites/packages/moose/petsc/arch-moose/include -I/flare/ai4ns-composites/packages/moose/petsc/include -I/flare/ai4ns-composites/packages/moose/petsc/arch-moose/include -I/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/oneapi-2025.2.0/hdf5-1.14.6-zkruqq7/include  conftest.c >&5
configure:61236: $? = 0
configure:61236: result: yes
configure:61249: checking for HDF5 version >= 1.8.0
configure:61304: mpicc -c   -Werror=recommended-option  -I/flare/ai4ns-composites/packages/moose/scripts/../petsc/include -I/flare/ai4ns-composites/packages/moose/scripts/../petsc/arch-moose/include -I/flare/ai4ns-composites/packages/moose/petsc/arch-moose/include -I/flare/ai4ns-composites/packages/moose/petsc/include -I/flare/ai4ns-composites/packages/moose/petsc/arch-moose/include -I/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/oneapi-2025.2.0/hdf5-1.14.6-zkruqq7/include  conftest.c >&5
configure:61304: $? = 0
configure:61335: result: yes
configure:61340: checking for H5Fopen in -lhdf5
configure:61369: mpicc -o conftest   -Werror=recommended-option  -I/flare/ai4ns-composites/packages/moose/scripts/../petsc/include -I/flare/ai4ns-composites/packages/moose/scripts/../petsc/arch-moose/include -I/flare/ai4ns-composites/packages/moose/petsc/arch-moose/include -I/flare/ai4ns-composites/packages/moose/petsc/include -I/flare/ai4ns-composites/packages/moose/petsc/arch-moose/include -I/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/oneapi-2025.2.0/hdf5-1.14.6-zkruqq7/include  -L/lib -lhdf5 -Wl,-rpath,/lib -Wl,-rpath,/flare/ai4ns-composites/packages/moose/petsc/arch-moose/lib -L/flare/ai4ns-composites/packages/moose/petsc/arch-moose/lib -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/oneapi-2025.2.0/hdf5-1.14.6-zkruqq7/lib -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/oneapi-2025.2.0/hdf5-1.14.6-zkruqq7/lib -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/oneapi-2025.2.0/mpich-develop-git.6037a7a-cym6jg6/lib -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/oneapi-2025.2.0/mpich-develop-git.6037a7a-cym6jg6/lib -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/hwloc-2.12.1-ioadcqu/lib -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/hwloc-2.12.1-ioadcqu/lib -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/libxml2-2.13.5-dhzcbk4/lib -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/libxml2-2.13.5-dhzcbk4/lib -Wl,-rpath,/opt/aurora/25.190.0/support/libraries/khronos/default/lib64 -L/opt/aurora/25.190.0/support/libraries/khronos/default/lib64 -Wl,-rpath,/opt/aurora/25.190.0/oneapi/ishmem/latest/lib -L/opt/aurora/25.190.0/oneapi/ishmem/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/pti/latest/lib -L/opt/aurora/25.190.0/oneapi/pti/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/tcm/latest/lib -L/opt/aurora/25.190.0/oneapi/tcm/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/umf/latest/lib -L/opt/aurora/25.190.0/oneapi/umf/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/ipp/latest/lib -L/opt/aurora/25.190.0/oneapi/ipp/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/ippcp/latest/lib -L/opt/aurora/25.190.0/oneapi/ippcp/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/ccl/latest/lib -L/opt/aurora/25.190.0/oneapi/ccl/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/dal/latest/lib -L/opt/aurora/25.190.0/oneapi/dal/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/dnnl/latest/lib -L/opt/aurora/25.190.0/oneapi/dnnl/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/tbb/latest/lib/intel64/gcc4.8 -L/opt/aurora/25.190.0/oneapi/tbb/latest/lib/intel64/gcc4.8 -Wl,-rpath,/opt/aurora/25.190.0/oneapi/mkl/latest/lib -L/opt/aurora/25.190.0/oneapi/mkl/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/compiler/latest/lib -L/opt/aurora/25.190.0/oneapi/compiler/latest/lib -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/gcc-13.3.0-4enwbrb/lib64 -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/gcc-13.3.0-4enwbrb/lib64 -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/gcc-13.3.0-4enwbrb/lib -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/gcc-13.3.0-4enwbrb/lib -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/mpc-1.3.1-rdrlvsl/lib -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/mpc-1.3.1-rdrlvsl/lib -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/mpfr-4.2.1-gkcdl5w/lib -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/mpfr-4.2.1-gkcdl5w/lib -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/gmp-6.3.0-mtokfaw/lib -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/gmp-6.3.0-mtokfaw/lib -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/gcc-runtime-13.3.0-ghotoln/lib -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/gcc-runtime-13.3.0-ghotoln/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/compiler/2025.2/lib -L/opt/aurora/25.190.0/oneapi/compiler/2025.2/lib -Wl,-rpath,/opt/aurora/25.190.0/oneapi/compiler/2025.2/lib/clang/21/lib/x86_64-unknown-linux-gnu -L/opt/aurora/25.190.0/oneapi/compiler/2025.2/lib/clang/21/lib/x86_64-unknown-linux-gnu -Wl,-rpath,/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/gcc-13.3.0-4enwbrb/lib/gcc/x86_64-pc-linux-gnu/13.3.0 -L/opt/aurora/25.190.0/spack/unified/0.10.1/install/linux-sles15-x86_64/gcc-13.3.0/gcc-13.3.0-4enwbrb/lib/gcc/x86_64-pc-linux-gnu/13.3.0 -lpetsc -lHYPRE -ldmumps -lmumps_common -lpord -lpthread -lscalapack -lsuperlu_dist -lkokkoskernels -lkokkoscontainers -lkokkoscore -lkokkossimd -lflapack -lfblas -lptesmumps -lptscotchparmetisv3 -lptscotch -lptscotcherr -lesmumps -lscotch -lscotcherr -lpthread -lhdf5_hl -lhdf5 -lparmetis -lmetis -lceed -lX11 -lmpifort -lmpi -lifport -lifcoremt_pic -limf -lsvml -lm -lipgo -lirc -lpthread -lgcc_s -lirc_s -ldl -lstdc++  conftest.c -lhdf5    >&5
/usr/bin/ld: /tmp/icx-c2a07f433e/conftest-53cb38.o: in function `main':
conftest.c:(.text+0x0): multiple definition of `main'; /opt/aurora/25.190.0/oneapi/compiler/latest/lib/libifcoremt_pic.a(for_main.o):for_main.c:(.text+0x0): first defined here
/usr/bin/ld: /opt/aurora/25.190.0/oneapi/compiler/latest/lib/libifcoremt_pic.a(for_main.o): in function `main':
for_main.c:(.text+0x28): undefined reference to `MAIN__'
icx: error: linker command failed with exit code 1 (use -v to see invocation)

and ultimately

configure:61412: optional HDF5 library not found, or does not meet version requirements
configure:61445: result: <<< HDF5 support not found or disabled >>>

and since hdf5 is disabled, netcdf-4 is disabled.

Here's my understanding of the error: our AURORA HPC uses intel's compiler. Intel's fortran compiler injects its own main (a stub that calls MAIN__), assuming our true entry point is a Fortran program (though apparently the conftest isn't).

Can we somehow patch the configure.ac so that the HDF5 test does not link PETSc libs or Fortran libs?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions