Skip to content

Commit 20f31bd

Browse files
authored
Update to currently supported Python versions (#123)
* Update Python versions in build workflow This updates the build workflow to the currently supported versions of Python * Newer versions of setuptools are incompatible * Upgrade some actions to non-deprecated versions * Pin to a version that can read CMakeLists.txt * Pin to a newer version - 3.4 is ancient * upload-artifact@v4 requires unique artifact names * Fix download step after renaming artifacts Also, use newer version of Python to upload to PyPI * Update CI workflow to use newest OS versions * Update Xcode and downgrade Ubuntu versions * Make name more unique. Bump linux container version. * Attempt to find correct Python executable * Fix target platform after updating docker * Add arch to macos artifact name The job-index was hack because I did not understand the problem * Debug why macos artifacts have wrong whl for arch * MacOS intel and arm run on different images * De-duplicate * Test MaxOS wheels on arm64 instead Most Apple hardware is arm these days anyway * Tiny change to trigger CI * Make jobs more alike. Update to Ubuntu 24.04
1 parent bdaa855 commit 20f31bd

File tree

2 files changed

+52
-60
lines changed

2 files changed

+52
-60
lines changed

.github/workflows/build_wheel.yml

Lines changed: 50 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ on:
1313

1414
jobs:
1515
osx:
16-
runs-on: macos-11
17-
1816
strategy:
1917
fail-fast: false
2018
matrix:
21-
PYTHON_VERSION: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
22-
ARCH: ["x86_64", "arm64"]
19+
PYTHON_VERSION: ["3.9", "3.10", "3.11", "3.12", "3.13"]
20+
os: [macos-15, macos-15-intel]
21+
22+
runs-on: ${{ matrix.os }}
2323

2424
env:
2525
PYTHON_VERSION: ${{ matrix.PYTHON_VERSION }}
@@ -28,7 +28,7 @@ jobs:
2828

2929
steps:
3030
- name: Checkout
31-
uses: actions/checkout@v3
31+
uses: actions/checkout@v4
3232

3333
- name: Install Python
3434
uses: actions/setup-python@v4
@@ -38,78 +38,77 @@ jobs:
3838
- name: Setup xcode
3939
uses: maxim-lobanov/setup-xcode@v1
4040
with:
41-
xcode-version: '13.1.0'
41+
xcode-version: '16.4.0'
4242

4343
- name: Build wheel
4444
run: |
4545
set -eux
46+
ARCH=$(if [ $(uname -p) == 'arm' ]; then echo arm64; else echo x86_64; fi)
4647
pip install delocate
4748
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
48-
if [ ${{ matrix.ARCH }} == "arm64" ]; then
49+
if [ $ARCH == "arm64" ]; then
4950
export _PYTHON_HOST_PLATFORM=macosx-11.0-arm64
5051
export ARCHFLAGS="-arch arm64"
5152
export LIBSODIUM_CONFIG_COMMAND="./configure --host=arm64-apple-darwin"
5253
export OPENSSL_CONFIG_COMMAND="perl Configure darwin64-arm64-cc"
5354
export DCMAKE_OSX_ARCHITECTURES="arm64"
5455
fi
5556
python -m pip wheel . --verbose -w wheelhouse_dirty
56-
delocate-wheel -w wheelhouse --require-archs=${{ matrix.arch }} -v wheelhouse_dirty/xeus_python-*.whl
57+
delocate-wheel -w wheelhouse --require-archs=$ARCH -v wheelhouse_dirty/xeus_python-*.whl
5758
5859
- name: List wheels
5960
run: ls wheelhouse
6061

61-
- uses: actions/upload-artifact@v3
62+
- uses: actions/upload-artifact@v4
6263
with:
63-
name: wheelhouse
64+
name: wheelhouse-${{ matrix.os }}-${{ matrix.PYTHON_VERSION }}
6465
path: wheelhouse/xeus_python-*.whl
6566
if-no-files-found: error
6667

6768
linux:
68-
runs-on: ubuntu-20.04
69-
7069
strategy:
7170
fail-fast: false
7271
matrix:
73-
PYTHON_VERSION: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
72+
PYTHON_VERSION: ["3.9", "3.10", "3.11", "3.12", "3.13"]
73+
os: [ubuntu-24.04]
74+
75+
runs-on: ${{ matrix.os }}
7476

7577
container:
76-
image: "quay.io/pypa/manylinux2014_x86_64"
78+
image: "quay.io/pypa/manylinux_2_28_x86_64"
7779

7880
steps:
7981
- name: Checkout
80-
uses: actions/checkout@v3
82+
uses: actions/checkout@v4
8183

8284
- name: Build wheel
8385
run: |
84-
set -eux
85-
pyver=`echo '${{ matrix.PYTHON_VERSION }}' | tr -d '.'`
86-
pypath=`echo /opt/python/cp${pyver}-cp${pyver}*/bin`
87-
export PATH=$pypath:$PATH
88-
python -m pip wheel --verbose . -w wheelhouse_dirty
89-
auditwheel repair wheelhouse_dirty/xeus_python-*.whl --plat manylinux2014_x86_64 -w wheelhouse
86+
python${{ matrix.PYTHON_VERSION }} -m pip wheel --verbose . -w wheelhouse_dirty
87+
auditwheel repair wheelhouse_dirty/xeus_python-*.whl --plat manylinux_2_28_x86_64 -w wheelhouse
9088
9189
- name: List wheels
9290
run: ls wheelhouse
9391

9492
- name: Get wheel name
9593
run: echo "WHEEL=$(find wheelhouse -type f -iname 'xeus_python-*.whl')" >> $GITHUB_ENV
9694

97-
- uses: actions/upload-artifact@v3
95+
- uses: actions/upload-artifact@v4
9896
with:
99-
name: wheelhouse
97+
name: wheelhouse-${{ matrix.os }}-${{ matrix.PYTHON_VERSION }}
10098
path: ${{ env.WHEEL }}
10199

102100
windows:
103-
runs-on: windows-2022
104-
105101
strategy:
106102
fail-fast: false
107103
matrix:
108-
PYTHON_VERSION: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
104+
PYTHON_VERSION: ["3.9", "3.10", "3.11", "3.12", "3.13"]
105+
os: [windows-2025]
106+
107+
runs-on: ${{ matrix.os }}
109108

110109
steps:
111110
- name: Checkout
112-
uses: actions/checkout@v3
111+
uses: actions/checkout@v4
113112

114113
- name: Install Python
115114
uses: actions/setup-python@v4
@@ -128,9 +127,9 @@ jobs:
128127
- name: List wheels
129128
run: ls wheelhouse
130129

131-
- uses: actions/upload-artifact@v3
130+
- uses: actions/upload-artifact@v4
132131
with:
133-
name: wheelhouse
132+
name: wheelhouse-${{ matrix.os }}-${{ matrix.PYTHON_VERSION }}
134133
path: wheelhouse/xeus_python-*.whl
135134
if-no-files-found: error
136135

@@ -142,14 +141,8 @@ jobs:
142141
fail-fast: false
143142
matrix:
144143
os: [ubuntu, macos, windows]
145-
PYTHON_VERSION: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
144+
PYTHON_VERSION: ["3.9", "3.10", "3.11", "3.12", "3.13"]
146145
include:
147-
- PYTHON_VERSION: "3.7"
148-
os: ubuntu
149-
whl: 'xeus_python-*-cp37*linux*.whl'
150-
- PYTHON_VERSION: "3.8"
151-
os: ubuntu
152-
whl: 'xeus_python-*-cp38*linux*.whl'
153146
- PYTHON_VERSION: "3.9"
154147
os: ubuntu
155148
whl: 'xeus_python-*-cp39*linux*.whl'
@@ -162,30 +155,24 @@ jobs:
162155
- PYTHON_VERSION: "3.12"
163156
os: ubuntu
164157
whl: 'xeus_python-*-cp312*linux*.whl'
165-
- PYTHON_VERSION: "3.7"
166-
os: macos
167-
whl: 'xeus_python-*-cp37*macos*x86_64.whl'
168-
- PYTHON_VERSION: "3.8"
169-
os: macos
170-
whl: 'xeus_python-*-cp38*macos*x86_64.whl'
158+
- PYTHON_VERSION: "3.13"
159+
os: ubuntu
160+
whl: 'xeus_python-*-cp313*linux*.whl'
171161
- PYTHON_VERSION: "3.9"
172162
os: macos
173-
whl: 'xeus_python-*-cp39*macos*x86_64.whl'
163+
whl: 'xeus_python-*-cp39*macos*arm64.whl'
174164
- PYTHON_VERSION: "3.10"
175165
os: macos
176-
whl: 'xeus_python-*-cp310*macos*x86_64.whl'
166+
whl: 'xeus_python-*-cp310*macos*arm64.whl'
177167
- PYTHON_VERSION: "3.11"
178168
os: macos
179-
whl: 'xeus_python-*-cp311*macos*x86_64.whl'
169+
whl: 'xeus_python-*-cp311*macos*arm64.whl'
180170
- PYTHON_VERSION: "3.12"
181171
os: macos
182-
whl: 'xeus_python-*-cp312*macos*x86_64.whl'
183-
- PYTHON_VERSION: "3.7"
184-
os: windows
185-
whl: 'xeus_python-*-cp37*win*.whl'
186-
- PYTHON_VERSION: "3.8"
187-
os: windows
188-
whl: 'xeus_python-*-cp38*win*.whl'
172+
whl: 'xeus_python-*-cp312*macos*arm64.whl'
173+
- PYTHON_VERSION: "3.13"
174+
os: macos
175+
whl: 'xeus_python-*-cp313*macos*arm64.whl'
189176
- PYTHON_VERSION: "3.9"
190177
os: windows
191178
whl: 'xeus_python-*-cp39*win*.whl'
@@ -198,14 +185,18 @@ jobs:
198185
- PYTHON_VERSION: "3.12"
199186
os: windows
200187
whl: 'xeus_python-*-cp312*win*.whl'
188+
- PYTHON_VERSION: "3.13"
189+
os: windows
190+
whl: 'xeus_python-*-cp313*win*.whl'
201191

202192
steps:
203193
- name: Checkout
204-
uses: actions/checkout@v3
194+
uses: actions/checkout@v4
205195

206-
- uses: actions/download-artifact@v3
196+
- uses: actions/download-artifact@v4
207197
with:
208-
name: wheelhouse
198+
pattern: wheelhouse-*
199+
merge-multiple: true
209200
path: ./wheelhouse
210201

211202
- name: Install Python
@@ -239,15 +230,16 @@ jobs:
239230

240231
steps:
241232

242-
- uses: actions/download-artifact@v3
233+
- uses: actions/download-artifact@v4
243234
with:
244-
name: wheelhouse
235+
pattern: wheelhouse-*
236+
merge-multiple: true
245237
path: ./wheelhouse
246238

247239
- name: Install Python
248240
uses: actions/setup-python@v4
249241
with:
250-
python-version: 3.9
242+
python-version: 3.13
251243

252244
- name: Install deps
253245
run: python -m pip install twine

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
[build-system]
22
requires = [
3-
"setuptools",
3+
"setuptools~=69.0",
44
"wheel",
55
"scikit-build>=0.11.0,<0.14",
6-
"cmake>=3.4",
6+
"cmake<3.28.1",
77
"ninja",
88
"packaging<22"
99
]

0 commit comments

Comments
 (0)