@@ -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
4649 # reproducible: to get the same tools versions (autoconf, aclocal, ...)
4750 runs-on : ubuntu-24.04
4851 container :
49- image : ghcr.io/python/autoconf:2024.11.11.11786316759
52+ image : ghcr.io/python/autoconf:2025.01.02.12581854023
5053 timeout-minutes : 60
5154 needs : check_source
5255 if : needs.check_source.outputs.run_tests == 'true'
@@ -58,11 +61,12 @@ jobs:
5861 - uses : actions/checkout@v4
5962 with :
6063 fetch-depth : 1
64+ persist-credentials : false
6165 - name : Runner image version
6266 run : echo "IMAGE_VERSION=${ImageVersion}" >> "$GITHUB_ENV"
6367 - name : Check Autoconf and aclocal versions
6468 run : |
65- grep "Generated by GNU Autoconf 2.71 " configure
69+ grep "Generated by GNU Autoconf 2.72 " configure
6670 grep "aclocal 1.16.5" aclocal.m4
6771 grep -q "runstatedir" configure
6872 grep -q "PKG_PROG_PKG_CONFIG" aclocal.m4
9498 if : needs.check_source.outputs.run_tests == 'true'
9599 steps :
96100 - uses : actions/checkout@v4
101+ with :
102+ persist-credentials : false
97103 - uses : actions/setup-python@v5
98104 with :
99105 python-version : ' 3.x'
@@ -120,7 +126,7 @@ jobs:
120126 - name : Build CPython
121127 run : |
122128 make -j4 regen-all
123- make regen-stdlib-module-names regen-sbom
129+ make regen-stdlib-module-names regen-sbom regen-unicodedata
124130 - name : Check for changes
125131 run : |
126132 git add -u
@@ -228,17 +234,33 @@ jobs:
228234 name : >-
229235 Ubuntu
230236 ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
237+ ${{ fromJSON(matrix.bolt) && '(bolt)' || '' }}
231238 needs : check_source
232239 if : needs.check_source.outputs.run_tests == 'true'
233240 strategy :
234241 matrix :
242+ bolt :
243+ - false
244+ - true
235245 free-threading :
236246 - false
237247 - true
248+ os :
249+ - ubuntu-24.04
250+ - ubuntu-24.04-arm
251+ exclude :
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
238258 uses : ./.github/workflows/reusable-ubuntu.yml
239259 with :
240260 config_hash : ${{ needs.check_source.outputs.config_hash }}
261+ bolt-optimizations : ${{ matrix.bolt }}
241262 free-threading : ${{ matrix.free-threading }}
263+ os : ${{ matrix.os }}
242264
243265 build_ubuntu_ssltests :
244266 name : ' Ubuntu SSL tests with OpenSSL'
@@ -259,6 +281,8 @@ jobs:
259281 LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}/lib
260282 steps :
261283 - uses : actions/checkout@v4
284+ with :
285+ persist-credentials : false
262286 - name : Runner image version
263287 run : echo "IMAGE_VERSION=${ImageVersion}" >> "$GITHUB_ENV"
264288 - name : Restore config.cache
@@ -319,6 +343,8 @@ jobs:
319343 PYTHONSTRICTEXTENSIONBUILD : 1
320344 steps :
321345 - uses : actions/checkout@v4
346+ with :
347+ persist-credentials : false
322348 - name : Register gcc problem matcher
323349 run : echo "::add-matcher::.github/problem-matchers/gcc.json"
324350 - name : Install Dependencies
@@ -402,7 +428,7 @@ jobs:
402428 #
403429 # (GH-104097) test_sysconfig is skipped because it has tests that are
404430 # failing when executed from inside a virtual environment.
405- ${{ env. VENV_PYTHON }} -m test \
431+ "${ VENV_PYTHON}" -m test \
406432 -W \
407433 -o \
408434 -j4 \
@@ -437,6 +463,8 @@ jobs:
437463 ASAN_OPTIONS : detect_leaks=0:allocator_may_return_null=1:handle_segv=0
438464 steps :
439465 - uses : actions/checkout@v4
466+ with :
467+ persist-credentials : false
440468 - name : Runner image version
441469 run : echo "IMAGE_VERSION=${ImageVersion}" >> "$GITHUB_ENV"
442470 - name : Restore config.cache
@@ -484,26 +512,59 @@ jobs:
484512 run : xvfb-run make ci
485513
486514 build_tsan :
487- name : ' Thread sanitizer'
515+ name : >-
516+ Thread sanitizer
517+ ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
488518 needs : check_source
489519 if : needs.check_source.outputs.run_tests == 'true'
520+ strategy :
521+ matrix :
522+ free-threading :
523+ - false
524+ - true
490525 uses : ./.github/workflows/reusable-tsan.yml
491526 with :
492527 config_hash : ${{ needs.check_source.outputs.config_hash }}
493- options : ./configure --config-cache --with-thread-sanitizer --with-pydebug
494- suppressions_path : Tools/tsan/supressions.txt
495- tsan_logs_artifact_name : tsan-logs-default
528+ free-threading : ${{ matrix.free-threading }}
496529
497- build_tsan_free_threading :
498- name : ' Thread sanitizer (free-threading)'
530+ cross-build-linux :
531+ name : Cross build Linux
532+ runs-on : ubuntu-latest
499533 needs : check_source
500534 if : needs.check_source.outputs.run_tests == 'true'
501- uses : ./.github/workflows/reusable-tsan.yml
502- with :
503- config_hash : ${{ needs.check_source.outputs.config_hash }}
504- options : ./configure --config-cache --disable-gil --with-thread-sanitizer --with-pydebug
505- suppressions_path : Tools/tsan/suppressions_free_threading.txt
506- tsan_logs_artifact_name : tsan-logs-free-threading
535+ steps :
536+ - uses : actions/checkout@v4
537+ with :
538+ persist-credentials : false
539+ - name : Runner image version
540+ run : echo "IMAGE_VERSION=${ImageVersion}" >> "$GITHUB_ENV"
541+ - name : Restore config.cache
542+ uses : actions/cache@v4
543+ with :
544+ path : config.cache
545+ key : ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ needs.check_source.outputs.config_hash }}
546+ - name : Register gcc problem matcher
547+ run : echo "::add-matcher::.github/problem-matchers/gcc.json"
548+ - name : Set build dir
549+ run :
550+ # an absolute path outside of the working directoy
551+ echo "BUILD_DIR=$(realpath ${{ github.workspace }}/../build)" >> "$GITHUB_ENV"
552+ - name : Install Dependencies
553+ run : sudo ./.github/workflows/posix-deps-apt.sh
554+ - name : Configure host build
555+ run : ./configure --prefix="$BUILD_DIR/host-python"
556+ - name : Install host Python
557+ run : make -j8 install
558+ - name : Run test subset with host build
559+ run : |
560+ "$BUILD_DIR/host-python/bin/python3" -m test test_sysconfig test_site test_embed
561+ - name : Configure cross build
562+ run : ./configure --prefix="$BUILD_DIR/cross-python" --with-build-python="$BUILD_DIR/host-python/bin/python3"
563+ - name : Install cross Python
564+ run : make -j8 install
565+ - name : Run test subset with host build
566+ run : |
567+ "$BUILD_DIR/cross-python/bin/python3" -m test test_sysconfig test_site test_embed
507568
508569 # CIFuzz job based on https://google.github.io/oss-fuzz/getting-started/continuous-integration/
509570 cifuzz :
@@ -563,7 +624,6 @@ jobs:
563624 - test_hypothesis
564625 - build_asan
565626 - build_tsan
566- - build_tsan_free_threading
567627 - cifuzz
568628
569629 runs-on : ubuntu-latest
@@ -597,7 +657,6 @@ jobs:
597657 build_windows,
598658 build_asan,
599659 build_tsan,
600- build_tsan_free_threading,
601660 '
602661 || ''
603662 }}
0 commit comments