chore: MKL _only_ support glibc Linux #451
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: Build, Test, and deploy | |
on: [push] | |
jobs: | |
prepare-arm-performance-libraries: | |
runs-on: ${{ matrix.os }} | |
name: Download and prepare ARM Performance Libraries | |
strategy: | |
matrix: | |
armpl: | |
- "23.10" | |
os: | |
- macos-14 | |
steps: | |
- uses: actions/checkout@v4 | |
name: Checkout repository | |
- name: Restore cached ARM sources and libraries | |
id: cache-armpl | |
uses: actions/cache@v3 | |
with: | |
lookup-only: true | |
path: sources/arm-performance-libraries/${{ matrix.armpl }}/${{ runner.os }} | |
key: armpl-${{ matrix.armpl }}-${{ matrix.os }}-${{ hashFiles('bin/fetch-ArmPL.sh') }} | |
- name: Download ARM Performance Libraries and extract relevant headers and libraries | |
if: steps.cache-armpl.outputs.cache-hit != 'true' | |
run: | | |
./bin/fetch-ArmPL.sh ${{ matrix.armpl }} | |
- name: Store headers and libraries | |
if: steps.cache-armpl.outputs.cache-hit != 'true' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: armpl-${{ matrix.armpl }}-${{ matrix.os }} | |
path: sources/arm-performance-libraries/* | |
if-no-files-found: error | |
build: | |
needs: | |
- prepare-arm-performance-libraries | |
runs-on: ${{ matrix.os }} | |
name: Build & Test | |
strategy: | |
matrix: | |
os: | |
- ubuntu-20.04 | |
# Intel based | |
- macos-13 | |
# ARM based | |
- macos-14 | |
steps: | |
- uses: actions/checkout@v4 | |
name: Checkout repository | |
with: | |
fetch-depth: 0 | |
filter: tree:0 | |
- name: Download ARM Performance Libraries | |
uses: actions/download-artifact@v4 | |
if: ${{ matrix.os == 'macos-14' }} | |
with: | |
pattern: armpl-* | |
path: sources/arm-performance-libraries | |
merge-multiple: true | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
# Intel MKL only support glibc x86 64bit Intel CPUs | |
# If you need to compile gaussianfft for other architectures, | |
# a different fftw3 implementation must be used | |
CIBW_ARCHS_LINUX: "x86_64" | |
CIBW_SKIP_LINUX: "*-musllinux" | |
CIBW_ENABLE: "pypy" | |
with: | |
output-dir: 'dist' | |
- name: Store wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-${{ matrix.os }} | |
path: dist/*.whl | |
if-no-files-found: error | |
source-distribution: | |
runs-on: ubuntu-20.04 | |
name: Create source distribution (sdist) | |
steps: | |
- uses: actions/checkout@v4 | |
name: Checkout repository | |
with: | |
fetch-depth: 0 | |
filter: tree:0 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.7" # Minimum supported version | |
- name: Create source distribution | |
run: | | |
make build-sdist | |
- name: Store source distribution | |
uses: actions/upload-artifact@v4 | |
with: | |
name: sdist | |
path: dist/*.tar.gz | |
if-no-files-found: error | |
check-created-artifacts: | |
runs-on: ubuntu-20.04 | |
name: Check that all the created artifacts have a consistent version | |
needs: | |
- build | |
- source-distribution | |
steps: | |
- uses: actions/checkout@v4 | |
name: Checkout repository | |
with: | |
fetch-depth: 0 | |
filter: tree:0 | |
- name: Download compiled wheels | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: wheels-* | |
path: . | |
merge-multiple: true | |
- name: Download source distribution | |
uses: actions/download-artifact@v4 | |
with: | |
name: sdist | |
- name: Gather wheels and source distribution | |
run: | | |
mkdir -p dist/ | |
mv *.whl dist/ | |
mv *.tar.gz dist/ | |
- name: Ensure artifacts have consistent version | |
run: ./bin/ensure-consistent-version.sh | |
- name: Package all artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: distribution | |
path: dist/ | |
if-no-files-found: error | |
publish: | |
runs-on: ubuntu-20.04 | |
name: Publish wheels, and source to PyPi | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
needs: | |
- check-created-artifacts | |
# Specifying a GitHub environment is optional, but strongly encouraged | |
environment: release | |
permissions: | |
# IMPORTANT: this permission is mandatory for trusted publishing | |
id-token: write | |
steps: | |
- name: Download distribution | |
uses: actions/download-artifact@v4 | |
with: | |
name: distribution | |
path: dist/ | |
- name: Publish package distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 |