Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into refactor_h5fd_and_…
Browse files Browse the repository at this point in the history
…packages
  • Loading branch information
qkoziol committed Oct 16, 2024
2 parents 835db76 + 97420ea commit 3df1b3f
Show file tree
Hide file tree
Showing 27 changed files with 768 additions and 436 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
14 changes: 13 additions & 1 deletion 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
Loading

0 comments on commit 3df1b3f

Please sign in to comment.