Skip to content

Commit

Permalink
Update the workflows
Browse files Browse the repository at this point in the history
Maturin has offered some new workflow definitions. I've adapted many of
the changes into our existing workflows, while keeping some of the
important original functionality.
One nice change is the migration away from manylinux, so we'll see how
this pans out in the long run.
  • Loading branch information
JacobCallahan committed Oct 8, 2024
1 parent 69643fd commit 1f9a498
Show file tree
Hide file tree
Showing 3 changed files with 347 additions and 247 deletions.
189 changes: 103 additions & 86 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ jobs:
pre-commit run --all-files
sdist:
needs: [code_checks]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -51,48 +50,93 @@ jobs:
path: dist

linux:
needs: [code_checks]
runs-on: ubuntu-latest
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
# s390x currently has issues with gcc
target: [x86_64, aarch64, armv7, ppc64le]
platform:
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-latest
target: x86
- runner: ubuntu-latest
target: aarch64
- runner: ubuntu-latest
target: armv7
- runner: ubuntu-latest
target: s390x
- runner: ubuntu-latest
target: ppc64le
steps:
- uses: actions/checkout@v4
- name: Temporary fix for openssl regression #25366
run: cargo update openssl-src --precise 300.3.1+3.3.1
- name: Install OpenSSL
run: |
sudo apt-get update
sudo apt-get install -y libssl-dev pkg-config
- uses: actions/setup-python@v5
with:
python-version: |
3.8
3.9
3.10
3.11
3.12
3.13
allow-prereleases: true
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
env:
# Set environment variables if needed
OPENSSL_ROOT_DIR: /usr/lib/ssl
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.platform.target }}
path: dist
- name: Install and Test
shell: bash
run: |
set -e
pip install .[dev] --find-links dist --force-reinstall
pytest -v tests/
musllinux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-latest
target: x86
- runner: ubuntu-latest
target: aarch64
- runner: ubuntu-latest
target: armv7
steps:
- uses: actions/checkout@v4
- name: Temporary fix for openssl regression #25366
run: cargo update openssl-src --precise 300.3.1+3.3.1
- name: Install OpenSSL
run: |
sudo apt-get update
sudo apt-get install -y libssl-dev pkg-config
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
env:
PKG_CONFIG_PATH: "/usr/share/miniconda/lib/pkgconfig/"
OPENSSL_NO_VENDOR: 1
# Set environment variables if needed
OPENSSL_ROOT_DIR: /usr/lib/ssl
with:
target: ${{ matrix.target }}
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
# sccache: 'true' # Disabled due to issues with sccache on linux
manylinux: auto
before-script-linux: |
# If we're running on rhel centos, install needed packages. thx s3rius!
if command -v yum &> /dev/null; then
yum update -y && yum install -y gcc perl-core openssl openssl-devel pkgconfig libatomic
else
# If we're running on debian-based system.
apt update -y && apt-get install -y libssl-dev openssl pkg-config
fi
sccache: 'true'
manylinux: musllinux_1_2
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}
name: wheels-musllinux-${{ matrix.platform.target }}
path: dist
- name: Install and Test
shell: bash
Expand All @@ -102,94 +146,67 @@ jobs:
pytest -v tests/
windows:
needs: [code_checks]
runs-on: windows-latest
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
target: [x64, x86]
platform:
- runner: windows-latest
target: x64
- runner: windows-latest
target: x86
steps:
- uses: actions/checkout@v4
- name: Install OpenSSL
shell: powershell
run: |
choco install openssl
- uses: actions/setup-python@v5
with:
python-version: |
3.8
3.9
3.10
3.11
3.12
3.13
allow-prereleases: true
architecture: ${{ matrix.target }}
- name: Set Perl environment variables
run: |
echo "PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
echo "OPENSSL_SRC_PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
- name: Remove wincred from docker config
run: sed -i '/wincred/d' ~/.docker/config.json
python-version: 3.x
architecture: ${{ matrix.platform.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
env:
# Set environment variables if needed
OPENSSL_DIR: C:\Program Files\OpenSSL-Win64
OPENSSL_STATIC: 1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.target }}
name: wheels-windows-${{ matrix.platform.target }}
path: dist
- name: Install
shell: bash
run: pip install .[dev] --find-links dist --force-reinstall
# Disabled on windows due to issues with docker
# BuildError: no matching manifest for windows/amd64 ... in the manifest list entries
# - name: Test
# if: ${{ !startsWith(matrix.target, 'x86') }}
# shell: bash
# run: pytest -v tests/

macos:
needs: [code_checks]
runs-on: macos-latest
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
target: [x86_64, aarch64]
env:
OPENSSL_NO_VENDOR: 1
DOCKER_HOST: unix:///var/run/docker.sock
platform:
- runner: macos-12
target: x86_64
- runner: macos-14
target: aarch64
steps:
- uses: actions/checkout@v4
- name: Install OpenSSL
run: |
brew install [email protected]
- uses: actions/setup-python@v5
with:
python-version: |
3.8
3.9
3.10
3.11
3.12
3.13
allow-prereleases: true
- name: Set OPENSSL_DIR
run: echo "OPENSSL_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
env:
OPENSSL_DIR: /usr/local/opt/[email protected]
OPENSSL_NO_VENDOR: 1
with:
target: ${{ matrix.target }}
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.target }}
name: wheels-macos-${{ matrix.platform.target }}
path: dist
# - name: setup-docker
# run: |
# brew install docker
# open --background -a Docker
# while ! docker info &> /dev/null; do sleep 1; done
- name: Install
shell: bash
run: pip install .[dev] --find-links dist --force-reinstall
# Disabled on macos due to issues with docker
# - name: Test
# shell: bash
# run: pytest -v tests/
Loading

0 comments on commit 1f9a498

Please sign in to comment.