6464 - name : Install dependencies
6565 run : |
6666 sudo ./.github/workflows/posix-deps-apt.sh
67- sudo apt-get install -yq abigail-tools
67+ sudo apt-get install -yq --no-install-recommends abigail-tools
6868 - name : Build CPython
6969 env :
7070 CFLAGS : -g3 -O0
@@ -158,8 +158,6 @@ jobs:
158158 run : echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
159159 - name : Install dependencies
160160 run : sudo ./.github/workflows/posix-deps-apt.sh
161- - name : Add ccache to PATH
162- run : echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
163161 - name : Configure CPython
164162 run : |
165163 # Build Python with the libpython dynamic library
@@ -242,16 +240,16 @@ jobs:
242240 strategy :
243241 fail-fast : false
244242 matrix :
245- # macos-14 is M1 , macos-15 -intel is Intel.
246- # macos-15 -intel only runs tests against the GIL-enabled CPython.
243+ # macos-26 is Apple Silicon , macos-26 -intel is Intel.
244+ # macos-26 -intel only runs tests against the GIL-enabled CPython.
247245 os :
248- - macos-14
249- - macos-15 -intel
246+ - macos-26
247+ - macos-26 -intel
250248 free-threading :
251249 - false
252250 - true
253251 exclude :
254- - os : macos-15 -intel
252+ - os : macos-26 -intel
255253 free-threading : true
256254 uses : ./.github/workflows/reusable-macos.yml
257255 with :
@@ -291,7 +289,7 @@ jobs:
291289 os : ${{ matrix.os }}
292290
293291 build-ubuntu-ssltests :
294- name : ' Ubuntu SSL tests with OpenSSL '
292+ name : ' Ubuntu SSL tests'
295293 runs-on : ${{ matrix.os }}
296294 timeout-minutes : 60
297295 needs : build-context
@@ -300,16 +298,23 @@ jobs:
300298 fail-fast : false
301299 matrix :
302300 os : [ubuntu-24.04]
303- # Keep 1.1.1w in our list despite it being upstream EOL and otherwise
304- # unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
305- # supported by important vendors such as AWS-LC.
306- openssl_ver : [1.1.1w, 3.0.19, 3.3.6, 3.4.4, 3.5.5, 3.6.1]
307- # See Tools/ssl/make_ssl_data.py for notes on adding a new version
301+ ssllib :
302+ # See Tools/ssl/make_ssl_data.py for notes on adding a new version
303+ # # OpenSSL
304+ # Keep 1.1.1w in our list despite it being upstream EOL and otherwise
305+ # unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
306+ # supported by important vendors such as AWS-LC.
307+ - { name: openssl, version: 1.1.1w }
308+ - { name: openssl, version: 3.0.19 }
309+ - { name: openssl, version: 3.3.6 }
310+ - { name: openssl, version: 3.4.4 }
311+ - { name: openssl, version: 3.5.5 }
312+ - { name: openssl, version: 3.6.1 }
308313 env :
309- OPENSSL_VER : ${{ matrix.openssl_ver }}
314+ SSLLIB_VER : ${{ matrix.ssllib.version }}
310315 MULTISSL_DIR : ${{ github.workspace }}/multissl
311- OPENSSL_DIR : ${{ github.workspace }}/multissl/openssl /${{ matrix.openssl_ver }}
312- LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/openssl /${{ matrix.openssl_ver }}/lib
316+ SSLLIB_DIR : ${{ github.workspace }}/multissl/${{ matrix.ssllib.name }} /${{ matrix.ssllib.version }}
317+ LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/${{ matrix.ssllib.name }} /${{ matrix.ssllib.version }}/lib
313318 steps :
314319 - uses : actions/checkout@v6
315320 with :
@@ -320,29 +325,37 @@ jobs:
320325 run : echo "::add-matcher::.github/problem-matchers/gcc.json"
321326 - name : Install dependencies
322327 run : sudo ./.github/workflows/posix-deps-apt.sh
323- - name : Configure OpenSSL env vars
324- run : |
325- echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
326- echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
327- echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
328- - name : ' Restore OpenSSL build'
329- id : cache-openssl
328+ - name : ' Restore SSL library build'
329+ id : cache-ssl-lib
330330 uses : actions/cache@v5
331331 with :
332- path : ./multissl/openssl/${{ env.OPENSSL_VER }}
333- key : ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
334- - name : Install OpenSSL
335- if : steps.cache-openssl.outputs.cache-hit != 'true'
336- run : python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
337- - name : Add ccache to PATH
332+ path : ./multissl/${{ matrix.ssllib.name }}/${{ matrix.ssllib.version }}
333+ key : ${{ matrix.os }}-multissl-${{ matrix.ssllib.name }}-${{ matrix.ssllib.version }}
334+ - name : Install SSL Library
335+ if : steps.cache-ssl-lib.outputs.cache-hit != 'true'
338336 run : |
339- echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
337+ python3 Tools/ssl/multissltests.py \
338+ --steps=library \
339+ --base-directory "$MULTISSL_DIR" \
340+ '--${{ matrix.ssllib.name }}' '${{ matrix.ssllib.version }}' \
341+ --system Linux
340342 - name : Configure CPython
341- run : ./configure CFLAGS="-fdiagnostics-format=json" --config-cache --enable-slower-safety --with-pydebug --with-openssl="$OPENSSL_DIR"
343+ run : |
344+ ./configure CFLAGS="-fdiagnostics-format=json" \
345+ --config-cache \
346+ --enable-slower-safety \
347+ --with-pydebug \
348+ --with-openssl="$SSLLIB_DIR" \
349+ --with-builtin-hashlib-hashes=blake2 \
350+ --with-ssl-default-suites=openssl
342351 - name : Build CPython
343352 run : make -j4
344353 - name : Display build info
345354 run : make pythoninfo
355+ - name : Verify python is linked to the right lib
356+ run : |
357+ ./python -c 'import ssl; print(ssl.OPENSSL_VERSION)' \
358+ | grep -iE '${{ matrix.ssllib.name }}.*${{ matrix.ssllib.version }}'
346359 - name : SSL tests
347360 run : ./python Lib/test/ssltests.py
348361
@@ -356,7 +369,7 @@ jobs:
356369 matrix :
357370 include :
358371 - arch : aarch64
359- runs-on : macos-14
372+ runs-on : macos-26
360373 - arch : x86_64
361374 runs-on : ubuntu-24.04
362375
@@ -391,6 +404,12 @@ jobs:
391404 - name : Build and test
392405 run : python3 Apple ci iOS --fast-ci --simulator 'iPhone SE (3rd generation),OS=17.5'
393406
407+ build-emscripten :
408+ name : ' Emscripten'
409+ needs : build-context
410+ if : needs.build-context.outputs.run-emscripten == 'true'
411+ uses : ./.github/workflows/reusable-emscripten.yml
412+
394413 build-wasi :
395414 name : ' WASI'
396415 needs : build-context
@@ -428,9 +447,6 @@ jobs:
428447 - name : Install OpenSSL
429448 if : steps.cache-openssl.outputs.cache-hit != 'true'
430449 run : python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
431- - name : Add ccache to PATH
432- run : |
433- echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
434450 - name : Setup directory envs for out-of-tree builds
435451 run : |
436452 echo "CPYTHON_RO_SRCDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-ro-srcdir)" >> "$GITHUB_ENV"
@@ -546,9 +562,6 @@ jobs:
546562 - name : Install OpenSSL
547563 if : steps.cache-openssl.outputs.cache-hit != 'true'
548564 run : python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
549- - name : Add ccache to PATH
550- run : |
551- echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
552565 - name : Configure CPython
553566 run : ./configure --config-cache --with-address-sanitizer --without-pymalloc
554567 - name : Build CPython
@@ -675,6 +688,7 @@ jobs:
675688 - build-ubuntu
676689 - build-ubuntu-ssltests
677690 - build-ios
691+ - build-emscripten
678692 - build-wasi
679693 - test-hypothesis
680694 - build-asan
@@ -689,6 +703,7 @@ jobs:
689703 with :
690704 allowed-failures : >-
691705 build-android,
706+ build-emscripten,
692707 build-windows-msi,
693708 build-ubuntu-ssltests,
694709 test-hypothesis,
@@ -725,5 +740,6 @@ jobs:
725740 }}
726741 ${{ !fromJSON(needs.build-context.outputs.run-android) && 'build-android,' || '' }}
727742 ${{ !fromJSON(needs.build-context.outputs.run-ios) && 'build-ios,' || '' }}
743+ ${{ !fromJSON(needs.build-context.outputs.run-emscripten) && 'build-emscripten,' || '' }}
728744 ${{ !fromJSON(needs.build-context.outputs.run-wasi) && 'build-wasi,' || '' }}
729745 jobs : ${{ toJSON(needs) }}
0 commit comments