Skip to content

chore: MKL _only_ support glibc Linux #451

chore: MKL _only_ support glibc Linux

chore: MKL _only_ support glibc Linux #451

Workflow file for this run

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