Skip to content

Package

Package #39

Workflow file for this run

name: Package
on:
push:
tags:
- v*
jobs:
wheel-linux-aarch64:
name: Build Linux wheels (Aarch64)
runs-on: ubuntu-22.04
strategy:
matrix:
python-tag:
- cp37-manylinux_aarch64
- cp38-manylinux_aarch64
- cp39-manylinux_aarch64
- cp310-manylinux_aarch64
- cp311-manylinux_aarch64
- cp312-manylinux_aarch64
- cp313-manylinux_aarch64
- pp37-manylinux_aarch64
- pp38-manylinux_aarch64
- pp39-manylinux_aarch64
- pp310-manylinux_aarch64
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up QEMU
id: qemu
uses: docker/setup-qemu-action@v2
with:
platforms: all
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: aarch64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BUILD_VERBOSITY: 2
CIBW_BEFORE_BUILD: pip install cython
CIBW_TEST_COMMAND: python -m unittest pyfastani.tests -vv
CIBW_TEST_REQUIRES: importlib-resources biopython
with:
output-dir: dist
- uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.python-tag }}
path: dist/*
wheel-linux-x86_64:
name: Build Linux wheels (x86-64)
runs-on: ubuntu-20.04
strategy:
matrix:
python-tag:
- cp37-manylinux_x86_64
- cp38-manylinux_x86_64
- cp39-manylinux_x86_64
- cp310-manylinux_x86_64
- cp311-manylinux_x86_64
- cp312-manylinux_x86_64
- cp313-manylinux_x86_64
- pp37-manylinux_x86_64
- pp38-manylinux_x86_64
- pp39-manylinux_x86_64
- pp310-manylinux_x86_64
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: x86_64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_BUILD: pip install cython
CIBW_BUILD_VERBOSITY: 2
CIBW_TEST_COMMAND: python -m unittest pyfastani.tests -vv
CIBW_TEST_REQUIRES: importlib-resources biopython
with:
output-dir: dist
- uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.python-tag }}
path: dist/*
wheel-macos-x86_64:
name: Build MacOS wheels (x86-64)
runs-on: macOS-12
strategy:
matrix:
python-tag:
- cp37-macosx_x86_64
- cp38-macosx_x86_64
- cp39-macosx_x86_64
- cp310-macosx_x86_64
- cp311-macosx_x86_64
- cp312-macosx_x86_64
- cp313-macosx_x86_64
- pp37-macosx_x86_64
- pp38-macosx_x86_64
- pp39-macosx_x86_64
- pp310-macosx_x86_64
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: x86_64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_BUILD: pip install cython
CIBW_BUILD_VERBOSITY: 2
CIBW_TEST_COMMAND: python -m unittest pyfastani.tests -vv
CIBW_TEST_REQUIRES: importlib-resources
CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=10.12
with:
output-dir: dist
- uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.python-tag }}
path: dist/*
wheel-macos-aarch64:
name: Build MacOS wheels (Aarch64)
runs-on: macOS-12
strategy:
matrix:
python-tag:
- cp38-macosx_arm64
- cp39-macosx_arm64
- cp310-macosx_arm64
- cp311-macosx_arm64
- cp312-macosx_arm64
- cp313-macosx_arm64
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: arm64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_BUILD: pip install cython
CIBW_BUILD_VERBOSITY: 2
CIBW_TEST_COMMAND: python -m unittest pyfastani.tests -vv
CIBW_TEST_REQUIRES: importlib-resources
CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=10.12
with:
output-dir: dist
- uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.python-tag }}
path: dist/*
# wheel-win32-x86_64:
# name: Build Windows wheels (x86-64)
# runs-on: windows-2019
# strategy:
# matrix:
# python-tag:
# - cp37-win_amd64
# - cp38-win_amd64
# - cp39-win_amd64
# - cp310-win_amd64
# - cp311-win_amd64
# - cp312-win_amd64
# - cp313-win_amd64
# - pp37-win_amd64
# - pp38-win_amd64
# - pp39-win_amd64
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: actions-rs/toolchain@v1
# with:
# toolchain: stable
# override: true
# - name: Build manylinux wheels
# uses: pypa/[email protected]
# env:
# CIBW_ARCHS: AMD64
# CIBW_BUILD: ${{ matrix.python-tag }}
# CIBW_BEFORE_BUILD: pip install cython
# CIBW_BUILD_VERBOSITY: 2
# CIBW_TEST_COMMAND: python -m unittest pyfastani.tests -vv
# CIBW_TEST_REQUIRES: importlib-resources
# with:
# output-dir: dist
# - name: Store built wheels
# uses: actions/upload-artifact@v4
# with:
# name: wheels-${{ matrix.python-tag }}
# path: dist/*
sdist:
runs-on: ubuntu-latest
name: Build source distribution
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install build requirements
run: python -m pip install -r .github/workflows/requirements.txt
- name: Build source distribution
run: python -m build -s .
- name: Store built source distribution
uses: actions/upload-artifact@v4
with:
name: sdist
path: dist/*
test-sdist:
runs-on: ubuntu-latest
name: Test source distribution
needs:
- sdist
steps:
- name: Setup Python 3.13
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Download source distribution
uses: actions/download-artifact@v4
with:
name: sdist
path: dist/
- name: Update pip to latest version
run: python -m pip install -U pip setuptools wheel
- name: Install built wheel
run: python -m pip install --no-binary pyfastani --find-links=dist pyfastani
- name: Run tests without coverage
run: python -m unittest pyfastani.tests -vv
upload:
environment: PyPI
runs-on: ubuntu-latest
name: Upload
needs:
- sdist
- test-sdist
- wheel-linux-aarch64
- wheel-linux-x86_64
- wheel-macos-aarch64
- wheel-macos-x86_64
# - wheel-win32-x86_64
steps:
- name: Download source distribution
uses: actions/download-artifact@v4
with:
name: sdist
path: dist/
merge-multiple: true
- name: Download wheel distributions
uses: actions/download-artifact@v4
with:
pattern: wheels-*
path: dist/
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
if: startsWith(github.ref, 'refs/tags')
release:
environment: GitHub Releases
runs-on: ubuntu-latest
if: "!contains(github.ref, 'rc')"
name: Release
needs: upload
permissions: write-all
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: rasmus-saks/[email protected]
with:
github-token: '${{ secrets.GITHUB_TOKEN }}'
aur:
environment: Arch Linux User Repository
runs-on: ubuntu-latest
if: "!contains(github.ref, 'rc')"
name: Update AUR package
needs:
- sdist
- upload
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Download built wheels
uses: actions/download-artifact@v2
with:
name: wheels
path: dist
- name: Extract package version
run: echo PKGVER=$(echo ${{ github.ref }} | cut -dv -f2) >> $GITHUB_ENV
- name: Compute SHA256 of source distribution
run: echo SHA256=$(sha256sum dist/pyfastani-${{ env.PKGVER }}.tar.gz | cut -f1 -d' ') >> $GITHUB_ENV
- name: Generate PKGBUILD
run: sed -e "s/%pkgver/${{ env.PKGVER }}/g" -e "s/%sha256sum/${{ env.SHA256 }}/g" pkg/aur/PKGBUILD.in > pkg/aur/PKGBUILD
- name: Update package
uses: KSXGitHub/[email protected]
with:
pkgname: python-pyfastani
pkgbuild: pkg/aur/PKGBUILD
commit_username: ${{ secrets.AUR_USER }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: ${{ github.event.head_commit.message }}