From 1745a918035b14f0d1c9fe5cadaa1b4bd878b3a6 Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 10:49:43 +0100 Subject: [PATCH 01/25] adding linux-aarch64 support --- .github/workflows/wheels.yml | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 4fa40f7d..51cc366c 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -15,26 +15,38 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-15-intel, macos-15] - pyver: [cp39, cp310, cp311, cp312, cp313] + include: + - pyver: [cp39, cp310, cp311, cp312, cp313] + - os: windows-latest + - os: macos-15 + - os: macos-15-intel + - os: ubuntu-latest + - cibw_archs: "native aarch64" steps: + - name: Set up QEMU + if: matrix.cibw_archs == 'aarch64' + uses: docker/setup-qemu-action@v2 + with: + platforms: arm64 + - uses: actions/checkout@v4 with: - submodules: 'true' + submodules: "true" fetch-depth: 0 # Used to host cibuildwheel - uses: actions/setup-python@v5 with: - python-version: '3.x' + python-version: "3.x" - name: Install cibuildwheel run: python -m pip install cibuildwheel - name: Build wheels env: - CIBW_BUILD: ${{matrix.pyver}}-* + CIBW_BUILD: ${{ matrix.pyver }}-* + CIBW_ARCHS: ${{ matrix.cibw_archs }} run: python -m cibuildwheel --output-dir wheelhouse - uses: actions/upload-artifact@v4 @@ -42,7 +54,6 @@ jobs: name: cibw-wheels-${{ matrix.os }}-${{ matrix.pyver }} path: ./wheelhouse/*.whl - merge: name: merge all wheel artifacts runs-on: ubuntu-latest @@ -51,4 +62,4 @@ jobs: - name: Merge Artifacts uses: actions/upload-artifact/merge@v4 with: - name: all-wheels \ No newline at end of file + name: all-wheels From 81bd109958e28d31ebc86bd66f5fb5e4d7b142d3 Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 10:55:11 +0100 Subject: [PATCH 02/25] adding conda linux-aarch64 support --- .github/workflows/conda.yml | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml index 7dc216a7..2806ac32 100644 --- a/.github/workflows/conda.yml +++ b/.github/workflows/conda.yml @@ -15,12 +15,24 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-15-intel, macos-15] - python: [ "3.9", "3.10", "3.11", "3.12", "3.13" ] + include: + - pyver: [cp39, cp310, cp311, cp312, cp313] + - os: windows-latest + - os: macos-15 + - os: macos-15-intel + - os: ubuntu-latest + - cibw_archs: "native aarch64" + defaults: run: shell: bash -el {0} + steps: + - name: Set up QEMU + if: matrix.cibw_archs == 'aarch64' + uses: docker/setup-qemu-action@v2 + with: + platforms: arm64 - uses: actions/checkout@v4 with: fetch-depth: 0 @@ -31,7 +43,7 @@ jobs: python-version: 3.11 environment-file: conda-recipes/devtools.yml show-channel-urls: true - conda-remove-defaults: 'true' + conda-remove-defaults: "true" - name: Build conda packages run: | conda build --python ${{ matrix.python }} --output-folder ../conda_packages smurff @@ -39,8 +51,8 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: conda-${{ matrix.os }}-${{ matrix.python }} - path: conda_packages/* + name: conda-${{ matrix.os }}-${{ matrix.python }} + path: conda_packages/* merge: name: Merge all Conda artifacts @@ -50,4 +62,4 @@ jobs: - name: Merge Artifacts uses: actions/upload-artifact/merge@v4 with: - name: all-conda-packages \ No newline at end of file + name: all-conda-packages From 2094de960834397410dc3693100189cf07a6cd9a Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 11:02:51 +0100 Subject: [PATCH 03/25] updated for aarch64 --- .github/workflows/wheels.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 51cc366c..a7181d18 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -21,7 +21,9 @@ jobs: - os: macos-15 - os: macos-15-intel - os: ubuntu-latest - - cibw_archs: "native aarch64" + cibw_archs: "native" + - os: ubuntu-latest + cibw_archs: "aarch64" steps: - name: Set up QEMU From f13d4bd176e5610ed958de1c21eafa4f7a1988b0 Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 11:09:28 +0100 Subject: [PATCH 04/25] updated for aarch64 --- .github/workflows/wheels.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index a7181d18..c8f0d64f 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -11,8 +11,8 @@ on: jobs: build_wheels: - name: wheel ${{ matrix.pyver }}-${{ matrix.os }} - runs-on: ${{ matrix.os }} + name: Build wheel ${{ matrix.pyver }}-${{ matrix.os }} + runs-on: ${{matrix.os}} strategy: matrix: include: From 0a684d4e5884a6c824b95713481153d6e07c991a Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 11:12:51 +0100 Subject: [PATCH 05/25] trying to fix runson --- .github/workflows/wheels.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index c8f0d64f..297a10b9 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -15,11 +15,14 @@ jobs: runs-on: ${{matrix.os}} strategy: matrix: + pyver: [cp39, cp310, cp311, cp312, cp313] include: - - pyver: [cp39, cp310, cp311, cp312, cp313] - os: windows-latest + cibw_archs: "native" - os: macos-15 + cibw_archs: "native" - os: macos-15-intel + cibw_archs: "native" - os: ubuntu-latest cibw_archs: "native" - os: ubuntu-latest From 76706979279012ab77f06ff204fecd3d07504702 Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 11:16:06 +0100 Subject: [PATCH 06/25] adding CIBW_SKIP --- .github/workflows/wheels.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 297a10b9..e408e596 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -50,6 +50,7 @@ jobs: - name: Build wheels env: + CIBW_SKIP: "pp*" CIBW_BUILD: ${{ matrix.pyver }}-* CIBW_ARCHS: ${{ matrix.cibw_archs }} run: python -m cibuildwheel --output-dir wheelhouse From 0eead3d9d9f40b83f7ee7afdd996dd052a455249 Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 11:19:15 +0100 Subject: [PATCH 07/25] updated wheel YAML accordingly --- .github/workflows/conda.yml | 9 +++++++-- .github/workflows/wheels.yml | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml index 2806ac32..67d496ee 100644 --- a/.github/workflows/conda.yml +++ b/.github/workflows/conda.yml @@ -15,13 +15,18 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: + pyver: [cp39, cp310, cp311, cp312, cp313] include: - - pyver: [cp39, cp310, cp311, cp312, cp313] - os: windows-latest + cibw_archs: "native" - os: macos-15 + cibw_archs: "native" - os: macos-15-intel + cibw_archs: "native" - os: ubuntu-latest - - cibw_archs: "native aarch64" + cibw_archs: "native" + - os: ubuntu-latest + cibw_archs: "aarch64" defaults: run: diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index e408e596..dd49b314 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -12,7 +12,7 @@ on: jobs: build_wheels: name: Build wheel ${{ matrix.pyver }}-${{ matrix.os }} - runs-on: ${{matrix.os}} + runs-on: ${{ matrix.os }} strategy: matrix: pyver: [cp39, cp310, cp311, cp312, cp313] From 35ff22ce5695d316be28870d3b85828fe4c662a5 Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 11:23:30 +0100 Subject: [PATCH 08/25] fixing pyver --- .github/workflows/conda.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml index 67d496ee..42bd6323 100644 --- a/.github/workflows/conda.yml +++ b/.github/workflows/conda.yml @@ -11,7 +11,7 @@ on: jobs: conda-build: - name: Build Conda Package on ${{ matrix.os }} for Python ${{ matrix.python }} + name: Build Conda Package on ${{ matrix.os }} for Python ${{ matrix.pyver }} runs-on: ${{ matrix.os }} strategy: matrix: @@ -51,12 +51,12 @@ jobs: conda-remove-defaults: "true" - name: Build conda packages run: | - conda build --python ${{ matrix.python }} --output-folder ../conda_packages smurff + conda build --python ${{ matrix.pyver }} --output-folder ../conda_packages smurff working-directory: conda-recipes - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: conda-${{ matrix.os }}-${{ matrix.python }} + name: conda-${{ matrix.os }}-${{ matrix.pyver }} path: conda_packages/* merge: From a6a0a256d850e77b6dcddac94f0584cc56fe5fa5 Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 11:47:48 +0100 Subject: [PATCH 09/25] restoring pyver strings --- .github/workflows/conda.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml index 42bd6323..b848979b 100644 --- a/.github/workflows/conda.yml +++ b/.github/workflows/conda.yml @@ -15,7 +15,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - pyver: [cp39, cp310, cp311, cp312, cp313] + pyver: ["3.9", "3.10", "3.11", "3.12", "3.13"] include: - os: windows-latest cibw_archs: "native" From 230ba3e3ee716bcca92462163775f768217c48ab Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 13:30:58 +0100 Subject: [PATCH 10/25] adding python 3.14 --- .github/workflows/conda.yml | 2 +- .github/workflows/wheels.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml index b848979b..e0bab356 100644 --- a/.github/workflows/conda.yml +++ b/.github/workflows/conda.yml @@ -15,7 +15,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - pyver: ["3.9", "3.10", "3.11", "3.12", "3.13"] + pyver: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] include: - os: windows-latest cibw_archs: "native" diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index dd49b314..b8140760 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -15,7 +15,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - pyver: [cp39, cp310, cp311, cp312, cp313] + pyver: [cp39, cp310, cp311, cp312, cp313, cp314] include: - os: windows-latest cibw_archs: "native" From 5ac94f7cc7639ded81e4cb27022af25b00593b17 Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 13:50:10 +0100 Subject: [PATCH 11/25] reverting wheels --- .github/workflows/wheels.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index b8140760..cdd64896 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -15,6 +15,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: + os: [ubuntu-latest, windows-latest, macos-13, macos-14] pyver: [cp39, cp310, cp311, cp312, cp313, cp314] include: - os: windows-latest @@ -29,12 +30,6 @@ jobs: cibw_archs: "aarch64" steps: - - name: Set up QEMU - if: matrix.cibw_archs == 'aarch64' - uses: docker/setup-qemu-action@v2 - with: - platforms: arm64 - - uses: actions/checkout@v4 with: submodules: "true" @@ -50,9 +45,7 @@ jobs: - name: Build wheels env: - CIBW_SKIP: "pp*" CIBW_BUILD: ${{ matrix.pyver }}-* - CIBW_ARCHS: ${{ matrix.cibw_archs }} run: python -m cibuildwheel --output-dir wheelhouse - uses: actions/upload-artifact@v4 From d852064fc3b16c1af7524052c146b45e4591882a Mon Sep 17 00:00:00 2001 From: Geert Vanmeerbeeck Date: Mon, 22 Dec 2025 14:04:33 +0100 Subject: [PATCH 12/25] adding py3.14 support --- conda-recipes/conda_build_config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/conda-recipes/conda_build_config.yaml b/conda-recipes/conda_build_config.yaml index ae614f6b..7d75d714 100644 --- a/conda-recipes/conda_build_config.yaml +++ b/conda-recipes/conda_build_config.yaml @@ -4,6 +4,7 @@ python: - 3.11 - 3.12 - 3.13 + - 3.14 blas_impl: # [linux64 or win64] - openblas # [linux64 or win64] From 8b8bb0b38da863d0bcb3c1529a1b3dcb908db473 Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Thu, 22 Jan 2026 16:01:36 +0100 Subject: [PATCH 13/25] docker: move installation steps of Eigen and HighFive in shared script --- ci/docker/Dockerfile.manylinux | 28 ++------------------------- ci/docker/Dockerfile.musllinux | 14 ++------------ ci/docker/install_dependencies.sh | 32 +++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 38 deletions(-) create mode 100644 ci/docker/install_dependencies.sh diff --git a/ci/docker/Dockerfile.manylinux b/ci/docker/Dockerfile.manylinux index ffce6824..2105a3f9 100644 --- a/ci/docker/Dockerfile.manylinux +++ b/ci/docker/Dockerfile.manylinux @@ -3,29 +3,5 @@ FROM quay.io/pypa/manylinux_2_28_x86_64 RUN yum -y install wget openblas-devel hdf5-devel && \ yum clean all - -#install Eigen -RUN wget -O Eigen.tar.gz https://gitlab.com/libeigen/eigen/-/archive/3.4.1/eigen-3.4.1.tar.gz && \ - tar xzf Eigen.tar.gz && \ - rm Eigen.tar.gz && \ - cd eigen* && \ - mkdir build && \ - cd build && \ - cmake .. && \ - make -j2 && \ - make install && \ - cd ../.. && \ - rm -r eigen* - -#install HighFive -RUN wget -O HighFive.tar.gz https://github.com/BlueBrain/HighFive/archive/v2.10.1.tar.gz && \ - tar xzf HighFive.tar.gz && \ - rm HighFive.tar.gz && \ - cd HighFive* && \ - mkdir build && \ - cd build && \ - cmake .. -DHIGHFIVE_USE_BOOST=OFF && \ - make -j2 && \ - make install && \ - cd ../.. && \ - rm -r HighFive* +COPY install_dependencies.sh /tmp/install_dependencies.sh +RUN chmod +x /tmp/install_dependencies.sh && /tmp/install_dependencies.sh && rm /tmp/install_dependencies.sh diff --git a/ci/docker/Dockerfile.musllinux b/ci/docker/Dockerfile.musllinux index 520597dc..0e6e938c 100644 --- a/ci/docker/Dockerfile.musllinux +++ b/ci/docker/Dockerfile.musllinux @@ -2,15 +2,5 @@ FROM quay.io/pypa/musllinux_1_2_x86_64 RUN apk add wget eigen-dev openblas-dev hdf5-dev -#install HighFive -RUN wget -O HighFive.tar.gz https://github.com/BlueBrain/HighFive/archive/v2.10.1.tar.gz && \ - tar xzf HighFive.tar.gz && \ - rm HighFive.tar.gz && \ - cd HighFive* && \ - mkdir build && \ - cd build && \ - cmake .. -DHIGHFIVE_USE_BOOST=OFF && \ - make -j2 && \ - make install && \ - cd ../.. && \ - rm -r HighFive* +COPY install_dependencies.sh /tmp/install_dependencies.sh +RUN chmod +x /tmp/install_dependencies.sh && /tmp/install_dependencies.sh && rm /tmp/install_dependencies.sh diff --git a/ci/docker/install_dependencies.sh b/ci/docker/install_dependencies.sh new file mode 100644 index 00000000..37a06248 --- /dev/null +++ b/ci/docker/install_dependencies.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -e + +# Install Eigen +echo "Installing Eigen..." +wget -O Eigen.tar.gz https://gitlab.com/libeigen/eigen/-/archive/3.4.1/eigen-3.4.1.tar.gz +tar xzf Eigen.tar.gz +rm Eigen.tar.gz +cd eigen* +mkdir build +cd build +cmake .. +make -j2 +make install +cd ../.. +rm -r eigen* + +# Install HighFive +echo "Installing HighFive..." +wget -O HighFive.tar.gz https://github.com/BlueBrain/HighFive/archive/v2.10.1.tar.gz +tar xzf HighFive.tar.gz +rm HighFive.tar.gz +cd HighFive* +mkdir build +cd build +cmake .. -DHIGHFIVE_USE_BOOST=OFF +make -j2 +make install +cd ../.. +rm -r HighFive* + +echo "Done!" From 9e41d39373351de68c7e41768bc7de46f9787e13 Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Thu, 22 Jan 2026 16:01:57 +0100 Subject: [PATCH 14/25] docker: add manylinux aarch64 docker file --- ci/docker/Dockerfile.manylinux.aarch64 | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 ci/docker/Dockerfile.manylinux.aarch64 diff --git a/ci/docker/Dockerfile.manylinux.aarch64 b/ci/docker/Dockerfile.manylinux.aarch64 new file mode 100644 index 00000000..57002500 --- /dev/null +++ b/ci/docker/Dockerfile.manylinux.aarch64 @@ -0,0 +1,7 @@ +FROM quay.io/pypa/manylinux_2_28_aarch64 + +RUN yum -y install wget openblas-devel hdf5-devel && \ + yum clean all + +COPY install_dependencies.sh /tmp/install_dependencies.sh +RUN chmod +x /tmp/install_dependencies.sh && /tmp/install_dependencies.sh && rm /tmp/install_dependencies.sh From 8dd55f66a1fd511c33b0860d99c4a0fefe4607a4 Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Thu, 22 Jan 2026 16:02:10 +0100 Subject: [PATCH 15/25] docker: convenient Makefile for building docker image --- ci/docker/Makefile | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 ci/docker/Makefile diff --git a/ci/docker/Makefile b/ci/docker/Makefile new file mode 100644 index 00000000..2bbc03fb --- /dev/null +++ b/ci/docker/Makefile @@ -0,0 +1,36 @@ +.PHONY: all alpine manylinux manylinux-aarch64 musllinux ubuntu clean push push-manylinux push-manylinux-aarch64 push-musllinux + +MANYLINUX_X86_64_IMAGE = vanderaa/manylinux_2_28_x86_64_smurff +MANYLINUX_AARCH64_IMAGE = vanderaa/manylinux_2_28_aarch64_smurff +MUSLLINUX_X86_64_IMAGE = vanderaa/musllinux_1_2_x86_64_smurff + +all: alpine manylinux manylinux-aarch64 musllinux ubuntu + +push: push-manylinux push-manylinux-aarch64 push-musllinux + +alpine: + docker build -f Dockerfile.alpine -t smurff:alpine . + +manylinux: + docker build -f Dockerfile.manylinux -t $(MANYLINUX_X86_64_IMAGE) . + +push-manylinux: + docker push $(MANYLINUX_X86_64_IMAGE) + +manylinux-aarch64: + docker build -f Dockerfile.manylinux.aarch64 -t $(MANYLINUX_AARCH64_IMAGE) . + +push-manylinux-aarch64: + docker push $(MANYLINUX_AARCH64_IMAGE) + +musllinux: + docker build -f Dockerfile.musllinux -t $(MUSLLINUX_X86_64_IMAGE) . + +push-musllinux: + docker push $(MUSLLINUX_X86_64_IMAGE) + +ubuntu: + docker build -f Dockerfile.ubuntu -t smurff:ubuntu . + +clean: + docker rmi smurff:alpine $(MANYLINUX_X86_64_IMAGE) $(MANYLINUX_AARCH64_IMAGE) $(MUSLLINUX_X86_64_IMAGE) smurff:ubuntu 2>/dev/null || true From 82c0ae7d192541d150997670c561ad2a308a6458 Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Thu, 22 Jan 2026 16:02:57 +0100 Subject: [PATCH 16/25] ci wheels: name should include arch --- .github/workflows/wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index cdd64896..00ea8875 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -50,7 +50,7 @@ jobs: - uses: actions/upload-artifact@v4 with: - name: cibw-wheels-${{ matrix.os }}-${{ matrix.pyver }} + name: cibw-wheels-${{ matrix.os }}-${{ matrix.pyver }}-${{ matrix.arch }} path: ./wheelhouse/*.whl merge: From 0f695d023c48807812a88466cabaf3af96e3c4ba Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Thu, 22 Jan 2026 16:03:15 +0100 Subject: [PATCH 17/25] ci wheels: add arch and aarch64 to matrix --- .github/workflows/wheels.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 00ea8875..aec8bb35 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -11,23 +11,24 @@ on: jobs: build_wheels: - name: Build wheel ${{ matrix.pyver }}-${{ matrix.os }} + name: Build wheel ${{ matrix.pyver }}-${{ matrix.os }}-${{ matrix.arch }} runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-13, macos-14] + os: [windows-latest, macos-15, macos-15-intel, ubuntu-latest] + arch: [native, aarch64] pyver: [cp39, cp310, cp311, cp312, cp313, cp314] include: - os: windows-latest - cibw_archs: "native" + arch: "native" - os: macos-15 - cibw_archs: "native" + arch: "native" - os: macos-15-intel - cibw_archs: "native" + arch: "native" - os: ubuntu-latest - cibw_archs: "native" + arch: "native" - os: ubuntu-latest - cibw_archs: "aarch64" + arch: "aarch64" steps: - uses: actions/checkout@v4 @@ -46,6 +47,7 @@ jobs: - name: Build wheels env: CIBW_BUILD: ${{ matrix.pyver }}-* + CIBW_ARCHS: ${{ matrix.arch }} run: python -m cibuildwheel --output-dir wheelhouse - uses: actions/upload-artifact@v4 From f61ac361028a24c708515e87e871383a605715a0 Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Thu, 22 Jan 2026 16:04:39 +0100 Subject: [PATCH 18/25] cibw: set aarch64 docker image --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index ad095bb0..7e121553 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,6 +76,7 @@ test-command = 'pytest -n auto {project}/python/test' test-requires = 'parameterized pytest pytest-xdist' manylinux-x86_64-image = "vanderaa/manylinux_2_28_x86_64_smurff" +manylinux-aarch64-image = "vanderaa/manylinux_2_28_aarch64_smurff" musllinux-x86_64-image = "vanderaa/musllinux_1_2_x86_64_smurff" # - cibuildwheel on macos - From 81128f58f9afcfc831cdeb2c625169c601016e7d Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Wed, 28 Jan 2026 17:10:03 +0100 Subject: [PATCH 19/25] ci conda: cibw_archs -> arch --- .github/workflows/conda.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml index e0bab356..6495edf9 100644 --- a/.github/workflows/conda.yml +++ b/.github/workflows/conda.yml @@ -11,22 +11,24 @@ on: jobs: conda-build: - name: Build Conda Package on ${{ matrix.os }} for Python ${{ matrix.pyver }} + name: Build Conda Package on ${{ matrix.os }} for Python ${{ matrix.pyver }} and arch ${{ matrix.arch }} runs-on: ${{ matrix.os }} strategy: matrix: + os: [windows-latest, macos-15, macos-15-intel, ubuntu-latest] + arch: [native, aarch64] pyver: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] include: - os: windows-latest - cibw_archs: "native" + arch: "native" - os: macos-15 - cibw_archs: "native" + arch: "native" - os: macos-15-intel - cibw_archs: "native" + arch: "native" - os: ubuntu-latest - cibw_archs: "native" + arch: "native" - os: ubuntu-latest - cibw_archs: "aarch64" + arch: "aarch64" defaults: run: @@ -34,7 +36,7 @@ jobs: steps: - name: Set up QEMU - if: matrix.cibw_archs == 'aarch64' + if: matrix.arch == 'aarch64' uses: docker/setup-qemu-action@v2 with: platforms: arm64 @@ -56,7 +58,7 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: conda-${{ matrix.os }}-${{ matrix.pyver }} + name: conda-${{ matrix.os }}-${{ matrix.pyver }}-${{ matrix.arch }} path: conda_packages/* merge: From 86e5eebb131c48e9bd5b2699f5624a51cb646a74 Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Mon, 2 Feb 2026 13:40:50 +0100 Subject: [PATCH 20/25] conda: add aarch64 using cross-python --- conda-recipes/conda_build_config.yaml | 12 ++++++++++-- conda-recipes/smurff/meta.yaml | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/conda-recipes/conda_build_config.yaml b/conda-recipes/conda_build_config.yaml index 7d75d714..d4a30a2a 100644 --- a/conda-recipes/conda_build_config.yaml +++ b/conda-recipes/conda_build_config.yaml @@ -3,12 +3,13 @@ python: - 3.10 - 3.11 - 3.12 - - 3.13 + - 3.13 # [not aarch64] - 3.14 -blas_impl: # [linux64 or win64] +blas_impl: # [linux64 or aarch64 or win64] - openblas # [linux64 or win64] - mkl # [linux64 or win64] + - openblas # [aarch64] hdf5: - 1.10.4 @@ -17,6 +18,13 @@ hdf5: c_compiler: vs2022 # [win] cxx_compiler: vs2022 # [win] +target_platform: # [linux] + - linux-64 # [linux] + - linux-aarch64 # [linux] + pin_run_as_build: libboost: x.x hdf5: x.x.x + python: + min_pin: x.x + max_pin: x.x \ No newline at end of file diff --git a/conda-recipes/smurff/meta.yaml b/conda-recipes/smurff/meta.yaml index 16e0a9ab..f5b033cd 100644 --- a/conda-recipes/smurff/meta.yaml +++ b/conda-recipes/smurff/meta.yaml @@ -17,6 +17,8 @@ requirements: - {{ compiler('cxx') }} - {{ compiler('c') }} - llvm-openmp # [osx] + - python # [build_platform != target_platform] + - cross-python_{{target_platform}} # [build_platform != target_platform] host: - llvm-openmp # [osx] - mkl-devel <2025 # [blas_impl == 'mkl'] From 659f520d58ed73c8c3ca3bab164f2743ead7fc45 Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Tue, 3 Feb 2026 08:59:54 +0100 Subject: [PATCH 21/25] conda: qemu only on ubuntu-latest --- .github/workflows/conda.yml | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml index 6495edf9..4a20f06d 100644 --- a/.github/workflows/conda.yml +++ b/.github/workflows/conda.yml @@ -11,24 +11,12 @@ on: jobs: conda-build: - name: Build Conda Package on ${{ matrix.os }} for Python ${{ matrix.pyver }} and arch ${{ matrix.arch }} + name: Build Conda Package on ${{ matrix.os }} for Python ${{ matrix.pyver }} runs-on: ${{ matrix.os }} strategy: matrix: os: [windows-latest, macos-15, macos-15-intel, ubuntu-latest] - arch: [native, aarch64] pyver: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] - include: - - os: windows-latest - arch: "native" - - os: macos-15 - arch: "native" - - os: macos-15-intel - arch: "native" - - os: ubuntu-latest - arch: "native" - - os: ubuntu-latest - arch: "aarch64" defaults: run: @@ -36,7 +24,7 @@ jobs: steps: - name: Set up QEMU - if: matrix.arch == 'aarch64' + if: matrix.os == 'ubuntu-latest' uses: docker/setup-qemu-action@v2 with: platforms: arm64 @@ -58,7 +46,7 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: conda-${{ matrix.os }}-${{ matrix.pyver }}-${{ matrix.arch }} + name: conda-${{ matrix.os }}-${{ matrix.pyver }} path: conda_packages/* merge: From 8b2133ef88caf387bccdcffd793547664c7f408d Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Tue, 3 Feb 2026 09:03:03 +0100 Subject: [PATCH 22/25] wheels: limit matrix --- .github/workflows/wheels.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index aec8bb35..6cc8c873 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -15,8 +15,6 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [windows-latest, macos-15, macos-15-intel, ubuntu-latest] - arch: [native, aarch64] pyver: [cp39, cp310, cp311, cp312, cp313, cp314] include: - os: windows-latest From 062a99f487149aa6b85cbb853078a5809027b26c Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Tue, 3 Feb 2026 09:07:18 +0100 Subject: [PATCH 23/25] conda: bump mkl version --- conda-recipes/smurff/meta.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/conda-recipes/smurff/meta.yaml b/conda-recipes/smurff/meta.yaml index f5b033cd..6d17a065 100644 --- a/conda-recipes/smurff/meta.yaml +++ b/conda-recipes/smurff/meta.yaml @@ -20,9 +20,9 @@ requirements: - python # [build_platform != target_platform] - cross-python_{{target_platform}} # [build_platform != target_platform] host: - - llvm-openmp # [osx] - - mkl-devel <2025 # [blas_impl == 'mkl'] - - openblas # [blas_impl != 'mkl'] + - llvm-openmp # [osx] + - mkl-devel # [blas_impl == 'mkl'] + - openblas # [blas_impl != 'mkl'] - eigen - catch2 - libboost-devel @@ -34,9 +34,9 @@ requirements: - setuptools_scm run: - python {{ python }} - - mkl <2025 # [blas_impl == 'mkl'] - - openblas # [blas_impl != 'mkl'] - - libboost # [not win] + - mkl # [blas_impl == 'mkl'] + - openblas # [blas_impl != 'mkl'] + - libboost # [not win] - numpy - scipy - pandas From 64ce765773ffbdcbce4f14236d5bc198db94227b Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Tue, 3 Feb 2026 20:38:06 +0100 Subject: [PATCH 24/25] conda: fix blas_impl selector on aarch64 --- conda-recipes/conda_build_config.yaml | 3 +-- conda-recipes/smurff/meta.yaml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/conda-recipes/conda_build_config.yaml b/conda-recipes/conda_build_config.yaml index d4a30a2a..53fe1487 100644 --- a/conda-recipes/conda_build_config.yaml +++ b/conda-recipes/conda_build_config.yaml @@ -7,9 +7,8 @@ python: - 3.14 blas_impl: # [linux64 or aarch64 or win64] - - openblas # [linux64 or win64] + - openblas # [linux64 or aarch64 or win64] - mkl # [linux64 or win64] - - openblas # [aarch64] hdf5: - 1.10.4 diff --git a/conda-recipes/smurff/meta.yaml b/conda-recipes/smurff/meta.yaml index 6d17a065..4236f263 100644 --- a/conda-recipes/smurff/meta.yaml +++ b/conda-recipes/smurff/meta.yaml @@ -16,7 +16,7 @@ requirements: - ninja - {{ compiler('cxx') }} - {{ compiler('c') }} - - llvm-openmp # [osx] + - llvm-openmp # [osx] - python # [build_platform != target_platform] - cross-python_{{target_platform}} # [build_platform != target_platform] host: From 9d5689b16744787a16f8573ade8f8a7058a7f4c8 Mon Sep 17 00:00:00 2001 From: Tom Vander Aa Date: Thu, 5 Feb 2026 10:55:57 +0100 Subject: [PATCH 25/25] cibw: setup qemu --- .github/workflows/build_linux.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index 15078a0d..94c107ad 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -20,6 +20,11 @@ jobs: - RelNoOpenMP - RelWithDebInfo steps: + - name: Set up QEMU + if: runner.os == 'Linux' + uses: docker/setup-qemu-action@v2 + with: + platforms: arm64 - name: checkout uses: actions/checkout@v4 with: