48
48
# }}
49
49
#
50
50
run-docs : ${{ steps.docs-changes.outputs.run-docs || false }}
51
+ run-win-msi : ${{ steps.win-msi-changes.outputs.run-win-msi || false }}
51
52
run_tests : ${{ steps.check.outputs.run_tests || false }}
52
53
run_hypothesis : ${{ steps.check.outputs.run_hypothesis || false }}
53
54
run_cifuzz : ${{ steps.check.outputs.run_cifuzz || false }}
@@ -123,6 +124,20 @@ jobs:
123
124
id : docs-changes
124
125
run : |
125
126
echo "run-docs=true" >> "${GITHUB_OUTPUT}"
127
+ - name : Get a list of the MSI installer-related files
128
+ id : changed-win-msi-files
129
+
130
+ with :
131
+ filter : |
132
+ Tools/msi/**
133
+ .github/workflows/reusable-windows-msi.yml
134
+ format : csv # works for paths with spaces
135
+ - name : Check for changes in MSI installer-related files
136
+ if : >-
137
+ steps.changed-win-msi-files.outputs.added_modified_renamed != ''
138
+ id : win-msi-changes
139
+ run : |
140
+ echo "run-win-msi=true" >> "${GITHUB_OUTPUT}"
126
141
127
142
check-docs :
128
143
name : Docs
@@ -218,28 +233,54 @@ jobs:
218
233
arch : ${{ matrix.arch }}
219
234
free-threading : ${{ matrix.free-threading }}
220
235
221
- build_macos :
222
- name : ' macOS'
236
+ build_windows_msi :
237
+ name : >- # ${{ '' } is a hack to nest jobs under the same sidebar category
238
+ Windows MSI${{ '' }}
223
239
needs : check_source
224
- if : needs.check_source.outputs.run_tests == 'true'
225
- uses : ./.github/workflows/reusable-macos.yml
240
+ if : fromJSON(needs.check_source.outputs.run-win-msi)
241
+ strategy :
242
+ matrix :
243
+ arch :
244
+ - x86
245
+ - x64
246
+ - arm64
247
+ uses : ./.github/workflows/reusable-windows-msi.yml
226
248
with :
227
- config_hash : ${{ needs.check_source.outputs.config_hash }}
228
- # Cirrus and macos-14 are M1, macos-13 is default GHA Intel.
229
- # Cirrus used for upstream, macos-14 for forks.
230
- os-matrix : ' ["ghcr.io/cirruslabs/macos-runner:sonoma", "macos-14", "macos-13"]'
249
+ arch : ${{ matrix.arch }}
231
250
232
- build_macos_free_threading :
233
- name : ' macOS (free-threading)'
251
+ build_macos :
252
+ name : >-
253
+ macOS
254
+ ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
234
255
needs : check_source
235
256
if : needs.check_source.outputs.run_tests == 'true'
257
+ strategy :
258
+ fail-fast : false
259
+ matrix :
260
+ # Cirrus and macos-14 are M1, macos-13 is default GHA Intel.
261
+ # macOS 13 only runs tests against the GIL-enabled CPython.
262
+ # Cirrus used for upstream, macos-14 for forks.
263
+ os :
264
+ - ghcr.io/cirruslabs/macos-runner:sonoma
265
+ - macos-14
266
+ - macos-13
267
+ is-fork : # only used for the exclusion trick
268
+ - ${{ github.repository_owner != 'python' }}
269
+ free-threading :
270
+ - false
271
+ - true
272
+ exclude :
273
+ - os : ghcr.io/cirruslabs/macos-runner:sonoma
274
+ is-fork : true
275
+ - os : macos-14
276
+ is-fork : false
277
+ - os : macos-13
278
+ free-threading : true
236
279
uses : ./.github/workflows/reusable-macos.yml
237
280
with :
238
281
config_hash : ${{ needs.check_source.outputs.config_hash }}
239
- free-threading : true
240
- # Cirrus and macos-14 are M1.
241
- # Cirrus used for upstream, macos-14 for forks.
242
- os-matrix : ' ["ghcr.io/cirruslabs/macos-runner:sonoma", "macos-14"]'
282
+ free-threading : ${{ matrix.free-threading }}
283
+ os : ${{ matrix.os }}
243
284
244
285
build_ubuntu :
245
286
name : >-
@@ -307,7 +348,7 @@ jobs:
307
348
with :
308
349
save : false
309
350
- name : Configure CPython
310
- run : ./configure -- config-cache --with-pydebug --with-openssl=$OPENSSL_DIR
351
+ run : ./configure CFLAGS="-fdiagnostics-format=json" -- config-cache --enable-slower-safety --with-pydebug --with-openssl=$OPENSSL_DIR
311
352
- name : Build CPython
312
353
run : make -j4
313
354
- name : Display build info
@@ -380,6 +421,7 @@ jobs:
380
421
../cpython-ro-srcdir/configure \
381
422
--config-cache \
382
423
--with-pydebug \
424
+ --enable-slower-safety \
383
425
--with-openssl=$OPENSSL_DIR
384
426
- name : Build CPython out-of-tree
385
427
working-directory : ${{ env.CPYTHON_BUILDDIR }}
@@ -565,11 +607,11 @@ jobs:
565
607
- check-docs
566
608
- check_generated_files
567
609
- build_macos
568
- - build_macos_free_threading
569
610
- build_ubuntu
570
611
- build_ubuntu_ssltests
571
612
- build_wasi
572
613
- build_windows
614
+ - build_windows_msi
573
615
- test_hypothesis
574
616
- build_asan
575
617
- build_tsan
@@ -584,6 +626,7 @@ jobs:
584
626
with :
585
627
allowed-failures : >-
586
628
build_ubuntu_ssltests,
629
+ build_windows_msi,
587
630
cifuzz,
588
631
test_hypothesis,
589
632
allowed-skips : >-
@@ -599,7 +642,6 @@ jobs:
599
642
&& '
600
643
check_generated_files,
601
644
build_macos,
602
- build_macos_free_threading,
603
645
build_ubuntu,
604
646
build_ubuntu_ssltests,
605
647
build_wasi,
0 commit comments