diff --git a/.github/workflows/wheel-aarch64.yaml b/.github/workflows/wheel-aarch64.yaml new file mode 100644 index 00000000..22edf057 --- /dev/null +++ b/.github/workflows/wheel-aarch64.yaml @@ -0,0 +1,52 @@ +name: Wheels AArch64 + +on: + push: + tags: + - "v*" + +jobs: + build_wheels: + name: Build wheel on ${{matrix.arch}} for ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + arch: [aarch64] + env: + CIBW_ARCHS_LINUX: ${{matrix.arch}} + CIBW_TEST_COMMAND: pytest --pyargs numcodecs + CIBW_TEST_REQUIRES: pytest + CIBW_SKIP: "pp* cp36-* *-musllinux_* *win32 *_i686 *_s390x" + CIBW_ENVIRONMENT: "DISABLE_NUMCODECS_AVX2=1 DISABLE_NUMCODECS_SSE2=1" + + steps: + - uses: actions/checkout@v3 + with: + submodules: true + + - uses: docker/setup-qemu-action@v1 + name: Set up QEMU + + - uses: pypa/cibuildwheel@v2.12.0 + + - uses: actions/upload-artifact@v3 + with: + name: wheels + path: ./wheelhouse + + upload_pypi: + needs: [build_wheels] + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v3 + with: + name: wheels + path: dist + + - uses: pypa/gh-action-pypi-publish@master + with: + user: __token__ + password: ${{ secrets.pypi_password }} + # To test: repository_url: https://test.pypi.org/legacy/ diff --git a/docs/release.rst b/docs/release.rst index d7211436..a5995bb3 100644 --- a/docs/release.rst +++ b/docs/release.rst @@ -31,6 +31,9 @@ Maintenance * Cleanup ``import``s in ``adhoc/blosc_memleak_check.py`` By :user:`John Kirkham `, :issue:`408`. +* Build wheels for Linux AArch64 on verison release. + By :user:`Jeremy Hetzel `, :issue:`315`. + .. _release_0.11.0: 0.11.0 diff --git a/setup.py b/setup.py index f07cf8d4..1b0563c9 100644 --- a/setup.py +++ b/setup.py @@ -3,6 +3,7 @@ from glob import glob import cpuinfo +import platform from Cython.Distutils.build_ext import new_build_ext as build_ext from setuptools import Extension, setup from setuptools.errors import CCompilerError, ExecError, PlatformError @@ -21,6 +22,8 @@ if have_cflags: # respect compiler options set by user pass +elif platform.machine() == 'aarch64': + pass elif os.name == 'posix': if disable_sse2: base_compile_args.append('-mno-sse2')