@@ -15,7 +15,6 @@ concurrency:
15
15
cancel-in-progress : true
16
16
17
17
env :
18
- SCCACHE_CACHE_MULTIARCH : " 1"
19
18
SCCACHE_WEBDAV_ENDPOINT : " https://frcmaven.wpi.edu/artifactory/wpilib-generic-cache-cmake-local"
20
19
SCCACHE_WEBDAV_KEY_PREFIX : " sccache-robotpy"
21
20
@@ -96,13 +95,18 @@ jobs:
96
95
- name : Set ccache params
97
96
shell : bash
98
97
id : ccache
98
+ env :
99
+ OS : ${{ runner.os }}
99
100
run : |
100
- if [[ "${{ runner.os }} " != "Linux" ]]; then
101
+ if [[ "$OS " != "Linux" ]]; then
101
102
echo "VARIANT=sccache" >> $GITHUB_OUTPUT
102
103
else
103
104
echo "VARIANT=ccache" >> $GITHUB_OUTPUT
104
105
echo "MAX_SIZE=500M" >> $GITHUB_OUTPUT
105
106
fi
107
+ if [[ "$OS" == "macOS" ]]; then
108
+ echo "SCCACHE_CACHE_MULTIARCH=1" >> $GITHUB_ENV
109
+ fi
106
110
107
111
- name : Setup ccache
108
112
if : steps.ccache.outputs.variant == 'ccache'
@@ -141,6 +145,64 @@ jobs:
141
145
name : " pypi-${{ runner.os }}-${{ matrix.python_version }}"
142
146
path : dist
143
147
148
+ build-arm :
149
+ runs-on : ubuntu-22.04-arm
150
+ needs : [setup_concurrency]
151
+ strategy :
152
+ max-parallel : ${{ fromJSON(needs.setup_concurrency.outputs.max-parallel).v }}
153
+ fail-fast : true
154
+ matrix :
155
+ python_version :
156
+ - ' 3.11'
157
+ - ' 3.12'
158
+ - ' 3.13'
159
+ container : python:${{ matrix.python_version }}-bookworm
160
+
161
+ steps :
162
+ - run : apt-get update && apt-get install -y libgl1
163
+
164
+ - uses : actions/checkout@v4
165
+ with :
166
+ fetch-depth : 0
167
+
168
+ #
169
+ # Setup build caching
170
+ #
171
+
172
+ - name : Setup sccache
173
+ uses :
mozilla-actions/[email protected]
174
+
175
+ # See https://github.com/pypa/setuptools_scm/issues/784
176
+ - name : Set git directory as safe to allow setuptools-scm to work
177
+ shell : bash
178
+ run : |
179
+ /usr/bin/git config --global --add safe.directory $PWD
180
+
181
+ - name : Install deps
182
+ shell : bash
183
+ run : |
184
+ python -m pip --disable-pip-version-check install -r rdev_requirements.txt
185
+
186
+ - name : Install numpy (needed for stubgen)
187
+ shell : bash
188
+ run : |
189
+ python -m pip --disable-pip-version-check install numpy
190
+
191
+ - name : Build + test wheels
192
+ shell : bash
193
+ run : |
194
+ ./rdev.sh ci run
195
+ env :
196
+ RPYBUILD_STRIP_LIBPYTHON : " 1"
197
+ RPYBUILD_CC_LAUNCHER : sccache
198
+ SCCACHE_WEBDAV_USERNAME : ${{ secrets.WPI_ARTIFACTORY_USERNAME }}
199
+ SCCACHE_WEBDAV_PASSWORD : ${{ secrets.WPI_ARTIFACTORY_TOKEN }}
200
+
201
+ - uses : actions/upload-artifact@v4
202
+ with :
203
+ name : " pypi-${{ runner.os }}-arm-${{ matrix.python_version }}"
204
+ path : dist
205
+
144
206
#
145
207
# Build roboRIO/raspbian wheels
146
208
#
@@ -162,13 +224,6 @@ jobs:
162
224
- container : wpilib/raspbian-cross-ubuntu:2025-bookworm-22.04-py313
163
225
name : raspbian-py313
164
226
165
- - container : wpilib/aarch64-cross-ubuntu:2025-bookworm-22.04-py311
166
- name : raspbian-aarch64-py311
167
- - container : wpilib/aarch64-cross-ubuntu:2025-bookworm-22.04-py312
168
- name : raspbian-aarch64-py312
169
- - container : wpilib/aarch64-cross-ubuntu:2025-bookworm-22.04-py313
170
- name : raspbian-aarch64-py313
171
-
172
227
container :
173
228
image : " ${{ matrix.os.container }}"
174
229
@@ -228,7 +283,7 @@ jobs:
228
283
229
284
publish-rpyrepo :
230
285
runs-on : ubuntu-latest
231
- needs : [check, build, cross-build]
286
+ needs : [check, build, build-arm, cross-build]
232
287
if : github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
233
288
234
289
steps :
@@ -248,7 +303,7 @@ jobs:
248
303
249
304
publish-pypi :
250
305
runs-on : ubuntu-latest
251
- needs : [check, build, cross-build]
306
+ needs : [check, build, build-arm, cross-build]
252
307
permissions :
253
308
id-token : write
254
309
if : github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
0 commit comments