Skip to content

Publish wheels using older aarch64 images #670

Publish wheels using older aarch64 images

Publish wheels using older aarch64 images #670

Workflow file for this run

name: Continous integration
on:
pull_request:
paths-ignore:
- 'docs/**'
- '*.rst'
push:
branches:
- develop
- main
tags:
- "*"
jobs:
# lint:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/[email protected]
# with:
# submodules: recursive
# - name: Set up Python 3.8
# uses: actions/[email protected]
# with:
# python-version: 3.8
# - name: Install tox
# run: pip install tox
# - name: Lint
# run: tox -e lint
#
# package-checks:
# strategy:
# matrix:
# tox_env:
# - docs
# - twine_check
# runs-on: ubuntu-latest
# steps:
# - uses: actions/[email protected]
# with:
# submodules: recursive
# - name: Set up Python 3.8
# uses: actions/[email protected]
# with:
# python-version: 3.8
# - name: Install isal
# run: sudo apt-get install libisal-dev
# - name: Install tox and upgrade setuptools and pip
# run: pip install --upgrade tox setuptools pip
# - name: Run tox -e ${{ matrix.tox_env }}
# run: tox -e ${{ matrix.tox_env }}
# env:
# PYTHON_ISAL_LINK_DYNAMIC: True
#
# test-static:
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# python-version:
# - "3.8"
# - "3.9"
# - "3.10"
# - "3.11"
# - "3.12"
# - "pypy-3.9"
# - "pypy-3.10"
# os: ["ubuntu-latest"]
# include:
# - os: "macos-latest"
# python-version: 3.8
# - os: "windows-latest"
# python-version: 3.8
# steps:
# - uses: actions/[email protected]
# with:
# submodules: recursive
# - name: Set up Python ${{ matrix.python-version }}
# uses: actions/[email protected]
# with:
# python-version: ${{ matrix.python-version }}
# - name: Install tox and upgrade setuptools
# run: pip install --upgrade tox setuptools
# - name: Install build dependencies (Linux) # Yasm in pypa/manylinux images.
# run: sudo apt install nasm
# if: runner.os == 'Linux'
# - name: Install build dependencies (Macos)
# # Install yasm because nasm does not work when building wheels.
# # Probably because of nasm-filter.sh not filtering all flags that can not be used.
# run: brew install nasm
# if: runner.os == 'macOS'
# - name: Set MSVC developer prompt
# uses: ilammy/[email protected]
# if: runner.os == 'Windows'
# - name: Install nasm (Windows)
# uses: ilammy/[email protected]
# if: runner.os == 'Windows'
# - name: Run tests
# run: tox
# - name: Upload coverage report
# uses: codecov/codecov-action@v1
#
# test-arch:
# if: startsWith(github.ref, 'refs/tags') || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main'
# runs-on: "ubuntu-latest"
# strategy:
# matrix:
# python_version:
# - "3.8"
# steps:
# - uses: actions/[email protected]
# with:
# submodules: recursive
# - uses: uraimo/[email protected]
# name: Build & run test
# with:
# arch: none
# distro: none
# base_image: "--platform=linux/arm64 quay.io/pypa/manylinux2014_aarch64"
# run: |-
# CFLAGS="-DNDEBUG -g0" python${{matrix.python_version}} -m pip install . pytest
# python${{matrix.python_version}} -m pytest tests
#
# # Test if the python-isal conda package can be build. Which is linked
# # dynamically to the conda isa-l package.
# test-dynamic:
# runs-on: ${{ matrix.os }}
# defaults:
# run:
# # This is needed for miniconda, see:
# # https://github.com/marketplace/actions/setup-miniconda#important.
# shell: bash -l {0}
# strategy:
# matrix:
# os: ["ubuntu-latest", "macos-latest", "windows-latest"]
# python_version: [ "python" ]
# include:
# - os: "ubuntu-latest"
# python_version: "pypy"
# steps:
# - uses: actions/[email protected]
# with:
# submodules: recursive
# - name: Install miniconda.
# uses: conda-incubator/[email protected] # https://github.com/conda-incubator/setup-miniconda.
# with:
# channels: conda-forge,defaults
# - name: Install requirements (universal)
# run: conda install isa-l ${{ matrix.python_version}} tox
# - name: Set MSVC developer prompt
# uses: ilammy/[email protected]
# if: runner.os == 'Windows'
# - name: Run tests (dynamic link)
# run: tox
# env:
# PYTHON_ISAL_LINK_DYNAMIC: True
deploy:
runs-on: ${{ matrix.os }}
# needs:
# - lint
# - package-checks
# - test-static
# - test-dynamic
# - test-arch
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
cibw_archs_linux: ["x86_64"]
cibw_before_all_linux:
- >-
curl -o nasm-2.15.05.tar.gz https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.gz &&
tar -xzvf nasm-2.15.05.tar.gz &&
cd nasm-2.15.05/ &&
./autogen.sh &&
./configure &&
make nasm &&
install -c nasm /usr/bin/nasm
build_sdist: [true]
include:
- os: "ubuntu-latest"
cibw_archs_linux: "aarch64"
cibw_before_all_linux: "true" # The true command exits with 0
steps:
- uses: actions/[email protected]
with:
submodules: recursive
- uses: actions/setup-python@v2
name: Install Python
- name: Install cibuildwheel twine wheel
run: python -m pip install cibuildwheel twine wheel
- name: Install build dependencies (Macos)
run: brew install nasm
if: runner.os == 'macOS'
- name: Set MSVC developer prompt
uses: ilammy/[email protected]
if: runner.os == 'Windows'
- name: Install nasm (Windows)
uses: ilammy/[email protected]
if: runner.os == 'Windows'
- name: Set up QEMU
if: ${{runner.os == 'Linux' && matrix.cibw_archs_linux == 'aarch64'}}
uses: docker/[email protected]
with:
platforms: arm64
- name: Build wheels
run: cibuildwheel --output-dir dist
env:
CIBW_SKIP: "*-win32 *-manylinux_i686" # Skip 32 bit
CIBW_ARCHS_LINUX: ${{ matrix.cibw_archs_linux }}
CIBW_BEFORE_ALL_LINUX: ${{ matrix.cibw_before_all_linux }}
# Fully test the build wheels again.
CIBW_TEST_REQUIRES: "pytest"
# Simple tests that requires the project to be build correctly
# Skip extensive compatibility testing which is slow.
CIBW_MANYLINUX_AARCH64_IMAGE: "quay.io/pypa/manylinux2014_aarch64:2023-09-17-ae90a16"
CIBW_MUSLLINUX_AARCH64_IMAGE: "quay.io/pypa/musllinux_1_1_aarch64:2023-09-17-ae90a16"
CIBW_TEST_COMMAND_LINUX: >-
pytest -v {project}/tests/test_igzip.py
{project}/tests/test_gzip_compliance.py
{project}/tests/test_zlib_compliance.py
{project}/tests/test_igzip_lib.py
-k 'not test_compress_decompress'
CIBW_TEST_COMMAND_MACOS: >-
pytest -v {project}/tests/test_igzip.py
{project}/tests/test_gzip_compliance.py
{project}/tests/test_zlib_compliance.py
{project}/tests/test_igzip_lib.py
-k 'not test_compress_decompress'
# Windows does not have the test module apparently. Do more expensive
# tests to verify build.
CIBW_TEST_COMMAND_WINDOWS: >-
pytest {project}/tests/test_igzip.py
{project}/tests/test_igzip_lib.py
{project}/tests/test_compat.py
CIBW_ENVIRONMENT_LINUX: >-
PYTHON_ISAL_BUILD_CACHE=True
PYTHON_ISAL_BUILD_CACHE_FILE=/tmp/build_cache
CFLAGS="-g0 -DNDEBUG"
CIBW_ENVIRONMENT_WINDOWS: >-
PYTHON_ISAL_BUILD_CACHE=True
PYTHON_ISAL_BUILD_CACHE_FILE=${{ runner.temp }}\build_cache
CIBW_ENVIRONMENT_MACOS: >-
PYTHON_ISAL_BUILD_CACHE=True
PYTHON_ISAL_BUILD_CACHE_FILE=${{ runner.temp }}/build_cache
CFLAGS="-g0 -DNDEBUG"
- name: Build sdist
if: ${{runner.os == 'Linux' && matrix.cibw_archs_linux == 'x86_64'}}
run: |
pip install build
python -m build --sdist
- uses: actions/upload-artifact@v2
with:
name: "dist"
path: "dist/"
- name: Publish package to TestPyPI
# pypa/gh-action-pypi-publish@master does not work on OSX
# Alpha, Beta and dev releases contain a - in the tag.
if: contains(github.ref, '-') && startsWith(github.ref, 'refs/tags')
run: twine upload --repository-url https://test.pypi.org/legacy/ dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}
- name: Publish package to PyPI
run: twine upload dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}