Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update the workflows #19

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
195 changes: 116 additions & 79 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,8 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: |
3.8
3.9
3.10
3.11
3.12
3.13
python-version-file: 'pyproject.toml'
check-latest: true
allow-prereleases: true
- name: Run pre-commit checks
run: |
Expand All @@ -40,7 +35,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
uses: PyO3/maturin-action@main
with:
command: sdist
args: --out dist
Expand All @@ -52,47 +47,58 @@ jobs:

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
# s390x currently has issues building openssl
# - 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
- uses: actions/setup-python@v5
with:
python-version: |
3.8
3.9
3.10
3.11
3.12
3.13
python-version-file: 'pyproject.toml'
check-latest: true
allow-prereleases: true
- name: Temporary fix for openssl regression #25366
run: cargo update openssl-src --precise 300.3.1+3.3.1
- name: Build wheels
uses: PyO3/maturin-action@v1
uses: PyO3/maturin-action@main
env:
PKG_CONFIG_PATH: "/usr/share/miniconda/lib/pkgconfig/"
OPENSSL_NO_VENDOR: 1
with:
target: ${{ matrix.target }}
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
# sccache: 'true' # Disabled due to issues with sccache on linux
# sccache: 'true'
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
apt update -y && apt-get install -y libssl-dev openssl pkg-config libatomic1
fi
# Create symlink for x86
if [ "${{ matrix.platform.target }}" = "x86" ]; then
ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so
fi
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}
name: wheels-linux-${{ matrix.platform.target }}
path: dist
- name: Install and Test
shell: bash
Expand All @@ -101,95 +107,126 @@ jobs:
pip install .[dev] --find-links dist --force-reinstall
pytest -v tests/

windows:
musllinux:
needs: [code_checks]
runs-on: windows-latest
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
target: [x64, x86]
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
- uses: actions/setup-python@v5
with:
python-version: |
3.8
3.9
3.10
3.11
3.12
3.13
python-version-file: 'pyproject.toml'
check-latest: true
allow-prereleases: true
architecture: ${{ matrix.target }}
- name: Set Perl environment variables
- name: Build wheels
uses: PyO3/maturin-action@main
env:
PKG_CONFIG_PATH: "/usr/share/miniconda/lib/pkgconfig/"
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
# sccache: 'true'
manylinux: musllinux_1_2
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 libatomic1
fi
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: dist
- name: Install and Test
shell: bash
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
set -e
pip install .[dev] --find-links dist --force-reinstall
pytest -v tests/

windows:
needs: [code_checks]
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
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
# using main for windows due to this issue
# https://github.com/actions/setup-python/issues/935
- uses: actions/setup-python@main
with:
python-version-file: 'pyproject.toml'
check-latest: true
allow-prereleases: true
architecture: ${{ matrix.platform.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
uses: PyO3/maturin-action@main
env:
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
python-version-file: 'pyproject.toml'
check-latest: true
allow-prereleases: true
- name: Set OPENSSL_DIR
run: echo "OPENSSL_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV
- name: Build wheels
uses: PyO3/maturin-action@v1
uses: PyO3/maturin-action@main
with:
target: ${{ matrix.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
Loading