Request
Please add manylinux_2_28_aarch64 wheels for netgen-occt, netgen-mesher, and ngsolve on PyPI. Currently only x86_64 Linux, macOS (x86_64 + arm64), and Windows amd64 wheels are published.
aarch64 Linux is increasingly common — AWS Graviton, Ampere Altra, Raspberry Pi 5, Apple Silicon Linux VMs, and NVIDIA Grace. Projects that depend on netgen/ngsolve (e.g. build123d) cannot support aarch64 Linux users today.
Evidence that it should work
- macOS arm64 wheels already ship (
netgen_occt-7.8.1-py3-none-macosx_11_0_arm64.whl), proving the C++ code compiles and runs on ARM.
- Arch Linux ARM packages OCCT 7.9.3 for aarch64 as a standard community package.
- OCCT officially supports ARM targets (Android arm64-v8a, Apple M1).
- OpenBLAS supports aarch64 and can substitute for Intel MKL.
What would need to change
Based on reviewing the build scripts in this repo:
netgen-occt
The pre-built OCCT shared libraries need to be compiled in a manylinux_2_28_aarch64 container and packaged into a py3-none-manylinux_2_28_aarch64 wheel.
netgen-mesher (tests/build_pip.sh)
- Use
quay.io/pypa/manylinux_2_28_aarch64 Docker image instead of manylinux_2_28_x86_64
- Fix hardcoded
openmpi-x86_64 / mpich-x86_64 include paths → use openmpi-aarch64 / mpich-aarch64
- Remove or skip
NETGEN_ARCH=avx2 (AVX2 is x86-only; setup.py already handles this via env var)
- Fix x86_64 ccache RPM download → use aarch64 RPM
- Fix wheel platform tag rename from
manylinux_2_17_x86_64 → manylinux_2_28_aarch64
ngsolve
- Same Docker image and path fixes as netgen-mesher
- Replace Intel MKL dependency with OpenBLAS (MKL is x86-only)
CI
- Add an aarch64 Linux runner (self-hosted, or GitHub Actions
ubuntu-24.04-arm, or QEMU emulation in existing CI)
Context
This came up while adding NGSolve interoperability to build123d (PR #1265). build123d's upcoming 0.11.0 release will support aarch64 Linux, but the ngsolve integration cannot work on that platform without these wheels.
Happy to help with testing if aarch64 builds become available.
Request
Please add
manylinux_2_28_aarch64wheels fornetgen-occt,netgen-mesher, andngsolveon PyPI. Currently only x86_64 Linux, macOS (x86_64 + arm64), and Windows amd64 wheels are published.aarch64 Linux is increasingly common — AWS Graviton, Ampere Altra, Raspberry Pi 5, Apple Silicon Linux VMs, and NVIDIA Grace. Projects that depend on netgen/ngsolve (e.g. build123d) cannot support aarch64 Linux users today.
Evidence that it should work
netgen_occt-7.8.1-py3-none-macosx_11_0_arm64.whl), proving the C++ code compiles and runs on ARM.What would need to change
Based on reviewing the build scripts in this repo:
netgen-occt
The pre-built OCCT shared libraries need to be compiled in a
manylinux_2_28_aarch64container and packaged into apy3-none-manylinux_2_28_aarch64wheel.netgen-mesher (
tests/build_pip.sh)quay.io/pypa/manylinux_2_28_aarch64Docker image instead ofmanylinux_2_28_x86_64openmpi-x86_64/mpich-x86_64include paths → useopenmpi-aarch64/mpich-aarch64NETGEN_ARCH=avx2(AVX2 is x86-only;setup.pyalready handles this via env var)manylinux_2_17_x86_64→manylinux_2_28_aarch64ngsolve
CI
ubuntu-24.04-arm, or QEMU emulation in existing CI)Context
This came up while adding NGSolve interoperability to build123d (PR #1265). build123d's upcoming 0.11.0 release will support aarch64 Linux, but the ngsolve integration cannot work on that platform without these wheels.
Happy to help with testing if aarch64 builds become available.