From 7d303b0dd54cea30e6aed6c4426a1077b713910d Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 26 Nov 2025 14:35:23 -0500 Subject: [PATCH 1/7] CI: Update images, versions --- .github/workflows/CI.yml | 205 ++++++++++++++++++++------------------- test/filter.jl | 7 ++ 2 files changed, 111 insertions(+), 101 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 0e17d55af..da2d1bb1c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -9,40 +9,40 @@ on: pull_request: jobs: - HDF5-system-libs: - name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} (system libhdf5 + mpich) - runs-on: ${{ matrix.os }} - timeout-minutes: 20 - strategy: - matrix: - version: - - '1.9' - - '1.10' - - '1' - os: - - ubuntu-20.04 # required for libhdf5 v1.10.4 support - arch: - - x64 - steps: - - name: Install libraries - run: | - sudo apt-get update - sudo apt-get install mpich libhdf5-mpich-dev - echo "JULIA_HDF5_PATH=/usr/lib/x86_64-linux-gnu/hdf5/mpich/" >> $GITHUB_ENV - - uses: actions/checkout@v4 - - uses: julia-actions/cache@v2 - - uses: julia-actions/setup-julia@latest - with: - version: ${{ matrix.version }} - arch: ${{ matrix.arch }} - - uses: julia-actions/julia-buildpkg@latest - - name: Configure MPI.jl - shell: julia --color=yes {0} - run: | - @show pwd() - include(joinpath(pwd(), "test", "configure_packages.jl")) - - uses: julia-actions/julia-runtest@latest - + #TODO HDF5-system-libs: + #TODO name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} (system libhdf5 + mpich) + #TODO runs-on: ${{ matrix.os }} + #TODO timeout-minutes: 20 + #TODO strategy: + #TODO matrix: + #TODO version: + #TODO - '1.9' + #TODO - '1.10' + #TODO - '1.11' + #TODO - '1' + #TODO os: + #TODO - ubuntu-22.04 + #TODO arch: + #TODO - x64 + #TODO steps: + #TODO - name: Install libraries + #TODO run: | + #TODO sudo apt-get update + #TODO sudo apt-get install mpich libhdf5-mpich-dev + #TODO echo "JULIA_HDF5_PATH=/usr/lib/x86_64-linux-gnu/hdf5/mpich" >> $GITHUB_ENV + #TODO - uses: actions/checkout@v6 + #TODO - uses: julia-actions/cache@v2 + #TODO - uses: julia-actions/setup-julia@2 + #TODO with: + #TODO version: ${{ matrix.version }} + #TODO arch: ${{ matrix.arch }} + #TODO - uses: julia-actions/julia-buildpkg@1 + #TODO - name: Configure MPI.jl + #TODO shell: julia --color=yes {0} + #TODO run: | + #TODO @show pwd() + #TODO include(joinpath(pwd(), "test", "configure_packages.jl")) + #TODO - uses: julia-actions/julia-runtest@1 HDF5: name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} @@ -54,87 +54,90 @@ jobs: version: - '1.9' - '1.10' + - '1.11' - '1' - 'nightly' os: - - ubuntu-latest - - macOS-latest - - windows-latest + #TODO - ubuntu-24.04 + - ubuntu-24.04-arm + - macOS-15-intel + #TODO - macOS-26 + #TODO - windows-2025 arch: - x64 - x86 - exclude: - - os: macOS-latest - arch: x86 - - os: ubuntu-latest # excluded because HDF5_jll v1.12 does not support i686 - arch: x86 - - version: 'nightly' - arch: x86 + #TODO exclude: + #TODO - os: macOS-latest + #TODO arch: x86 + #TODO - os: ubuntu-latest # excluded because HDF5_jll v1.12 does not support i686 + #TODO arch: x86 + #TODO - version: 'nightly' + #TODO arch: x86 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: julia-actions/cache@v2 - - uses: julia-actions/setup-julia@latest + - uses: julia-actions/setup-julia@2 with: version: ${{ matrix.version }} arch: ${{ matrix.arch }} - - uses: julia-actions/julia-buildpkg@latest - - uses: julia-actions/julia-runtest@latest + - uses: julia-actions/julia-buildpkg@1 + - uses: julia-actions/julia-runtest@1 env: JULIA_DEBUG: Main - - uses: julia-actions/julia-processcoverage@latest + - uses: julia-actions/julia-processcoverage@1 - uses: codecov/codecov-action@v5 with: files: lcov.info - integration: - name: ${{ matrix.package.repo }} - julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - runs-on: ${{ matrix.os }} - timeout-minutes: 30 - strategy: - fail-fast: false - matrix: - version: - - '1' - os: - - ubuntu-latest - arch: - - x64 - package: - - {user: JuliaIO, repo: MAT.jl} - - {user: JuliaIO, repo: JLD.jl} - steps: - - uses: actions/checkout@v4 - - uses: julia-actions/setup-julia@latest - with: - version: ${{ matrix.version }} - arch: ${{ matrix.arch }} - - uses: julia-actions/julia-buildpkg@latest - - name: Clone ${{ matrix.package.repo }} - uses: actions/checkout@v4 - with: - repository: ${{ matrix.package.user }}/${{ matrix.package.repo }} - path: downstream - - name: Run ${{ matrix.package.repo }} tests - shell: julia --project=downstream {0} - run: | - using Pkg - try - # force it to use this PR's version of the package - Pkg.develop(PackageSpec[ # resolver may fail with main deps - PackageSpec(path="."), - PackageSpec(path="./filters/H5Zbitshuffle"), - PackageSpec(path="./filters/H5Zblosc"), - PackageSpec(path="./filters/H5Zbzip2"), - PackageSpec(path="./filters/H5Zlz4"), - PackageSpec(path="./filters/H5Zzstd"), - ]) - Pkg.update() - Pkg.test() # resolver may fail with test time deps - catch err - err isa Pkg.Resolve.ResolverError || rethrow() - # If we can't resolve that means this is incompatible by SemVer and this is fine - # It means we marked this as a breaking change, so we don't need to worry about - # Mistakenly introducing a breaking change, as we have intentionally made one - @info "Not compatible with this release. No problem." exception=err - exit(0) # Exit immediately, as a success - end + #TODO integration: + #TODO name: ${{ matrix.package.repo }} - julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} + #TODO runs-on: ${{ matrix.os }} + #TODO timeout-minutes: 30 + #TODO strategy: + #TODO fail-fast: false + #TODO matrix: + #TODO version: + #TODO - '1' + #TODO os: + #TODO - ubuntu-latest + #TODO arch: + #TODO - x64 + #TODO package: + #TODO - {user: JuliaIO, repo: MAT.jl} + #TODO - {user: JuliaIO, repo: JLD.jl} + #TODO steps: + #TODO - uses: actions/checkout@v6 + #TODO - uses: julia-actions/setup-julia@2 + #TODO with: + #TODO version: ${{ matrix.version }} + #TODO arch: ${{ matrix.arch }} + #TODO - uses: julia-actions/julia-buildpkg@1 + #TODO - name: Clone ${{ matrix.package.repo }} + #TODO uses: actions/checkout@v6 + #TODO with: + #TODO repository: ${{ matrix.package.user }}/${{ matrix.package.repo }} + #TODO path: downstream + #TODO - name: Run ${{ matrix.package.repo }} tests + #TODO shell: julia --project=downstream {0} + #TODO run: | + #TODO using Pkg + #TODO try + #TODO # force it to use this PR's version of the package + #TODO Pkg.develop(PackageSpec[ # resolver may fail with main deps + #TODO PackageSpec(path="."), + #TODO PackageSpec(path="./filters/H5Zbitshuffle"), + #TODO PackageSpec(path="./filters/H5Zblosc"), + #TODO PackageSpec(path="./filters/H5Zbzip2"), + #TODO PackageSpec(path="./filters/H5Zlz4"), + #TODO PackageSpec(path="./filters/H5Zzstd"), + #TODO ]) + #TODO Pkg.update() + #TODO Pkg.test() # resolver may fail with test time deps + #TODO catch err + #TODO err isa Pkg.Resolve.ResolverError || rethrow() + #TODO # If we can't resolve that means this is incompatible by SemVer and this is fine + #TODO # It means we marked this as a breaking change, so we don't need to worry about + #TODO # Mistakenly introducing a breaking change, as we have intentionally made one + #TODO @info "Not compatible with this release. No problem." exception=err + #TODO exit(0) # Exit immediately, as a success + #TODO end diff --git a/test/filter.jl b/test/filter.jl index 7cefa4f60..091dc9b30 100644 --- a/test/filter.jl +++ b/test/filter.jl @@ -147,6 +147,13 @@ using HDF5.Filters: ExternalFilter, isavailable, isencoderenabled, isdecoderenab @testset "$name" begin @debug "Filter Dataset" HDF5.name(ds) @test ds[] == data + if !(ds[] == data) + @show typeof(ds[]) size(ds[]) + @show typeof(data) size(data) + @show ds[] + @show data + end + @assert ds[] == data filters = HDF5.get_create_properties(ds).filters if startswith(name, "shuffle+") @test filters[1] isa Shuffle From 4bae3d43307a016aec8dd559d83e21180093a203 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 26 Nov 2025 14:38:31 -0500 Subject: [PATCH 2/7] CI: Correct version numbers --- .github/workflows/CI.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index da2d1bb1c..958378174 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -32,17 +32,17 @@ jobs: #TODO echo "JULIA_HDF5_PATH=/usr/lib/x86_64-linux-gnu/hdf5/mpich" >> $GITHUB_ENV #TODO - uses: actions/checkout@v6 #TODO - uses: julia-actions/cache@v2 - #TODO - uses: julia-actions/setup-julia@2 + #TODO - uses: julia-actions/setup-julia@v2 #TODO with: #TODO version: ${{ matrix.version }} #TODO arch: ${{ matrix.arch }} - #TODO - uses: julia-actions/julia-buildpkg@1 + #TODO - uses: julia-actions/julia-buildpkg@v1 #TODO - name: Configure MPI.jl #TODO shell: julia --color=yes {0} #TODO run: | #TODO @show pwd() #TODO include(joinpath(pwd(), "test", "configure_packages.jl")) - #TODO - uses: julia-actions/julia-runtest@1 + #TODO - uses: julia-actions/julia-runtest@v1 HDF5: name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} @@ -76,15 +76,15 @@ jobs: steps: - uses: actions/checkout@v6 - uses: julia-actions/cache@v2 - - uses: julia-actions/setup-julia@2 + - uses: julia-actions/setup-julia@v2 with: version: ${{ matrix.version }} arch: ${{ matrix.arch }} - - uses: julia-actions/julia-buildpkg@1 - - uses: julia-actions/julia-runtest@1 + - uses: julia-actions/julia-buildpkg@v1 + - uses: julia-actions/julia-runtest@v1 env: JULIA_DEBUG: Main - - uses: julia-actions/julia-processcoverage@1 + - uses: julia-actions/julia-processcoverage@v1 - uses: codecov/codecov-action@v5 with: files: lcov.info @@ -107,11 +107,11 @@ jobs: #TODO - {user: JuliaIO, repo: JLD.jl} #TODO steps: #TODO - uses: actions/checkout@v6 - #TODO - uses: julia-actions/setup-julia@2 + #TODO - uses: julia-actions/setup-julia@v2 #TODO with: #TODO version: ${{ matrix.version }} #TODO arch: ${{ matrix.arch }} - #TODO - uses: julia-actions/julia-buildpkg@1 + #TODO - uses: julia-actions/julia-buildpkg@v1 #TODO - name: Clone ${{ matrix.package.repo }} #TODO uses: actions/checkout@v6 #TODO with: From 25d1d1e2f9ea4f704eeeb2fb083fba28f50ca3bd Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 26 Nov 2025 14:46:06 -0500 Subject: [PATCH 3/7] CI: Enable all tests again --- .github/workflows/CI.yml | 203 +++++++++++++++++++-------------------- 1 file changed, 98 insertions(+), 105 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 958378174..89a08b024 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -9,40 +9,38 @@ on: pull_request: jobs: - #TODO HDF5-system-libs: - #TODO name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} (system libhdf5 + mpich) - #TODO runs-on: ${{ matrix.os }} - #TODO timeout-minutes: 20 - #TODO strategy: - #TODO matrix: - #TODO version: - #TODO - '1.9' - #TODO - '1.10' - #TODO - '1.11' - #TODO - '1' - #TODO os: - #TODO - ubuntu-22.04 - #TODO arch: - #TODO - x64 - #TODO steps: - #TODO - name: Install libraries - #TODO run: | - #TODO sudo apt-get update - #TODO sudo apt-get install mpich libhdf5-mpich-dev - #TODO echo "JULIA_HDF5_PATH=/usr/lib/x86_64-linux-gnu/hdf5/mpich" >> $GITHUB_ENV - #TODO - uses: actions/checkout@v6 - #TODO - uses: julia-actions/cache@v2 - #TODO - uses: julia-actions/setup-julia@v2 - #TODO with: - #TODO version: ${{ matrix.version }} - #TODO arch: ${{ matrix.arch }} - #TODO - uses: julia-actions/julia-buildpkg@v1 - #TODO - name: Configure MPI.jl - #TODO shell: julia --color=yes {0} - #TODO run: | - #TODO @show pwd() - #TODO include(joinpath(pwd(), "test", "configure_packages.jl")) - #TODO - uses: julia-actions/julia-runtest@v1 + HDF5-system-libs: + name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} (system libhdf5 + mpich) + runs-on: ${{ matrix.os }} + timeout-minutes: 20 + strategy: + matrix: + version: + - '1.10' + - '1' + os: + - ubuntu-22.04 + arch: + - x64 + steps: + - name: Install libraries + run: | + sudo apt-get update + sudo apt-get install mpich libhdf5-mpich-dev + echo "JULIA_HDF5_PATH=/usr/lib/x86_64-linux-gnu/hdf5/mpich" >> $GITHUB_ENV + - uses: actions/checkout@v6 + - uses: julia-actions/cache@v2 + - uses: julia-actions/setup-julia@v2 + with: + version: ${{ matrix.version }} + arch: ${{ matrix.arch }} + - uses: julia-actions/julia-buildpkg@v1 + - name: Configure MPI.jl + shell: julia --color=yes {0} + run: | + @show pwd() + include(joinpath(pwd(), "test", "configure_packages.jl")) + - uses: julia-actions/julia-runtest@v1 HDF5: name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} @@ -52,34 +50,29 @@ jobs: fail-fast: false matrix: version: - - '1.9' - '1.10' - - '1.11' - '1' - 'nightly' - os: - #TODO - ubuntu-24.04 - - ubuntu-24.04-arm - - macOS-15-intel - #TODO - macOS-26 - #TODO - windows-2025 - arch: - - x64 - - x86 - #TODO exclude: - #TODO - os: macOS-latest - #TODO arch: x86 - #TODO - os: ubuntu-latest # excluded because HDF5_jll v1.12 does not support i686 - #TODO arch: x86 - #TODO - version: 'nightly' - #TODO arch: x86 + osarch: + - os: ubuntu-24.04 + arch: x64 + - os: ubuntu-24.04 + arch: x86 + - os: ubuntu-24.04-arm + arch: aarch64 + - os: macOS-15-intel + arch: x64 + - os: macOS-26 + arch: aarch64 + - os: windows-2025 + arch: x86 steps: - uses: actions/checkout@v6 - uses: julia-actions/cache@v2 - uses: julia-actions/setup-julia@v2 with: version: ${{ matrix.version }} - arch: ${{ matrix.arch }} + arch: ${{ matrix.osarch.arch }} - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 env: @@ -89,55 +82,55 @@ jobs: with: files: lcov.info - #TODO integration: - #TODO name: ${{ matrix.package.repo }} - julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - #TODO runs-on: ${{ matrix.os }} - #TODO timeout-minutes: 30 - #TODO strategy: - #TODO fail-fast: false - #TODO matrix: - #TODO version: - #TODO - '1' - #TODO os: - #TODO - ubuntu-latest - #TODO arch: - #TODO - x64 - #TODO package: - #TODO - {user: JuliaIO, repo: MAT.jl} - #TODO - {user: JuliaIO, repo: JLD.jl} - #TODO steps: - #TODO - uses: actions/checkout@v6 - #TODO - uses: julia-actions/setup-julia@v2 - #TODO with: - #TODO version: ${{ matrix.version }} - #TODO arch: ${{ matrix.arch }} - #TODO - uses: julia-actions/julia-buildpkg@v1 - #TODO - name: Clone ${{ matrix.package.repo }} - #TODO uses: actions/checkout@v6 - #TODO with: - #TODO repository: ${{ matrix.package.user }}/${{ matrix.package.repo }} - #TODO path: downstream - #TODO - name: Run ${{ matrix.package.repo }} tests - #TODO shell: julia --project=downstream {0} - #TODO run: | - #TODO using Pkg - #TODO try - #TODO # force it to use this PR's version of the package - #TODO Pkg.develop(PackageSpec[ # resolver may fail with main deps - #TODO PackageSpec(path="."), - #TODO PackageSpec(path="./filters/H5Zbitshuffle"), - #TODO PackageSpec(path="./filters/H5Zblosc"), - #TODO PackageSpec(path="./filters/H5Zbzip2"), - #TODO PackageSpec(path="./filters/H5Zlz4"), - #TODO PackageSpec(path="./filters/H5Zzstd"), - #TODO ]) - #TODO Pkg.update() - #TODO Pkg.test() # resolver may fail with test time deps - #TODO catch err - #TODO err isa Pkg.Resolve.ResolverError || rethrow() - #TODO # If we can't resolve that means this is incompatible by SemVer and this is fine - #TODO # It means we marked this as a breaking change, so we don't need to worry about - #TODO # Mistakenly introducing a breaking change, as we have intentionally made one - #TODO @info "Not compatible with this release. No problem." exception=err - #TODO exit(0) # Exit immediately, as a success - #TODO end + integration: + name: ${{ matrix.package.repo }} - julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} + runs-on: ${{ matrix.os }} + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + version: + - '1' + os: + - ubuntu-latest + arch: + - x64 + package: + - {user: JuliaIO, repo: MAT.jl} + - {user: JuliaIO, repo: JLD.jl} + steps: + - uses: actions/checkout@v6 + - uses: julia-actions/setup-julia@v2 + with: + version: ${{ matrix.version }} + arch: ${{ matrix.arch }} + - uses: julia-actions/julia-buildpkg@v1 + - name: Clone ${{ matrix.package.repo }} + uses: actions/checkout@v6 + with: + repository: ${{ matrix.package.user }}/${{ matrix.package.repo }} + path: downstream + - name: Run ${{ matrix.package.repo }} tests + shell: julia --project=downstream {0} + run: | + using Pkg + try + # force it to use this PR's version of the package + Pkg.develop(PackageSpec[ # resolver may fail with main deps + PackageSpec(path="."), + PackageSpec(path="./filters/H5Zbitshuffle"), + PackageSpec(path="./filters/H5Zblosc"), + PackageSpec(path="./filters/H5Zbzip2"), + PackageSpec(path="./filters/H5Zlz4"), + PackageSpec(path="./filters/H5Zzstd"), + ]) + Pkg.update() + Pkg.test() # resolver may fail with test time deps + catch err + err isa Pkg.Resolve.ResolverError || rethrow() + # If we can't resolve that means this is incompatible by SemVer and this is fine + # It means we marked this as a breaking change, so we don't need to worry about + # Mistakenly introducing a breaking change, as we have intentionally made one + @info "Not compatible with this release. No problem." exception=err + exit(0) # Exit immediately, as a success + end From 7bb5ca7924d8294bfd806d8286ae00f96dbc0b1d Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 26 Nov 2025 14:57:34 -0500 Subject: [PATCH 4/7] CI: Correct build matrix --- .github/workflows/CI.yml | 104 ++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 50 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 89a08b024..067f8f00f 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -9,38 +9,40 @@ on: pull_request: jobs: - HDF5-system-libs: - name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} (system libhdf5 + mpich) - runs-on: ${{ matrix.os }} - timeout-minutes: 20 - strategy: - matrix: - version: - - '1.10' - - '1' - os: - - ubuntu-22.04 - arch: - - x64 - steps: - - name: Install libraries - run: | - sudo apt-get update - sudo apt-get install mpich libhdf5-mpich-dev - echo "JULIA_HDF5_PATH=/usr/lib/x86_64-linux-gnu/hdf5/mpich" >> $GITHUB_ENV - - uses: actions/checkout@v6 - - uses: julia-actions/cache@v2 - - uses: julia-actions/setup-julia@v2 - with: - version: ${{ matrix.version }} - arch: ${{ matrix.arch }} - - uses: julia-actions/julia-buildpkg@v1 - - name: Configure MPI.jl - shell: julia --color=yes {0} - run: | - @show pwd() - include(joinpath(pwd(), "test", "configure_packages.jl")) - - uses: julia-actions/julia-runtest@v1 + # This test is disable because the Github runner image `ubuntu-20.04` is not available any more. + # Updating to a newer image is not trivial; some debugging is necessary. + # HDF5-system-libs: + # name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} (system libhdf5 + mpich) + # runs-on: ${{ matrix.os }} + # timeout-minutes: 20 + # strategy: + # matrix: + # version: + # - '1.10' + # - '1' + # os: + # - ubuntu-20.04 # required for libhdf5 v1.10.4 support + # arch: + # - x64 + # steps: + # - name: Install libraries + # run: | + # sudo apt-get update + # sudo apt-get install mpich libhdf5-mpich-dev + # echo "JULIA_HDF5_PATH=/usr/lib/x86_64-linux-gnu/hdf5/mpich" >> $GITHUB_ENV + # - uses: actions/checkout@v6 + # - uses: julia-actions/cache@v2 + # - uses: julia-actions/setup-julia@v2 + # with: + # version: ${{ matrix.version }} + # arch: ${{ matrix.arch }} + # - uses: julia-actions/julia-buildpkg@v1 + # - name: Configure MPI.jl + # shell: julia --color=yes {0} + # run: | + # @show pwd() + # include(joinpath(pwd(), "test", "configure_packages.jl")) + # - uses: julia-actions/julia-runtest@v1 HDF5: name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} @@ -49,30 +51,32 @@ jobs: strategy: fail-fast: false matrix: - version: - - '1.10' - - '1' - - 'nightly' - osarch: - - os: ubuntu-24.04 - arch: x64 - - os: ubuntu-24.04 - arch: x86 - - os: ubuntu-24.04-arm - arch: aarch64 - - os: macOS-15-intel - arch: x64 - - os: macOS-26 - arch: aarch64 - - os: windows-2025 - arch: x86 + include: + - {version: '1.10', os: ubuntu-24.04, arch: x64} + - {version: '1.10', os: ubuntu-24.04, arch: x86} + - {version: '1.10', os: ubuntu-24.04-arm, arch: aarch64} + - {version: '1.10', os: macOS-15-intel, arch: x64} + - {version: '1.10', os: macOS-26, arch: aarch64} + - {version: '1.10', os: windows-2025, arch: x86} + - {version: '1', os: ubuntu-24.04, arch: x64} + - {version: '1', os: ubuntu-24.04, arch: x86} + - {version: '1', os: ubuntu-24.04-arm, arch: aarch64} + - {version: '1', os: macOS-15-intel, arch: x64} + - {version: '1', os: macOS-26, arch: aarch64} + - {version: '1', os: windows-2025, arch: x86} + - {version: 'nightly', os: ubuntu-24.04, arch: x64} + - {version: 'nightly', os: ubuntu-24.04, arch: x86} + - {version: 'nightly', os: ubuntu-24.04-arm, arch: aarch64} + - {version: 'nightly', os: macOS-15-intel, arch: x64} + - {version: 'nightly', os: macOS-26, arch: aarch64} + - {version: 'nightly', os: windows-2025, arch: x86} steps: - uses: actions/checkout@v6 - uses: julia-actions/cache@v2 - uses: julia-actions/setup-julia@v2 with: version: ${{ matrix.version }} - arch: ${{ matrix.osarch.arch }} + arch: ${{ matrix.arch }} - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 env: From 7d215ab8ae71732fc805452028057c3418a803cb Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 26 Nov 2025 15:08:15 -0500 Subject: [PATCH 5/7] Correct definition of off_t --- .github/workflows/CI.yml | 11 +++++++++++ src/api/types.jl | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 067f8f00f..a07cf6657 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -52,23 +52,33 @@ jobs: fail-fast: false matrix: include: + - {version: '1.9', os: ubuntu-24.04, arch: x64} + - {version: '1.9', os: ubuntu-24.04, arch: x86} + - {version: '1.9', os: ubuntu-24.04-arm, arch: aarch64} + - {version: '1.9', os: macOS-15-intel, arch: x64} + - {version: '1.9', os: macOS-26, arch: aarch64} + - {version: '1.9', os: windows-2025, arch: x64} + - {version: '1.9', os: windows-2025, arch: x86} - {version: '1.10', os: ubuntu-24.04, arch: x64} - {version: '1.10', os: ubuntu-24.04, arch: x86} - {version: '1.10', os: ubuntu-24.04-arm, arch: aarch64} - {version: '1.10', os: macOS-15-intel, arch: x64} - {version: '1.10', os: macOS-26, arch: aarch64} + - {version: '1.10', os: windows-2025, arch: x64} - {version: '1.10', os: windows-2025, arch: x86} - {version: '1', os: ubuntu-24.04, arch: x64} - {version: '1', os: ubuntu-24.04, arch: x86} - {version: '1', os: ubuntu-24.04-arm, arch: aarch64} - {version: '1', os: macOS-15-intel, arch: x64} - {version: '1', os: macOS-26, arch: aarch64} + - {version: '1', os: windows-2025, arch: x64} - {version: '1', os: windows-2025, arch: x86} - {version: 'nightly', os: ubuntu-24.04, arch: x64} - {version: 'nightly', os: ubuntu-24.04, arch: x86} - {version: 'nightly', os: ubuntu-24.04-arm, arch: aarch64} - {version: 'nightly', os: macOS-15-intel, arch: x64} - {version: 'nightly', os: macOS-26, arch: aarch64} + - {version: 'nightly', os: windows-2025, arch: x64} - {version: 'nightly', os: windows-2025, arch: x86} steps: - uses: actions/checkout@v6 @@ -104,6 +114,7 @@ jobs: - {user: JuliaIO, repo: JLD.jl} steps: - uses: actions/checkout@v6 + - uses: julia-actions/cache@v2 - uses: julia-actions/setup-julia@v2 with: version: ${{ matrix.version }} diff --git a/src/api/types.jl b/src/api/types.jl index 54648ab83..47655f8a7 100644 --- a/src/api/types.jl +++ b/src/api/types.jl @@ -10,9 +10,9 @@ const hsize_t = UInt64 const hssize_t = Int64 const htri_t = Cint # pseudo-boolean (negative if error) @static if Sys.iswindows() - const off_t = Int64 -else const off_t = Int +else + const off_t = Int64 end const H5Z_filter_t = Cint From 8c13d9806fc2f783fc6d6ee98ea303758c06838e Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 26 Nov 2025 15:19:57 -0500 Subject: [PATCH 6/7] CI: Check simplified h5p_get_external --- .github/workflows/CI.yml | 40 ++++++++++++++++++++-------------------- src/api/helpers.jl | 28 ++++++++++++++-------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index a07cf6657..53ad54750 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -52,32 +52,32 @@ jobs: fail-fast: false matrix: include: - - {version: '1.9', os: ubuntu-24.04, arch: x64} - - {version: '1.9', os: ubuntu-24.04, arch: x86} - - {version: '1.9', os: ubuntu-24.04-arm, arch: aarch64} - - {version: '1.9', os: macOS-15-intel, arch: x64} - - {version: '1.9', os: macOS-26, arch: aarch64} + #TODO - {version: '1.9', os: ubuntu-24.04, arch: x64} + #TODO - {version: '1.9', os: ubuntu-24.04, arch: x86} + #TODO - {version: '1.9', os: ubuntu-24.04-arm, arch: aarch64} + #TODO - {version: '1.9', os: macOS-15-intel, arch: x64} + #TODO - {version: '1.9', os: macOS-26, arch: aarch64} - {version: '1.9', os: windows-2025, arch: x64} - {version: '1.9', os: windows-2025, arch: x86} - - {version: '1.10', os: ubuntu-24.04, arch: x64} - - {version: '1.10', os: ubuntu-24.04, arch: x86} - - {version: '1.10', os: ubuntu-24.04-arm, arch: aarch64} - - {version: '1.10', os: macOS-15-intel, arch: x64} - - {version: '1.10', os: macOS-26, arch: aarch64} + #TODO - {version: '1.10', os: ubuntu-24.04, arch: x64} + #TODO - {version: '1.10', os: ubuntu-24.04, arch: x86} + #TODO - {version: '1.10', os: ubuntu-24.04-arm, arch: aarch64} + #TODO - {version: '1.10', os: macOS-15-intel, arch: x64} + #TODO - {version: '1.10', os: macOS-26, arch: aarch64} - {version: '1.10', os: windows-2025, arch: x64} - {version: '1.10', os: windows-2025, arch: x86} - - {version: '1', os: ubuntu-24.04, arch: x64} - - {version: '1', os: ubuntu-24.04, arch: x86} - - {version: '1', os: ubuntu-24.04-arm, arch: aarch64} - - {version: '1', os: macOS-15-intel, arch: x64} - - {version: '1', os: macOS-26, arch: aarch64} + #TODO - {version: '1', os: ubuntu-24.04, arch: x64} + #TODO - {version: '1', os: ubuntu-24.04, arch: x86} + #TODO - {version: '1', os: ubuntu-24.04-arm, arch: aarch64} + #TODO - {version: '1', os: macOS-15-intel, arch: x64} + #TODO - {version: '1', os: macOS-26, arch: aarch64} - {version: '1', os: windows-2025, arch: x64} - {version: '1', os: windows-2025, arch: x86} - - {version: 'nightly', os: ubuntu-24.04, arch: x64} - - {version: 'nightly', os: ubuntu-24.04, arch: x86} - - {version: 'nightly', os: ubuntu-24.04-arm, arch: aarch64} - - {version: 'nightly', os: macOS-15-intel, arch: x64} - - {version: 'nightly', os: macOS-26, arch: aarch64} + #TODO - {version: 'nightly', os: ubuntu-24.04, arch: x64} + #TODO - {version: 'nightly', os: ubuntu-24.04, arch: x86} + #TODO - {version: 'nightly', os: ubuntu-24.04-arm, arch: aarch64} + #TODO - {version: 'nightly', os: macOS-15-intel, arch: x64} + #TODO - {version: 'nightly', os: macOS-26, arch: aarch64} - {version: 'nightly', os: windows-2025, arch: x64} - {version: 'nightly', os: windows-2025, arch: x86} steps: diff --git a/src/api/helpers.jl b/src/api/helpers.jl index 5c5ad3802..b09fb4ba0 100644 --- a/src/api/helpers.jl +++ b/src/api/helpers.jl @@ -726,20 +726,20 @@ function h5p_get_external(plist, idx=0) break end end - # Heuristic for 32-bit Windows bug - # Possibly related: - # https://github.com/HDFGroup/hdf5/pull/1821 - # Quote: - # The offset parameter is of type off_t and the offset field of H5O_efl_entry_t - # is HDoff_t which is a different type on Windows (off_t is a 32-bit long, - # HDoff_t is __int64, a 64-bit type). - @static if Sys.iswindows() && sizeof(Int) == 4 - lower = 0xffffffff & sz[] - upper = 0xffffffff & (sz[] >> 32) - # Scenario 1: The size is in the lower 32 bits, upper 32 bits contains garbage v1.12.2 - # Scenario 2: The size is in the upper 32 bits, lower 32 bits is 0 as of HDF5 v1.12.1 - sz[] = lower == 0 && upper != 0xffffffff ? upper : lower - end + #TODO # Heuristic for 32-bit Windows bug + #TODO # Possibly related: + #TODO # https://github.com/HDFGroup/hdf5/pull/1821 + #TODO # Quote: + #TODO # The offset parameter is of type off_t and the offset field of H5O_efl_entry_t + #TODO # is HDoff_t which is a different type on Windows (off_t is a 32-bit long, + #TODO # HDoff_t is __int64, a 64-bit type). + #TODO @static if Sys.iswindows() && sizeof(Int) == 4 + #TODO lower = 0xffffffff & sz[] + #TODO upper = 0xffffffff & (sz[] >> 32) + #TODO # Scenario 1: The size is in the lower 32 bits, upper 32 bits contains garbage v1.12.2 + #TODO # Scenario 2: The size is in the upper 32 bits, lower 32 bits is 0 as of HDF5 v1.12.1 + #TODO sz[] = lower == 0 && upper != 0xffffffff ? upper : lower + #TODO end return (name=String(name), offset=offset[], size=sz[]) end From 7511e2046407c827eb614dacd1cb8c1602bc3995 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Wed, 26 Nov 2025 15:29:52 -0500 Subject: [PATCH 7/7] Undo debug statements --- .github/workflows/CI.yml | 49 ++++++++++++++++++++++------------------ src/api/helpers.jl | 14 ------------ test/filter.jl | 7 ------ 3 files changed, 27 insertions(+), 43 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 53ad54750..2102b72e2 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -9,8 +9,10 @@ on: pull_request: jobs: - # This test is disable because the Github runner image `ubuntu-20.04` is not available any more. - # Updating to a newer image is not trivial; some debugging is necessary. + # This test is disabled because the Github runner image + # `ubuntu-20.04` is not available any more. Updating to a newer + # image is not trivial; some debugging is necessary. + # # HDF5-system-libs: # name: julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} (system libhdf5 + mpich) # runs-on: ${{ matrix.os }} @@ -52,32 +54,35 @@ jobs: fail-fast: false matrix: include: - #TODO - {version: '1.9', os: ubuntu-24.04, arch: x64} - #TODO - {version: '1.9', os: ubuntu-24.04, arch: x86} - #TODO - {version: '1.9', os: ubuntu-24.04-arm, arch: aarch64} - #TODO - {version: '1.9', os: macOS-15-intel, arch: x64} - #TODO - {version: '1.9', os: macOS-26, arch: aarch64} + # We need to keep the association between OS and ARCH, and + # there is no good way to express this as a matrix. Hence we + # duplicate for all Julia versions. + - {version: '1.9', os: ubuntu-24.04, arch: x64} + - {version: '1.9', os: ubuntu-24.04, arch: x86} + - {version: '1.9', os: ubuntu-24.04-arm, arch: aarch64} + - {version: '1.9', os: macOS-15-intel, arch: x64} + - {version: '1.9', os: macOS-26, arch: aarch64} - {version: '1.9', os: windows-2025, arch: x64} - {version: '1.9', os: windows-2025, arch: x86} - #TODO - {version: '1.10', os: ubuntu-24.04, arch: x64} - #TODO - {version: '1.10', os: ubuntu-24.04, arch: x86} - #TODO - {version: '1.10', os: ubuntu-24.04-arm, arch: aarch64} - #TODO - {version: '1.10', os: macOS-15-intel, arch: x64} - #TODO - {version: '1.10', os: macOS-26, arch: aarch64} + - {version: '1.10', os: ubuntu-24.04, arch: x64} + - {version: '1.10', os: ubuntu-24.04, arch: x86} + - {version: '1.10', os: ubuntu-24.04-arm, arch: aarch64} + - {version: '1.10', os: macOS-15-intel, arch: x64} + - {version: '1.10', os: macOS-26, arch: aarch64} - {version: '1.10', os: windows-2025, arch: x64} - {version: '1.10', os: windows-2025, arch: x86} - #TODO - {version: '1', os: ubuntu-24.04, arch: x64} - #TODO - {version: '1', os: ubuntu-24.04, arch: x86} - #TODO - {version: '1', os: ubuntu-24.04-arm, arch: aarch64} - #TODO - {version: '1', os: macOS-15-intel, arch: x64} - #TODO - {version: '1', os: macOS-26, arch: aarch64} + - {version: '1', os: ubuntu-24.04, arch: x64} + - {version: '1', os: ubuntu-24.04, arch: x86} + - {version: '1', os: ubuntu-24.04-arm, arch: aarch64} + - {version: '1', os: macOS-15-intel, arch: x64} + - {version: '1', os: macOS-26, arch: aarch64} - {version: '1', os: windows-2025, arch: x64} - {version: '1', os: windows-2025, arch: x86} - #TODO - {version: 'nightly', os: ubuntu-24.04, arch: x64} - #TODO - {version: 'nightly', os: ubuntu-24.04, arch: x86} - #TODO - {version: 'nightly', os: ubuntu-24.04-arm, arch: aarch64} - #TODO - {version: 'nightly', os: macOS-15-intel, arch: x64} - #TODO - {version: 'nightly', os: macOS-26, arch: aarch64} + - {version: 'nightly', os: ubuntu-24.04, arch: x64} + - {version: 'nightly', os: ubuntu-24.04, arch: x86} + - {version: 'nightly', os: ubuntu-24.04-arm, arch: aarch64} + - {version: 'nightly', os: macOS-15-intel, arch: x64} + - {version: 'nightly', os: macOS-26, arch: aarch64} - {version: 'nightly', os: windows-2025, arch: x64} - {version: 'nightly', os: windows-2025, arch: x86} steps: diff --git a/src/api/helpers.jl b/src/api/helpers.jl index b09fb4ba0..e0528add0 100644 --- a/src/api/helpers.jl +++ b/src/api/helpers.jl @@ -726,20 +726,6 @@ function h5p_get_external(plist, idx=0) break end end - #TODO # Heuristic for 32-bit Windows bug - #TODO # Possibly related: - #TODO # https://github.com/HDFGroup/hdf5/pull/1821 - #TODO # Quote: - #TODO # The offset parameter is of type off_t and the offset field of H5O_efl_entry_t - #TODO # is HDoff_t which is a different type on Windows (off_t is a 32-bit long, - #TODO # HDoff_t is __int64, a 64-bit type). - #TODO @static if Sys.iswindows() && sizeof(Int) == 4 - #TODO lower = 0xffffffff & sz[] - #TODO upper = 0xffffffff & (sz[] >> 32) - #TODO # Scenario 1: The size is in the lower 32 bits, upper 32 bits contains garbage v1.12.2 - #TODO # Scenario 2: The size is in the upper 32 bits, lower 32 bits is 0 as of HDF5 v1.12.1 - #TODO sz[] = lower == 0 && upper != 0xffffffff ? upper : lower - #TODO end return (name=String(name), offset=offset[], size=sz[]) end diff --git a/test/filter.jl b/test/filter.jl index 091dc9b30..7cefa4f60 100644 --- a/test/filter.jl +++ b/test/filter.jl @@ -147,13 +147,6 @@ using HDF5.Filters: ExternalFilter, isavailable, isencoderenabled, isdecoderenab @testset "$name" begin @debug "Filter Dataset" HDF5.name(ds) @test ds[] == data - if !(ds[] == data) - @show typeof(ds[]) size(ds[]) - @show typeof(data) size(data) - @show ds[] - @show data - end - @assert ds[] == data filters = HDF5.get_create_properties(ds).filters if startswith(name, "shuffle+") @test filters[1] isa Shuffle