-
-
Notifications
You must be signed in to change notification settings - Fork 14
105 lines (87 loc) · 3.25 KB
/
build_wheels.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
name: Build Wheels
on:
pull_request:
paths:
- "**.py"
- "**.pxd"
- "**.pyx"
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read # to fetch code (actions/checkout)
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build_wheels:
name: Build wheels on ${{ matrix.os[1] }} - ${{ matrix.os[2] }} with Python ${{ matrix.python[0] }}
runs-on: ${{ matrix.os[0] }}
strategy:
# Ensure that a wheel builder finishes even if another fails
fail-fast: false
matrix:
os: # see scipy wheels.yml GH actions
- [ubuntu-22.04, manylinux, x86_64]
- [macos-11, macosx, x86_64]
# - [macos-12, macosx_*, arm64]
- [windows-2019, win, AMD64]
python: [["cp39", "3.9"], ["cp310", "3.10"], ["cp311", "3.11.0-alpha - 3.11.0"]]
# python[0] is used to specify the python versions made by cibuildwheel
env:
IS_32_BIT: ${{ matrix.os[2] == 'x86' }}
steps:
- name: Checkout scikit-tree
uses: actions/checkout@v3
- uses: actions/setup-python@v4.6.1
with:
python-version: 3.9
- name: Setup submodule
run: |
python -m pip install -r build_requirements.txt
python -m pip install spin
python spin setup-submodule
- name: win_amd64 - install rtools
run: |
choco install rtools -y --no-progress --force --version=4.0.0.20220206
echo "c:\rtools40\ucrt64\bin;" >> $env:GITHUB_PATH
if: ${{ runner.os == 'Windows' && env.IS_32_BIT == 'false' }}
- name: Build wheels
uses: pypa/cibuildwheel@v2.13.1
# Build all wheels here, apart from macosx_arm64, linux_aarch64
# cibuildwheel is currently unable to pass configuration flags to
# CIBW_BUILD_FRONTEND https://github.com/pypa/cibuildwheel/issues/1227
# (pip/build). Cross compilation with meson requires an initial
# configuration step to create a build directory. The subsequent wheel
# build then needs to use that directory. This can be done with pip
# using a command like:
# python -m pip wheel --config-settings builddir=build .
# if: >-
# ( ! contains(matrix.os[2], 'arm64' ) )
env:
CIBW_BUILD: ${{ matrix.python[0] }}-${{ matrix.os[1] }}*
CIBW_ARCHS: ${{ matrix.os[2] }}
CIBW_ENVIRONMENT_PASS_LINUX: RUNNER_OS
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl
name: ${{ matrix.python[0] }}-${{ matrix.os[1] }}
# TODO: let's figure out how to build these wheels?
# build_wheels_macos:
# name: Build wheels on macos-11
# runs-on: macos-11
# steps:
# - uses: actions/checkout@v3
# - uses: actions/setup-python@v4.6.1
# with:
# python-version: 3.9
# - name: macosx_arm64 - setup builddir
# run: |
# python -m pip wheel --config-settings builddir=build .
# - name: Build wheels
# uses: pypa/cibuildwheel@v2.13.1
# env:
# CIBW_ARCHS_MACOS: arm64
# - uses: actions/upload-artifact@v3
# with:
# path: ./wheelhouse/*.whl