Merge pull request #2331 from benjeffery/update-ubuntu-2412 #699
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
name: Binary wheels | |
on: | |
push: | |
branches: | |
- main | |
- test | |
tags: | |
- '*' | |
release: | |
types: [published] | |
jobs: | |
OSX: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python: [3.9, "3.10", 3.11, 3.12] | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
submodules: true | |
- name: Set up Python ${{ matrix.python }} | |
uses: actions/[email protected] | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install deps | |
run: | | |
brew install gsl | |
pip install --upgrade pip build | |
- name: Build Wheel | |
run: | | |
export PLAT="arm64" | |
export _PYTHON_HOST_PLATFORM="macosx-11.0-arm64" | |
export OLDARCHFLAGS=$ARCHFLAGS | |
export ARCHFLAGS+="-arch arm64" | |
python -m build --wheel | |
export PLAT="x86_64" | |
export _PYTHON_HOST_PLATFORM="macosx-11.0-x86_64" | |
export CFLAGS+=" -arch x86_64" | |
export CXXFLAGS+=" -arch x86_64" | |
export ARCHFLAGS=$OLDARCHFLAGS | |
export ARCHFLAGS+=" -arch x86_64" | |
export CPPFLAGS+=" -arch x86_64" | |
export LDFLAGS+=" -arch x86_64" | |
python -m build --wheel | |
- name: Delocate to bundle dynamic libs | |
run: | | |
pip install delocate | |
delocate-wheel -v dist/msprime-*arm64.whl | |
delocate-wheel -v dist/msprime-*x86_64.whl | |
- name: Upload Wheels | |
uses: actions/[email protected] | |
with: | |
name: osx-wheel-${{ matrix.python }} | |
path: dist | |
manylinux: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
submodules: true | |
- name: Set up Python 3.9 | |
uses: actions/[email protected] | |
with: | |
python-version: 3.9 | |
- name: Build sdist | |
shell: bash | |
run: | | |
pip install --upgrade pip build | |
python -m build --sdist | |
- name: Upload sdist | |
uses: actions/[email protected] | |
with: | |
name: sdist | |
path: dist | |
- name: Build wheels in docker | |
shell: bash | |
run: | | |
docker run --rm -v `pwd`:/project -w /project quay.io/pypa/manylinux2014_x86_64 bash .github/workflows/docker/buildwheel.sh | |
- name: Upload Wheels | |
uses: actions/[email protected] | |
with: | |
name: linux-wheels | |
path: dist/wheelhouse | |
OSX-test: | |
needs: ['OSX'] | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python: [3.9, "3.10", 3.11, 3.12] | |
steps: | |
- name: Download wheels | |
uses: actions/[email protected] | |
with: | |
name: osx-wheel-${{ matrix.python }} | |
- name: Set up Python ${{ matrix.python }} | |
uses: actions/[email protected] | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install wheel and test | |
run: | | |
python -VV | |
# Install the local wheel | |
pip install numpy newick>=1.3.0 tskit>=0.5.2 demes>=0.2 | |
pip install msprime --no-index --only-binary msprime -f . | |
python -c "import msprime" | |
msp simulate 10 tmp.trees | |
tskit info tmp.trees | |
tskit provenances tmp.trees | |
manylinux-test: | |
runs-on: ubuntu-24.04 | |
needs: ['manylinux'] | |
strategy: | |
matrix: | |
python: [3.9, "3.10", 3.11, 3.12] | |
steps: | |
- name: Download wheels | |
uses: actions/[email protected] | |
with: | |
name: linux-wheels | |
- name: Set up Python | |
uses: actions/[email protected] | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install wheel and test | |
run: | | |
python -VV | |
# Install the local wheel | |
pip install msprime | |
pip uninstall --yes msprime | |
pip install msprime --no-index --only-binary msprime -f . | |
python -c "import msprime" | |
msp simulate 10 tmp.trees | |
tskit info tmp.trees | |
tskit provenances tmp.trees | |
PyPI_Upload: | |
runs-on: ubuntu-24.04 | |
environment: release | |
needs: ['OSX-test', 'manylinux-test'] | |
permissions: | |
id-token: write | |
steps: | |
- name: Download all | |
uses: actions/[email protected] | |
- name: Move to dist | |
run: | | |
mkdir dist | |
cp */*.{whl,gz} dist/. | |
- name: Publish distribution to Test PyPI | |
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') | |
uses: pypa/[email protected] | |
with: | |
repository_url: https://test.pypi.org/legacy/ | |
- name: Publish distribution to PRODUCTION PyPI | |
if: github.event_name == 'release' | |
uses: pypa/[email protected] |