-
Notifications
You must be signed in to change notification settings - Fork 8
172 lines (146 loc) · 5.09 KB
/
python-publish.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
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
name: Build Wheels, Test and Release
on:
release:
types: [created]
jobs:
build_linux_wheels:
name: Build ${{ matrix.cibw_python }}-${{ matrix.cibw_libc }}_${{ matrix.cibw_arch }} wheel on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04]
cibw_python: ["cp38", "cp39", "cp310", "cp311", "pp38"]
# SciPy and NumPy don't support musllinux
cibw_libc: ["manylinux"]
cibw_arch: ["x86_64", "i686", "aarch64"]
exclude:
# SciPy and NumPy don't support 32-bit Linux from Python 3.10 and onwards
- cibw_python: "cp310"
cibw_arch: "i686"
- cibw_python: "cp311"
cibw_arch: "i686"
# Numpy only supports pypy38 x86_64 on Linux
- cibw_python: "pp38"
cibw_arch: "i686"
- cibw_python: "pp38"
cibw_arch: "aarch64"
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install FFTW3 libraries
run: |
sudo apt-get update; sudo apt-get -y install libfftw3-dev
- uses: actions/setup-python@v4
name: Install Python
with:
python-version: '3.11'
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel
- name: Build the wheel
run: |
python -m cibuildwheel --output-dir dist
env:
CIBW_BUILD: ${{ matrix.cibw_python }}-${{ matrix.cibw_libc }}_${{ matrix.cibw_arch }}
- uses: actions/upload-artifact@v2
name: Upload wheels as artifacts
if: ${{ github.event_name != 'pull_request' }}
with:
name: wheels
path: ./dist/*.whl
build_macos_wheels:
name: Build ${{ matrix.cibw_python }}-macosx_${{ matrix.cibw_arch }} wheel on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-12]
cibw_python: ["cp38", "cp39", "cp310", "cp311", "pp38"]
# See issue [#352](https://github.com/pyFFTW/pyFFTW/issues/352)
# TODO: Add arm64 when we support it
# Current problem seems to be that installed libfftw3 does not provide arm64
# symbols
cibw_arch: ["x86_64"]
exclude:
# cibuildwheel only supports pypy38 x86_64 on MacOS
- cibw_python: "pp38"
cibw_arch: "arm64"
- cibw_python: "pp38"
cibw_arch: "universal2"
env:
MACOSX_DEPLOYMENT_TARGET: "10.13"
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install FFTW3 libraries
run: |
brew install fftw
- uses: actions/setup-python@v4
name: Install Python
with:
python-version: '3.11'
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel
- name: Build wheels for CPython (MacOS)
run: |
python -m cibuildwheel --output-dir dist
env:
CIBW_BUILD: ${{ matrix.cibw_python }}-macosx_${{ matrix.cibw_arch }}
- uses: actions/upload-artifact@v2
name: Upload wheels as artifacts
if: ${{ github.event_name != 'pull_request' }}
with:
name: wheels
path: ./dist/*.whl
deploy:
name: Release
needs: [build_macos_wheels, build_linux_wheels]
# if: github.repository_owner == 'pyFFTW' && startsWith(github.ref, 'refs/tags/v') && always()
if: github.repository_owner == 'mlgig' && always()
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v4
name: Install Python
with:
python-version: '3.11'
- name: Install Twine
run: |
python -m pip install --upgrade pip
pip install twine
- uses: actions/download-artifact@v2
id: download
with:
name: wheels
path: ./dist
- name: Publish the source distribution on PyPI
run: |
# PYFFTW_VERSION=$(git describe --tags)
pip install cython
python setup.py sdist
ls -la ${{ github.workspace }}/dist
# We prefer to release wheels before source because otherwise there is a
# small window during which users who pip install pyfftw will require compilation.
twine upload ${{ github.workspace }}/dist/*.whl
# twine upload --repository testpypi ${{ github.workspace }}/dist/*.whl
twine upload ${{ github.workspace }}/dist/*.tar.gz
# twine upload --repository testpypi ${{ github.workspace }}/dist/*.tar.gz
env:
# TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }}
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
- name: Github release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}