Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 78 additions & 62 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,40 +9,42 @@ 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

# 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 }}
# 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 }}
Expand All @@ -51,37 +53,50 @@ jobs:
strategy:
fail-fast: false
matrix:
version:
- '1.9'
- '1.10'
- '1'
- 'nightly'
os:
- ubuntu-latest
- macOS-latest
- windows-latest
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
include:
# 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}
- {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@v4
- uses: actions/checkout@v6
- uses: julia-actions/cache@v2
- uses: julia-actions/setup-julia@latest
- uses: julia-actions/setup-julia@v2
with:
version: ${{ matrix.version }}
arch: ${{ matrix.arch }}
- uses: julia-actions/julia-buildpkg@latest
- uses: julia-actions/julia-runtest@latest
- uses: julia-actions/julia-buildpkg@v1
- uses: julia-actions/julia-runtest@v1
env:
JULIA_DEBUG: Main
- uses: julia-actions/julia-processcoverage@latest
- uses: julia-actions/julia-processcoverage@v1
- uses: codecov/codecov-action@v5
with:
files: lcov.info
Expand All @@ -103,14 +118,15 @@ jobs:
- {user: JuliaIO, repo: MAT.jl}
- {user: JuliaIO, repo: JLD.jl}
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@latest
- 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@latest
- uses: julia-actions/julia-buildpkg@v1
- name: Clone ${{ matrix.package.repo }}
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
repository: ${{ matrix.package.user }}/${{ matrix.package.repo }}
path: downstream
Expand Down
14 changes: 0 additions & 14 deletions src/api/helpers.jl
Original file line number Diff line number Diff line change
Expand Up @@ -726,20 +726,6 @@ 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
return (name=String(name), offset=offset[], size=sz[])
end

Expand Down
4 changes: 2 additions & 2 deletions src/api/types.jl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading