From 356b5f331221d0bf051ae11e5fe0e11a5a9ef4a5 Mon Sep 17 00:00:00 2001 From: Ian Giestas Pauli Date: Fri, 7 Feb 2025 16:34:26 -0300 Subject: [PATCH 1/3] In the next release, fpm will support a hdf5 metapackage. --- fpm.toml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/fpm.toml b/fpm.toml index 4f680c3..fcad046 100644 --- a/fpm.toml +++ b/fpm.toml @@ -8,12 +8,6 @@ auto-tests = false auto-examples = false external-modules = ["hdf5", "h5lt"] -# HDF5 >= 1.10.6 -# link = ["hdf5_hl_fortran", "hdf5_fortran", "hdf5_hl", "hdf5"] - -# HDF5 < 1.10.6, and distros that rename the old way such as Ubuntu 22.04 -link = ["hdf5hl_fortran", "hdf5_fortran", "hdf5_hl", "hdf5"] - [install] library = true @@ -80,3 +74,6 @@ main = "test_string.f90" [[test]] name = "version" main = "test_version.f90" + +[dependencies] +hdf5 = '*' From 19c24ffa205f890091fc1bdbaafd402cb2977adf Mon Sep 17 00:00:00 2001 From: Ian Giestas Pauli Date: Fri, 7 Feb 2025 16:35:56 -0300 Subject: [PATCH 2/3] (bugfix) fix #50 --- src/utils.f90 | 5 +++-- src/write.f90 | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/utils.f90 b/src/utils.f90 index b113145..484f5f8 100644 --- a/src/utils.f90 +++ b/src/utils.f90 @@ -311,8 +311,9 @@ write(stderr,*) "ERROR:h5fortran:get_slice: memory size /= dataset size: check variable slice (index). " // & " Dset_dims:", ddims, "C Mem_dims:", c_mem_dims, "mem_dims:", mem_dims, "rank(mem_dims):", rank(mem_dims) error stop "ERROR:h5fortran:get_slice " // dset_name -elseif(any(iend-1 > ddims)) then - write(stderr,*) "ERROR:h5fortran:get_slice: iend: ", iend, ' > dset_dims: ', ddims +elseif(any(iend-istart > ddims)) then + write(stderr,*) "ERROR:h5fortran:get_slice: slice bigger than dataset: check variable slice (index). " // & + " Dset_dims:", ddims, "C Mem_dims:", c_mem_dims, "mem_dims:", mem_dims, "rank(mem_dims):", rank(mem_dims) error stop "ERROR:h5fortran:get_slice " // dset_name endif diff --git a/src/write.f90 b/src/write.f90 index ab5a469..c614283 100644 --- a/src/write.f90 +++ b/src/write.f90 @@ -82,7 +82,7 @@ if (present(istart)) then if(any(istart < 1)) error stop 'ERROR:h5fortran:create: istart must be >= 1' - if(any(iend <= istart)) error stop 'ERROR:h5fortran:create: iend must be > istart' + if(any(iend < istart)) error stop 'ERROR:h5fortran:create: iend must be >= istart' call H5Sget_simple_extent_ndims_f(filespace_id, drank, ier) call estop(ier, "create:H5Sget_simple_extent_ndims", self%filename, dname) @@ -92,7 +92,7 @@ call H5Sget_simple_extent_dims_f(filespace_id, ddims, maxdims, ier) if (ier /= drank) error stop 'ERROR:h5fortran:create: H5Sget_simple_extent_dims: ' // dname // ' in ' // self%filename - if(any(iend > ddims)) error stop 'ERROR:h5fortran:create: iend > dset_dims' // dname // ' in ' // self%filename + if(any(iend - istart > ddims)) error stop 'ERROR:h5fortran:create: iend - istart > dset_dims' // dname // ' in ' // self%filename else if (size(mem_dims) == 0) then !! scalar From 7d05b39b1aa1b81100d7b830ec5fd5430eb8fe13 Mon Sep 17 00:00:00 2001 From: Ian Giestas Pauli Date: Sun, 9 Feb 2025 02:51:56 -0300 Subject: [PATCH 3/3] Solves the line truncation issue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit build/dependencies/h5fortran/src/write.f90:95:132: 95 | if(any(iend - istart > ddims)) error stop 'ERROR:h5fortran:create: iend - istart > dset_dims' // dname // ' in ' // self%filename | 1 Error: Line truncated at (1) [-Werror=line-truncation] build/dependencies/h5fortran/src/write.f90:95:132: 95 | if(any(iend - istart > ddims)) error stop 'ERROR:h5fortran:create: iend - istart > dset_dims' // dname // ' in ' // self%filename | 1 Error: ‘filena’ at (1) is not a member of the ‘hdf5_file’ structure; did you mean ‘filename’? compilation terminated due to -fmax-errors=1. f951: some warnings being treated as errors Compilation failed for object " build_dependencies_h5fortran_src_write.f90.o " stopping due to failed compilation STOP 1 --- src/write.f90 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/write.f90 b/src/write.f90 index c614283..e5a29b8 100644 --- a/src/write.f90 +++ b/src/write.f90 @@ -90,9 +90,11 @@ allocate(ddims(drank), maxdims(drank)) call H5Sget_simple_extent_dims_f(filespace_id, ddims, maxdims, ier) - if (ier /= drank) error stop 'ERROR:h5fortran:create: H5Sget_simple_extent_dims: ' // dname // ' in ' // self%filename + if (ier /= drank) & + error stop 'ERROR:h5fortran:create: H5Sget_simple_extent_dims: ' // dname // ' in ' // self%filename - if(any(iend - istart > ddims)) error stop 'ERROR:h5fortran:create: iend - istart > dset_dims' // dname // ' in ' // self%filename + if(any(iend - istart > ddims)) & + error stop 'ERROR:h5fortran:create: iend - istart > dset_dims' // dname // ' in ' // self%filename else if (size(mem_dims) == 0) then !! scalar