Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into refactor_h5cx_stack
Browse files Browse the repository at this point in the history
  • Loading branch information
qkoziol committed Oct 16, 2024
2 parents 6196482 + 97420ea commit c8d5928
Show file tree
Hide file tree
Showing 27 changed files with 768 additions and 444 deletions.
419 changes: 419 additions & 0 deletions .github/workflows/cmake-analysis.yml

Large diffs are not rendered by default.

108 changes: 1 addition & 107 deletions .github/workflows/cmake-script.yml
Original file line number Diff line number Diff line change
Expand Up @@ -490,9 +490,7 @@ jobs:
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
BINSIGN: ${{ needs.check-secret.outputs.sign-state }}
SIGNTOOLDIR: ${{ github.workspace }}/Microsoft.Windows.SDK.BuildTools/bin/10.0.22621.0/x64
CXX: ${{ steps.setup-fortran.outputs.cc }}
run: |
cd "${{ runner.workspace }}/hdf5"
ctest -S HDF5config.cmake,CTEST_SITE_EXT=GH-Intel,LOCAL_SUBMIT=ON,NINJA=TRUE,BUILD_GENERATOR=VS202264,CTEST_SOURCE_NAME=${{ steps.set-file-base.outputs.SOURCE_BASE }} -C Release -VV -O hdf5.log
Expand Down Expand Up @@ -603,110 +601,6 @@ jobs:
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`

####### clang builds
build_and_test_win_clang:
# Windows w/ clang + CMake
#
name: "Windows ClangCL CTest"
runs-on: windows-latest
steps:
- name: Install Dependencies (Windows_clang)
run: choco install ninja

- name: add clang to env
uses: KyleMayes/[email protected]
id: setup-clang
with:
env: true
version: '18'

- name: Set file base name (Windows_clang)
id: set-file-base
run: |
FILE_NAME_BASE=$(echo "${{ inputs.file_base }}")
echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT
if [[ '${{ inputs.use_environ }}' == 'release' ]]
then
SOURCE_NAME_BASE=$(echo "${{ inputs.snap_name }}")
else
SOURCE_NAME_BASE=$(echo "hdfsrc")
fi
echo "SOURCE_BASE=$SOURCE_NAME_BASE" >> $GITHUB_OUTPUT
shell: bash

# Get files created by release script
- name: Get zip-tarball (Windows_clang)
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: zip-tarball
path: ${{ github.workspace }}

- name: using powershell
shell: pwsh
run: Get-Location

- name: List files for the space (Windows_clang)
run: |
Get-ChildItem -Path ${{ github.workspace }}
Get-ChildItem -Path ${{ runner.workspace }}
shell: pwsh

- name: Uncompress source (Windows_clang)
working-directory: ${{ github.workspace }}
run: 7z x ${{ steps.set-file-base.outputs.FILE_BASE }}.zip
shell: bash

- name: Copy script files for the space (Windows_clang)
run: |
Copy-Item -Path ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/config/cmake/scripts/CTestScript.cmake -Destination ${{ runner.workspace }}/hdf5/
Copy-Item -Path ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/config/cmake/scripts/HDF5config.cmake -Destination ${{ runner.workspace }}/hdf5/
shell: pwsh

- name: List files for the hdf5 (Windows_clang)
run: |
Get-ChildItem -Path ${{ runner.workspace }}/hdf5
shell: pwsh

- name: Create options file (Windows_clang)
uses: "DamianReeves/write-file-action@master"
with:
path: ${{ runner.workspace }}/hdf5/HDF5options.cmake
write-mode: overwrite
contents: |
set (CTEST_DROP_SITE_INIT "my.cdash.org")
# Change following line to submit to your CDash dashboard to a different CDash project
#set (CTEST_DROP_LOCATION_INIT "/submit.php?project=HDF5")
set (SITE_BUILDNAME_SUFFIX "${{ steps.set-file-base.outputs.FILE_BASE }}")
#set (CMAKE_GENERATOR_TOOLSET "ClangCL")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} --log-level=VERBOSE")
#set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_TOOLCHAIN_FILE:STRING=config/toolchain/clang.cmake")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_CPP_LIB:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_FORTRAN:BOOL=OFF")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_ENCODING:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_PLUGIN_SUPPORT:BOOL=ON")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DLIBAEC_USE_LOCALCONTENT:BOOL=OFF")
set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DZLIB_USE_LOCALCONTENT:BOOL=OFF")
- name: Run ctest (Windows_clang) with clang
env:
BINSIGN: ${{ needs.check-secret.outputs.sign-state }}
SIGNTOOLDIR: ${{ github.workspace }}/Microsoft.Windows.SDK.BuildTools/bin/10.0.22621.0/x64
run: |
cd "${{ runner.workspace }}/hdf5"
ctest -S HDF5config.cmake,CTEST_SITE_EXT=GH-Clang,LOCAL_SUBMIT=ON,NINJA=TRUE,BUILD_GENERATOR=VS202264,CTEST_SOURCE_NAME=${{ steps.set-file-base.outputs.SOURCE_BASE }} -C Release -VV -O hdf5.log
shell: pwsh
continue-on-error: true

# Save log files created by ctest script
- name: Save log (Windows_clang)
uses: actions/upload-artifact@v4
with:
name: clang-win-log
path: ${{ runner.workspace }}/hdf5/hdf5.log
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`

