Commit Graph
24345 Commits
Author SHA1 Message Date
jhendersonHDF 81326fd1d6 Remove 'set -e' from Maven testing scripts (#6262) 2026-03-04 16:26:50 -06:00
Scot Breitenfeld 6e7fec1cc2 Update release progress badges to use Priority-based categorization (#6270)
* Update release progress badges to use Priority-based categorization

- Replace "Release Blockers"/"Release Must Do" with "Critical Priority"/"High Priority"
- Switch issue filtering from Release gating field to Priority field (P0 - Critical/P1 - High)
- Remove "Nice to Have" badge from workflow and README
- Add failure step: on workflow error, update both badge gist files to bright
  purple (BF00FF) with "FAILURE" message
- Version auto-detected from src/H5public.h for milestone filtering

* Fix stale class docstring: release blocker -> priority issue
2026-03-04 16:11:52 -06:00
bmribler 889e48b655 Changes release page to 2.1.0 (#6221) 2026-03-04 10:13:42 -06:00
jhendersonHDF 4d85efdcd2 Remove concurrency group setting from AOCC workflow (#6254) 2026-03-03 06:59:48 -06:00
Matt L fbb9049ba5 Update documentation for heap ID and vlen data (#6246) 2026-03-01 07:19:26 -06:00
Scot Breitenfeld 322b30b6e8 Fix POSIX header guard to include _WIN32 for Intel icx on Windows (#6244)
Intel's icx compiler defines _WIN32 (with underscore) but not WIN32,
causing unistd.h and other POSIX headers to be incorrectly included
on Windows builds.
2026-03-01 07:19:05 -06:00
jhendersonHDF 757bc31319 Update AOCC workflow concurrency group (#6237)
Prevent AOCC workflows from being cancelled when pushes are made
to develop branch on merge of PRs
2026-02-27 12:45:42 -07:00
Scot Breitenfeld ceb978cdcd workflow will no longer post that maven comment to PRs (#6238) 2026-02-26 11:07:18 -06:00
H. Joe Lee 4fbdc01b2a chore: fix typo (#6240)
`aws-c-library` -> `aws-c-s3 library`
2026-02-26 09:22:43 -06:00
Guido Imperiale b074586d9e Apply filters to variable-length data (#6178)
Closes can_apply and set_local filter callbacks skipped for H5T_VARIABLE dtypes #5942. A more detailed explanation of the rationale for this PR is in the linked issue.

Mandatory filters can be now applied to variable-length data. This notably includes h5py object strings and NpyStrings.

Optional filters applied to variable-length data no longer skip can_apply and set_local, only to jump directly to filter. This fixes hdf5_blosc and HDF5_Blosc2, which rely on set_local. Note that all filters which have neither can_apply nor set_local have always worked fine with vlen data, as long as they were tagged as optional. Notable examples are deflate, lzf, bzip2 (from hdf5plugin), and lz4 (also from hdf5plugin).

Lossy filters, such as scale-offset, are and remain untested and most likely broken, as I expect them to treat the vlen metadata as numbers and corrupt it. The right place to ensure proper behaviour is their can_apply function, which however is broken (filters: can_apply does nothing for optional filters #6161).
2026-02-24 17:05:58 -06:00
Scot Breitenfeld a7ec64a857 Split static targets into separate optional target [UPDATED] (#6216)
Build-tree exports can't diverge from install-tree exports — the export(EXPORT ...) reads directly from the install export sets. No manual list to keep in sync.

Removed 3 global variables (HDF5_STATIC_LIBRARIES_TO_EXPORT, HDF5_JAVA_LIBRARIES_TO_EXPORT, HDF5_UTILS_TO_EXPORT) and their ~21 set_global_variable calls across tool/utility files.

Fixed the static-only build bug in the PR where the base export set was guarded by BUILD_SHARED_LIBS, breaking tools export.

Removed redundant utils in export files — the PR was dumping tools into all three build-tree export files (java, static, shared). Now they correctly appear only in the base export.
2026-02-24 17:04:25 -06:00
H. Joe Lee 3bd0f17857 chore: fix grammar (#6227) 2026-02-24 11:04:22 -06:00
jhendersonHDF 3f4d26f90a Skip some parallel example tests for small MPIEXEC_MAX_NUMPROCS values (#6224) 2026-02-23 14:57:10 -06:00
jhendersonHDF 4b1f87332b Suppress some CMake dev warnings for lower message log levels (#6228) 2026-02-23 11:27:14 -06:00
Larry Knox 6349c0426e Add ZLIB_USE_EXTERNAL/SZIP_USE_EXTERNAL for CMakePresets to replace force-setting removed from CMakeFilters.cmake. (#6222) (#6231)
removed force-setting in CMakeFilters.cmake.
2026-02-23 05:09:43 -06:00
Harish RS 33510a52e4 Enable Windows ARM64 CTest CI for release binaries (#6177)
* ci: add Windows ARM64 MSVC CTest job

* ci: add MSYS2 clangarm64 build on Windows ARM64

* cmake: add MSVC ARM64 presets for Windows

* zlib: fix MSVC static library flags for ARM64 builds
2026-02-20 11:04:00 -06:00
Martin Diehl fd72abbbbc Consistent extension for C++ (#6214)
Except for this file, all use cpp instead of cxx. No obvious reason why
the same file types should have different extensions.
2026-02-20 08:59:27 -06:00
jhendersonHDF 5f430099e9 Add CMake function to extract pkg-config info from libraries (#6220) 2026-02-18 12:12:34 -07:00
jhendersonHDFandLarry Knox 920bbeb59a Truncate Subfiling VFD's stub file when truncating subfiles (#6210)
Ensure that the Subfiling VFD's stub file gets truncated when subfiles are
being truncated to avoid a potentially unreadable file when the EOF doesn't
match the stored EOF value

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
2026-02-18 12:09:44 -07:00
jhendersonHDF 5de837660f Remove force-setting of ZLIB_USE_EXTERNAL / SZIP_USE_EXTERNAL (#6222)
Removes the force-setting of ZLIB_USE_EXTERNAL and SZIP_USE_EXTERNAL to
ON when HDF5_ALLOW_EXTERNAL_SUPPORT is GIT or TGZ so that zlib and
szip can be independently built from the system or externally as desired
2026-02-18 11:47:40 -07:00
bmribler 0405678e42 Fixes link checker failure (#6219)
Removed https:// as a workaround to avoid error by the link checker.
2026-02-16 10:29:40 -06:00
Larry Knox 9b290ab389 Add Doxygen setup that results in missing Doygen documentation. (#6217)
* Added setup-doxygen action in ctest.yml Ubuntu gcc workflow.
* Also added actions/checkout for setup-doxygen.
2026-02-13 16:19:36 -06:00
Julien Schueller d58638be09 CMake: Fix Fortran cross-compilation support
Refactor the cross-compilation infrastructure to rely on the standard
CMAKE_CROSSCOMPILING_EMULATOR variable instead of the custom
CROSSCOMPILING_PATH environment hack.

Key changes:
- Removed `ENVIRONMENT "${CROSSCOMPILING_PATH}"` from all test definitions.
- Updated custom commands (e.g., H5match_types, H5_gen) to invoke the
  emulator explicitly when cross-compiling.
- Updated ConfigureChecks.cmake and HDF5UseFortran.cmake to enable
  `try_run` checks when an emulator is defined.
- Added config/toolchain/mingw-w64-x86-64-wine.sh wrapper to automatically
  locate MinGW runtime libraries (like libgfortran) for Wine execution.
- Cleaned up toolchain files to remove hardcoded emulator paths, deferring
  configuration to the build environment.
2026-02-13 14:45:02 -06:00
jhendersonHDF 3748e4308e Fix issue with some Subfiling VFD test files not getting deleted (#6212) 2026-02-13 07:46:46 -06:00
dependabot[bot] 3c617d23a5 Bump the github-actions group across 1 directory with 11 updates (#6215)
* Bump the github-actions group across 1 directory with 11 updates

Bumps the github-actions group with 11 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/cache](https://github.com/actions/cache) | `5.0.1` | `5.0.3` |
| [lukka/get-cmake](https://github.com/lukka/get-cmake) | `4.2.1` | `4.2.3` |
| [softwareforgood/check-artifact-v4-existence](https://github.com/softwareforgood/check-artifact-v4-existence) | `0.3.0` | `0.4.1` |
| [github/codeql-action](https://github.com/github/codeql-action) | `3.31.9` | `4.32.2` |
| [azure/trusted-signing-action](https://github.com/azure/trusted-signing-action) | `0.5.11` | `1.1.0` |
| [cygwin/cygwin-install-action](https://github.com/cygwin/cygwin-install-action) | `7d2dc1e241644c3318bed9ec74115d1929baa681` | `2566376092c4e280f21131be027af3f5bb2420a4` |
| [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials) | `5.1.1` | `6.0.0` |
| [vmactions/freebsd-vm](https://github.com/vmactions/freebsd-vm) | `1.3.4` | `1.4.2` |
| [vmactions/openbsd-vm](https://github.com/vmactions/openbsd-vm) | `1.3.1` | `1.3.5` |
| [mpi4py/setup-mpi](https://github.com/mpi4py/setup-mpi) | `1.4.1` | `1.4.2` |
| [actions/setup-python](https://github.com/actions/setup-python) | `6.1.0` | `6.2.0` |

 vmactions/openbsd-vm@d6c29ce1b4 (`1.3.5`) failed to run ssh on the github runner.  271a1ba62300483cfc58345ff9f425f1349a2cab for v1.3.4 was used instead.
2026-02-13 07:42:14 -06:00
jhendersonHDF 4ded1cbcb4 Inherit Debug C build flags in Developer build mode (#6182) 2026-02-12 22:03:51 -06:00
Larry Knox 4629a812b1 Update nvhpc version to 26.1 with CUDA version 13.1. (#6213)
# branches: [develop]
2026-02-12 20:05:11 -06:00
Scot Breitenfeld 49ae2f225a Updates to #6205 (#6208)
* Fix MPI Fortran configuration for HDF5Examples (#6205)

When building Fortran parallel examples standalone without MPI
wrappers, the compiler cannot find mpi.mod because
MPI_Fortran_INCLUDE_DIRS is not populated.

* Use MPI::MPI_Fortran imported target instead of raw MPI variables

Replace manual MPI_Fortran_LIBRARIES, MPI_Fortran_LINK_FLAGS, and
MPI_Fortran_INCLUDE_DIRS usage with the MPI::MPI_Fortran imported
target, which transitively carries all include dirs, compile flags,
and link flags. This eliminates the CMAKE_Fortran_EXE_LINKER_FLAGS
hack and the manual target_include_directories in H5PAR.
2026-02-12 14:10:39 -06:00
Scot Breitenfeld a46a399230 Fixes the "multiple @param documentation sections" doxygen warnings (#6195)
Addresses the "multiple @ param documentation sections" warnings are caused by the interaction of three things:

1. MACRO_EXPANSION = YES with EXPAND_ONLY_PREDEF = NO in Doxyfile.in

2. Versioned API macros in H5version.h like:

\def documentation in APIVersions.dox like:

3. \def H5Tarray_create \api_vers_2{H5Tarray_create,H5Tarray_create1,H5Tarray_create2}

Because Doxygen expands all macros, it sees H5Tarray_create as an alias for H5Tarray_create1. It then associates documentation from both the \def block (for the macro) and the function's own doc block (with \param entries) with the same function — resulting in "multiple @ param documentation sections."

* Update Doxygen version from 1.16.0 to 1.16.1

Use Doxygen 1.16.1 for all platforms. This version includes the latest
bug fixes and improvements while maintaining compatibility with our
documentation format.

* Fix Windows Doxygen installation for version 1.16.1

Handle different Windows binary naming conventions across Doxygen versions:
- 1.16.1 uses: doxygen-VERSION.windows.x64.bin.zip
- 1.16.0 uses: doxygen-VERSION.x64.bin.zip

Try the newer naming convention first, then fall back to the older one
if the download fails. This ensures compatibility across versions.

* Use ssciwr/doxygen-install in setup-doxygen action

Replace direct installation of official Doxygen binaries with
ssciwr/doxygen-install action. This avoids Java documentation parsing
errors that occur with official binaries but not with distribution
builds.

The setup-doxygen action now serves as a thin wrapper around
ssciwr/doxygen-install@f13be16c83 (v1),
using commit hash for security and reproducibility.

* Remove redundant version specification from workflows

The setup-doxygen action already has a default version (1.16.1),
so explicit version specification in workflows is unnecessary.
This follows DRY principles and makes version updates simpler.
2026-02-12 10:45:17 -06:00
Gerd Heber 58eaa31b6e Add HDF5 2.0.0 Library Migration Guide (#6183)
* Add HDF5 2.0.0 Library Migration Guide

* Revise HDF5 migration guide for version 2.0.0

Use 2.0.0 consistently.

* Clarify API changes in HDF5 2.0.0 Migration Guide
2026-02-10 13:15:18 -06:00
bmribler 95f6df54ac Adds RFCs to the RFC table (#6190)
* Added two RFCs to the RFC table

"Adding support for digitally signed plugins to HDF5"
" Write-Ahead log"

* Updated to use the ACM link
2026-02-10 13:09:43 -06:00
Larry Knox 448ae0a94f Update develop branch version / Clean CHANGELOG.md entries (#6211)
* Advance version to 2.1.1 after creating release branch for 2.1.0
release.

* Update develop branch version to 2.2.0
Clean 2.1.0 entries from CHANGELOG.md

* Add notice for removing alternate release tag to CHANGELOG.md.
Fix typo.

* Fix typo

* Reorder AGE and REVISION for consistent order for all libraries.

* Temporarily remove develop branch restrictions from workflows.

* Revert "Temporarily remove develop branch restrictions from workflows."

This reverts commit abc7039fc5.
2026-02-10 12:09:47 -05:00
Scot Breitenfeld b8b246e14a Fix MPI Fortran configuration for HDF5Examples (#6206)
When building Fortran parallel examples without MPI wrappers, the
compiler couldn't find mpi.mod because MPI_Fortran_INCLUDE_DIRS
was not populated. This occurred because find_package(MPI) was only
called for C, not Fortran.

Added enable_language(Fortran) and find_package(MPI REQUIRED
COMPONENTS Fortran) to properly configure MPI for Fortran examples,
ensuring MPI include directories and libraries are correctly set.
2026-02-06 10:06:35 -06:00
Larry Knox 519bcf787e Update workflow versions (#6202)
* Update versions in workflow files for HDF5 in anticipation of 2.1.0
release.

* Remove hdf5_ appended to tag for binary download.
2026-02-05 18:09:06 -06:00
SY Wang 071e77e9d3 Fix incorrect libsz/libaec entries in hdf5.pc when using libaec to provide SZIP (#6191)
* Update CMakeFilters.cmake
2026-02-04 16:42:16 -06:00
bmribler 8cd9f7a7ba Validate datatype size for consistency (#6173)
User report:
When a file is corrupted such that an array datatype's size, the number of elements,
and the element size are not in agreement, it can trigger an out of bounds read.
(private GH issue: GHSA-gh44-7wpq-622f)
Added a validation to ensure the above are in agreement.
2026-02-03 15:26:51 -06:00
Larry Knox 016e1ddc97 Update ci hdf5config.cmake (#6189)
Ubuntu Clang tests had problems when using KyleMayes/install-llvm-action to install Clang 18.1 on Ubuntu 24.04, because the Clang that it installed needed libtinfo5 not present in the Ubuntu 24.04 image. However, Clang 18.1.3 is part of the Ubuntu 24.04 image and is used when CMAKE_C_COMPILER and CMAKE_CXX_COMPILER are set to "clang" and "clang++".
2026-02-03 10:54:39 -06:00
Neil Fortner d069f15269 Fix CVE-2025-44904 (#6179)
Fix potential buffer overflow due to invalid chunk size reported by chunk index
(CVE-2025-44904)
2026-02-02 16:10:04 -06:00
H. Joe Lee dfd43b677f docs: change .sh to .rpm or .deb for Linux binary distribution (#6113) 2026-02-02 10:11:13 -06:00
Larry Knox 6ce73cd9f9 Update ci hdf5config.cmake to re-enable GitHub daily tests (#6180)
Update CI workflows to use symbolic links instead of copying files to re-enable GitHub daily tests.

Workflows:
    Update analysis.yml, cygwin.yml, and par-script.yml to use symbolic links instead of copying CTestScript.cmake and HDF5config.cmake.
    Update par-source.yml and script.yml similarly to use symbolic links for the same files.

Commands:
    Replace cp with ln -s in Linux workflows.
    Replace Copy-Item with New-Item -ItemType SymbolicLink in Windows workflows.

Purpose:
    Re-enable GitHub daily tests:  linked HDF5config.cmake allows CMake to find the HDF5VersionParsing.cmake file to get the HDF5 version.

Also updated runs-on:  ubuntu-22.04 to ubuntu-latest.
2026-01-29 12:08:40 -06:00
jhendersonHDF 65d831cbe3 Remove unused temp. variables in H5D__chunk_copy (#6176)
Removed some unused temporary variables in H5D__chunk_copy that obscured the
ownership of memory buffers and led to a double-free of the buffers
2026-01-29 09:31:36 -06:00
jhendersonHDFandLarry Knox dd3080a58c Fix double-free issue in H5D__chunk_copy (#6160)
Fix double-free caused by loss of buffer pointer after re-allocation

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
2026-01-27 05:55:38 -06:00
bmribler 9268b803b7 Fixes buffer underflow (#6143)
Fixes security issue by treating non-NULL buffer with size 0 as length-only query in get_name API functions.

Behavior:
Modify get_name API functions to treat (buffer != NULL, size == 0) as length-only queries, preventing undefined behavior.
Fix applied to H5Aget_name, H5Aget_name_by_idx, H5Fget_name, H5Gget_objname_by_idx, H5Iget_name, H5Lget_name_by_idx, H5Rget_file_name, H5Rget_obj_name, H5Rget_attr_name, and 8 other functions.
Tests:
Update test/links.c, test/tattr.c, test/tfile.c, test/titerate.c, and test/trefer.c to verify new behavior with non-null buffer and size 0.
Documentation:
Update comments in H5A.c, H5F.c, H5Gdeprec.c, H5I.c, H5L.c, H5R.c, and H5Rdeprec.c to reflect new behavior.t]@users.noreply.github.com>
2026-01-26 18:07:23 -06:00
Matt L 8ebdb2f6d4 Fix inconsistent empty postfix handling (#6094) 2026-01-24 12:03:19 -06:00
Scot Breitenfeld 5240b804aa Fixes issues caused by #6147 (#6172)
Scope Safety: Refactored parse_hdf5_version from a Macro to a Function to prevent variable namespace pollution.
Implemented a helper macro (_parse_version_component) to handle repetitive regex logic, significantly reducing code size and complexity.
Updated HDF5config.cmake to calculate paths dynamically using REALPATH relative to CMAKE_CURRENT_LIST_FILE, fixing issues with symlinks and execution context.
Decoupled the parsing logic from scope promotion; the helper now parses to a local variable, and the function explicitly handles the PARENT_SCOPE assignment.
2026-01-24 12:02:11 -06:00
Matt L e98e0aa951 Add h5diff message about file object difference (#6103)
* Correct reference files

* Prevent multiple h5diff error messages
2026-01-23 11:34:45 -06:00
Larry Knox 755e278a6a Replace last link with version directory path on support site. (#6165)
* Replace last link with version directory path on support site.
Links for downloading doxygen.zip files will be to the GitHub HDF5
releases page.

* Update config/README.md.cmake.in
2026-01-23 11:33:30 -06:00
jhendersonHDF ed5eceab58 Enable data sieving for chunks that can't be cached (#6111)
* Enable data sieving for chunks that can't be cached

Fixed an issue that prevented use of a data sieve buffer for I/O on dataset
chunks when those chunks couldn't be cached by the library. This issue
could result in worst-case behavior of I/O on a single data element at a
time when chunks are non-contiguous with respect to memory layout.

Added a test to attempt to catch performance regressions in I/O on dataset
chunks that are non-contiguous with respect to memory layout

Updated the External File List logic to set the data sieve buffer size to
the smaller of the dataset size and the size set in the FAPL, similar to
the logic elsewhere in the library
2026-01-23 10:58:11 -06:00
jhendersonHDF 9af6db11b6 Distribute Findlibaec.cmake module for use by HDF5 library consumers (#6159) 2026-01-22 16:14:20 -06:00
Scot BreitenfeldandClaude Sonnet 4.5 16364fe2fa Badges (#6170)
* Fix Release Progress badges and workflow

- Fix update-progress.py to output blocker/mustdo counts in correct format
  The workflow expects blocker_done=, blocker_total=, mustdo_done=, mustdo_total=
  output lines but the script was only outputting human-readable format

- Update README badge links to point to project view 24 instead of base project

This fixes the workflow failures where BLOCKER_DONE and the related environment
variables were not being set, causing badge updates to fail.

The badges were pointing to old unmaintained gists under user X.
Updated to use the gist automatically maintained by the Release Progress
workflow (gist ID: 0ad2eabb63b28eb90d69f5e5b2c1496f).

The workflow now successfully updates these badges every 4 hours with
current release blocker and must-do progress.

The script now auto-detects the HDF5 version from src/H5public.h and
filters release blockers/must-do items by milestone matching that version.

Changes:
- Added get_hdf5_version_from_header() to read version from H5public.h
- Updated GraphQL query to fetch milestone information from issues
- Added milestone filtering logic to only count items for the target release
- Made validation more lenient when using milestone filter (allows 0/0)
- Added MILESTONE_FILTER environment variable for manual override

For develop branch with version 2.1.0 in H5public.h, this will now only
count items with milestone containing "2.1" (e.g., "2.1.0", "HDF5 2.1").

* Add version number to badge labels

The badges now display the version (e.g., "2.1 Release Blockers" instead
of just "Release Blockers") when filtering by milestone.

Changes:
- Python script outputs version to GitHub Actions
- Workflow passes version to badge generation script
- Badge script includes version in label if available
- Labels show "X.Y Release Blockers" / "X.Y Release Must Do"


The three badges now track:
1. Release Blockers - Critical issues that must be resolved
2. Release Must Do - Important items for the release
3. Release Nice to Have - Optional improvements for the release

All three badges show version prefix (e.g., "2.1") and support 0/0
display when no items exist for a milestone.

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-22 14:37:45 -06:00