build: enable musllinux wheels #1476
Workflow file for this run
This file contains hidden or 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: CI | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: | |
- master | |
- main | |
- develop | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
pre-commit: | |
name: Format | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/setup-python@v5 | |
- uses: pre-commit/action@v3.0.1 | |
with: | |
extra_args: --hook-stage manual --all-files | |
checks: | |
name: Check Python ${{ matrix.python-version }}, ${{ matrix.arch }} on ${{ matrix.runs-on }} | |
runs-on: ${{ matrix.runs-on }} | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.9", "3.13"] | |
runs-on: [ubuntu-latest, ubuntu-24.04-arm, macos-latest] # , windows-latest] | |
arch: [auto64] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install compiler tools on windows | |
if: runner.os == 'windows' | |
run: | | |
Install-Module -Name 7Zip4Powershell -Force | |
Invoke-Webrequest -Uri https://archives.boost.io/release/1.88.0/source/boost_1_88_0.zip -OutFile boost_1_88_0.zip | |
Invoke-Webrequest -Uri https://github.com/CGAL/cgal/releases/download/v6.0.1/CGAL-6.0.1.zip -OutFile CGAL-6.0.1.zip | |
Invoke-Webrequest -Uri https://github.com/CGAL/cgal/releases/download/v6.0.1/CGAL-6.0.1-win64-auxiliary-libraries-gmp-mpfr.zip -OutFile cgal_auxlibs.zip | |
Expand-7Zip boost_1_88_0.zip .\boost_1_88_0 | |
Expand-7Zip CGAL-6.0.1.zip .\CGAL-6.0.1 | |
Expand-7Zip cgal_auxlibs.zip .\cgal_auxlibs | |
vcpkg.exe install getopt | |
- name: Install compiler tools on macOS | |
if: runner.os == 'macOS' | |
run: | | |
brew reinstall gfortran | |
brew install swig boost cgal gmp mpfr | |
- name: Install extra deps on Linux | |
if: runner.os == 'Linux' | |
run: sudo apt-get update && sudo apt-get install -y libboost-dev libmpfr-dev swig libcgal-dev | |
- name: Install package (macOS) | |
if: runner.os == 'macOS' | |
run: | | |
eval "$(/opt/homebrew/bin/brew shellenv)" | |
export PATH="/opt/homebrew/opt/make/libexec/gnubin:/opt/homebrew/opt/libtool/libexec/gnubin:$PATH" | |
python -m pip install '.[test]' -v | |
- name: Install package (Linux) | |
if: runner.os == 'Linux' | |
run: | | |
echo $PATH | |
python -m pip install '.[test]' -v | |
- name: Install package (windows) | |
if: runner.os == 'windows' | |
run: | | |
$Env:Path | |
$Env:GMP_INC_DIR = "${PWD}\cgal_auxlibs\auxiliary\gmp\include" | |
$Env:GMP_LIB_DIR = "${PWD}\cgal_auxlibs\auxiliary\gmp\lib" | |
$Env:MPFR_INC_DIR = "${PWD}\cgal_auxlibs\auxiliary\gmp\include" | |
$Env:MPFR_LIB_DIR = "${PWD}\cgal_auxlibs\auxiliary\gmp\lib" | |
$Env:CMAKE_PREFIX_PATH = "C:\vcpkg\packages\getopt-win32_x64-windows\share\unofficial-getopt-win32;$Env:CMAKE_PREFIX_PATH" | |
python -m pip install '.[test]' -v -C"cmake.define.GMP_DLL_TO_COPY"="C:\\a\\fastjet\\fastjet\\cgal_auxlibs\\auxiliary\\gmp\\bin\\gmp-10.dll" -C"cmake.define.Boost_INCLUDE_DIR"="${PWD}\boost_1_88_0\boost_1_88_0" -C"cmake.define.CGAL_DIR"="${PWD}\CGAL-6.0.1\CGAL-6.0.1" -C"cmake.define.FASTJET_ENABLE_DEBUG"="OFF" -C"cmake.define.SISCONE_ENABLE_DEBUG"="OFF" | |
- name: List installed Python packages | |
run: python -m pip list | |
- name: Test package | |
run: python -m pytest -vv -rs -Wd | |
test_wheels: | |
name: "Wheel: ${{ matrix.python }}, ${{ matrix.arch }} on ${{ matrix.os }}" | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, macos-13] # , windows-latest] | |
python: [313] | |
arch: [auto64] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: Install compiler tools on macOS | |
if: runner.os == 'macOS' | |
run: | | |
echo "MACOSX_DEPLOYMENT_TARGET=11.0" >> "$GITHUB_ENV" | |
brew uninstall --force --ignore-dependencies gcc@12 gcc@13 gnupg gnutls isl libmpc nettle gcc mpfr gmp | |
brew install --ignore-dependencies m4 make automake autoconf libtool swig boost cgal | |
echo "PATH=/opt/homebrew/opt/make/libexec/gnubin:/opt/homebrew/opt/libtool/libexec/gnubin:$PATH" >> "$GITHUB_ENV" | |
- name: Install compiler tools on windows | |
if: runner.os == 'windows' | |
run: | | |
Install-Module -Name 7Zip4Powershell -Force | |
Invoke-Webrequest -Uri https://archives.boost.io/release/1.88.0/source/boost_1_88_0.zip -OutFile boost_1_88_0.zip | |
Invoke-Webrequest -Uri https://github.com/CGAL/cgal/releases/download/v6.0.1/CGAL-6.0.1.zip -OutFile CGAL-6.0.1.zip | |
Invoke-Webrequest -Uri https://github.com/CGAL/cgal/releases/download/v6.0.1/CGAL-6.0.1-win64-auxiliary-libraries-gmp-mpfr.zip -OutFile cgal_auxlibs.zip | |
Expand-7Zip boost_1_88_0.zip .\boost_1_88_0 | |
Expand-7Zip CGAL-6.0.1.zip .\CGAL-6.0.1 | |
Expand-7Zip cgal_auxlibs.zip .\cgal_auxlibs | |
vcpkg.exe install getopt | |
- name: Install extra deps on Linux | |
if: runner.os == 'Linux' | |
run: sudo apt-get update && sudo apt-get install -y libboost-dev libmpfr-dev swig libcgal-dev | |
- name: Clone gmp | |
if: runner.os == 'macOS' | |
uses: actions/checkout@v4 | |
with: | |
repository: gmp-mirror/gmp-6.3 | |
path: gmp-6.3 | |
- name: Build gmp from source for MACOSX_DEPLOYMENT_TARGET=11.0 | |
if: runner.os == 'macOS' | |
working-directory: gmp-6.3 | |
run: | | |
brew install texinfo | |
autoreconf -i -f | |
./configure --help | |
./configure \ | |
--prefix=$(brew --prefix) \ | |
--enable-cxx | |
touch ./doc/version.texi | |
make --jobs | |
make install | |
- name: Get mpfr release | |
if: runner.os == 'macOS' | |
run: | | |
curl -Lk https://www.mpfr.org/mpfr-current/mpfr-4.2.2.tar.gz -o mpfr-4.2.2.tar.gz | |
tar -xzf mpfr-4.2.2.tar.gz | |
- name: Build mpfr from source for MACOSX_DEPLOYMENT_TARGET=11.0 | |
if: runner.os == 'macOS' | |
working-directory: mpfr-4.2.2 | |
run: | | |
autoreconf -i -f | |
./configure --help | |
./configure \ | |
--prefix=$(brew --prefix) \ | |
--with-gmp=$(brew --prefix) | |
make --jobs | |
make install | |
- uses: pypa/cibuildwheel@v3.0 | |
env: | |
CIBW_ARCHS: ${{ matrix.arch }} | |
CIBW_BUILD: cp${{ matrix.python }}-* | |
CIBW_BUILD_VERBOSITY: 1 | |
CIBW_CONFIG_SETTINGS_WINDOWS: > | |
"cmake.define.GMP_DLL_TO_COPY"="C:\\\\a\\\\fastjet\\\\fastjet\\\\cgal_auxlibs\\\\auxiliary\\\\gmp\\\\bin\\\\gmp-10.dll" | |
"cmake.define.Boost_INCLUDE_DIR"="C:\a\fastjet\fastjet\boost_1_88_0\boost_1_88_0" | |
"cmake.define.CGAL_DIR"="C:\a\fastjet\fastjet\CGAL-6.0.1\CGAL-6.0.1" | |
"cmake.define.unofficial-getopt-win32_DIR"="C:\vcpkg\packages\getopt-win32_x64-windows\share\unofficial-getopt-win32" | |
"cmake.define.FASTJET_ENABLE_DEBUG"="OFF" | |
"cmake.define.SISCONE_ENABLE_DEBUG"="OFF" | |
CIBW_ENVIRONMENT_WINDOWS: > | |
GMP_INC_DIR='C:\a\fastjet\fastjet\cgal_auxlibs\auxiliary\gmp\include' | |
GMP_LIB_DIR='C:\a\fastjet\fastjet\cgal_auxlibs\auxiliary\gmp\lib' | |
MPFR_INC_DIR='C:\a\fastjet\fastjet\cgal_auxlibs\auxiliary\gmp\include' | |
MPFR_LIB_DIR='C:\a\fastjet\fastjet\cgal_auxlibs\auxiliary\gmp\lib' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-wheels-${{ matrix.os }}-${{ matrix.python }}-${{ matrix.arch }} | |
path: wheelhouse/*.whl | |
pass: | |
needs: [pre-commit, checks, test_wheels] | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "All jobs passed" |