build_and_test_linux_clang:
# Linux (Ubuntu) w/ clang + CMake
#
Expand Down
20 changes: 17 additions & 3 deletions .github/workflows/daily-build.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: hdf5 dev daily build

# Triggers the workflow on a schedule or on demand
# Triggers the workflow on demand or on a call from another workflow
# NOTE: inputs must be duplicated between triggers
on:
workflow_dispatch:
inputs:
Expand All @@ -9,8 +10,13 @@ on:
type: string
required: false
default: check
schedule:
- cron: "6 0 * * *"
workflow_call:
inputs:
use_ignore:
description: 'Ignore has_changes check'
type: string
required: false
default: check

permissions:
contents: read
Expand Down Expand Up @@ -61,6 +67,14 @@ jobs:
use_environ: snapshots
if: ${{ ((needs.call-workflow-tarball.outputs.has_changes == 'true') || (needs.get-old-names.outputs.run-ignore == 'ignore')) }}

call-workflow-sanitizers:
needs: [get-old-names, call-workflow-tarball]
uses: ./.github/workflows/cmake-analysis.yml
with:
file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
use_environ: snapshots
if: ${{ ((needs.call-workflow-tarball.outputs.has_changes == 'true') || (needs.get-old-names.outputs.run-ignore == 'ignore')) }}

call-workflow-ctest:
needs: [get-old-names, call-workflow-tarball]
uses: ./.github/workflows/cmake-ctest.yml
Expand Down
16 changes: 16 additions & 0 deletions .github/workflows/daily-schedule.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: hdf5 dev daily build on schedule

# Triggers the workflow on a schedule or on demand
on:
workflow_dispatch:
schedule:
- cron: "6 0 * * *"

permissions:
contents: write # In order to allow tag creation and file deletion

jobs:
daily-build:
uses: ./.github/workflows/daily-build.yml
with:
use_ignore: check
8 changes: 0 additions & 8 deletions .github/workflows/main-cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -270,11 +270,3 @@ jobs:
path: ${{ runner.workspace }}/build/HDF5-*-Darwin.tar.gz
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
if: ${{ (matrix.os == 'macos-latest') && (inputs.thread_safety != 'TS') }}

- name: Save published dmg binary (Mac_latest)
uses: actions/upload-artifact@v4
with:
name: tgz-macos14_clang-${{ inputs.build_mode }}-dmg-binary
path: ${{ runner.workspace }}/build/HDF5-*-Darwin.dmg
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
if: ${{ (matrix.os == 'macos-latest') && (inputs.thread_safety != 'TS') }}
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
needs: [log-the-inputs, call-workflow-tarball, call-workflow-ctest]
uses: ./.github/workflows/abi-report.yml
with:
file_ref: '1.14.4.3'
file_ref: '1.14.5'
file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
use_tag: ${{ needs.log-the-inputs.outputs.rel_tag }}
use_environ: release
Expand Down
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -600,8 +600,10 @@ option (HDF5_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" O
if (HDF5_ENABLE_COVERAGE)
include (${HDF5_SOURCE_DIR}/config/sanitizer/code-coverage.cmake)
if(CODE_COVERAGE AND CODE_COVERAGE_ADDED)
message(VERBOSE "Add instrumentation to all targets")
add_code_coverage () # Adds instrumentation to all targets
else ()
message(VERBOSE "Use --coverage option")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 --coverage -fprofile-arcs -ftest-coverage")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g --coverage -O0 -fprofile-arcs -ftest-coverage")
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
Expand Down
8 changes: 3 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,12 +90,10 @@ are tentative.

