@@ -111,8 +111,6 @@ jobs:
111111 run : echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
112112 - name : Install dependencies
113113 run : sudo ./.github/workflows/posix-deps-apt.sh
114- - name : Add ccache to PATH
115- run : echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
116114 - name : Configure CPython
117115 run : |
118116 # Build Python with the libpython dynamic library
@@ -255,8 +253,8 @@ jobs:
255253 os : ${{ matrix.os }}
256254 test-opts : ${{ matrix.test-opts || '' }}
257255
258- build-ubuntu-ssltests-openssl :
259- name : ' Ubuntu SSL tests with OpenSSL '
256+ build-ubuntu-ssltests :
257+ name : ' Ubuntu SSL tests'
260258 runs-on : ${{ matrix.os }}
261259 timeout-minutes : 60
262260 needs : build-context
@@ -265,16 +263,25 @@ jobs:
265263 fail-fast : false
266264 matrix :
267265 os : [ubuntu-24.04]
268- # Keep 1.1.1w in our list despite it being upstream EOL and otherwise
269- # unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
270- # supported by important vendors such as AWS-LC.
271- openssl_ver : [1.1.1w, 3.0.19, 3.3.6, 3.4.4, 3.5.5, 3.6.1]
272- # See Tools/ssl/make_ssl_data.py for notes on adding a new version
266+ ssllib :
267+ # See Tools/ssl/make_ssl_data.py for notes on adding a new version
268+ # # OpenSSL
269+ # Keep 1.1.1w in our list despite it being upstream EOL and otherwise
270+ # unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
271+ # supported by important vendors such as AWS-LC.
272+ - { name: openssl, version: 1.1.1w }
273+ - { name: openssl, version: 3.0.19 }
274+ - { name: openssl, version: 3.3.6 }
275+ - { name: openssl, version: 3.4.4 }
276+ - { name: openssl, version: 3.5.5 }
277+ - { name: openssl, version: 3.6.1 }
278+ # # AWS-LC
279+ - { name: aws-lc, version: 1.68.0 }
273280 env :
274- OPENSSL_VER : ${{ matrix.openssl_ver }}
281+ SSLLIB_VER : ${{ matrix.ssllib.version }}
275282 MULTISSL_DIR : ${{ github.workspace }}/multissl
276- OPENSSL_DIR : ${{ github.workspace }}/multissl/openssl /${{ matrix.openssl_ver }}
277- LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/openssl /${{ matrix.openssl_ver }}/lib
283+ SSLLIB_DIR : ${{ github.workspace }}/multissl/${{ matrix.ssllib.name }} /${{ matrix.ssllib.version }}
284+ LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/${{ matrix.ssllib.name }} /${{ matrix.ssllib.version }}/lib
278285 steps :
279286 - uses : actions/checkout@v6
280287 with :
@@ -285,95 +292,37 @@ jobs:
285292 run : echo "::add-matcher::.github/problem-matchers/gcc.json"
286293 - name : Install dependencies
287294 run : sudo ./.github/workflows/posix-deps-apt.sh
288- - name : Configure OpenSSL env vars
289- run : |
290- echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
291- echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
292- echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
293- - name : ' Restore OpenSSL build'
294- id : cache-openssl
295- uses : actions/cache@v5
296- with :
297- path : ./multissl/openssl/${{ env.OPENSSL_VER }}
298- key : ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
299- - name : Install OpenSSL
300- if : steps.cache-openssl.outputs.cache-hit != 'true'
301- run : python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
302- - name : Add ccache to PATH
303- run : |
304- echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
305- - name : Configure CPython
306- run : ./configure CFLAGS="-fdiagnostics-format=json" --config-cache --enable-slower-safety --with-pydebug --with-openssl="$OPENSSL_DIR"
307- - name : Build CPython
308- run : make -j4
309- - name : Display build info
310- run : make pythoninfo
311- - name : SSL tests
312- run : ./python Lib/test/ssltests.py
313-
314- build-ubuntu-ssltests-awslc :
315- name : ' Ubuntu SSL tests with AWS-LC'
316- runs-on : ${{ matrix.os }}
317- timeout-minutes : 60
318- needs : build-context
319- if : needs.build-context.outputs.run-ubuntu == 'true'
320- strategy :
321- fail-fast : false
322- matrix :
323- os : [ubuntu-24.04]
324- awslc_ver : [1.55.0]
325- env :
326- AWSLC_VER : ${{ matrix.awslc_ver}}
327- MULTISSL_DIR : ${{ github.workspace }}/multissl
328- OPENSSL_DIR : ${{ github.workspace }}/multissl/aws-lc/${{ matrix.awslc_ver }}
329- LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/aws-lc/${{ matrix.awslc_ver }}/lib
330- steps :
331- - uses : actions/checkout@v6
332- with :
333- persist-credentials : false
334- - name : Runner image version
335- run : echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
336- - name : Register gcc problem matcher
337- run : echo "::add-matcher::.github/problem-matchers/gcc.json"
338- - name : Install dependencies
339- run : sudo ./.github/workflows/posix-deps-apt.sh
340- - name : Configure SSL lib env vars
341- run : |
342- echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
343- echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/aws-lc/${AWSLC_VER}" >> "$GITHUB_ENV"
344- echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/aws-lc/${AWSLC_VER}/lib" >> "$GITHUB_ENV"
345- - name : ' Restore AWS-LC build'
346- id : cache-aws-lc
295+ - name : ' Restore SSL library build'
296+ id : cache-ssl-lib
347297 uses : actions/cache@v5
348298 with :
349- path : ./multissl/aws-lc /${{ matrix.awslc_ver }}
350- key : ${{ matrix.os }}-multissl-aws-lc- ${{ matrix.awslc_ver }}
351- - name : Install AWS-LC
352- if : steps.cache-aws-lc .outputs.cache-hit != 'true'
299+ path : ./multissl/${{ matrix.ssllib.name }} /${{ matrix.ssllib.version }}
300+ key : ${{ matrix.os }}-multissl-${{ matrix.ssllib.name }}- ${{ matrix.ssllib.version }}
301+ - name : Install SSL Library
302+ if : steps.cache-ssl-lib .outputs.cache-hit != 'true'
353303 run : |
354304 python3 Tools/ssl/multissltests.py \
355305 --steps=library \
356306 --base-directory "$MULTISSL_DIR" \
357- --awslc ${{ matrix.awslc_ver }} \
307+ '--${{ matrix.ssllib.name }}' ' ${{ matrix.ssllib.version }}' \
358308 --system Linux
359- - name : Add ccache to PATH
360- run : |
361- echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
362309 - name : Configure CPython
363310 run : |
364311 ./configure CFLAGS="-fdiagnostics-format=json" \
365312 --config-cache \
366313 --enable-slower-safety \
367314 --with-pydebug \
368- --with-openssl="$OPENSSL_DIR " \
315+ --with-openssl="$SSLLIB_DIR " \
369316 --with-builtin-hashlib-hashes=blake2 \
370317 --with-ssl-default-suites=openssl
371318 - name : Build CPython
372- run : make -j
319+ run : make -j4
373320 - name : Display build info
374321 run : make pythoninfo
375- - name : Verify python is linked to AWS-LC
376- run : ./python -c 'import ssl; print(ssl.OPENSSL_VERSION)' | grep AWS-LC
322+ - name : Verify python is linked to the right lib
323+ run : |
324+ ./python -c 'import ssl; print(ssl.OPENSSL_VERSION)' \
325+ | grep -iE '${{ matrix.ssllib.name }}.*${{ matrix.ssllib.version }}'
377326 - name : SSL tests
378327 run : ./python Lib/test/ssltests.py
379328
@@ -422,6 +371,12 @@ jobs:
422371 - name : Build and test
423372 run : python3 Apple ci iOS --fast-ci --simulator 'iPhone SE (3rd generation),OS=17.5'
424373
374+ build-emscripten :
375+ name : ' Emscripten'
376+ needs : build-context
377+ if : needs.build-context.outputs.run-emscripten == 'true'
378+ uses : ./.github/workflows/reusable-emscripten.yml
379+
425380 build-wasi :
426381 name : ' WASI'
427382 needs : build-context
@@ -459,9 +414,6 @@ jobs:
459414 - name : Install OpenSSL
460415 if : steps.cache-openssl.outputs.cache-hit != 'true'
461416 run : python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
462- - name : Add ccache to PATH
463- run : |
464- echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
465417 - name : Setup directory envs for out-of-tree builds
466418 run : |
467419 echo "CPYTHON_RO_SRCDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-ro-srcdir)" >> "$GITHUB_ENV"
@@ -529,7 +481,7 @@ jobs:
529481 -x test_subprocess \
530482 -x test_signal \
531483 -x test_sysconfig
532- - uses : actions/upload-artifact@v6
484+ - uses : actions/upload-artifact@v7
533485 if : always()
534486 with :
535487 name : hypothesis-example-db
@@ -577,9 +529,6 @@ jobs:
577529 - name : Install OpenSSL
578530 if : steps.cache-openssl.outputs.cache-hit != 'true'
579531 run : python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
580- - name : Add ccache to PATH
581- run : |
582- echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
583532 - name : Configure CPython
584533 run : ./configure --config-cache --with-address-sanitizer --without-pymalloc --with-openssl="$OPENSSL_DIR"
585534 - name : Build CPython
@@ -705,9 +654,9 @@ jobs:
705654 - build-windows-msi
706655 - build-macos
707656 - build-ubuntu
708- - build-ubuntu-ssltests-awslc
709- - build-ubuntu-ssltests-openssl
657+ - build-ubuntu-ssltests
710658 - build-ios
659+ - build-emscripten
711660 - build-wasi
712661 - test-hypothesis
713662 - build-asan
@@ -722,9 +671,9 @@ jobs:
722671 with :
723672 allowed-failures : >-
724673 build-android,
674+ build-emscripten,
725675 build-windows-msi,
726- build-ubuntu-ssltests-awslc,
727- build-ubuntu-ssltests-openssl,
676+ build-ubuntu-ssltests,
728677 test-hypothesis,
729678 cifuzz,
730679 allowed-skips : >-
@@ -755,8 +704,7 @@ jobs:
755704 !fromJSON(needs.build-context.outputs.run-ubuntu)
756705 && '
757706 build-ubuntu,
758- build-ubuntu-ssltests-awslc,
759- build-ubuntu-ssltests-openssl,
707+ build-ubuntu-ssltests,
760708 test-hypothesis,
761709 build-asan,
762710 build-san,
@@ -766,5 +714,6 @@ jobs:
766714 }}
767715 ${{ !fromJSON(needs.build-context.outputs.run-android) && 'build-android,' || '' }}
768716 ${{ !fromJSON(needs.build-context.outputs.run-ios) && 'build-ios,' || '' }}
717+ ${{ !fromJSON(needs.build-context.outputs.run-emscripten) && 'build-emscripten,' || '' }}
769718 ${{ !fromJSON(needs.build-context.outputs.run-wasi) && 'build-wasi,' || '' }}
770719 jobs : ${{ toJSON(needs) }}
0 commit comments