@@ -15,7 +15,13 @@ permissions:
1515  contents : read 
1616
1717concurrency :
18-   group : ${{ github.workflow }}-${{ github.head_ref || github.run_id }}-reusable 
18+   #  https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
19+   #  'group' must be a key uniquely representing a PR or push event.
20+   #  github.workflow is the workflow name
21+   #  github.actor is the user invoking the workflow
22+   #  github.head_ref is the source branch of the PR or otherwise blank
23+   #  github.run_id is a unique number for the current run
24+   group : ${{ github.workflow }}-${{ github.actor }}-${{ github.head_ref || github.run_id }} 
1925  cancel-in-progress : true 
2026
2127env :
@@ -254,7 +260,7 @@ jobs:
254260      free-threading : ${{ matrix.free-threading }} 
255261      os : ${{ matrix.os }} 
256262
257-   build-ubuntu-ssltests :
263+   build-ubuntu-ssltests-openssl  :
258264    name : ' Ubuntu SSL tests with OpenSSL' 
259265    runs-on : ${{ matrix.os }} 
260266    timeout-minutes : 60 
@@ -316,6 +322,81 @@ jobs:
316322    - name : SSL tests 
317323      run : ./python Lib/test/ssltests.py 
318324
325+   build-ubuntu-ssltests-awslc :
326+     name : ' Ubuntu SSL tests with AWS-LC' 
327+     runs-on : ${{ matrix.os }} 
328+     timeout-minutes : 60 
329+     needs : build-context 
330+     if : needs.build-context.outputs.run-tests == 'true' 
331+     strategy :
332+       fail-fast : false 
333+       matrix :
334+         os : [ubuntu-24.04] 
335+         awslc_ver : [1.55.0] 
336+     env :
337+       AWSLC_VER : ${{ matrix.awslc_ver}} 
338+       MULTISSL_DIR : ${{ github.workspace }}/multissl 
339+       OPENSSL_DIR : ${{ github.workspace }}/multissl/aws-lc/${{ matrix.awslc_ver }} 
340+       LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/aws-lc/${{ matrix.awslc_ver }}/lib 
341+     steps :
342+     - uses : actions/checkout@v4 
343+       with :
344+         persist-credentials : false 
345+     - name : Runner image version 
346+       run : echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV" 
347+     - name : Restore config.cache 
348+       uses : actions/cache@v4 
349+       with :
350+         path : config.cache 
351+         key : ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.build-context.outputs.config-hash }} 
352+     - name : Register gcc problem matcher 
353+       run : echo "::add-matcher::.github/problem-matchers/gcc.json" 
354+     - name : Install dependencies 
355+       run : sudo ./.github/workflows/posix-deps-apt.sh 
356+     - name : Configure SSL lib env vars 
357+       run : | 
358+         echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV" 
359+         echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/aws-lc/${AWSLC_VER}" >> "$GITHUB_ENV" 
360+         echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/aws-lc/${AWSLC_VER}/lib" >> "$GITHUB_ENV" 
361+ name : ' Restore AWS-LC build' 
362+       id : cache-aws-lc 
363+       uses : actions/cache@v4 
364+       with :
365+         path : ./multissl/aws-lc/${{ matrix.awslc_ver }} 
366+         key : ${{ matrix.os }}-multissl-aws-lc-${{ matrix.awslc_ver }} 
367+     - name : Install AWS-LC 
368+       if : steps.cache-aws-lc.outputs.cache-hit != 'true' 
369+       run : | 
370+         python3 Tools/ssl/multissltests.py \ 
371+           --steps=library \ 
372+           --base-directory "$MULTISSL_DIR" \ 
373+           --awslc ${{ matrix.awslc_ver }} \ 
374+           --system Linux 
375+ name : Add ccache to PATH 
376+       run : | 
377+         echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV" 
378+ name : Configure ccache action 
379+       uses : 
hendrikmuhs/[email protected]   380+       with :
381+         save : false 
382+     - name : Configure CPython 
383+       run : | 
384+         ./configure CFLAGS="-fdiagnostics-format=json" \ 
385+           --config-cache \ 
386+           --enable-slower-safety \ 
387+           --with-pydebug \ 
388+           --with-openssl="$OPENSSL_DIR" \ 
389+           --with-builtin-hashlib-hashes=blake2 \ 
390+           --with-ssl-default-suites=openssl 
391+ name : Build CPython 
392+       run : make -j 
393+     - name : Display build info 
394+       run : make pythoninfo 
395+     - name : Verify python is linked to AWS-LC 
396+       run : ./python -c 'import ssl; print(ssl.OPENSSL_VERSION)' | grep AWS-LC 
397+     - name : SSL tests 
398+       run : ./python Lib/test/ssltests.py 
399+ 
319400  build-wasi :
320401    name : ' WASI' 
321402    needs : build-context 
@@ -504,20 +585,28 @@ jobs:
504585    - name : Tests 
505586      run : xvfb-run make ci 
506587
507-   build-tsan :
508-     name : >- 
509-       Thread sanitizer 
510-       ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} 
588+   build-san :
589+     name : >-  #  ${{ '' } is a hack to nest jobs under the same sidebar category 
590+       Sanitizers${{ '' }} 
511591needs : build-context 
512592    if : needs.build-context.outputs.run-tests == 'true' 
513593    strategy :
514594      fail-fast : false 
515595      matrix :
596+         check-name :
597+         - Thread 
516598        free-threading :
517599        - false 
518600        - true 
519-     uses : ./.github/workflows/reusable-tsan.yml 
601+         sanitizer :
602+         - TSan 
603+         include :
604+         - check-name : Undefined behavior 
605+           sanitizer : UBSan 
606+           free-threading : false 
607+     uses : ./.github/workflows/reusable-san.yml 
520608    with :
609+       sanitizer : ${{ matrix.sanitizer }} 
521610      config_hash : ${{ needs.build-context.outputs.config-hash }} 
522611      free-threading : ${{ matrix.free-threading }} 
523612
@@ -614,11 +703,12 @@ jobs:
614703    - build-windows-msi 
615704    - build-macos 
616705    - build-ubuntu 
617-     - build-ubuntu-ssltests 
706+     - build-ubuntu-ssltests-awslc 
707+     - build-ubuntu-ssltests-openssl 
618708    - build-wasi 
619709    - test-hypothesis 
620710    - build-asan 
621-     - build-tsan  
711+     - build-san  
622712    - cross-build-linux 
623713    - cifuzz 
624714    if : always() 
@@ -629,7 +719,8 @@ jobs:
629719      with :
630720        allowed-failures : >- 
631721          build-windows-msi, 
632-           build-ubuntu-ssltests, 
722+           build-ubuntu-ssltests-awslc, 
723+           build-ubuntu-ssltests-openssl, 
633724          test-hypothesis, 
634725          cifuzz, 
635726allowed-skips : >- 
@@ -647,11 +738,12 @@ jobs:
647738            check-generated-files, 
648739            build-macos, 
649740            build-ubuntu, 
650-             build-ubuntu-ssltests, 
741+             build-ubuntu-ssltests-awslc, 
742+             build-ubuntu-ssltests-openssl, 
651743            build-wasi, 
652744            test-hypothesis, 
653745            build-asan, 
654-             build-tsan , 
746+             build-san , 
655747            cross-build-linux, 
656748            ' 
657749            || '' 
0 commit comments