| Release | New Features |
| ------- | ------------ |
| 1.14.5 | oss-fuzz fixes, ros3 VFD improvements |
| 1.14.6 | Last maintenance release of 1.14 |
| 1.16.0 | Complex number support, updated library defaults (cache sizes, etc.) |
| 2.0.0 | Multi-threaded HDF5, crashproofing / metadata journaling, Full (VFD) SWMR, encryption, digital signatures, sparse datasets, improved storage for variable-length datatypes, better Unicode support (especially on Windows), semantic versioning |
| 2.0.0 | Drop Autotools support, complex number support, updated library defaults (cache sizes, etc.), semantic versioning |
| FUTURE | Multi-threaded HDF5, crashproofing / metadata journaling, Full (VFD) SWMR, encryption, digital signatures, sparse datasets, improved storage for variable-length datatypes, better Unicode support (especially on Windows) |

Some HDF5 2.0.0 features listed here may be released in a 1.16.x release.
NOTE: In the March 2025 release we will begin using semantic versioning (https://semver.org/) and the previously announced 1.16.0 version will instead be numbered 2.0.0.

This list of feature release versions is also tentative, and the specific release
in which a feature is introduced may change.
Expand Down
2 changes: 1 addition & 1 deletion c++/test/tfile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -759,7 +759,7 @@ test_libver_bounds()

/* Run the tests */
test_libver_bounds_real(H5F_LIBVER_EARLIEST, H5O_VERSION_1, H5F_LIBVER_LATEST, H5O_VERSION_2);
test_libver_bounds_real(H5F_LIBVER_LATEST, H5O_VERSION_2, H5F_LIBVER_EARLIEST, H5O_VERSION_2);
test_libver_bounds_real(H5F_LIBVER_LATEST, H5O_VERSION_2, H5F_LIBVER_EARLIEST, H5O_VERSION_1);
PASSED();
} /* end test_libver_bounds() */

Expand Down
7 changes: 4 additions & 3 deletions config/cmake/ConfigureChecks.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ if (WIN32 AND NOT MINGW)
set (${HDF_PREFIX}_HAVE_VISUAL_STUDIO 1)
endif ()
endif ()
message (TRACE "MSVC=${MSVC}")
message (TRACE "HAVE_VISUAL_STUDIO=${${HDF_PREFIX}_HAVE_VISUAL_STUDIO}")
endif ()

if (WINDOWS)
Expand All @@ -79,13 +81,12 @@ if (WINDOWS)
endif ()
if (NOT UNIX AND NOT CYGWIN)
set (${HDF_PREFIX}_HAVE_GETCONSOLESCREENBUFFERINFO 1)
if (MSVC_VERSION GREATER_EQUAL 1900)
set (${HDF_PREFIX}_HAVE_TIMEZONE 1)
endif ()
set (${HDF_PREFIX}_HAVE_TIMEZONE 1)
set (${HDF_PREFIX}_HAVE_GETTIMEOFDAY 1)
set (${HDF_PREFIX}_HAVE_LIBWS2_32 1)
set (${HDF_PREFIX}_HAVE_LIBWSOCK32 1)
endif ()
message (TRACE "HAVE_TIMEZONE=${${HDF_PREFIX}_HAVE_TIMEZONE}")
endif ()

