1182 Commits
Author SHA1 Message Date
Scot Breitenfeld 8f2c548743 Fix runExecute.cmake: restore ERROR_APPEND and fix zero-or-more mask patterns (#6484)
* Fix runExecute.cmake: restore ERROR_APPEND and fix zero-or-more mask patterns

Three bugs were introduced when runTest.cmake was refactored into runExecute.cmake:

1. ERROR_APPEND=1 support was dropped. Tests that redirect their error-stack
   output to stderr and rely on ERROR_APPEND to combine it with stdout before
   comparison (e.g. H5TEST-err_compat, H5TEST-error_test) fail silently because
   the reference file never matches the truncated actual output.

2. " line [0-9]*" uses zero-or-more digits, so it matches " line " (with zero
   digits) in already-masked reference text like " line (number)", prepending
   another "(number)" and producing " line (number)(number)".

3. "HDF5 [1-9]*[.][0-9]*..." has the "HDF5 " prefix and uses [1-9]* (zero-or-
   more), so it does not match "2.2.0" in actual output (blocked by the leading
   "("), and double-masks "version (number)" in the reference.
   "H5Eget_auto[1-2]*" / "H5Eset_auto[1-2]*" have the same zero-or-more issue,
   double-masking "(1 or 2)" already present in reference files.

Fix: restore ERROR_APPEND handling; change * to + for all digit/char class
quantifiers that can match zero occurrences in already-masked reference text;
remove the "HDF5 " prefix from the version pattern. Same fix applied to
HDF5Examples/config/cmake/runExecute.cmake which has identical bugs.

* Fix AOCC CI: source setenv_AOCC.sh from its actual install location

install.sh generates setenv_AOCC.sh inside the aocc-compiler-VERSION/
directory (where it runs from), not in the repo root one level up.

* Fix AOCC CI: replace hardcoded runner paths with GITHUB_WORKSPACE

All /home/runner/work/hdf5/hdf5/ paths were hardcoded to the HDFGroup/hdf5
repo name. Running the workflow in any fork (e.g. brtnfld/hdf5_swmr_2)
puts the checkout under a different path, breaking AOCC/OpenMPI install,
configure, and build steps. Use $GITHUB_WORKSPACE / ${{ github.workspace }}
so the paths resolve correctly regardless of repo name.

* fix(aocc): source setenv_AOCC.sh from workspace root, not compiler subdir

install.sh places setenv_AOCC.sh in the workspace root, not inside the
aocc-compiler-X.X.X/ directory.

* Fix runExecute.cmake: anchor HDF5 version regex to full token

Replace the over-broad version pattern with one that matches the complete
'HDF5 (x.y.z)' token, preventing over-matching of IP addresses and other
version-like strings, and avoiding nested substitution artifacts in .err
reference comparisons. Applied identically to both copies of the file.
2026-06-30 14:05:00 -05:00
Aleksandar Jelenak 55d179733c Fix HTTP 403 errors in ROS3 VFD for object keys that need URI encoding (#6441)
The ROS3 VFD appended the raw object key to the HTTP request path.
Because the signing configuration disables use_double_uri_encode (the
correct setting for S3), the SigV4 signer uses the request path
verbatim, so keys containing characters that AWS requires to be
percent-encoded -- such as '=' in Hive-style "key=value" partition
prefixes, '+', or spaces -- produced signatures that disagree with
S3's server-side recomputation. S3 rejects such requests with
SignatureDoesNotMatch, surfaced as a bodyless HTTP 403 that is
indistinguishable from a permissions error on a HEAD request, even
though other S3 clients (AWS CLI, boto3, s3fs) could read the same
objects.
2026-06-12 08:16:37 -04:00
Scot Breitenfeld a957dd480d Improve HDF5_BUILD_PARALLEL_TOOLS docs and MFU not-found message (#6428)
* cmake: improve HDF5_BUILD_PARALLEL_TOOLS documentation and MFU error message

The option description for HDF5_BUILD_PARALLEL_TOOLS was too terse to be
useful — it did not mention the required MFU, CIRCLE, or DTCMP external
libraries, nor that HDF5_ENABLE_PARALLEL must also be ON. Expand it with
the dependency list and a link to the mpiFileUtils project.

- CMakeBuildOptions.cmake: rephrase HDF5_BUILD_PARALLEL_TOOLS description
  to "Build MPI-enabled HDF5 tools" (shorter, forward-compatible)
2026-06-03 14:15:44 -05:00
86bdc78365 ✨[Feature] Digital Signature Verification for HDF5 Plugins (#6198)
feat: add optional digital signature verification for HDF5 filter plugins

Introduce an opt-in plugin signing and verification system that allows
HDF5 deployments to require cryptographically signed filter plugins before
loading them. Disabled by default (HDF5_REQUIRE_SIGNED_PLUGINS=OFF).

New tool: h5sign
- Signs plugin shared libraries by appending an RSA signature and a
  14-byte footer (algo_id | sig_len | 8-byte magic | format_ver) to the
  binary without modifying the original content.
- Supports SHA-512 (default), SHA-256, SHA-384, and their PSS variants
  (-a/--algorithm flag).
- Detects already-signed plugins; --force strips the old signature and
  re-signs.
- Security hardened: keeps the file descriptor open through hashing and
  appending (no TOCTOU window), enforces a 2048-bit minimum RSA key size,
  rolls back partial writes on failure, and rejects paths that are not
  regular files.

Verification (H5PLsig.c)
- At plugin load time, reads the footer, validates the magic and format
  version, then checks the RSA signature against all public keys found in
  the KeyStore directory.
- File is hashed once; per-key verification operates on the pre-computed
  digest (no redundant I/O for multi-key keystores).
- Plugins whose signature hash appears in revoked_signatures.txt are
  rejected regardless of key validity.
- Runtime debug output via HDF5_DEBUG=pl.

KeyStore management
- Trusted public keys are PEM files in a directory specified by
  HDF5_PLUGIN_KEYSTORE_DIR (build time) or HDF5_PLUGIN_KEYSTORE (env var).
- HDF5_LOCK_PLUGIN_KEYSTORE cmake option disables the env-var override for
  security-hardened deployments.

Test infrastructure
- h5signverifytest: positive, negative, tamper, re-sign, and revocation
  test cases.
- CTest fixture-based dependency graph (FIXTURES_SETUP/FIXTURES_REQUIRED)
  replaces fragile DEPENDS chains so tests remain correct under -R filtering.
- Dedicated signed-plugins.yml CI workflow; full test suite scoped to
  H5SIGN and H5PLUGIN-signature tests to avoid unrelated flaky failures.
- Cross-platform: Linux, macOS, and Windows (MSVC-compatible, BIO-based
  OpenSSL I/O, HDsleep/HDsetenv portability wrappers).

Documentation: docs/PLUGIN_SIGNATURE_README.md covers usage, footer
format, revocation file format, FAQ, and troubleshooting.

Co-authored-by: Glenn Song <gsong@hdfgroup.org>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-06 09:35:19 -05:00
jhendersonHDF 7a62abb03d Fix Java build ordering when building with parallel jobs (#6354) 2026-04-08 11:47:50 -05:00
jhendersonHDF 2952bb9216 Mark several CMake variables as advanced (#6321) 2026-03-27 11:30:23 -05:00
jhendersonHDF 994dbf6ea9 Document CMake options in a central location (#6294) 2026-03-27 09:43:24 -05:00
jhendersonHDF 5a11a79fc4 Improvements to CMake logic for handling filters (#6287)
* Re-write zlib/szip CMake logic for clarity

* Update external libaec, zlib-ng and zlib builds to not use patching process

* Add FindZLIBNG module to locate zlib-ng on system

* Rework HDF5 filter plugins support
2026-03-16 13:46:48 -05: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
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
jhendersonHDF 4ded1cbcb4 Inherit Debug C build flags in Developer build mode (#6182) 2026-02-12 22:03:51 -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
Scot Breitenfeld 5711c7466f Update the version to 2.1 (#6147)
Update version to 2.1 and derive version information from H5public.h, removing h5vers script and updating CMake and Java configurations.

Versioning:
Update version to 2.1 in H5public.h.
Derive version strings in H5public.h using macros.
CMake:
Extract version from H5public.h in HDF5config.cmake and HDF5AsSubdirMacros.cmake.
Configure README.md and CHANGELOG.md using CMakeLists.txt.
Java:
Generate H5Version.java from H5public.h for version consistency.
Update H5.java to use H5Version for version constants.
Removals:
Delete bin/h5vers script, previously used for version management.
2026-01-21 23:02:49 -06:00
jhendersonHDF b100609caa Add Findlibaec CMake module for locating libaec (#6152) 2026-01-13 09:26:40 -06:00
Larry Knox 53b52f8593 Set version to 2.0.1 for continued development. (#5978) 2025-11-06 15:25:13 -06:00
Allen Byrne b754dcb8f2 Move Java wrappers to FFM using jextract and java 25 (#5957)
FFM build requires Java 25, Jextract 25.
Generates FFM bindings during configure.
JNI is default when the requirements are not met or can be forced.
Presets added for maven and FFM - JNI is default selection.
Enhanced Maven options will work with either JNI or FFM
New Workflows for testing and maven uploads.
Extensive documentation changes for java.
2025-11-04 14:03:06 -06:00
Scot Breitenfeld e4113ffaa5 Combined INSTALL_parallel and README_HPC content (#5952)
* Combined INSTALL_parallel and README_HPC into a single, README_HPC.md file.
* Removed all autotools references
* Updated All References
2025-10-30 21:57:14 -05:00
Larry Knox 849de4ec05 Increment subversion to -4 after snapshot release 2.0.0-3. (#5916) 2025-10-14 22:30:05 -05:00
Allen Byrne 701b46daed Rename the HDF5Examples build option prefix (#5906)
Renamed all HDF5 examples build options from H5EX_* to H5EXAMPLE_* to better distinguish them from library options when building examples alongside the library.

Updated all CMake files, including:
Main examples CMakeLists.txt files
CMake configuration files in config/ directory
CMake preset files
Updated documentation files to reflect new option names
2025-10-08 15:53:44 -05:00
Larry Knox 1f52fdccb8 Increment sub-release number and update version. (#5886) 2025-09-29 16:28:07 -05:00
Allen Byrne 8f89d1fe7c Develop big endianCorrect BE testing issues (#5866)
* Use bigendian specific files on those machine
* Examples need a bigendian check and var
* Update the reference files
2025-09-27 08:21:12 -05:00
Larry Knox fcfda621ba Allow setting CTEST_BUILD_NAME (#5812)
to set the test configuration Build Name for CDash.
2025-09-11 21:59:01 -05:00
Larry Knox ecc9b615ec Increment version subrelease digit to -2 (#5797) 2025-09-10 13:23:05 -05:00
Larry Knox f8d89333eb Remove setting HDF5 version for configure.ac (#5789)
Add setting HDF5 version for config/examples/HDF5AsSubdirMacros.cmake in bin/h5vers.
Set HDF5 version to 2.0.0-1 for snapshot release.
2025-09-09 08:21:32 -05:00
Larry Knox e3012ddc32 Set *PROVIDES* variables for all that are used in conditions for (#5757) 2025-09-04 08:03:43 -05:00
Allen Byrne 63803d7115 allow better CMake version testing (#5727)
* add cmake latest workflow with lukka/get-cmake@latest
* Upgrade minimum CMake version to 3.26
2025-08-23 06:43:20 -05:00
Allen Byrne 45b6e3ea5e Use mark_as_advanced for various filter-related cache variables (#5735) 2025-08-20 14:43:15 -05:00
Allen Byrne fb7d62841f Separate the cacheinit file into options and values (#5725) 2025-08-15 11:10:49 -05:00
Allen Byrne f44c9eac01 Add AI generated (reviewed) comments for config CMake files (#5696) 2025-08-12 13:28:19 -05:00
Allen Byrne fc3f153742 Add/update plugins examples (#5670)
* Fixed all incorrect control char
* Synch filter examples to other examples
2025-07-28 09:34:22 -05:00
Matt L 3b054fe7cc Always build test generators (#5622) 2025-06-23 07:47:05 -05:00
Martin Diehl b89f178d71 Remove default setting of CMAKE_DEBUG_POSTFIX (#5600) 2025-06-20 09:12:44 -05:00
0743df227f Add documentation and s3proxy testing for ROS3 VFD (#5560)
Adds workflow to build ROS3 VFD and optionally build aws-c-s3 library
from source or use package managers

Adds testing of ROS3 VFD with s3proxy and docker

Adds new H5Pset_fapl_ros3_endpoint()/H5Pget_fapl_ros3_endpoint() API
functions to set/get an alternative endpoint URL to use when opening
files with the ROS3 VFD

Cleans up warnings in tools and tests related to ROS3 VFD structure size

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
Co-authored-by: Allen Byrne <50328838+byrnHDF@users.noreply.github.com>
2025-06-19 16:22:49 -05:00
Matt L 01d61245fe Correct h5diff test ref files (#5596) 2025-06-12 13:04:24 -05:00
Allen Byrne 0d795cc00e Check if namespace has been defined before creating alias (#5590) 2025-06-12 12:10:55 -05:00
Matt L b93cd97ba3 Replace filtered temporary files with streams (#5583) 2025-06-06 11:03:08 -05:00
Matt L 17c16b659a Correct filtered test file cleanup paths (#5562) 2025-06-04 12:56:46 -05:00
Allen Byrne 029bca0540 Fix threads and variables in Cmake. (#5523)
* Rework threading options

* Use link variables for Threads and MPI
2025-06-03 11:04:39 -05:00
Matt L b594d01986 Simplify runTest file filtering (#5552) 2025-05-30 12:39:15 -05:00
Allen Byrne 90dca6cc6b Add section about Test Labels (#5556) 2025-05-30 10:29:06 -05:00
Allen Byrne 47c3d47b0f Correct CMake to match version 2.2.4 zlib-ng (#5555) 2025-05-30 10:12:25 -05:00
Allen Byrne 4cc7161fc2 refactor run scripts to a single macros with includes (#5538)
* Refactor the CMake scripts into a single script
* Adjust args to do grep testing
2025-05-24 16:26:46 -05:00
Allen Byrne aa9784ea25 Refactor the config/cmake folder #5446 (#5540)
* Update config/examples/HDF5AsSubdirMacros.cmake
* Move f90 config file and remove m4 dir
2025-05-22 11:20:51 -05:00
Allen Byrne b4c09512c0 Correct LICENSE header comment (#5535) 2025-05-15 13:02:39 -05:00
Allen Byrne e968eda351 Fix the URL for zlib-ng GIT (#5503)
* Correct defines if using ZLIB_COMPAT
* Update zlib build instructions
* Correct netcdf workflow
2025-05-09 05:43:39 -05:00
Allen Byrne e3f76b7fc1 Add bitgroom filter support (#5514)
* Add support for bitgroom filter
* Add settings for bitround remove unused settings
2025-05-08 14:39:13 -05:00
Matt L bafca72cfa Mask values in h5dump output files (#5473)
* Use TEST_MASK argument for masking
* Leave test output file unmasked on disk
* Extract masking to macro
* Mask reference files at test runtime
2025-05-06 09:21:15 -05:00
Michał Górny edb930f367 h5cc: Allow overriding the compilers written into the file (#5467)
* h5cc: Allow overriding the compilers written into the file

Add a set of `HDF5_H5CC_C_COMPILER`, `HDF5_H5CC_CXX_COMPILER`
and `HDF5_H5CC_Fortran_COMPILER` CMake variables that can be used to
override the compiler string written into `h5cc`, `h5c++`, etc.  This is
particularly useful when e.g. using ccache during the build,
as the ccache path otherwise ends up in `h5cc`.
2025-04-25 17:00:48 -05:00
Michał Górny 6d0dc84fb5 h5cc shell portability fixes (#5465)
* h5cc: Fix bashism

Replace the `${@:2}` construct that is specific to bash shell with
a more portable approach based on `shift`, in order to restore
compatibility with more strict POSIX shells.  This fixes a regression
introduced in #5361.

* h5cc: Fix passing arguments to compiler subprocesses

Pass arguments to subprocesses via quoted `"$@"` rather than plain `$@`,
in order to prevent the shell from applying word splitting, filename
expansion, etc., and therefore ensure that they are passed through
to the compiler process unchanged.
2025-04-23 18:46:50 -05:00