@@ -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 
@@ -46,23 +49,24 @@ jobs:
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' 
5356    steps :
5457      - name : Install Git 
5558        run : | 
56-           apt install git -yq 
59+           apt update && apt  install git -yq 
5760          git config --global --add safe.directory "$GITHUB_WORKSPACE" 
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 
@@ -150,16 +156,28 @@ jobs:
150156     needs : check_source 
151157    if : fromJSON(needs.check_source.outputs.run_tests) 
152158    strategy :
159+       fail-fast : false 
153160      matrix :
161+         os :
162+           - windows-latest 
154163        arch :
155-         - Win32 
156-         - x64 
157-         - arm64 
164+           - x64 
158165        free-threading :
159-         - false 
160-         - true 
166+           - false 
167+           - true 
168+         include :
169+           - os : windows-latest  #  FIXME(diegorusso): change to os: windows-aarch64
170+             arch : arm64 
171+             free-threading : false 
172+           - os : windows-latest  #  FIXME(diegorusso): change to os: windows-aarch64
173+             arch : arm64 
174+             free-threading : true 
175+           - os : windows-latest 
176+             arch : Win32 
177+             free-threading : false 
161178    uses : ./.github/workflows/reusable-windows.yml 
162179    with :
180+       os : ${{ matrix.os }} 
163181      arch : ${{ matrix.arch }} 
164182      free-threading : ${{ matrix.free-threading }} 
165183
@@ -216,17 +234,33 @@ jobs:
216234    name : >- 
217235      Ubuntu 
218236      ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} 
237+       ${{ fromJSON(matrix.bolt) && '(bolt)' || '' }} 
219238     needs : check_source 
220239    if : needs.check_source.outputs.run_tests == 'true' 
221240    strategy :
222241      matrix :
242+         bolt :
243+         - false 
244+         - true 
223245        free-threading :
224246        - false 
225247        - 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 
226258    uses : ./.github/workflows/reusable-ubuntu.yml 
227259    with :
228260      config_hash : ${{ needs.check_source.outputs.config_hash }} 
261+       bolt-optimizations : ${{ matrix.bolt }} 
229262      free-threading : ${{ matrix.free-threading }} 
263+       os : ${{ matrix.os }} 
230264
231265  build_ubuntu_ssltests :
232266    name : ' Ubuntu SSL tests with OpenSSL' 
@@ -238,14 +272,17 @@ jobs:
238272      fail-fast : false 
239273      matrix :
240274        os : [ubuntu-24.04] 
241-         openssl_ver : [3.0.15, 3.1.7, 3.2.3, 3.3.2] 
275+         openssl_ver : [3.0.15, 3.1.7, 3.2.3, 3.3.2, 3.4.0] 
276+         #  See Tools/ssl/make_ssl_data.py for notes on adding a new version
242277    env :
243278      OPENSSL_VER : ${{ matrix.openssl_ver }} 
244279      MULTISSL_DIR : ${{ github.workspace }}/multissl 
245280      OPENSSL_DIR : ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }} 
246281      LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}/lib 
247282    steps :
248283    - uses : actions/checkout@v4 
284+       with :
285+         persist-credentials : false 
249286    - name : Runner image version 
250287      run : echo "IMAGE_VERSION=${ImageVersion}" >> "$GITHUB_ENV" 
251288    - name : Restore config.cache 
@@ -306,6 +343,8 @@ jobs:
306343      PYTHONSTRICTEXTENSIONBUILD : 1 
307344    steps :
308345    - uses : actions/checkout@v4 
346+       with :
347+         persist-credentials : false 
309348    - name : Register gcc problem matcher 
310349      run : echo "::add-matcher::.github/problem-matchers/gcc.json" 
311350    - name : Install Dependencies 
@@ -389,7 +428,7 @@ jobs:
389428        # 
390429        # (GH-104097) test_sysconfig is skipped because it has tests that are 
391430        # failing when executed from inside a virtual environment. 
392-         ${{ env. VENV_PYTHON }}  -m test \ 
431+         "${ VENV_PYTHON}"  -m test \ 
393432          -W \ 
394433          -o \ 
395434          -j4 \ 
@@ -424,6 +463,8 @@ jobs:
424463      ASAN_OPTIONS : detect_leaks=0:allocator_may_return_null=1:handle_segv=0 
425464    steps :
426465    - uses : actions/checkout@v4 
466+       with :
467+         persist-credentials : false 
427468    - name : Runner image version 
428469      run : echo "IMAGE_VERSION=${ImageVersion}" >> "$GITHUB_ENV" 
429470    - name : Restore config.cache 
@@ -471,26 +512,59 @@ jobs:
471512      run : xvfb-run make ci 
472513
473514  build_tsan :
474-     name : ' Thread sanitizer' 
515+     name : >- 
516+       Thread sanitizer 
517+       ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} 
475518     needs : check_source 
476519    if : needs.check_source.outputs.run_tests == 'true' 
520+     strategy :
521+       matrix :
522+         free-threading :
523+         - false 
524+         - true 
477525    uses : ./.github/workflows/reusable-tsan.yml 
478526    with :
479527      config_hash : ${{ needs.check_source.outputs.config_hash }} 
480-       options : ./configure --config-cache --with-thread-sanitizer --with-pydebug 
481-       suppressions_path : Tools/tsan/supressions.txt 
482-       tsan_logs_artifact_name : tsan-logs-default 
528+       free-threading : ${{ matrix.free-threading }} 
483529
484-   build_tsan_free_threading :
485-     name : ' Thread sanitizer (free-threading)' 
530+   cross-build-linux :
531+     name : Cross build Linux 
532+     runs-on : ubuntu-latest 
486533    needs : check_source 
487534    if : needs.check_source.outputs.run_tests == 'true' 
488-     uses : ./.github/workflows/reusable-tsan.yml 
489-     with :
490-       config_hash : ${{ needs.check_source.outputs.config_hash }} 
491-       options : ./configure --config-cache --disable-gil --with-thread-sanitizer --with-pydebug 
492-       suppressions_path : Tools/tsan/suppressions_free_threading.txt 
493-       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 
494568
495569   #  CIFuzz job based on https://google.github.io/oss-fuzz/getting-started/continuous-integration/
496570  cifuzz :
@@ -550,7 +624,6 @@ jobs:
550624    - test_hypothesis 
551625    - build_asan 
552626    - build_tsan 
553-     - build_tsan_free_threading 
554627    - cifuzz 
555628
556629    runs-on : ubuntu-latest 
@@ -584,7 +657,6 @@ jobs:
584657            build_windows, 
585658            build_asan, 
586659            build_tsan, 
587-             build_tsan_free_threading, 
588660            ' 
589661            || '' 
590662          }} 
0 commit comments