# ----------------------------------------------------------------------
Expand Down
4 changes: 4 additions & 0 deletions config/sanitizer/code-coverage.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,13 @@ option(

# Programs
find_program(LLVM_COV_PATH llvm-cov)
message(VERBOSE "program llvm-cov=${LLVM_COV_PATH}")
find_program(LLVM_PROFDATA_PATH llvm-profdata)
message(VERBOSE "program llvm-profdata=${LLVM_PROFDATA_PATH}")
find_program(LCOV_PATH lcov)
message(VERBOSE "program lcov=${LCOV_PATH}")
find_program(GENHTML_PATH genhtml)
message(VERBOSE "program genhtml=${GENHTML_PATH}")
# Hide behind the 'advanced' mode flag for GUI/ccmake
mark_as_advanced(FORCE LLVM_COV_PATH LLVM_PROFDATA_PATH LCOV_PATH GENHTML_PATH)

Expand Down
6 changes: 5 additions & 1 deletion config/toolchain/intel.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
set(CMAKE_COMPILER_VENDOR "intel")

set(CMAKE_C_COMPILER icx)
set(CMAKE_CXX_COMPILER icpx)
if(WIN32)
set(CMAKE_CXX_COMPILER icx)
else()
set(CMAKE_CXX_COMPILER icpx)
endif()
set(CMAKE_Fortran_COMPILER ifx)

# the following is used if cross-compiling
Expand Down
14 changes: 6 additions & 8 deletions doc/img/release-schedule.plantuml
Original file line number Diff line number Diff line change
Expand Up @@ -23,26 +23,24 @@ Project starts 2023-01-01
[1.12.3] happens 2023-11-30
[1.12] is colored in #88CCEE

[1.14] starts at 2023-01-01 and lasts 118 weeks
[1.14] starts at 2023-01-01 and lasts 92 weeks
[1.14.1] happens at 2023-04-30
[1.14.2] happens at 2023-08-31
[1.14.3] happens at 2023-10-31
[1.14.4.2] happens at 2024-04-15
[1.14.4.3] happens at 2024-05-22
[1.14.5] happens at 2024-09-30
[1.14.6] happens at 2025-03-31
[1.14.1] displays on same row as [1.14.1]
[1.14.2] displays on same row as [1.14.1]
[1.14.3] displays on same row as [1.14.1]
[1.14.4.2] displays on same row as [1.14.1]
[1.14.5] displays on same row as [1.14.1]
[1.14.6] displays on same row as [1.14.1]
[1.14] is colored in #B187CF

[1.16] starts at 2025-03-31 and lasts 35 weeks
[1.16.0] happens at 2025-03-31
[1.16.1] happens at 2025-09-30
[1.16.1] displays on same row as [1.16.0]
[1.16] is colored in #02BFA0
[2.0] starts at 2024-09-30 and lasts 53 weeks
[2.0.0] happens at 2025-03-31
[2.1.0] happens at 2025-09-30
[2.1.0] displays on same row as [2.0.0]
[2.0] is colored in #02BFA0

@endgantt
Binary file modified doc/img/release-schedule.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions fortran/src/H5Rff.F90
Original file line number Diff line number Diff line change
Expand Up @@ -856,13 +856,13 @@ INTEGER(C_INT) FUNCTION H5Requal(ref1_ptr, ref2_ptr) &
END FUNCTION H5Requal
END INTERFACE

c_equal = INT(H5Requal(ref1_ptr, ref2_ptr))
c_equal = INT(H5Requal(ref1_ptr, ref2_ptr), C_INT)

hdferr = 0
equal = .FALSE.
IF(c_equal .EQ. 1)THEN
IF(c_equal .EQ. 1_C_INT)THEN
equal = .TRUE.
ELSE IF(c_equal .LT. 0)THEN
ELSE IF(c_equal .LT. 0_C_INT)THEN
hdferr = -1
ENDIF

Expand Down
5 changes: 3 additions & 2 deletions fortran/src/H5VLff.F90
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,8 @@ SUBROUTINE H5VLcmp_connector_cls_f(are_same, conn_id1, conn_id2, hdferr)
INTEGER(HID_T), INTENT(IN) :: conn_id1
INTEGER(HID_T), INTENT(IN) :: conn_id2
INTEGER, INTENT(OUT) :: hdferr
INTEGER :: are_same_c

INTEGER(C_INT) :: are_same_c

INTERFACE
INTEGER(C_INT) FUNCTION H5VLcmp_connector_cls(cmp_value, conn_id1, conn_id2) BIND(C, NAME='H5VLcmp_connector_cls')
Expand All @@ -432,7 +433,7 @@ END FUNCTION H5VLcmp_connector_cls

are_same = .FALSE.
hdferr = INT(H5VLcmp_connector_cls(are_same_c, conn_id1, conn_id2))
IF(are_same_c .EQ. 0) are_same = .TRUE.
IF(are_same_c .EQ. 0_C_INT) are_same = .TRUE.

END SUBROUTINE H5VLcmp_connector_cls_f

Expand Down
22 changes: 13 additions & 9 deletions release_docs/RELEASE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,19 @@ Bug Fixes since HDF5-1.16.0 release
===================================
Library
-------
-
- Only clear FE_INVALID when that symbol is present on the system

When we initialize the floating-point types at library startup, it's
possible to raise floating-point exceptions when we check which things
are supported. Normally, we clear these floating-point exceptions via
feclearexcept(FE_INVALID), but FE_INVALID may not be present on all
systems. Specifically, this was reported as being a problem when using
Emscripten 3.1.68 to compile HDF5 1.14.5 to WebAssembly.

We've added an #ifdef FE_INVALID block around the exception clearing
code to correct this.

Fixes GitHub issue #4952


Java Library
Expand Down Expand Up @@ -191,14 +203,6 @@ Bug Fixes since HDF5-1.16.0 release

Testing
-------
- Disabled running of MPI Atomicity tests for OpenMPI major versions < 5

Support for MPI atomicity operations is not implemented for major
versions of OpenMPI less than version 5. This would cause the MPI
atomicity tests for parallel HDF5 to sporadically fail when run
with OpenMPI. Testphdf5 now checks if OpenMPI is being used and will
skip running the atomicity tests if the major version of OpenMPI is
< 5.


Platforms Tested
Expand Down
Loading

0 comments on commit c8d5928

Please sign in to comment.