Skip to content

Python

Python #127

Workflow file for this run

name: Python
on:
- push
- pull_request
jobs:
wheel-linux-aarch64:
name: Build Linux wheels (Aarch64)
runs-on: ubuntu-20.04
if: "startsWith(github.ref, 'refs/tags/v')"
strategy:
matrix:
python-tag:
- cp37-manylinux_aarch64
- cp38-manylinux_aarch64
- cp39-manylinux_aarch64
- cp310-manylinux_aarch64
- cp311-manylinux_aarch64
- pp37-manylinux_aarch64
- pp38-manylinux_aarch64
- pp39-manylinux_aarch64
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
id: qemu
uses: docker/setup-qemu-action@v2
with:
platforms: all
- name: Build manylinux wheels
uses: pypa/cibuildwheel@v2.11.3
env:
CIBW_ARCHS: aarch64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_ALL: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh /dev/stdin -y"
CIBW_BEFORE_BUILD: "pip install setuptools-rust"
CIBW_BUILD_VERBOSITY: 2
CIBW_ENVIRONMENT: CARGO_NET_GIT_FETCH_WITH_CLI=true
CIBW_TEST_COMMAND: python -m unittest lightmotif.tests
with:
output-dir: dist
- uses: actions/upload-artifact@v3
with:
name: wheels
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
- pp37-manylinux_x86_64
- pp38-manylinux_x86_64
- pp39-manylinux_x86_64
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- name: Build manylinux wheels
uses: pypa/cibuildwheel@v2.11.3
env:
CIBW_ARCHS: x86_64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_ALL: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh /dev/stdin -y"
CIBW_BEFORE_BUILD: "pip install setuptools-rust"
CIBW_BUILD_VERBOSITY: 2
CIBW_ENVIRONMENT: CARGO_NET_GIT_FETCH_WITH_CLI=true
CIBW_TEST_COMMAND: python -m unittest lightmotif.tests
with:
output-dir: dist
- uses: actions/upload-artifact@v3
with:
name: wheels
path: dist/*
wheel-macos-x86_64:
name: Build MacOS wheels (x86-64)
runs-on: macOS-11
strategy:
matrix:
python-tag:
- cp37-macosx_x86_64
- cp38-macosx_x86_64
- cp39-macosx_x86_64
- cp310-macosx_x86_64
- cp311-macosx_x86_64
- pp37-macosx_x86_64
- pp38-macosx_x86_64
- pp39-macosx_x86_64
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- name: Build manylinux wheels
uses: pypa/cibuildwheel@v2.11.3
env:
CIBW_ARCHS: x86_64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_ALL: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh /dev/stdin -y"
CIBW_BEFORE_BUILD: "pip install setuptools-rust"
CIBW_BUILD_VERBOSITY: 2
CIBW_ENVIRONMENT: CARGO_NET_GIT_FETCH_WITH_CLI=true
CIBW_TEST_COMMAND: python -m unittest lightmotif.tests
with:
output-dir: dist
- uses: actions/upload-artifact@v3
with:
name: wheels
path: dist/*
wheel-macos-aarch64:
name: Build MacOS wheels (Aarch64)
runs-on: macOS-11
if: "startsWith(github.ref, 'refs/tags/v')"
strategy:
matrix:
python-tag:
- cp38-macosx_arm64
- cp39-macosx_arm64
- cp310-macosx_arm64
- cp311-macosx_arm64
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin
- name: Build manylinux wheels
uses: pypa/cibuildwheel@v2.11.3
env:
CIBW_ARCHS: arm64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_ALL: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh /dev/stdin -y"
CIBW_BEFORE_BUILD: "pip install setuptools-rust"
CIBW_BUILD_VERBOSITY: 2
CIBW_ENVIRONMENT: CARGO_NET_GIT_FETCH_WITH_CLI=true
CIBW_TEST_COMMAND: python -m unittest lightmotif.tests
with:
output-dir: dist
- uses: actions/upload-artifact@v3
with:
name: wheels
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
- pp37-win_amd64
- pp38-win_amd64
- pp39-win_amd64
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- name: Build manylinux wheels
uses: pypa/cibuildwheel@v2.11.3
env:
CIBW_ARCHS: AMD64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_BUILD: "pip install setuptools-rust"
CIBW_BUILD_VERBOSITY: 2
CIBW_TEST_COMMAND: python -m unittest lightmotif.tests
with:
output-dir: dist
- uses: actions/upload-artifact@v3
with:
name: wheels
path: dist/*
sdist:
runs-on: ubuntu-latest
name: Build source distribution
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Set up Python 3.11
uses: actions/setup-python@v2
with:
python-version: 3.11
- name: Install setup requirements
run: python -m pip install -U setuptools-rust
- name: Build source distribution
run: python setup.py sdist
- name: Store built source distribution
uses: actions/upload-artifact@v2
with:
name: wheels
path: dist/*
upload:
environment: PyPI
runs-on: ubuntu-latest
name: Upload
if: "startsWith(github.ref, 'refs/tags/v')"
needs:
- sdist
- wheel-linux-aarch64
- wheel-linux-x86_64
- wheel-macos-aarch64
- wheel-macos-x86_64
- wheel-win32-x86_64
steps:
- name: Download built wheels
uses: actions/download-artifact@v2
with:
name: wheels
path: dist
- name: Publish distributions to PyPI
uses: pypa/gh-action-pypi-publish@master
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
skip_existing: true
release:
environment: GitHub Releases
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/v')"
name: Release
needs: upload
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Release a Changelog
uses: rasmus-saks/release-a-changelog-action@v1.0.1
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@v3
# with:
# submodules: true
# - name: Set up Python 3.10
# uses: actions/setup-python@v2
# with:
# python-version: '3.10'
# - name: Install build dependencies
# run: pip install setuptools-rust
# - name: Download built wheels
# uses: actions/download-artifact@v2
# with:
# name: wheels
# path: dist
# - name: Extract package version
# run: echo PKGVER=$(python setup.py --version) >> $GITHUB_ENV
# - name: Compute SHA256 of source distribution
# run: echo SHA256=$(sha256sum dist/lightmotif-${{ 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/github-actions-deploy-aur@v2.2.5
# with:
# pkgname: python-lightmotif
# 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 }}
# ssh_keyscan_types: rsa,dsa,ecdsa,ed25519