-
Notifications
You must be signed in to change notification settings - Fork 75
140 lines (119 loc) · 3.92 KB
/
cibuildwheels.yml
File metadata and controls
140 lines (119 loc) · 3.92 KB
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: Wheels
on:
push:
branches:
- master
- v[0-9]+.[0-9]+.x
tags:
- v*
jobs:
build_wheels:
name: Build wheels for ${{ matrix.arch }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }} # Only build wheels when tagging (typically a release)
if: startsWith(github.event.ref, 'refs/tags')
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
arch: [x86_64, aarch64]
exclude:
- os: windows-latest
arch: aarch64
- os: macos-latest
arch: aarch64
steps:
- name: Checkout repo
uses: actions/checkout@v6
with:
submodules: 'recursive'
- name: Install Python
uses: actions/setup-python@v6
with:
python-version: '3.11'
- name: Set up QEMU
if: ${{ matrix.arch == 'aarch64' }}
uses: docker/setup-qemu-action@v3
- name: Install Ninja
uses: seanmiddleditch/gha-setup-ninja@master
- name: Install MSVC x86
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x86
- name: Build wheels (Windows x86)
if: runner.os == 'Windows'
run: |
python -m pip install cibuildwheel
python -m cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: 'cp39-win32 cp310-win32 cp311-win32 cp312-win32 cp313-win32 cp314-win32'
CIBW_BEFORE_BUILD: pip install -r requirements.txt
CIBW_BEFORE_TEST: pip install numpy
CIBW_TEST_COMMAND: python -m blosc.test
CIBW_BUILD_VERBOSITY: 1
- name: Install MSVC amd64
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64
- name: Build wheels (Windows / amd64)
if: runner.os == 'Windows'
run: |
python -m pip install cibuildwheel
python -m cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: 'cp39-win_amd64 cp310-win_amd64 cp311-win_amd64 cp312-win_amd64 cp313-win_amd64 cp314-win_amd64'
CIBW_BEFORE_BUILD: pip install -r requirements.txt
CIBW_BEFORE_TEST: pip install numpy
CIBW_TEST_COMMAND: python -m blosc.test
CIBW_BUILD_VERBOSITY: 1
- name: Build wheels (Linux / macOS)
if: runner.os != 'Windows'
run: |
python -m pip install cibuildwheel
python -m cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: 'cp39-* cp310-* cp311-* cp312-* cp313-* cp314-*'
CIBW_SKIP: '*-manylinux*_i686'
CIBW_ARCHS_MACOS: "x86_64 arm64"
CIBW_ARCHS_LINUX: ${{ matrix.arch }}
CIBW_BEFORE_BUILD: pip install -r requirements.txt
CIBW_BEFORE_TEST: pip install numpy
CIBW_TEST_COMMAND: python -m blosc.test
CIBW_BUILD_VERBOSITY: 1
- name: Upload wheels
uses: actions/upload-artifact@v6
with:
name: wheels-${{ matrix.os }}-${{ matrix.arch }}
path: ./wheelhouse/*.whl
build_sdist:
name: Build SDist
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: 'recursive'
- uses: actions/setup-python@v6
name: Setup Python
with:
python-version: '3.11'
- name: Install requirements
run: |
python -m pip install -r requirements.txt
- name: Build SDist
run: python setup.py sdist
- uses: actions/upload-artifact@v6
with:
name: wheels-source
path: dist/*.tar.gz
upload_pypi:
needs: [ build_wheels, build_sdist ] # last but not least
runs-on: ubuntu-latest
if: startsWith(github.event.ref, 'refs/tags')
steps:
- uses: actions/download-artifact@v7
with:
path: dist
pattern: wheels-*
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.blosc_pypi_secret }}