Skip to content

update abi compatibility #318

update abi compatibility

update abi compatibility #318

Workflow file for this run

name: Build
on:
push:
tags:
- v*
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build_wheel:
name: build-${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-2022, ubuntu-22.04, ubuntu-22.04-arm, macos-14]
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: '3.11'
cache: 'pip'
- name: Install dependencies
run: |
pip3 install wheel numpy cibuildwheel
- name: Build extension for ${{ matrix.os }}
shell: bash
if: runner.os != 'Linux'
run: |
python3 -m pip wheel . -w dist
for old in dist/rocketsim-*.whl
do
new=$(echo $old | sed -E 's/-(cp[0-9]+)-cp[0-9]+-/-cp36-abi3-/g')
mv $old $new
done
- name: Build extension for ${{ matrix.os }}
if: runner.os == 'Linux'
run: |
python3 -m cibuildwheel --output-dir dist
if [[ "${{ matrix.os }}" = "ubuntu-22.04-arm" ]]
then
arch="aarch64"
else
arch="x86_64"
fi
for old in dist/rocketsim-*.whl
do
new=$(echo $old | sed -E "s/-(cp[0-9]+)-cp[0-9]+-.*\\.whl/-cp36-abi3-manylinux_2_27_${arch}.whl/g")
mv $old $new
done
- uses: actions/upload-artifact@v6
with:
name: wheel-${{ runner.os }}-${{ runner.arch }}
path: dist/rocketsim-*.whl
test_wheel:
name: test-${{ matrix.os }}-python-${{ matrix.pyversion }}
runs-on: ${{ matrix.os }}
needs: build_wheel
strategy:
fail-fast: false
matrix:
os: [windows-2022, windows-2025, ubuntu-22.04, ubuntu-22.04-arm, ubuntu-24.04, ubuntu-24.04-arm, macos-14, macos-15]
pyversion: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.pyversion }}
cache: 'pip'
- name: Install dependencies
run: |
pip3 install numpy PyGLM
- name: Download artifact ${{ matrix.os }}
uses: actions/download-artifact@v7
with:
name: wheel-${{ runner.os }}-${{ runner.arch }}
path: dist
- name: Install extension
shell: bash
run: |
pip3 install dist/rocketsim-*.whl
- name: Load collision meshes
uses: actions/cache/restore@v5
id: collision-cache-restore
with:
path: collision_meshes
key: collision-cache
enableCrossOsArchive: true
- name: Download collision meshes
if: steps.collision-cache-restore.outputs.cache-hit != 'true'
run: |
curl -o collision_meshes.tar ${{ secrets.COLLISION_MESHES_URL }}
tar -xf collision_meshes.tar
- name: Save collision meshes
if: steps.collision-cache-restore.outputs.cache-hit != 'true'
uses: actions/cache/save@v5
with:
path: collision_meshes
key: collision-cache
enableCrossOsArchive: true
- name: Run unit tests
run: |
python3 python-mtheall/unit_test.py
- name: Run regression tests
run: |
python3 python-mtheall/regression_test.py
publish_pypi:
name: Publish PyPI
runs-on: ubuntu-latest
needs: test_wheel
if: startsWith(github.ref, 'refs/tags/v')
environment:
name: pypi
url: https://pypi.org/p/RocketSim
permissions:
id-token: write
steps:
- name: Download artifact Windows-X64
uses: actions/download-artifact@v7
with:
name: wheel-Windows-X64
path: dist
- name: Download artifact Linux-X64
uses: actions/download-artifact@v7
with:
name: wheel-Linux-X64
path: dist
- name: Download artifact Linux-ARM64
uses: actions/download-artifact@v7
with:
name: wheel-Linux-ARM64
path: dist
- name: Download artifact macOS-ARM64
uses: actions/download-artifact@v7
with:
name: wheel-macOS-ARM64
path: dist
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1