Commit Graph
100 Commits
Author SHA1 Message Date
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
Scot Breitenfeld e4c16e9fca Fortran: simplify H5config_f.inc.cmake to use #cmakedefine directly (#6423)
All #cmakedefine01 CMAKE_H5_* blocks used a five-line pattern:

  #cmakedefine01 CMAKE_H5_HAVE_FOO
  #if CMAKE_H5_HAVE_FOO == 0
  #undef H5_HAVE_FOO
  #else
  #define H5_HAVE_FOO
  #endif

This is exactly what #cmakedefine H5_HAVE_FOO does: it emits
#define H5_HAVE_FOO (no value) when the CMake variable is truthy and
/* #undef H5_HAVE_FOO */ when falsy.  The CMAKE_H5_* intermediate
variables in fortran/src/CMakeLists.txt were only needed to feed these
blocks and are no longer required.

Replace all such blocks with #cmakedefine H5_HAVE_FOO, using the H5_*
variable directly.  MPI_LOGICAL_KIND retains its value via
#cmakedefine H5_MPI_LOGICAL_KIND @H5_MPI_LOGICAL_KIND@.

This also fixes a real bug: H5_FORTRAN_C_BOOL_IS_UNIQUE was emitted as
#define H5_FORTRAN_C_BOOL_IS_UNIQUE 0 when C_BOOL and default LOGICAL
are the same kind (e.g. Apple PowerPC ABI).  #ifdef only tests whether
a macro is defined, not its value, so the guard in H5_test_buildiface.F90
was always true and verify_c_bool was written into tf_gen.F90 regardless,
causing an "Ambiguous interfaces" build failure on that platform.
2026-06-02 08:13:50 -05:00
Scot Breitenfeld 853451a3a7 HL: Fix prefix-match bugs in H5TB field lookup and H5DS/H5IM CLASS checks (#6371)
- H5TB: strcmp replaces strncmp in H5TBfind_field so that field names
  that are a prefix of a requested name (or vice-versa) are no longer
  matched. HLTB_MAX_FIELD_LEN (255) is now public in H5TBpublic.h and
  exposed to Fortran as HLTB_MAX_FIELD_LEN_F in H5TBff.F90.
  H5TBget_field_info documents the buffer-size requirement and truncation
  behaviour. H5TBget_field_info guards against overflow on long names.

- H5IM: H5IMis_image and H5IMis_palette refactored into a shared helper
  (H5IM__class_attr_equals). The helper now reads both fixed-length and
  variable-length CLASS string attributes, using H5Treclaim for VL memory.
  strcmp replaces strncmp for exact-match semantics.

- H5DS: H5DSis_scale and H5DS_is_reserved both support variable-length
  CLASS string attributes via H5Aget_space/H5Aread/H5Treclaim. The
  fixed-length path retains the 16-byte size guard. strcmp is used
  throughout for exact comparison.

- Tests: new test functions test_is_scale_class_prefix,
  test_is_reserved_class_prefix, and test_class_prefix cover fixed-length
  prefix/exact/wrong-value cases and variable-length string cases.
  test_table.c adds write and read field-name prefix rejection cases and
  boundary-length truncation verification. All malloc calls are NULL-checked.

- CHANGELOG updated with a summary of all fixes.
2026-05-22 11:28:24 -05:00
Scot Breitenfeld 013e9cc90c config/HDF5UseZLIB.cmake: resolve ALIASED_TARGET before re-aliasing (#6408)
Before creating the namespaced `hdf5::<name>` alias, query
ALIASED_TARGET so we point the new alias at the real target.  When
the target is not an alias the behaviour is unchanged.

config/HDF5Use{ZLIB,Libaec}.cmake: resolve ALIASED_TARGET before re-aliasing
2026-05-19 13:53:53 -05:00
Scot Breitenfeld 96750d6eda CI: remove redundant macOS brew installs for ninja and curl (#6406)
Both ninja and curl are pre-installed on the GitHub macOS runners,
causing noisy "already installed" warnings. Drop those brew steps
entirely (or just remove ninja/curl where other packages like graphviz
or libaec are still needed).
2026-05-14 10:04:12 -05:00
Scot Breitenfeld b33b9bff3f ci: skip signed-plugins workflow for doc-only changes (#6398) 2026-05-06 17:05:45 -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
Scot Breitenfeld 4fbe22a896 ci: remove EOL OS versions from workflows (#6388)
* CI: remove EOL OS versions from workflows

- freebsd.yml: drop FreeBSD 13.5 (EOL Jan 2026); keep 14.3 and 15.0
- openbsd.yml: bump 7.5 → 7.8 (7.5 EOL ~Nov 2024); drop pinned gcc version
- i386.yml: replace Alpine 3.16 x86 (EOL May 2024) with i386/debian:bookworm (EOL Jun 2028)

* CI: install cmake from bookworm-backports for i386 workflow
* CI: fix OpenBSD workflow for 7.8
- Update vmactions/openbsd-vm v1.3.4 → v1.4.0 (supports 7.8)
- Drop GCC; use OpenBSD's built-in Clang (cc/c++) which is always in PATH
- Remove LD_LIBRARY_PATH workaround that was only needed for egcc

* CI: remove gmake from OpenBSD workflow
2026-05-01 16:00:02 -05:00
Scot Breitenfeld f858615b70 Revert "Pin BLOSC2 git fetch to versioned tag (#6380)" (#6384)
This reverts commit c478c6e35f.
2026-04-28 13:09:45 -05:00
Scot Breitenfeld c478c6e35f Pin BLOSC2 git fetch to versioned tag (#6380)
BLOSC2_GIT_BRANCH was "main" causing the inline plugin build to fetch
unreleased c-blosc2 that breaks test output comparisons. Pin to the
tagged release matching HDF5_BLOSC2_VERSION so the git and tgz paths
are consistent.
2026-04-26 04:06:26 -04:00
Scot Breitenfeld cbff0315f3 Default versioned API functions to earliest version for older API settings (#6280)
When a global API version is set (e.g., H5_USE_16_API), functions
introduced after that version now default to their earliest version
(version 1) instead of the latest. This prevents breakage when an
application uses an older API setting but calls functions that were
later versioned.
2026-04-07 11:06:32 -05:00
Scot Breitenfeld 00499095d6 ci: only upload empty SARIF for pull_request events (#6353)
Restrict empty SARIF upload to pull_request events only, so that
push-to-develop (e.g. after merging a text-only PR) does not overwrite
the real CodeQL results in the Security tab with an empty SARIF.
2026-04-07 07:51:12 -05:00
Scot Breitenfeld 970efad7e1 ci: upload empty SARIF when CodeQL analysis is skipped (#6351)
so that the "Require code scanning results" branch
protection rule is satisfied for text-only PRs.
2026-04-06 12:37:20 -05:00
Scot Breitenfeld a8e1719655 ci: add gate job to CodeQL workflow for text-only PRs (#6346)
* ci: add gate job to CodeQL workflow for text-only PRs

Remove paths-ignore from the workflow trigger and add a check-changes
job with dorny/paths-filter to detect code changes at the job level.
This ensures the workflow always triggers so the codeql-complete gate
job can report a passing status when analyze is skipped, preventing
text-only PRs from being blocked by required status checks.

* ci: check both check-changes and analyze results in gate job

Add check-changes to the needs array of codeql-complete so that a
failure in the change-detection job is not silently treated as a
skipped analysis.
2026-04-04 10:39:46 -06:00
Scot Breitenfeld 05676d1abe Consolidate documentation under docs/ directory (#6310)
* Consolidate documentation under doc/ directory

Move user-facing guides from release_docs/ and doxygen/ into a single
doc/ root. release_docs/ now holds only release artifacts (changelogs,
history, release process, maintainer info).

- git mv release_docs/INSTALL*.md, USING_*.md, README_HPC.md,
  BuildSystemNotes.md, AutotoolsToCMakeOptions.md,
  HDF5_Library_2.0.0_Migration_Guide.md → doc/
- git mv doxygen/ → doc/doxygen/
- Update CMakeLists.txt: HDF5_DOXYGEN_DIR and add_subdirectory path
- Update CMakeInstallation.cmake: all install paths for moved files
- Update bin/make_vers: hardcoded doxygen/ path substitution
- Update doc/doxygen/CMakeLists.txt: EXAMPLES_DIRECTORY and comments
- Update README.md, CONTRIBUTING.md, SECURITY.md, config/README.md,
  release_docs/RELEASE_PROCESS.md: links to moved files
- Update doxygen .dox files: release_docs/ URLs for moved guides
- Rewrite release_docs/README.md for narrowed scope

* Add HDF5_DOCS_DIR variable for doc/ root path

Introduce HDF5_DOCS_DIR = \${HDF5_SOURCE_DIR}/doc so that
CMakeInstallation.cmake and future callers reference the doc/
directory symbolically rather than by hardcoded path.
HDF5_DOXYGEN_DIR is now derived from HDF5_DOCS_DIR.
2026-03-31 17:01:54 -06:00
Scot Breitenfeld 05737ece7f H5DSget_label_f returned size fixed (#6327)
* fixed assignment of size in the wrapper

* Call H5DSget_label directly from Fortran wrapper

Replace the intermediate C wrapper h5dsget_label_c with a direct
bind(c) call to H5DSget_label from H5DSget_label_f. This eliminates
the malloc/free of a temporary buffer and the associated failure path
where size was incorrectly set when H5DSget_label failed. The Fortran
wrapper now handles the C-to-Fortran string conversion (equivalent to
HD5packFstring) by blank-padding the buffer from the returned label
length to the end.

* Remove unused h5dsget_label_c C wrapper
2026-03-30 15:45:25 -05:00
Scot Breitenfeld 67c2b782b9 Fix unbounded writes in h5repack_opttable.c: (#6303)
Replace all strcpy calls copying into fixed-size path buffers with snprintf to prevent buffer overflows. Also simplify the path prefix check and the empty-string initialization.

Fixes 6 critical CodeQL cpp/unbounded-write alerts.
2026-03-20 12:55:42 -05:00
Scot Breitenfeld 05758a6168 Security hardening (#6302)
Addresses CodeQL issues (Critical and High).
2026-03-18 22:32:03 -05:00
Scot Breitenfeld 262802ec36 Outlines security policy (#6199)
* Updated SECURITY.md to meet OSSF Badge Standard
* Disable CodeQL on MD file changes
* Updated version support policy
* Suppress non-constant format string CodeQL alerts

Exclude cpp/non-constant-format and cpp/uncontrolled-format-string
rules. All flagged uses are intentional format-string-as-template
patterns for family file naming (%d) and configurable output
formatting (%g), not security vulnerabilities.
* Add justification comments for CodeQL exclusions
* Harden CI workflows: pin actions to SHAs and apply least-privilege permissions
- Pin all third-party actions to commit SHAs in codeql.yml and arm-main.yml
- Add top-level permissions: contents: read to codeql.yml and markdown-link-check.yml
- Move contents: write from top-level to job-level in daily-schedule.yml

* Exclude non-security CodeQL rules and tainted-format-string false positives
- Add cpp/tainted-format-string to exclusions (same justification as
  existing format string rules: bounded snprintf with app-controlled formats)
- Exclude code style rules with no security severity: cpp/long-switch,
  cpp/guarded-free, cpp/commented-out-code, cpp/use-of-goto
- These 350+ alerts are structural C patterns inherent to HDF5, not vulnerabilities

* Add OpenSSF Best Practices badge to README.md
2026-03-17 11:42:07 -05:00
Scot Breitenfeld 71763e74e7 Skip building Doxygen when no documentation inputs have changed (#6245)
Optimize Doxygen build process by skipping rebuilds when input files are unchanged, using timestamp checks in CMake configuration.

Behavior:
Skip Doxygen build if input files unchanged using timestamp check in CMakeLists.txt, hl/src/CMakeLists.txt, and src/CMakeLists.txt.
Introduces stamp files (hdf5lib_doc.stamp, hdf5hllib_doc.stamp) to track changes.
Documentation:
add_custom_command and add_custom_target used to manage Doxygen builds.
Shared Doxygen content inputs defined in top-level CMakeLists.txt for reuse.
Misc:
Reorder add_subdirectory(src) in CMakeLists.txt for visibility of Doxygen variables.
2026-03-10 06:56:39 -05: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
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
Scot Breitenfeld ceb978cdcd workflow will no longer post that maven comment to PRs (#6238) 2026-02-26 11:07:18 -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
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
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
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 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
Scot Breitenfeld 17a847faf9 Fix Release Progress badges and workflow (#6168)
- 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 related environment
variables were not being set, causing badge updates to fail.
2026-01-22 10:32: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
Scot Breitenfeld 21d916841c Changed CI ctest verbose setting (#6136)
* switched from always verbose ctest output to ONLY on test failures

* Windows and macOS builds will skip clang-format check before building documentation

* resolved Doxygen warnings by adding H5G_link_t=H5L_type_t to the DOXYGEN_PREDEFINED list, by adding the macro definition, Doxygen now knows to treat H5G_link_t as H5L_type_
2025-12-30 13:16:55 -06:00
Scot Breitenfeld e34bbfefbf added codeql workflow (#6121)
Adds CodeQL workflow for C/C++ analysis with scheduled, manual, and branch-specific triggers, including dependency setup, HDF5 configuration, and SARIF handling.
2025-12-22 20:48:43 -06:00
Scot Breitenfeld d3cebd7dc5 Addressed TODO documentation issues (#6063)
* Fix Doxygen comments showing backslash continuations in macros, fixes #3947

* Replace "@todo Under Construction" with complete documentation, fixes 3105

* Completed "under construction" documentation sections:
  * H5Smodule.h: Add dataspace selection and data transfer documentation
  * H5module.h: Add link types and organization documentation
  * H5Emodule.h: Add error handling programming model documentation

* Fix grammar in documentation block of H5FDioc.c and improve consistency.

* rephrased H5Smodule.h documentation
2025-12-08 14:23:49 -06:00
Scot Breitenfeld 083eb93a3c fixes the GitHub Actions CPack failure on macOS (#6074)
* fixes the GitHub Actions CPack failure on macOS

* Disables Spotlight indexing which can interfere with disk image operations
* Implements retry logic (waits 5 seconds and retries once if CPack fails)
2025-12-02 12:42:18 -06:00
Scot Breitenfeld aada8a830b Fix Doxygen comments showing backslash continuations in macros (#6047)
Fixes #3947
2025-11-21 14:38:08 -06:00
Scot Breitenfeld 1d410a55f3 Link Checker badge fix. (#6027)
* fixed badge status reporting
2025-11-11 16:50:17 -06:00
Scot Breitenfeld 91ae855c0b Add Fortran SWMR wrappers (#5985)
* Add Fortran wrappers for H5Fstart_swmr_write, H5Dflush, and H5P{set,get}_append_flush
* corrected C doxygen docs for H5Pget_append_flush, clarified Fortran
2025-11-11 15:32:31 -06:00
Scot Breitenfeld 563ef07128 fixed Doxygen parameter annotation issues (#5993)
Fixed Doxygen parameter annotations in HDF5 header files to accurately reflect data flow direction.
2025-11-11 10:41:55 -06:00
Scot Breitenfeld 459445d717 Added SAFE grant acknowledgment (#5991) 2025-11-07 11:12:46 -06:00
Scot Breitenfeld f64c190237 suppresses redirect spam and prevent duplicate output in the reporting (#5977) 2025-11-05 13:51:29 -06:00
Scot Breitenfeld ff81f820ed Skip fragment-only URLs (no more %23 errors) (#5973) 2025-11-04 15:00:04 -06:00
Scot Breitenfeld a6d7b94c0c Added missing parameters H5F_ACC_SWMR_READ_F and H5F_ACC_SWMR_WRITE_F (#5961) 2025-10-31 12:59:45 -05: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
Scot Breitenfeld 5047b30ff6 Fortran changes to adhere to the filename/module convention (#5914)
Update the documentation table for using H5* API prefixes convention for naming files and modules.

Builds on PR #5912
2025-10-12 17:32:23 -05:00
Scot Breitenfeld 877cbf79a7 Adds new subfiling API H5FDsubfiling_get_file_mapping() (#5828)
Adds H5FDsubfiling_get_file_mapping() API to map logical HDF5 files to physical subfiles, with Fortran support and comprehensive testing.

Adds H5FDsubfiling_get_file_mapping() in H5FDsubfiling.c to retrieve subfile paths for a logical HDF5 file.
Updates Fortran interface in H5VFDff.F90 to include h5fdsubfiling_get_file_mapping_f().

Updates h5fuse.in to support a list of subfiles for processing with a new -l option.
2025-09-26 11:30:16 -05:00
Scot Breitenfeld 06d63b66be improvements to publishing action (#5860)
✅ Fixed Critical Issues

  1. Corrected variable name (inputs.use_hdf → inputs.file_name)
  2. Pinned action versions to specific, secure releases
  3. Added input validation with regex patterns and path traversal
  protection
  4. Enhanced error handling with file existence checks

  🛡️ Security Enhancements

  5. Restricted S3 sync with explicit include/exclude patterns
  6. Added dry-run mode for safe testing
  7. Input sanitization to prevent malicious inputs
  8. Updated to latest action versions with known security fixes

  🚀 Reliability Improvements

  9. File verification steps before processing
  10. Graceful handling of missing optional files
  11. Better error messages and status reporting
  12. Timeout protection (30 minutes max)
  13. Proper content-type headers for HTML files

  📊 Operational Improvements

  14. Detailed logging with emojis for easy scanning
  15. Comprehensive summary at the end
  16. Conditional execution based on file availability
  17. Proper AWS CLI options (--exact-timestamps, --metadata-directive)
2025-09-24 11:07:48 -05:00
Scot Breitenfeld b0fb7ebb2a Fix issue left hand panel issue (#5855) 2025-09-22 08:05:16 -05:00
Scot Breitenfeld 336318301c fixed linkchecker filename (#5827) 2025-09-15 14:46:42 -05:00
Scot Breitenfeld 54d34a2505 Link Checker Fix (#5826)
* Fixed the link checker error where table headers
  contained (\# of rows) and (\# of columns) with escaped hash symbols that Doxygen was
  incorrectly interpreting as malformed links.
2025-09-15 07:32:04 -05:00
Scot Breitenfeld 0d3045f7cb Switched link checker (#5807)
Switch link checker to Lychee in GitHub workflow to reduce false positives and update workflow schedules and documentation links.
2025-09-12 22:08:22 -05:00
Scot Breitenfeld ffbc655699 Resolve issue with left-hand side panel (#5762)
* enforce light mode for doxygen docs: removed dark theme elements

* fix TOC
2025-09-09 13:53:53 -05:00
Scot Breitenfeld 5b8af7182e Fixes warning message indicating that the H5_addr_defined(bt->right) macro might be evaluated with a null bt pointer (#5781) 2025-09-07 16:04:41 -05:00
Scot Breitenfeld 6826420421 moved link checking to only mergers (#5777)
Modify linkchecker.yml to run link checks only on merged pull requests to the develop branch.
2025-09-05 08:13:33 -05:00
Scot Breitenfeld 0a106e22e6 skip doxygen processing of file and last PR comments updates (#5776)
Exclude CONTRIBUTING.md from Doxygen processing and update hyperlink and typo in CONTRIBUTING.md.
2025-09-04 11:31:26 -05:00
Scot Breitenfeld 6e0b7e5726 Updates CONTRIBUTING.md (#5768)
Updates CONTRIBUTING.md with a comprehensive guide for contributors, modifies a link in README.md, and renames a file path for consistency.
2025-09-04 08:05:14 -05:00
Scot Breitenfeld 2ae060f2fb enforce light mode for doxygen docs: removed dark theme elements (#5754) 2025-08-30 08:04:53 -05:00
Scot Breitenfeld 0ab9576cb9 fixed color and only run the action from main repo (#5750) 2025-08-29 11:08:34 -05:00
Scot Breitenfeld b58574e706 Fix the Gist path (#5749)
* updated gist id, fix path
2025-08-27 23:01:59 -05:00
Scot Breitenfeld 5e85a9387e updated gist id (#5748) 2025-08-27 21:33:37 -05:00
Scot Breitenfeld de6b981fcc Updates to PR #5743 (#5747)
* fix paths
2025-08-27 20:26:46 -05:00
Scot Breitenfeld 40bde85ea9 Added release blocker monitor badge (#5743)
This PR implements an automated release progress monitoring system for the HDF5 project. The changes add a dynamic badge to the README that tracks completion of release-blocking issues from GitHub Project #39, addressing issue #5742. The implementation consists of three components:

- Python script (update-progress.py) that uses GitHub's GraphQL API to query project items, filter for 'Release_Blocker' items, and calculate completion percentage
- GitHub Actions workflow (update-progress.yml) that runs the script every 24 hours, generates badge data, and publishes it via GitHub Gist
- README updates that remove tentative release language and add the new progress badge with color-coded status indicators

The system replaces static release information with real-time progress tracking, providing better transparency into HDF5's feature-driven release process. The badge displays progress percentages with green (90%+), yellow (60-79%), orange (40-59%), and red (<40%) color coding.
2025-08-27 16:41:32 -05:00
Scot Breitenfeld 7f49eae0f3 Add Google Analytics to Doxygen pages. (#5728) 2025-08-18 07:47:23 -05:00
Scot Breitenfeld 3f5a6e272e correct url paths (#5651) 2025-07-09 14:51:45 -05:00
Scot Breitenfeld 2741b4079d FLOSS schema update (#5647)
* added FLOSS manifest
* floss updates
* updated location of funding-manifest-urls
* added code owners for the .well-known directory contents
2025-07-05 19:49:07 -05:00
Scot Breitenfeld 10770c0b6c renamed funding file (#5644) 2025-06-30 18:13:02 -05:00
Scot Breitenfeld edd7bea821 License update, FLOSS manifest (#5638)
* explicitly state BSD licensing
* FLOSS funding manifest
2025-06-26 21:13:57 -05:00
Scot Breitenfeld afd2b7af19 force use of issue templates (#5592) 2025-06-12 07:37:50 -05:00
Scot Breitenfeld d7a162226a Update issue templates 2025-06-10 17:41:18 -05:00
Scot Breitenfeld b0a47973d1 update hdf5.github.io links to support.hdfgroup.org (#5530) 2025-05-13 07:45:16 -05:00
Scot Breitenfeld ef26beaa8e Removed outdated license files and eliminated obsolete license components (#5450) 2025-04-17 09:28:22 -05:00
Scot Breitenfeld 55b243bf18 Update Fortran documentation for F2003 and derived types (#5444)
* updated the complex datatype information and examples for F2003, HELP-2755

* updated derived types for Fortran 2003, uses doxygen awesome tabs feature
2025-04-16 11:53:03 -05:00
Scot Breitenfeld 352501a5bd fix for cray compiler failing test (#5347) 2025-03-03 14:11:00 -06:00
Scot Breitenfeld 0e3f1010f1 Update AOCC and OpenMPI versions (#5341) 2025-03-01 07:05:47 -06:00
Scot Breitenfeld 70a90fad2d * updated nvhpc version (#5339)
* Removed skipping dtransform
2025-02-28 07:54:23 -06:00
Scot BreitenfeldandMichael Breitenfeld dbbc7122df Cray cce/18.0.1 work-around (#5313)
Co-authored-by: Michael Breitenfeld <brtnfld@login04.frontier.olcf.ornl.gov>
2025-02-12 09:11:10 -06:00
Scot Breitenfeld 4104e06b9b update the release schedule (#5275) 2025-01-27 17:13:15 -06:00
Scot Breitenfeld 980117be30 removed link creation related c-wrappers (#5190) 2024-12-31 12:31:03 -06:00
Scot Breitenfeld c7538bf46f Clarified the description of the filter ID range. (#5142) 2024-11-25 07:50:54 -06:00
Scot Breitenfeld 915a7ab591 fixed true/false and added missing h5_interm_group example (#5092) 2024-11-13 05:18:14 -08:00
Scot Breitenfeld 92c411b88f Renamed H5VLstart_lib_state and H5VLfinish_lib_state (#5070) 2024-11-05 11:05:43 -06:00
Scot Breitenfeld 35df4fb6a6 Fix parsing error of h(p)*c wrappers (#5060)
Add quotes to correctly handle whitespace.
2024-11-02 12:40:07 -07:00
Scot Breitenfeld 610648efd2 The h5(p)*c parser retains escaped whitespace character (#4967) 2024-10-18 09:03:42 -07:00
Scot Breitenfeld ad307bf61f Updated hyperslab documentation (#4965)
* corrected Fortran docs for hyperslab selection

* updated hyperslab op doc
2024-10-17 09:17:20 -07:00
Scot Breitenfeld 6b43197b08 Fixed data typing errors discovered by promoting integers and reals. (#4947) 2024-10-11 16:18:48 -07:00
Scot Breitenfeld 33b28f8014 adding missing Fortran examples and fixed broken links for Fortran (#4927) 2024-10-04 14:55:02 -05:00
Scot Breitenfeld e8f6bb6272 add Fortran H5DO reference to RM table (#4909) 2024-10-02 21:46:35 -05:00
Scot Breitenfeld 2921f276d8 add Fortran H5ES reference to RM table (#4908) 2024-10-01 16:45:18 -05:00
Scot Breitenfeld 35adecb94a fixed washed-out table text (#4903) 2024-10-01 08:30:07 -07:00
Scot Breitenfeld 7e7d3b30e1 Fixes Fortran parallel build race condition for tests (#4789) 2024-08-29 12:58:16 -07:00
Scot Breitenfeld 26f052c6f2 Warning fix (#4682)
* warning fix

* warning fix
2024-08-01 11:17:06 -05:00
Scot Breitenfeld 96acf6c739 corrected offset type in C wrapper (#4622) 2024-07-05 12:39:43 -07:00
Scot Breitenfeld 8d50786f7a Reworked cleaning up API test files (#4626)
* Reworked cleaning up test files, only removing test files if present to account for skipped tests

* changed to using H5Fis_accessible

* update to full use of remove_test_file
2024-07-05 12:38:26 -07:00
Scot Breitenfeld d6541ba8e3 Test fixes for log-based vol (#4618)
* fixes to address failures in the log-based VOL

* moved file cleanup to tests proper

* skipped index API test if not supported
2024-07-02 09:25:15 -05:00
Scot Breitenfeld 5e591ab4da Export HDF5 version for CMake FetchContent'ed VOL connectors (#4548) 2024-06-05 16:17:40 -05:00
Scot BreitenfeldandLarry Knox aa696f01e5 Point to HDFGroup repository (#4535)
* point to HDFGroup repository

* updated checkout locations

* Fix incorrect and dead documentation link in
release_docs/RELEASE_PROCESS.md.

---------

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
2024-05-30 20:37:52 -05:00
Scot Breitenfeld 510b728ebd Release asset tarballs with no version filenames (#4494) 2024-05-17 08:26:54 -05:00
Scot Breitenfeld fe0df13115 Add H5fortkit dependecy for H5Rff.F90 (#4482) 2024-05-14 11:10:43 -05:00
Scot Breitenfeld 559f28a7c4 point to HDFGroup repository (#4480) 2024-05-13 09:04:57 -07:00
Scot Breitenfeld dfc6295c1d Fixed failures with xl compilers. (#4458)
* type cast constant

* fixed return types
2024-05-02 15:33:20 -05:00