Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
27 changes: 21 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,15 @@ jobs:
env:
ADIOS2: "OFF"

# builds faster on Travis-CI:
#- os: ubuntu-20.04
# arch: "aarch64"
# Linux ARM64 (aarch64): native GitHub-hosted runner, free for public
# repos (cibuildwheel builds aarch64 natively, no QEMU). Full parity with
# the x86_64 leg above: cp310-cp314, many + musl, ADIOS2 ON.
# (Formerly built on Travis-CI, which is retired.)
Comment thread
ax3l marked this conversation as resolved.
Outdated
- os: ubuntu-24.04-arm
arch: "aarch64"

# builds faster on Travis-CI:
# ppc64le was only ever built on the (now retired) Travis-CI; there is no
# free GitHub-hosted ppc64le runner, so these wheels are no longer produced.
#- os: ubuntu-20.04
# arch: "ppc64le"

Expand All @@ -63,6 +67,17 @@ jobs:
CMAKE_GENERATOR_PLATFORM: "Win32"
ADIOS2: "OFF" # 32-bit: no 32-bit ADIOS2 CI; BP read segfaults (see i686)

# Windows ARM64: native GitHub-hosted runner, free for public repos
# (cibuildwheel ARM64 support is still experimental). CPython win_arm64
# exists only from 3.11+, so no cp310 and no PyPy here. First cut ships
# HDF5 + JSON only (ADIOS2 OFF) to avoid an unproven ADIOS2-on-ARM64 build;
# library_builders.bat then compiles only zlib + HDF5. See i686/win32.
Comment thread
ax3l marked this conversation as resolved.
Outdated
- os: windows-11-arm
arch: "ARM64"
build: "cp311-* cp312-* cp313-* cp314-*"
env:
ADIOS2: "OFF"

- os: macos-15-intel
arch: "x86_64"
env:
Expand Down Expand Up @@ -235,8 +250,8 @@ jobs:
CIBW_TEST_REQUIRES_PYODIDE: numpy
CIBW_TEST_COMMAND: >
python {project}/.github/check_wheel_libs.py &&
python -c "import sys, openpmd_api as io; v = io.variants;
need_adios2 = sys.maxsize > 2**32;
python -c "import openpmd_api as io; v = io.variants;
need_adios2 = '${{ matrix.env.ADIOS2 || 'ON' }}' == 'ON';
assert v['hdf5'] and v['json'] and (v['adios2'] or not need_adios2), v;
print('openPMD', io.__version__, dict(v))" &&
python {project}/.github/smoke_roundtrip.py
Expand Down
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,12 +134,12 @@ install:
- git clone --branch ${OPENPMD_GIT_REF} --depth 1 https://github.com/openPMD/openPMD-api.git src
- cp library_builders.sh list_library_deps.py check_wheel_libs.py smoke_roundtrip.py src/.github/
# Wheels-only re-release: bump the package version (same source).
- (cd src && git apply ../setup-py-version-post2.patch)
- (cd src && git apply ../setup-py-version-post4.patch)
# Keep statically-embedded deps (HDF5/ADIOS2/openPMD) private so the wheel can
# be co-loaded with another extension that also embeds them (ImpactX/WarpX).
- (cd src && git apply ../python-hide-symbols.patch)
- python -m pip install --upgrade pip setuptools wheel
- python -m pip install cibuildwheel==3.2.1
- python -m pip install cibuildwheel==4.1.0
# twine & cryptography: see
# https://github.com/scikit-build/cmake-python-distributions/blob/4730aeee240917303f293dffc89a8d8d5a4787c4/requirements-deploy.txt
# https://github.com/pyca/cryptography/issues/6086
Expand Down
22 changes: 16 additions & 6 deletions library_builders.bat
Original file line number Diff line number Diff line change
Expand Up @@ -288,10 +288,20 @@ exit /b 0
:main
call :install_buildessentials
call :build_zlib
call :build_sqlite
:: build_bzip2
:: build_szip
call :build_zfp
call :build_blosc2
call :build_hdf5
call :build_adios2

rem ADIOS2 and its exclusive dependencies (SQLite3, ZFP, C-Blosc2) are only built
rem when openPMD is configured with ADIOS2 (openPMD_CMAKE_openPMD_USE_ADIOS2=ON, set
rem via CIBW_ENVIRONMENT_WINDOWS and visible here in the before-build step). Targets
rem that ship HDF5 + JSON only -- Windows ARM64 and win32 (x86) -- skip this whole
rem chain, which avoids an unproven ADIOS2-on-ARM64 build and trims the required
rem tooling to curl + PowerShell + CMake. HDF5 depends only on zlib, so it stays
rem unconditional above.
Comment thread
ax3l marked this conversation as resolved.
Outdated
if /I "%openPMD_CMAKE_openPMD_USE_ADIOS2%"=="ON" (
call :build_sqlite
rem build_bzip2
rem build_szip
call :build_zfp
call :build_blosc2
call :build_adios2
)
Loading