Build wheels - 152c98bf72bcaecfe8221e34ef7292fb2a78cda4 #64
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 wheels | |
run-name: Build wheels - ${{ github.sha }} | |
on: | |
push: | |
branches: | |
- 'master' | |
- 'release/**' | |
jobs: | |
build_windows_wheels: | |
strategy: | |
matrix: | |
py: [cp36, cp37, cp38, cp39, cp310, cp311, cp312] | |
arch: | |
- [AMD64, win_amd64, x64] | |
- [x86, win32, x86] | |
name: ${{ matrix.py }}-${{ matrix.arch[1] }} | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download compiled OpenBLAS | |
run: | | |
curl -L -o OpenBLAS-0.3.27.zip https://github.com/OpenMathLib/OpenBLAS/releases/download/v0.3.27/OpenBLAS-0.3.27-${{ matrix.arch[2] }}.zip | |
7z x OpenBLAS-0.3.27.zip -o"OpenBLAS" | |
- name: Set up the configuration file | |
run: | | |
python setup_site.py openblas libopenblas ${{ github.workspace }}\OpenBLAS\lib ${{ github.workspace }}\OpenBLAS\include | |
- name: Build wheel ${{ matrix.py }}-${{ matrix.arch[1] }} | |
uses: pypa/[email protected] | |
env: | |
CIBW_PLATFORM: windows | |
CIBW_BUILD: ${{ matrix.py }}-${{ matrix.arch[1] }} | |
CIBW_ARCHS_WINDOWS: ${{ matrix.arch[0] }} | |
CIBW_BEFORE_BUILD_WINDOWS: > | |
pip install delvewheel | |
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: > | |
delvewheel repair --add-path ${{ github.workspace }}\OpenBLAS\bin -w {dest_dir} -v {wheel} | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels_${{ matrix.py }}_${{ matrix.arch[1] }} | |
path: ./wheelhouse/*.whl | |
if-no-files-found: error | |
build_macos_wheels: | |
strategy: | |
matrix: | |
config: | |
[ | |
{ | |
py: cp36, | |
arch: [x86_64, macosx_x86_64, 12.0, macos-12] | |
}, | |
{ | |
py: cp37, | |
arch: [x86_64, macosx_x86_64, 12.0, macos-12] | |
}, | |
{ | |
py: cp38, | |
arch: [x86_64, macosx_x86_64, 12.0, macos-12] | |
}, | |
{ | |
py: cp39, | |
arch: [x86_64, macosx_x86_64, 12.0, macos-12] | |
}, | |
{ | |
py: cp310, | |
arch: [x86_64, macosx_x86_64, 12.0, macos-12] | |
}, | |
{ | |
py: cp311, | |
arch: [x86_64, macosx_x86_64, 12.0, macos-12] | |
}, | |
{ | |
py: cp312, | |
arch: [x86_64, macosx_x86_64, 12.0, macos-12] | |
}, | |
{ | |
py: cp38, | |
arch: [arm64, macosx_arm64, 12.0, macos-14] | |
}, | |
{ | |
py: cp39, | |
arch: [arm64, macosx_arm64, 12.0, macos-14] | |
}, | |
{ | |
py: cp310, | |
arch: [arm64, macosx_arm64, 12.0, macos-14] | |
}, | |
{ | |
py: cp311, | |
arch: [arm64, macosx_arm64, 12.0, macos-14] | |
}, | |
{ | |
py: cp312, | |
arch: [arm64, macosx_arm64, 12.0, macos-14] | |
} | |
] | |
name: ${{ matrix.config.py }}-${{ matrix.config.arch[1] }} | |
runs-on: ${{ matrix.config.arch[3] }} | |
if: | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download compiled OpenBLAS | |
uses: actions/download-artifact@v4 | |
with: | |
github-token: ${{ secrets.GH_PAT }} | |
run-id: ${{ secrets.OPENBLAS_MACOS_ARTIFACTS_RUN_ID }} | |
name: OpenBLAS_macos_${{ matrix.config.arch[0] }} | |
path: OpenBLAS | |
- name: Install pipx # NOTE: required only for arm64 | |
if: startsWith(matrix.config.arch[0], 'arm64') | |
run: | | |
brew install pipx | |
- name: Set up the configuration file | |
run: | | |
python3 setup_site.py openblas openblas ${{ github.workspace }}/OpenBLAS/lib ${{ github.workspace }}/OpenBLAS/include | |
- name: Build wheel ${{ matrix.config.py }}-${{ matrix.config.arch[1] }} | |
uses: pypa/[email protected] | |
env: | |
CIBW_ENVIRONMENT_MACOS: > | |
MACOSX_DEPLOYMENT_TARGET=${{ matrix.config.arch[2] }} | |
CIBW_PLATFORM: macos | |
CIBW_BUILD: ${{ matrix.config.py }}-${{ matrix.config.arch[1] }} | |
CIBW_ARCHS_MACOS: ${{ matrix.config.arch[0] }} | |
CIBW_REPAIR_WHEEL_COMMAND_MACOS: > | |
DYLD_LIBRARY_PATH=${{ github.workspace }}/OpenBLAS/lib delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels_${{ matrix.config.py }}_${{ matrix.config.arch[1] }} | |
path: ./wheelhouse/*.whl | |
if-no-files-found: error | |
build_linux_wheels: | |
strategy: | |
matrix: | |
py: [cp36, cp37, cp38, cp39, cp310, cp311, cp312] | |
arch: | |
- [x86_64, manylinux_x86_64, amd64] | |
- [aarch64, manylinux_aarch64, arm64] | |
name: ${{ matrix.py }}-${{ matrix.arch[1] }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download compiled OpenBLAS | |
uses: actions/download-artifact@v4 | |
with: | |
github-token: ${{ secrets.GH_PAT }} | |
run-id: ${{ secrets.OPENBLAS_LINUX_ARTIFACTS_RUN_ID }} | |
name: OpenBLAS_linux_${{ matrix.arch[0] }} | |
path: OpenBLAS | |
- name: Set up the configuration file | |
run: | # NOTE: need to add '/host' because compilation is done in a Docker container | |
python setup_site.py openblas openblas /host${{ github.workspace }}/OpenBLAS/lib /host${{ github.workspace }}/OpenBLAS/include | |
- name: Set up QEMU | |
uses: docker/[email protected] | |
with: | |
platforms: ${{ matrix.arch[2] }} | |
- name: Build wheel ${{ matrix.py }}-${{ matrix.arch[1] }} | |
uses: pypa/[email protected] | |
env: | |
CIBW_PLATFORM: linux | |
CIBW_BUILD: ${{ matrix.py }}-${{ matrix.arch[1] }} | |
CIBW_ARCHS_LINUX: ${{ matrix.arch[0] }} | |
CIBW_REPAIR_WHEEL_COMMAND_LINUX: > # NOTE: need to add '/host' because compilation is done in a Docker container | |
LD_LIBRARY_PATH=/host${{ github.workspace }}/OpenBLAS/lib auditwheel repair -w {dest_dir} {wheel} | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels_${{ matrix.py }}_${{ matrix.arch[1] }} | |
path: ./wheelhouse/*.whl | |
if-no-files-found: error | |
build_source_distribution: | |
name: sdist | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up the configuration file | |
run: | | |
python setup_site.py openblas openblas ${{ github.workspace }}/OpenBLAS/lib ${{ github.workspace }}/OpenBLAS/include | |
- name: Build source distribution | |
run: | | |
pip install -U pip | |
pip install -U build | |
python -m build --sdist | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: sdist | |
path: ./dist/*.tar.gz | |
if-no-files-found: error | |
run_id: | |
name: Create/Update WHEELS_ARTIFACTS_RUN_ID secret | |
runs-on: ubuntu-latest | |
needs: [build_windows_wheels, build_macos_wheels, build_linux_wheels, build_source_distribution] | |
steps: | |
- uses: actions/checkout@v4 | |
- run: | | |
gh secret set WHEELS_ARTIFACTS_RUN_ID --body ${{ github.run_id }} | |
env: | |
GH_TOKEN: ${{ secrets.GH_PAT }} |