build linux wheels with manylinux_2_28 for wider glibc compat (#18)

* build linux wheels inside manylinux_2_28 for glibc 2.28 compat

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* add perl-IPC-Cmd for openssl build in manylinux

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Adeeb Shihadeh
2026-02-24 17:44:07 -08:00
committed by GitHub
parent ec99b49198
commit 62d18088cc
4 changed files with 57 additions and 19 deletions

View File

@@ -6,43 +6,48 @@ on:
jobs:
build:
name: build - ${{ matrix.runs-on }}
name: build - ${{ matrix.platform }}
runs-on: ${{ matrix.runs-on }}
permissions:
contents: write
strategy:
fail-fast: false
matrix:
runs-on: [ubuntu-latest, ubuntu-24.04-arm, macos-latest]
include:
- platform: linux-x86_64
runs-on: ubuntu-latest
- platform: linux-arm64
runs-on: ubuntu-24.04-arm
- platform: macos
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
if: runner.os != 'Linux'
with:
python-version: "3.14"
- name: Install build dependencies
run: ./setup.sh
- name: Build wheels
run: ./build_wheels.sh dist/
- name: build and release wheels
- name: Upload releases
env:
GH_TOKEN: ${{ github.token }}
run: |
pip install build
for toml in */pyproject.toml; do
[ -f "$toml" ] || continue
pkg="$(dirname "$toml")"
module="${pkg//-/_}"
version=$(python3 -c "import tomllib; print(tomllib.load(open('$toml', 'rb'))['project']['version'])")
tag="${pkg}/v${version}"
echo "========================================="
echo "Building: $pkg v$version"
echo "Uploading: $pkg v$version"
echo "========================================="
python -m build --wheel "$pkg"
whl=$(ls "$pkg"/dist/*.whl)
echo "Uploading: $whl"
whl=$(ls dist/${module}-${version}-*.whl 2>/dev/null) || continue
echo "Wheel: $whl"
if gh release view "$tag" --repo "$GITHUB_REPOSITORY" &>/dev/null; then
gh release upload "$tag" "$whl" --repo "$GITHUB_REPOSITORY" --clobber
else

View File

@@ -22,16 +22,12 @@ jobs:
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
if: runner.os != 'Linux'
with:
python-version: "3.14"
- name: Install build dependencies
run: ./setup.sh
- name: Build wheels
run: |
for pkg in */pyproject.toml; do
pip wheel "./$(dirname "$pkg")" --no-deps --wheel-dir dist/
done
- name: Smoketest locally
run: ./build_wheels.sh dist/
- name: Smoketest
run: bash smoketest.sh dist/
- uses: actions/upload-artifact@v4
with:
@@ -51,6 +47,8 @@ jobs:
runs-on: ubuntu-latest
- image: ubuntu:24.04
runs-on: ubuntu-latest
- image: ubuntu:20.04
runs-on: ubuntu-latest
- image: fedora:41
runs-on: ubuntu-latest
- image: archlinux:latest