[3.14] gh-152785: Upgrade Ubuntu from 24.04 to 26.04 in GitHub Actions (#152717) (#153416) #6983
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: JIT | |
| on: | |
| pull_request: | |
| paths: &paths | |
| - '**jit**' | |
| - 'Python/bytecodes.c' | |
| - 'Python/optimizer*.c' | |
| - '!Python/perf_jit_trampoline.c' | |
| - '!**/*.md' | |
| - '!**/*.ini' | |
| push: | |
| paths: *paths | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| env: | |
| FORCE_COLOR: 1 | |
| LLVM_VERSION: 19 | |
| jobs: | |
| interpreter: | |
| name: Interpreter (Debug) | |
| runs-on: ubuntu-26.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - name: Build tier two interpreter | |
| run: | | |
| ./configure --enable-experimental-jit=interpreter --with-pydebug | |
| make all --jobs 4 | |
| - name: Test tier two interpreter | |
| run: | | |
| ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | |
| windows: | |
| name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }}) | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target: | |
| - i686-pc-windows-msvc/msvc | |
| - x86_64-pc-windows-msvc/msvc | |
| - aarch64-pc-windows-msvc/msvc | |
| debug: | |
| - true | |
| - false | |
| include: | |
| - target: i686-pc-windows-msvc/msvc | |
| architecture: Win32 | |
| runner: windows-2022 | |
| - target: x86_64-pc-windows-msvc/msvc | |
| architecture: x64 | |
| runner: windows-2022 | |
| - target: aarch64-pc-windows-msvc/msvc | |
| architecture: ARM64 | |
| runner: windows-11-arm | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: '3.11' | |
| # PCbuild downloads LLVM automatically: | |
| - name: Build | |
| run: | | |
| ./PCbuild/build.bat --experimental-jit ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }} | |
| - name: Test | |
| run: | | |
| ./PCbuild/rt.bat ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | |
| macos: | |
| name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }}) | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target: | |
| - x86_64-apple-darwin/clang | |
| - aarch64-apple-darwin/clang | |
| debug: | |
| - true | |
| - false | |
| include: | |
| - target: x86_64-apple-darwin/clang | |
| runner: macos-26-intel | |
| - target: aarch64-apple-darwin/clang | |
| runner: macos-26 | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: '3.11' | |
| - name: Install LLVM | |
| run: | | |
| brew update | |
| brew install llvm@${{ env.LLVM_VERSION }} | |
| - name: Build | |
| run: | | |
| export SDKROOT="$(xcrun --show-sdk-path)" | |
| # Set MACOSX_DEPLOYMENT_TARGET and -Werror=unguarded-availability to | |
| # make sure we don't break downstream distributors (like uv): | |
| export CFLAGS_JIT='-Werror=unguarded-availability' | |
| export MACOSX_DEPLOYMENT_TARGET=10.15 | |
| ./configure --enable-experimental-jit --enable-universalsdk --with-universal-archs=universal2 ${{ matrix.debug && '--with-pydebug' || '' }} | |
| make all --jobs 4 | |
| - name: Test | |
| run: | | |
| ./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | |
| linux: | |
| name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }}) | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target: | |
| - x86_64-unknown-linux-gnu/gcc | |
| - aarch64-unknown-linux-gnu/gcc | |
| debug: | |
| - true | |
| - false | |
| include: | |
| # https://apt.llvm.org/llvm.sh doesn't support LLVM 19 | |
| # on Ubuntu 26.04, so stick to Ubuntu 24.04 until LLVM is upgraded. | |
| - target: x86_64-unknown-linux-gnu/gcc | |
| runner: ubuntu-24.04 | |
| - target: aarch64-unknown-linux-gnu/gcc | |
| runner: ubuntu-24.04-arm | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: '3.11' | |
| - name: Build | |
| run: | | |
| sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ env.LLVM_VERSION }} | |
| export PATH="$(llvm-config-${{ env.LLVM_VERSION }} --bindir):$PATH" | |
| ./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '' }} | |
| make all --jobs 4 | |
| - name: Test | |
| run: | | |
| ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | |
| linux-extras: | |
| name: ${{ matrix.name }} | |
| # https://apt.llvm.org/llvm.sh doesn't support LLVM 19 on Ubuntu 26.04, | |
| # so stick to Ubuntu 24.04 until LLVM is upgraded. | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: JIT without optimizations (Debug) | |
| configure_flags: --enable-experimental-jit --with-pydebug | |
| test_env: "PYTHON_UOPS_OPTIMIZE=0" | |
| - name: JIT with tail calling interpreter | |
| configure_flags: --enable-experimental-jit --with-tail-call-interp --with-pydebug | |
| use_clang: true | |
| run_tests: false | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: '3.11' | |
| - name: Build | |
| run: | | |
| sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ env.LLVM_VERSION }} | |
| export PATH="$(llvm-config-${{ env.LLVM_VERSION }} --bindir):$PATH" | |
| if [ "${{ matrix.use_clang }}" = "true" ]; then | |
| export CC=clang-${{ env.LLVM_VERSION }} | |
| fi | |
| ./configure ${{ matrix.configure_flags }} | |
| make all --jobs 4 | |
| - name: Test | |
| if: matrix.run_tests != false | |
| run: | | |
| ${{ matrix.test_env }} ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 |