diff --git a/easybuild/easyconfigs/h/HDF5/HDF5-1.14.5-nvompi-2024.09.eb b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.5-nvompi-2024.09.eb new file mode 100644 index 000000000000..df341e4ddef1 --- /dev/null +++ b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.5-nvompi-2024.09.eb @@ -0,0 +1,32 @@ +name = 'HDF5' +# Note: Odd minor releases are only RCs and should not be used. +version = '1.14.5' + +homepage = 'https://portal.hdfgroup.org/display/support' +description = """HDF5 is a data model, library, and file format for storing and managing data. + It supports an unlimited variety of datatypes, and is designed for flexible + and efficient I/O and for high volume and complex data.""" + +toolchain = {'name': 'nvompi', 'version': '2024.9'} +toolchainopts = {'pic': True, 'usempi': True} + + +source_urls = ['https://github.com/HDFGroup/hdf5/archive'] +sources = ['hdf5_%(version)s.tar.gz'] +patches = ['HDF5-1.14.5_nvompi_fix_use_mpi.patch'] +checksums = [ + 'c83996dc79080a34e7b5244a1d5ea076abfd642ec12d7c25388e2fdd81d26350', # hdf5_1.14.5.tar.gz + '60ef02bdd12ae62d3f284d2434728dc6b9bad61ecacc7ab9320001ce3c337df4', # HDF5-1.14.5_nvompi_fix_use_mpi.patch +] + +dependencies = [ + ('zlib', '1.3.1'), + ('Szip', '2.1.1'), +] + +postinstallcmds = [ + 'sed -i -r "s, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g" %(installdir)s/bin/h5c++', + 'sed -i -r "s, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g" %(installdir)s/bin/h5pcc', +] + +moduleclass = 'data' diff --git a/easybuild/easyconfigs/h/HDF5/HDF5-1.14.5_nvompi_fix_use_mpi.patch b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.5_nvompi_fix_use_mpi.patch new file mode 100644 index 000000000000..1ab908b9cc93 --- /dev/null +++ b/easybuild/easyconfigs/h/HDF5/HDF5-1.14.5_nvompi_fix_use_mpi.patch @@ -0,0 +1,88 @@ +# Author: maxim-masterov (SURF) +# What: Align MPI version with other source files from `testpar` and don't use MPI_F08 +diff -Nru hdf5-hdf5_1.14.5.orig/fortran/testpar/async.F90 hdf5-hdf5_1.14.5/fortran/testpar/async.F90 +--- hdf5-hdf5_1.14.5.orig/fortran/testpar/async.F90 2025-05-26 18:01:40.435743000 +0200 ++++ hdf5-hdf5_1.14.5/fortran/testpar/async.F90 2025-05-26 18:28:22.228635794 +0200 +@@ -17,11 +17,7 @@ + + MODULE test_async_APIs + +-#ifdef H5_HAVE_MPI_F08 +- USE MPI_F08 +-#else + USE MPI +-#endif + USE HDF5 + USE TH5_MISC + USE TH5_MISC_GEN +@@ -390,12 +386,7 @@ + + INTEGER :: error ! Error flags + INTEGER(KIND=MPI_INTEGER_KIND) :: mpierror ! MPI error flag +-#ifdef H5_HAVE_MPI_F08 +- TYPE(MPI_COMM) :: comm +- TYPE(MPI_INFO) :: info +-#else + INTEGER(KIND=MPI_INTEGER_KIND) :: comm, info +-#endif + INTEGER(KIND=MPI_INTEGER_KIND) :: mpi_size, mpi_rank + + comm = MPI_COMM_WORLD +@@ -595,12 +586,7 @@ + + INTEGER :: error + INTEGER(KIND=MPI_INTEGER_KIND) :: mpierror ! MPI error flag +-#ifdef H5_HAVE_MPI_F08 +- TYPE(MPI_COMM) :: comm +- TYPE(MPI_INFO) :: info +-#else + INTEGER(KIND=MPI_INTEGER_KIND) :: comm, info +-#endif + INTEGER(KIND=MPI_INTEGER_KIND) :: mpi_size, mpi_rank + + comm = MPI_COMM_WORLD +@@ -728,12 +714,7 @@ + + INTEGER :: error ! Error flags + INTEGER(KIND=MPI_INTEGER_KIND) :: mpierror ! MPI error flag +-#ifdef H5_HAVE_MPI_F08 +- TYPE(MPI_COMM) :: comm +- TYPE(MPI_INFO) :: info +-#else + INTEGER(KIND=MPI_INTEGER_KIND) :: comm, info +-#endif + INTEGER(KIND=MPI_INTEGER_KIND) :: mpi_size, mpi_rank + + comm = MPI_COMM_WORLD +@@ -839,11 +820,7 @@ + + INTEGER :: error ! Error flags + INTEGER(KIND=MPI_INTEGER_KIND) :: mpierror ! MPI error flag +-#ifdef H5_HAVE_MPI_F08 +- TYPE(MPI_COMM) :: comm +-#else + INTEGER(KIND=MPI_INTEGER_KIND) :: comm +-#endif + INTEGER(KIND=MPI_INTEGER_KIND) :: mpi_size, mpi_rank + + INTEGER(SIZE_T) :: count +@@ -1267,6 +1244,7 @@ + PROGRAM async_test + USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_INT64_T + USE test_async_APIs ++ USE MPI + + IMPLICIT NONE + +@@ -1275,11 +1253,7 @@ + INTEGER(KIND=MPI_INTEGER_KIND) :: mpi_size ! number of processes in the group of communicator + INTEGER(KIND=MPI_INTEGER_KIND) :: mpi_rank ! rank of the calling process in the communicator + INTEGER(KIND=MPI_INTEGER_KIND) :: required, provided +-#ifdef H5_HAVE_MPI_F08 +- TYPE(MPI_DATATYPE) :: mpi_int_type +-#else + INTEGER(KIND=MPI_INTEGER_KIND) :: mpi_int_type +-#endif + + INTEGER(HID_T) :: vol_id + INTEGER :: hdferror