@@ -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