Skip to content

Commit b5c3cde

Browse files
authored
Merge branch 'develop' into link_delete_bug
2 parents dd24c20 + ad82570 commit b5c3cde

22 files changed

+1438
-524
lines changed
Lines changed: 287 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
1+
name: macOS-26 Matrix Testing
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
- cron: "0 9 * * *"
7+
8+
# Using concurrency to cancel any in-progress job or run
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
build-test:
15+
strategy:
16+
fail-fast: false
17+
matrix:
18+
# Test combinations of key options
19+
include:
20+
# Shared libraries with OpenMPI
21+
- name: "macOS-26 Shared OpenMPI Fortran Java"
22+
os: macos-26
23+
mpi: openmpi
24+
shared_libs: ON
25+
static_libs: OFF
26+
cpp: OFF
27+
fortran: OFF
28+
java: ON
29+
hl: ON
30+
threadsafe: OFF
31+
parallel: ON
32+
tools: ON
33+
tests: ON
34+
examples: ON
35+
zlib: ON
36+
szip: ON
37+
38+
# Shared libraries with MPICH
39+
- name: "macOS-26 Shared MPICH Fortran"
40+
os: macos-26
41+
mpi: mpich
42+
shared_libs: ON
43+
static_libs: OFF
44+
cpp: OFF
45+
fortran: ON
46+
java: OFF
47+
hl: ON
48+
threadsafe: OFF
49+
parallel: ON
50+
tools: ON
51+
tests: ON
52+
examples: ON
53+
zlib: ON
54+
szip: ON
55+
56+
# Static libraries with OpenMPI
57+
- name: "macOS-26 Static OpenMPI"
58+
os: macos-26
59+
mpi: openmpi
60+
shared_libs: OFF
61+
static_libs: ON
62+
cpp: OFF
63+
fortran: OFF
64+
java: OFF
65+
hl: ON
66+
threadsafe: OFF
67+
parallel: ON
68+
tools: ON
69+
tests: ON
70+
examples: ON
71+
zlib: ON
72+
szip: OFF
73+
74+
# Both static and shared with MPICH
75+
- name: "macOS-26 Both MPICH All Features"
76+
os: macos-26
77+
mpi: mpich
78+
shared_libs: ON
79+
static_libs: ON
80+
cpp: ON
81+
fortran: ON
82+
java: OFF
83+
hl: ON
84+
threadsafe: OFF
85+
parallel: ON
86+
tools: ON
87+
tests: ON
88+
examples: ON
89+
zlib: ON
90+
szip: ON
91+
92+
# Serial build with thread-safety
93+
- name: "macOS-26 Serial Threadsafe"
94+
os: macos-26
95+
mpi: none
96+
shared_libs: ON
97+
static_libs: ON
98+
cpp: ON
99+
fortran: OFF
100+
java: OFF
101+
hl: OFF
102+
threadsafe: ON
103+
parallel: OFF
104+
tools: ON
105+
tests: ON
106+
examples: ON
107+
zlib: ON
108+
szip: ON
109+
110+
# Minimal configuration
111+
- name: "macOS-26 Minimal Config"
112+
os: macos-26
113+
mpi: none
114+
shared_libs: ON
115+
static_libs: OFF
116+
cpp: OFF
117+
fortran: OFF
118+
java: OFF
119+
hl: OFF
120+
threadsafe: OFF
121+
parallel: OFF
122+
tools: OFF
123+
tests: ON
124+
examples: OFF
125+
zlib: OFF
126+
szip: OFF
127+
128+
# Plugin support with OpenMPI
129+
- name: "macOS-26 Plugins OpenMPI"
130+
os: macos-26
131+
mpi: openmpi
132+
shared_libs: ON
133+
static_libs: OFF
134+
cpp: OFF
135+
fortran: OFF
136+
java: OFF
137+
hl: ON
138+
threadsafe: OFF
139+
parallel: ON
140+
tools: ON
141+
tests: ON
142+
examples: ON
143+
zlib: ON
144+
szip: ON
145+
plugins: ON
146+
147+
# No High Level API with MPICH
148+
- name: "macOS-26 No HL MPICH"
149+
os: macos-26
150+
mpi: mpich
151+
shared_libs: ON
152+
static_libs: ON
153+
cpp: ON
154+
fortran: OFF
155+
java: OFF
156+
hl: OFF
157+
threadsafe: OFF
158+
parallel: ON
159+
tools: ON
160+
tests: ON
161+
examples: ON
162+
zlib: ON
163+
szip: ON
164+
165+
name: ${{ matrix.name }}
166+
runs-on: ${{ matrix.os }}
167+
if: "!contains(github.event.head_commit.message, 'skip-ci')"
168+
169+
steps:
170+
- name: Install Dependencies
171+
run: |
172+
# Install base dependencies
173+
brew install autoconf automake libtool
174+
175+
# Install compression libraries
176+
brew install zlib
177+
if [[ "${{ matrix.szip }}" == "ON" ]]; then
178+
brew install libaec
179+
fi
180+
181+
# Install MPI libraries
182+
if [[ "${{ matrix.mpi }}" == "openmpi" ]]; then
183+
brew install openmpi
184+
elif [[ "${{ matrix.mpi }}" == "mpich" ]]; then
185+
brew install mpich
186+
fi
187+
188+
189+
- name: Get Sources
190+
uses: actions/checkout@v5
191+
192+
- name: Configure
193+
run: |
194+
mkdir "${{ runner.workspace }}/build"
195+
cd "${{ runner.workspace }}/build"
196+
197+
# Base CMake options
198+
CMAKE_OPTS="-G Ninja"
199+
CMAKE_OPTS="$CMAKE_OPTS -DCMAKE_BUILD_TYPE=Release"
200+
CMAKE_OPTS="$CMAKE_OPTS -DBUILD_SHARED_LIBS=${{ matrix.shared_libs }}"
201+
CMAKE_OPTS="$CMAKE_OPTS -DBUILD_STATIC_LIBS=${{ matrix.static_libs }}"
202+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_BUILD_CPP_LIB=${{ matrix.cpp }}"
203+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }}"
204+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_BUILD_JAVA=${{ matrix.java }}"
205+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_BUILD_HL_LIB=${{ matrix.hl }}"
206+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_ENABLE_THREADSAFE=${{ matrix.threadsafe }}"
207+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_ENABLE_PARALLEL=${{ matrix.parallel }}"
208+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_BUILD_TOOLS=${{ matrix.tools }}"
209+
CMAKE_OPTS="$CMAKE_OPTS -DBUILD_TESTING=${{ matrix.tests }}"
210+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_BUILD_EXAMPLES=${{ matrix.examples }}"
211+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_ENABLE_ZLIB_SUPPORT=${{ matrix.zlib }}"
212+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_ENABLE_SZIP_SUPPORT=${{ matrix.szip }}"
213+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_ALLOW_UNSUPPORTED=ON"
214+
215+
# Plugin support if specified
216+
if [[ "${{ matrix.plugins }}" == "ON" ]]; then
217+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_ENABLE_PLUGIN_SUPPORT=ON"
218+
CMAKE_OPTS="$CMAKE_OPTS -DHDF5_ALLOW_EXTERNAL_SUPPORT=TGZ"
219+
CMAKE_OPTS="$CMAKE_OPTS -DPLUGIN_USE_LOCALCONTENT=OFF"
220+
fi
221+
222+
# Set Java environment if needed
223+
if [[ "${{ matrix.java }}" == "ON" ]]; then
224+
export JAVA_HOME=$(/usr/libexec/java_home)
225+
CMAKE_OPTS="$CMAKE_OPTS -DJAVA_HOME=$JAVA_HOME"
226+
fi
227+
228+
# Set Fortran compiler if needed
229+
if [[ "${{ matrix.fortran }}" == "ON" ]]; then
230+
CMAKE_OPTS="$CMAKE_OPTS -DCMAKE_Fortran_COMPILER=gfortran-15"
231+
fi
232+
233+
# MPI configuration
234+
if [[ "${{ matrix.parallel }}" == "ON" ]]; then
235+
CMAKE_OPTS="$CMAKE_OPTS -DMPIEXEC_MAX_NUMPROCS=2"
236+
if [[ "${{ matrix.mpi }}" == "openmpi" ]]; then
237+
CMAKE_OPTS="$CMAKE_OPTS -DMPI_C_COMPILER=mpicc"
238+
CMAKE_OPTS="$CMAKE_OPTS -DMPIEXEC_PREFLAGS=--oversubscribe"
239+
elif [[ "${{ matrix.mpi }}" == "mpich" ]]; then
240+
CMAKE_OPTS="$CMAKE_OPTS -DMPI_C_COMPILER=mpicc"
241+
CMAKE_OPTS="$CMAKE_OPTS -DCMAKE_Fortran_COMPILER=mpifort"
242+
sudo ln -s /opt/homebrew/bin/gfortran-15 /opt/homebrew/bin/gfortran
243+
mpifort --version
244+
fi
245+
fi
246+
247+
echo "Configuration options: $CMAKE_OPTS"
248+
cmake $CMAKE_OPTS "$GITHUB_WORKSPACE"
249+
shell: bash
250+
251+
- name: Build
252+
run: cmake --build . --config Release --parallel 2
253+
working-directory: ${{ runner.workspace }}/build
254+
255+
- name: Test
256+
run: |
257+
# Run tests with appropriate settings for each configuration
258+
if [[ "${{ matrix.parallel }}" == "ON" ]]; then
259+
# For parallel builds, limit concurrent tests
260+
ctest . -C Release -V --parallel 1
261+
else
262+
# For serial builds, can run more tests concurrently
263+
ctest . -C Release -V --parallel 2
264+
fi
265+
working-directory: ${{ runner.workspace }}/build
266+
env:
267+
# Set test timeout
268+
CTEST_TIMEOUT: 3600
269+
270+
- name: Upload Test Results
271+
uses: actions/upload-artifact@v4
272+
if: always()
273+
with:
274+
name: test-results-${{ matrix.name }}
275+
path: |
276+
${{ runner.workspace }}/build/Testing/Temporary/CTestCostData.txt
277+
${{ runner.workspace }}/build/Testing/Temporary/LastTest.log
278+
retention-days: 7
279+
280+
- name: Show Test Summary
281+
if: always()
282+
run: |
283+
echo "=== Test Summary for ${{ matrix.name }} ==="
284+
if [[ -f Testing/Temporary/LastTest.log ]]; then
285+
tail -50 Testing/Temporary/LastTest.log
286+
fi
287+
working-directory: ${{ runner.workspace }}/build

0 commit comments

Comments
 (0)