4242
4343 check_abi :
4444 name : ' Check if the ABI has changed'
45- runs-on : ubuntu-latest
45+ runs-on : ubuntu-22.04 # 24.04 causes spurious errors
4646 needs : check_source
4747 if : needs.check_source.outputs.run_tests == 'true'
4848 steps :
@@ -83,11 +83,55 @@ jobs:
8383 name : abi-data
8484 path : ./Doc/data/*.abi
8585
86+ check_autoconf_regen :
87+ name : ' Check if Autoconf files are up to date'
88+ # Don't use ubuntu-latest but a specific version to make the job
89+ # reproducible: to get the same tools versions (autoconf, aclocal, ...)
90+ runs-on : ubuntu-24.04
91+ container :
92+ image : ghcr.io/python/autoconf:2024.10.16.11360930377
93+ timeout-minutes : 60
94+ needs : check_source
95+ if : needs.check_source.outputs.run_tests == 'true'
96+ steps :
97+ - name : Install Git
98+ run : |
99+ apt update && apt install git -yq
100+ git config --global --add safe.directory "$GITHUB_WORKSPACE"
101+ - uses : actions/checkout@v4
102+ with :
103+ fetch-depth : 1
104+ - name : Runner image version
105+ run : echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV
106+ - name : Check Autoconf and aclocal versions
107+ run : |
108+ grep "Generated by GNU Autoconf 2.71" configure
109+ grep "aclocal 1.16.5" aclocal.m4
110+ grep -q "runstatedir" configure
111+ grep -q "PKG_PROG_PKG_CONFIG" aclocal.m4
112+ - name : Regenerate autoconf files
113+ # Same command used by Tools/build/regen-configure.sh ($AUTORECONF)
114+ run : autoreconf -ivf -Werror
115+ - name : Check for changes
116+ run : |
117+ git add -u
118+ changes=$(git status --porcelain)
119+ # Check for changes in regenerated files
120+ if test -n "$changes"; then
121+ echo "Generated files not up to date."
122+ echo "Perhaps you forgot to run make regen-configure ;)"
123+ echo "configure files must be regenerated with a specific version of autoconf."
124+ echo "$changes"
125+ echo ""
126+ git diff --staged || true
127+ exit 1
128+ fi
129+
86130 check_generated_files :
87131 name : ' Check if generated files are up to date'
88132 # Don't use ubuntu-latest but a specific version to make the job
89133 # reproducible: to get the same tools versions (autoconf, aclocal, ...)
90- runs-on : ubuntu-22 .04
134+ runs-on : ubuntu-24 .04
91135 timeout-minutes : 60
92136 needs : check_source
93137 if : needs.check_source.outputs.run_tests == 'true'
@@ -112,19 +156,10 @@ jobs:
112156 uses : hendrikmuhs/ccache-action@v1.2
113157 with :
114158 save : false
115- - name : Check Autoconf and aclocal versions
116- run : |
117- grep "Generated by GNU Autoconf 2.71" configure
118- grep "aclocal 1.16.5" aclocal.m4
119- grep -q "runstatedir" configure
120- grep -q "PKG_PROG_PKG_CONFIG" aclocal.m4
121159 - name : Configure CPython
122160 run : |
123161 # Build Python with the libpython dynamic library
124162 ./configure --config-cache --with-pydebug --enable-shared
125- - name : Regenerate autoconf files
126- # Same command used by Tools/build/regen-configure.sh ($AUTORECONF)
127- run : autoreconf -ivf -Werror
128163 - name : Build CPython
129164 run : |
130165 make -j4 regen-all
@@ -158,16 +193,28 @@ jobs:
158193 needs : check_source
159194 if : fromJSON(needs.check_source.outputs.run_tests)
160195 strategy :
196+ fail-fast : false
161197 matrix :
198+ os :
199+ - windows-latest
162200 arch :
163- - Win32
164- - x64
165- - arm64
201+ - x64
166202 free-threading :
167- - false
168- - true
203+ - false
204+ - true
205+ include :
206+ - os : windows-latest # FIXME(diegorusso): change to os: windows-aarch64
207+ arch : arm64
208+ free-threading : false
209+ - os : windows-latest # FIXME(diegorusso): change to os: windows-aarch64
210+ arch : arm64
211+ free-threading : true
212+ - os : windows-latest
213+ arch : Win32
214+ free-threading : false
169215 uses : ./.github/workflows/reusable-windows.yml
170216 with :
217+ os : ${{ matrix.os }}
171218 arch : ${{ matrix.arch }}
172219 free-threading : ${{ matrix.free-threading }}
173220
@@ -238,14 +285,15 @@ jobs:
238285
239286 build_ubuntu_ssltests :
240287 name : ' Ubuntu SSL tests with OpenSSL'
241- runs-on : ubuntu-22.04
288+ runs-on : ${{ matrix.os }}
242289 timeout-minutes : 60
243290 needs : check_source
244291 if : needs.check_source.outputs.run_tests == 'true'
245292 strategy :
246293 fail-fast : false
247294 matrix :
248- openssl_ver : [1.1.1w, 3.0.13, 3.1.5, 3.2.1]
295+ os : [ubuntu-24.04]
296+ openssl_ver : [3.0.15, 3.1.7, 3.2.3, 3.3.2]
249297 env :
250298 OPENSSL_VER : ${{ matrix.openssl_ver }}
251299 MULTISSL_DIR : ${{ github.workspace }}/multissl
@@ -274,7 +322,7 @@ jobs:
274322 uses : actions/cache@v4
275323 with :
276324 path : ./multissl/openssl/${{ env.OPENSSL_VER }}
277- key : ${{ runner .os }}-multissl-openssl-${{ env.OPENSSL_VER }}
325+ key : ${{ matrix .os }}-multissl-openssl-${{ env.OPENSSL_VER }}
278326 - name : Install OpenSSL
279327 if : steps.cache-openssl.outputs.cache-hit != 'true'
280328 run : python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux
@@ -304,12 +352,12 @@ jobs:
304352
305353 test_hypothesis :
306354 name : " Hypothesis tests on Ubuntu"
307- runs-on : ubuntu-22 .04
355+ runs-on : ubuntu-24 .04
308356 timeout-minutes : 60
309357 needs : check_source
310358 if : needs.check_source.outputs.run_tests == 'true' && needs.check_source.outputs.run_hypothesis == 'true'
311359 env :
312- OPENSSL_VER : 3.0.13
360+ OPENSSL_VER : 3.0.15
313361 PYTHONSTRICTEXTENSIONBUILD : 1
314362 steps :
315363 - uses : actions/checkout@v4
@@ -417,12 +465,15 @@ jobs:
417465
418466 build_asan :
419467 name : ' Address sanitizer'
420- runs-on : ubuntu-22.04
468+ runs-on : ${{ matrix.os }}
421469 timeout-minutes : 60
422470 needs : check_source
423471 if : needs.check_source.outputs.run_tests == 'true'
472+ strategy :
473+ matrix :
474+ os : [ubuntu-24.04]
424475 env :
425- OPENSSL_VER : 3.0.13
476+ OPENSSL_VER : 3.0.15
426477 PYTHONSTRICTEXTENSIONBUILD : 1
427478 ASAN_OPTIONS : detect_leaks=0:allocator_may_return_null=1:handle_segv=0
428479 steps :
@@ -452,7 +503,7 @@ jobs:
452503 uses : actions/cache@v4
453504 with :
454505 path : ./multissl/openssl/${{ env.OPENSSL_VER }}
455- key : ${{ runner .os }}-multissl-openssl-${{ env.OPENSSL_VER }}
506+ key : ${{ matrix .os }}-multissl-openssl-${{ env.OPENSSL_VER }}
456507 - name : Install OpenSSL
457508 if : steps.cache-openssl.outputs.cache-hit != 'true'
458509 run : python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux
@@ -542,6 +593,7 @@ jobs:
542593 needs :
543594 - check_source # Transitive dependency, needed to access `run_tests` value
544595 - check-docs
596+ - check_autoconf_regen
545597 - check_generated_files
546598 - build_macos
547599 - build_ubuntu
@@ -577,6 +629,7 @@ jobs:
577629 ${{
578630 needs.check_source.outputs.run_tests != 'true'
579631 && '
632+ check_autoconf_regen,
580633 check_generated_files,
581634 build_macos,
582635 build_ubuntu,
0 commit comments