55  push :
66    branches :
77    - ' main' 
8-     - ' 3.12' 
9-     - ' 3.11' 
10-     - ' 3.10' 
11-     - ' 3.9' 
12-     - ' 3.8' 
8+     - ' 3.*' 
139  pull_request :
1410    branches :
1511    - ' main' 
16-     - ' 3.12' 
17-     - ' 3.11' 
18-     - ' 3.10' 
19-     - ' 3.9' 
20-     - ' 3.8' 
12+     - ' 3.*' 
2113
2214permissions :
2315  contents : read 
@@ -115,8 +107,6 @@ jobs:
115107        with :
116108          fetch-depth : 1 
117109          persist-credentials : false 
118-       - name : Runner image version 
119-         run : echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV 
120110      - name : Check Autoconf and aclocal versions 
121111        run : | 
122112          grep "Generated by GNU Autoconf 2.71" configure 
@@ -157,16 +147,17 @@ jobs:
157147        with :
158148          python-version : ' 3.x' 
159149      - name : Runner image version 
160-         run : echo "IMAGE_VERSION =${ImageVersion}" >> $GITHUB_ENV 
150+         run : echo "IMAGE_OS_VERSION =${ImageOS}-${ ImageVersion}" >> " $GITHUB_ENV"  
161151      - name : Restore config.cache 
162152        uses : actions/cache@v4 
163153        with :
164154          path : config.cache 
165-           key : ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ needs.check_source.outputs.config_hash }}-${{ env.pythonLocation }} 
166-       - name : Install Dependencies 
155+           #  Include env.pythonLocation in key to avoid changes in environment when setup-python updates Python
156+           key : ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.check_source.outputs.config_hash }}-${{ env.pythonLocation }} 
157+       - name : Install dependencies 
167158        run : sudo ./.github/workflows/posix-deps-apt.sh 
168159      - name : Add ccache to PATH 
169-         run : echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV 
160+         run : echo "PATH=/usr/lib/ccache:$PATH" >> " $GITHUB_ENV"  
170161      - name : Configure ccache action 
171162        uses : 
hendrikmuhs/[email protected]   172163        with :
@@ -310,21 +301,21 @@ jobs:
310301      with :
311302        persist-credentials : false 
312303    - name : Runner image version 
313-       run : echo "IMAGE_VERSION =${ImageVersion}" >> $GITHUB_ENV 
304+       run : echo "IMAGE_OS_VERSION =${ImageOS}-${ ImageVersion}" >> " $GITHUB_ENV"  
314305    - name : Restore config.cache 
315306      uses : actions/cache@v4 
316307      with :
317308        path : config.cache 
318-         key : ${{ github.job }}-${{ runner.os }}-${{  env.IMAGE_VERSION  }}-${{ needs.check_source.outputs.config_hash }} 
309+         key : ${{ github.job }}-${{ env.IMAGE_OS_VERSION  }}-${{ needs.check_source.outputs.config_hash }} 
319310    - name : Register gcc problem matcher 
320311      run : echo "::add-matcher::.github/problem-matchers/gcc.json" 
321-     - name : Install Dependencies  
312+     - name : Install dependencies  
322313      run : sudo ./.github/workflows/posix-deps-apt.sh 
323314    - name : Configure OpenSSL env vars 
324315      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 
316+         echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> " $GITHUB_ENV"  
317+         echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> " $GITHUB_ENV"  
318+         echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> " $GITHUB_ENV"  
328319name : ' Restore OpenSSL build' 
329320      id : cache-openssl 
330321      uses : actions/cache@v4 
@@ -333,10 +324,10 @@ jobs:
333324        key : ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }} 
334325    - name : Install OpenSSL 
335326      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 
327+       run : python3 Tools/ssl/multissltests.py --steps=library --base-directory " $MULTISSL_DIR"  --openssl " $OPENSSL_VER"  --system Linux 
337328    - name : Add ccache to PATH 
338329      run : | 
339-         echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV 
330+         echo "PATH=/usr/lib/ccache:$PATH" >> " $GITHUB_ENV"  
340331name : Configure ccache action 
341332      uses : 
hendrikmuhs/[email protected]   342333      with :
@@ -369,9 +360,9 @@ jobs:
369360      run : sudo ./.github/workflows/posix-deps-apt.sh 
370361    - name : Configure OpenSSL env vars 
371362      run : | 
372-         echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> $GITHUB_ENV 
373-         echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> $GITHUB_ENV 
374-         echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV 
363+         echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> " $GITHUB_ENV"  
364+         echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> " $GITHUB_ENV"  
365+         echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> " $GITHUB_ENV"  
375366name : ' Restore OpenSSL build' 
376367      id : cache-openssl 
377368      uses : actions/cache@v4 
@@ -380,36 +371,36 @@ jobs:
380371        key : ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }} 
381372    - name : Install OpenSSL 
382373      if : steps.cache-openssl.outputs.cache-hit != 'true' 
383-       run : python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux 
374+       run : python3 Tools/ssl/multissltests.py --steps=library --base-directory " $MULTISSL_DIR"  --openssl " $OPENSSL_VER"  --system Linux 
384375    - name : Add ccache to PATH 
385376      run : | 
386-         echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV 
377+         echo "PATH=/usr/lib/ccache:$PATH" >> " $GITHUB_ENV"  
387378name : Configure ccache action 
388379      uses : 
hendrikmuhs/[email protected]   389380      with :
390381        save : false 
391382    - name : Setup directory envs for out-of-tree builds 
392383      run : | 
393-         echo "CPYTHON_RO_SRCDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-ro-srcdir)" >> $GITHUB_ENV 
394-         echo "CPYTHON_BUILDDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-builddir)" >> $GITHUB_ENV 
384+         echo "CPYTHON_RO_SRCDIR=$(realpath -m " ${GITHUB_WORKSPACE}" /../cpython-ro-srcdir)" >> " $GITHUB_ENV"  
385+         echo "CPYTHON_BUILDDIR=$(realpath -m " ${GITHUB_WORKSPACE}" /../cpython-builddir)" >> " $GITHUB_ENV"  
395386name : Create directories for read-only out-of-tree builds 
396-       run : mkdir -p $CPYTHON_RO_SRCDIR  $CPYTHON_BUILDDIR 
387+       run : mkdir -p " $CPYTHON_RO_SRCDIR" " $CPYTHON_BUILDDIR"  
397388    - name : Bind mount sources read-only 
398-       run : sudo mount --bind -o ro $GITHUB_WORKSPACE  $CPYTHON_RO_SRCDIR 
389+       run : sudo mount --bind -o ro " $GITHUB_WORKSPACE" " $CPYTHON_RO_SRCDIR"  
399390    - name : Runner image version 
400-       run : echo "IMAGE_VERSION =${ImageVersion}" >> $GITHUB_ENV 
391+       run : echo "IMAGE_OS_VERSION =${ImageOS}-${ ImageVersion}" >> " $GITHUB_ENV"  
401392    - name : Restore config.cache 
402393      uses : actions/cache@v4 
403394      with :
404395        path : ${{ env.CPYTHON_BUILDDIR }}/config.cache 
405-         key : ${{ github.job }}-${{ runner.os }}-${{  env.IMAGE_VERSION  }}-${{ needs.check_source.outputs.config_hash }} 
396+         key : ${{ github.job }}-${{ env.IMAGE_OS_VERSION  }}-${{ needs.check_source.outputs.config_hash }} 
406397    - name : Configure CPython out-of-tree 
407398      working-directory : ${{ env.CPYTHON_BUILDDIR }} 
408399      run : | 
409400        ../cpython-ro-srcdir/configure \ 
410401          --config-cache \ 
411402          --with-pydebug \ 
412-           --with-openssl=$OPENSSL_DIR 
403+           --with-openssl=" $OPENSSL_DIR"  
413404name : Build CPython out-of-tree 
414405      working-directory : ${{ env.CPYTHON_BUILDDIR }} 
415406      run : make -j4 
@@ -418,18 +409,18 @@ jobs:
418409      run : make pythoninfo 
419410    - name : Remount sources writable for tests 
420411      #  some tests write to srcdir, lack of pyc files slows down testing
421-       run : sudo mount $CPYTHON_RO_SRCDIR -oremount,rw 
412+       run : sudo mount " $CPYTHON_RO_SRCDIR"  -oremount,rw 
422413    - name : Setup directory envs for out-of-tree builds 
423414      run : | 
424-         echo "CPYTHON_BUILDDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-builddir)" >> $GITHUB_ENV 
415+         echo "CPYTHON_BUILDDIR=$(realpath -m " ${GITHUB_WORKSPACE}" /../cpython-builddir)" >> " $GITHUB_ENV"  
425416name : " Create hypothesis venv" 
426417      working-directory : ${{ env.CPYTHON_BUILDDIR }} 
427418      run : | 
428419        VENV_LOC=$(realpath -m .)/hypovenv 
429420        VENV_PYTHON=$VENV_LOC/bin/python 
430-         echo "HYPOVENV=${VENV_LOC}" >> $GITHUB_ENV 
431-         echo "VENV_PYTHON=${VENV_PYTHON}" >> $GITHUB_ENV 
432-         ./python -m venv $VENV_LOC && $VENV_PYTHON -m pip install -r ${GITHUB_WORKSPACE}/Tools/requirements-hypothesis.txt 
421+         echo "HYPOVENV=${VENV_LOC}" >> " $GITHUB_ENV"  
422+         echo "VENV_PYTHON=${VENV_PYTHON}" >> " $GITHUB_ENV"  
423+         ./python -m venv " $VENV_LOC"  && " $VENV_PYTHON"  -m pip install -r " ${GITHUB_WORKSPACE}/Tools/requirements-hypothesis.txt"  
433424name : ' Restore Hypothesis database' 
434425      id : cache-hypothesis-database 
435426      uses : actions/cache@v4 
@@ -483,25 +474,25 @@ jobs:
483474      with :
484475        persist-credentials : false 
485476    - name : Runner image version 
486-       run : echo "IMAGE_VERSION =${ImageVersion}" >> $GITHUB_ENV 
477+       run : echo "IMAGE_OS_VERSION =${ImageOS}-${ ImageVersion}" >> " $GITHUB_ENV"  
487478    - name : Restore config.cache 
488479      uses : actions/cache@v4 
489480      with :
490481        path : config.cache 
491-         key : ${{ github.job }}-${{ runner.os }}-${{  env.IMAGE_VERSION  }}-${{ needs.check_source.outputs.config_hash }} 
482+         key : ${{ github.job }}-${{ env.IMAGE_OS_VERSION  }}-${{ needs.check_source.outputs.config_hash }} 
492483    - name : Register gcc problem matcher 
493484      run : echo "::add-matcher::.github/problem-matchers/gcc.json" 
494-     - name : Install Dependencies  
485+     - name : Install dependencies  
495486      run : sudo ./.github/workflows/posix-deps-apt.sh 
496487    - name : Set up GCC-10 for ASAN 
497488      uses : egor-tensin/setup-gcc@v1 
498489      with :
499490        version : 10 
500491    - name : Configure OpenSSL env vars 
501492      run : | 
502-         echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> $GITHUB_ENV 
503-         echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> $GITHUB_ENV 
504-         echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV 
493+         echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> " $GITHUB_ENV"  
494+         echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> " $GITHUB_ENV"  
495+         echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> " $GITHUB_ENV"  
505496name : ' Restore OpenSSL build' 
506497      id : cache-openssl 
507498      uses : actions/cache@v4 
@@ -510,10 +501,10 @@ jobs:
510501        key : ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }} 
511502    - name : Install OpenSSL 
512503      if : steps.cache-openssl.outputs.cache-hit != 'true' 
513-       run : python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux 
504+       run : python3 Tools/ssl/multissltests.py --steps=library --base-directory " $MULTISSL_DIR"  --openssl " $OPENSSL_VER"  --system Linux 
514505    - name : Add ccache to PATH 
515506      run : | 
516-         echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV 
507+         echo "PATH=/usr/lib/ccache:$PATH" >> " $GITHUB_ENV"  
517508name : Configure ccache action 
518509      uses : 
hendrikmuhs/[email protected]   519510      with :
0 commit comments