-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
1 parent
69643fd
commit 1f9a498
Showing
3 changed files
with
347 additions
and
247 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,7 +35,6 @@ jobs: | |
pre-commit run --all-files | ||
sdist: | ||
needs: [code_checks] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
@@ -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 | ||
|
@@ -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/ |
Oops, something went wrong.