@@ -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:
5861uses : 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' 
@@ -228,24 +234,31 @@ jobs:
228234    name : >- 
229235      Ubuntu 
230236      ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} 
237+       ${{ fromJSON(matrix.bolt) && '(bolt)' || '' }} 
231238needs : 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 
238248        os :
239249        - ubuntu-24.04 
240-         - ubuntu-24.04-aarch64 
241-         is-fork :  #  only used for the exclusion trick
242-         - ${{ github.repository_owner != 'python' }} 
250+         - ubuntu-24.04-arm 
243251        exclude :
244-         - os : ubuntu-24.04-aarch64 
245-           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 
246258    uses : ./.github/workflows/reusable-ubuntu.yml 
247259    with :
248260      config_hash : ${{ needs.check_source.outputs.config_hash }} 
261+       bolt-optimizations : ${{ matrix.bolt }} 
249262      free-threading : ${{ matrix.free-threading }} 
250263      os : ${{ matrix.os }} 
251264
@@ -268,6 +281,8 @@ jobs:
268281      LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}/lib 
269282    steps :
270283    - uses : actions/checkout@v4 
284+       with :
285+         persist-credentials : false 
271286    - name : Runner image version 
272287      run : echo "IMAGE_VERSION=${ImageVersion}" >> "$GITHUB_ENV" 
273288    - name : Restore config.cache 
@@ -328,6 +343,8 @@ jobs:
328343      PYTHONSTRICTEXTENSIONBUILD : 1 
329344    steps :
330345    - uses : actions/checkout@v4 
346+       with :
347+         persist-credentials : false 
331348    - name : Register gcc problem matcher 
332349      run : echo "::add-matcher::.github/problem-matchers/gcc.json" 
333350    - name : Install Dependencies 
@@ -411,7 +428,7 @@ jobs:
411428        # 
412429        # (GH-104097) test_sysconfig is skipped because it has tests that are 
413430        # failing when executed from inside a virtual environment. 
414-         ${{ env. VENV_PYTHON }}  -m test \ 
431+         "${ VENV_PYTHON}"  -m test \ 
415432          -W \ 
416433          -o \ 
417434          -j4 \ 
@@ -446,6 +463,8 @@ jobs:
446463      ASAN_OPTIONS : detect_leaks=0:allocator_may_return_null=1:handle_segv=0 
447464    steps :
448465    - uses : actions/checkout@v4 
466+       with :
467+         persist-credentials : false 
449468    - name : Runner image version 
450469      run : echo "IMAGE_VERSION=${ImageVersion}" >> "$GITHUB_ENV" 
451470    - name : Restore config.cache 
@@ -493,26 +512,59 @@ jobs:
493512      run : xvfb-run make ci 
494513
495514  build_tsan :
496-     name : ' Thread sanitizer' 
515+     name : >- 
516+       Thread sanitizer 
517+       ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} 
497518needs : check_source 
498519    if : needs.check_source.outputs.run_tests == 'true' 
520+     strategy :
521+       matrix :
522+         free-threading :
523+         - false 
524+         - true 
499525    uses : ./.github/workflows/reusable-tsan.yml 
500526    with :
501527      config_hash : ${{ needs.check_source.outputs.config_hash }} 
502-       options : ./configure --config-cache --with-thread-sanitizer --with-pydebug 
503-       suppressions_path : Tools/tsan/supressions.txt 
504-       tsan_logs_artifact_name : tsan-logs-default 
528+       free-threading : ${{ matrix.free-threading }} 
505529
506-   build_tsan_free_threading :
507-     name : ' Thread sanitizer (free-threading)' 
530+   cross-build-linux :
531+     name : Cross build Linux 
532+     runs-on : ubuntu-latest 
508533    needs : check_source 
509534    if : needs.check_source.outputs.run_tests == 'true' 
510-     uses : ./.github/workflows/reusable-tsan.yml 
511-     with :
512-       config_hash : ${{ needs.check_source.outputs.config_hash }} 
513-       options : ./configure --config-cache --disable-gil --with-thread-sanitizer --with-pydebug 
514-       suppressions_path : Tools/tsan/suppressions_free_threading.txt 
515-       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 
516568
517569#  CIFuzz job based on https://google.github.io/oss-fuzz/getting-started/continuous-integration/
518570  cifuzz :
@@ -572,7 +624,6 @@ jobs:
572624    - test_hypothesis 
573625    - build_asan 
574626    - build_tsan 
575-     - build_tsan_free_threading 
576627    - cifuzz 
577628
578629    runs-on : ubuntu-latest 
@@ -606,7 +657,6 @@ jobs:
606657            build_windows, 
607658            build_asan, 
608659            build_tsan, 
609-             build_tsan_free_threading, 
610660            ' 
611661            || '' 
612662          }} 
0 commit comments