@@ -18,6 +18,9 @@ concurrency:
1818 group : ${{ github.workflow }}-${{ github.head_ref || github.run_id }}-reusable
1919 cancel-in-progress : true
2020
21+ env :
22+ FORCE_COLOR : 1
23+
2124jobs :
2225 check_source :
2326 name : Change detection
@@ -231,24 +234,31 @@ jobs:
231234 name : >-
232235 Ubuntu
233236 ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
237+ ${{ fromJSON(matrix.bolt) && '(bolt)' || '' }}
234238 needs : check_source
235239 if : needs.check_source.outputs.run_tests == 'true'
236240 strategy :
237241 matrix :
242+ bolt :
243+ - false
244+ - true
238245 free-threading :
239246 - false
240247 - true
241248 os :
242249 - ubuntu-24.04
243- - ubuntu-24.04-aarch64
244- is-fork : # only used for the exclusion trick
245- - ${{ github.repository_owner != 'python' }}
250+ - ubuntu-24.04-arm
246251 exclude :
247- - os : ubuntu-24.04-aarch64
248- is-fork : true
252+ # Do not test BOLT with free-threading, to conserve resources
253+ - bolt : true
254+ free-threading : true
255+ # BOLT currently crashes during instrumentation on aarch64
256+ - os : ubuntu-24.04-arm
257+ bolt : true
249258 uses : ./.github/workflows/reusable-ubuntu.yml
250259 with :
251260 config_hash : ${{ needs.check_source.outputs.config_hash }}
261+ bolt-optimizations : ${{ matrix.bolt }}
252262 free-threading : ${{ matrix.free-threading }}
253263 os : ${{ matrix.os }}
254264
@@ -502,26 +512,20 @@ jobs:
502512 run : xvfb-run make ci
503513
504514 build_tsan :
505- name : ' Thread sanitizer'
506- needs : check_source
507- if : needs.check_source.outputs.run_tests == 'true'
508- uses : ./.github/workflows/reusable-tsan.yml
509- with :
510- config_hash : ${{ needs.check_source.outputs.config_hash }}
511- options : ./configure --config-cache --with-thread-sanitizer --with-pydebug
512- suppressions_path : Tools/tsan/supressions.txt
513- tsan_logs_artifact_name : tsan-logs-default
514-
515- build_tsan_free_threading :
516- name : ' Thread sanitizer (free-threading)'
515+ name : >-
516+ Thread sanitizer
517+ ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
517518 needs : check_source
518519 if : needs.check_source.outputs.run_tests == 'true'
520+ strategy :
521+ matrix :
522+ free-threading :
523+ - false
524+ - true
519525 uses : ./.github/workflows/reusable-tsan.yml
520526 with :
521527 config_hash : ${{ needs.check_source.outputs.config_hash }}
522- options : ./configure --config-cache --disable-gil --with-thread-sanitizer --with-pydebug
523- suppressions_path : Tools/tsan/suppressions_free_threading.txt
524- tsan_logs_artifact_name : tsan-logs-free-threading
528+ free-threading : ${{ matrix.free-threading }}
525529
526530 # CIFuzz job based on https://google.github.io/oss-fuzz/getting-started/continuous-integration/
527531 cifuzz :
@@ -581,7 +585,6 @@ jobs:
581585 - test_hypothesis
582586 - build_asan
583587 - build_tsan
584- - build_tsan_free_threading
585588 - cifuzz
586589
587590 runs-on : ubuntu-latest
@@ -615,7 +618,6 @@ jobs:
615618 build_windows,
616619 build_asan,
617620 build_tsan,
618- build_tsan_free_threading,
619621 '
620622 || ''
621623 }}
0 commit comments