Add maturin build step for ci #15
Workflow file for this run
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
# This file is autogenerated by maturin v1.7.4 | |
# To update, run | |
# | |
# maturin generate-ci -m py-denormalized/Cargo.toml github | |
# | |
name: Python | |
on: | |
push: | |
branches: | |
- main | |
- master | |
tags: | |
- "*" | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
linux: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: ubuntu-latest | |
target: x86_64 | |
- runner: ubuntu-latest | |
target: aarch64 | |
- runner: ubuntu-latest | |
target: s390x | |
- runner: ubuntu-latest | |
target: ppc64le | |
steps: | |
# - name: Run sccache-cache | |
# uses: mozilla-actions/[email protected] | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --manifest-path py-denormalized/Cargo.toml | |
# sccache: 'true' | |
manylinux: 2_28 | |
# needed for rocksdb | |
before-script-linux: | | |
# Install go within the docker container - only used for manylinux builds | |
# since they need an isolated docker context. The other build pipelines | |
# just run within the host so use the global worker's go install. | |
# Determine the machine architecture | |
echo "Raw architecture: $(uname -m)" | |
# Log the current glibc version | |
ldd --version | |
# System configs | |
uname -a | |
cat /etc/os-release | |
cat /proc/version | |
# Determine distribution from /etc/os-release | |
DISTRO=$(grep ^ID= /etc/os-release | cut -d= -f2 | tr -d '"') | |
# Install necessary packages based on the distribution | |
if [ "$DISTRO" = "centos" ]; then | |
# CentOS specific package installation | |
yum -y install wget llvm-toolset-7 centos-release-scl | |
export PATH=/opt/rh/llvm-toolset-7/root/usr/bin:/opt/rh/llvm-toolset-7/root/usr/sbin:/opt/rh/devtoolset-10/root/usr/bin:$PATH | |
export LIBCLANG_PATH=/opt/rh/llvm-toolset-7/root/usr/lib64/ | |
elif [ "$DISTRO" = "ubuntu" ]; then | |
# Ubuntu specific package installation | |
# Clang is already installed as part of the base image | |
apt-get update | |
apt-get -y install wget | |
# The maturin environment includes the gcc cross-compilers for aarch64, but it | |
# doesn't include the necessary headers | |
# This causes issues when rust / bindgen tries to run clang, which will fail with | |
# missing headers like 'bits/libc-header-start.h' file not found | |
# We install the headers here to fix this issue | |
apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu | |
find /usr -name libc-header-start.h | |
else | |
echo "Unsupported distribution: $DISTRO" | |
exit 1 | |
fi | |
# - name: Upload wheels | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: wheels-linux-${{ matrix.platform.target }} | |
# path: dist | |
# 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 | |
# - uses: actions/setup-python@v5 | |
# with: | |
# python-version: 3.x | |
# - name: Build wheels | |
# uses: PyO3/maturin-action@v1 | |
# with: | |
# target: ${{ matrix.platform.target }} | |
# args: --release --out dist --manifest-path py-denormalized/Cargo.toml | |
# sccache: 'true' | |
# manylinux: musllinux_1_2 | |
# # - name: Upload wheels | |
# # uses: actions/upload-artifact@v4 | |
# # with: | |
# # name: wheels-musllinux-${{ matrix.platform.target }} | |
# # path: dist | |
# | |
# windows: | |
# runs-on: ${{ matrix.platform.runner }} | |
# strategy: | |
# matrix: | |
# platform: | |
# - runner: windows-latest | |
# target: x64 | |
# - runner: windows-latest | |
# target: x86 | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions/setup-python@v5 | |
# with: | |
# python-version: 3.x | |
# architecture: ${{ matrix.platform.target }} | |
# - name: Build wheels | |
# uses: PyO3/maturin-action@v1 | |
# with: | |
# target: ${{ matrix.platform.target }} | |
# args: --release --out dist --manifest-path py-denormalized/Cargo.toml | |
# sccache: 'true' | |
# # - name: Upload wheels | |
# # uses: actions/upload-artifact@v4 | |
# # with: | |
# # name: wheels-windows-${{ matrix.platform.target }} | |
# # path: dist | |
# | |
# macos: | |
# runs-on: ${{ matrix.platform.runner }} | |
# strategy: | |
# matrix: | |
# platform: | |
# - runner: macos-12 | |
# target: x86_64 | |
# - runner: macos-14 | |
# target: aarch64 | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: actions/setup-python@v5 | |
# with: | |
# python-version: 3.x | |
# - name: Build wheels | |
# uses: PyO3/maturin-action@v1 | |
# with: | |
# target: ${{ matrix.platform.target }} | |
# args: --release --out dist --manifest-path py-denormalized/Cargo.toml | |
# sccache: 'true' | |
# # - name: Upload wheels | |
# # uses: actions/upload-artifact@v4 | |
# # with: | |
# # name: wheels-macos-${{ matrix.platform.target }} | |
# # path: dist | |
# | |
# sdist: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - name: Build sdist | |
# uses: PyO3/maturin-action@v1 | |
# with: | |
# command: sdist | |
# args: --out dist --manifest-path py-denormalized/Cargo.toml | |
# # - name: Upload sdist | |
# # uses: actions/upload-artifact@v4 | |
# # with: | |
# # name: wheels-sdist | |
# # path: dist | |
# | |
# release: | |
# name: Release | |
# runs-on: ubuntu-latest | |
# if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} | |
# needs: [linux, musllinux, windows, macos, sdist] | |
# permissions: | |
# # Use to sign the release artifacts | |
# id-token: write | |
# # Used to upload release artifacts | |
# contents: write | |
# # Used to generate artifact attestation | |
# attestations: write | |
# steps: | |
# - uses: actions/download-artifact@v4 | |
# - name: Generate artifact attestation | |
# uses: actions/attest-build-provenance@v1 | |
# with: | |
# subject-path: 'wheels-*/*' | |
# - name: Publish to PyPI | |
# if: "startsWith(github.ref, 'refs/tags/')" | |
# uses: PyO3/maturin-action@v1 | |
# env: | |
# MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} | |
# with: | |
# command: upload | |
# args: --non-interactive --skip-existing wheels-*/* |