summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorDiego Russo <diego.russo@arm.com>2024-12-04 22:12:06 (GMT)
committerGitHub <noreply@github.com>2024-12-04 22:12:06 (GMT)
commit7c5a6f67c726608a05a640e76fc62cfbae986a03 (patch)
tree94c22aecb9ec9e63a7bf737411d8da86aedabe51 /.github
parente51da64ac3bc6cd45339864db32d05115af39ead (diff)
downloadcpython-7c5a6f67c726608a05a640e76fc62cfbae986a03.zip
cpython-7c5a6f67c726608a05a640e76fc62cfbae986a03.tar.gz
cpython-7c5a6f67c726608a05a640e76fc62cfbae986a03.tar.bz2
Enable native AArch64 Ubuntu CI jobs (#127584)
Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/build.yml9
-rw-r--r--.github/workflows/jit.yml31
-rw-r--r--.github/workflows/reusable-ubuntu.yml16
3 files changed, 24 insertions, 32 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 55effee..9b2f19f 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -235,10 +235,19 @@ jobs:
free-threading:
- false
- true
+ os:
+ - ubuntu-24.04
+ - ubuntu-24.04-aarch64
+ is-fork: # only used for the exclusion trick
+ - ${{ github.repository_owner != 'python' }}
+ exclude:
+ - os: ubuntu-24.04-aarch64
+ is-fork: true
uses: ./.github/workflows/reusable-ubuntu.yml
with:
config_hash: ${{ needs.check_source.outputs.config_hash }}
free-threading: ${{ matrix.free-threading }}
+ os: ${{ matrix.os }}
build_ubuntu_ssltests:
name: 'Ubuntu SSL tests with OpenSSL'
diff --git a/.github/workflows/jit.yml b/.github/workflows/jit.yml
index 4ef543d..ee30cf5 100644
--- a/.github/workflows/jit.yml
+++ b/.github/workflows/jit.yml
@@ -28,7 +28,7 @@ concurrency:
jobs:
interpreter:
name: Interpreter (Debug)
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
timeout-minutes: 90
steps:
- uses: actions/checkout@v4
@@ -78,10 +78,11 @@ jobs:
runner: macos-14
- target: x86_64-unknown-linux-gnu/gcc
architecture: x86_64
- runner: ubuntu-22.04
+ runner: ubuntu-24.04
- target: aarch64-unknown-linux-gnu/gcc
architecture: aarch64
- runner: ubuntu-22.04
+ # Forks don't have access to our paid AArch64 runners. These jobs are skipped below:
+ runner: ${{ github.repository_owner == 'python' && 'ubuntu-24.04-aarch64' || 'ubuntu-24.04' }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
@@ -118,7 +119,8 @@ jobs:
./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
- name: Native Linux
- if: runner.os == 'Linux' && matrix.architecture == 'x86_64'
+ # Forks don't have access to our paid AArch64 runners. Skip those:
+ if: runner.os == 'Linux' && (matrix.architecture == 'x86_64' || github.repository_owner == 'python')
run: |
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }}
export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
@@ -126,29 +128,10 @@ jobs:
make all --jobs 4
./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
- - name: Emulated Linux
- if: runner.os == 'Linux' && matrix.architecture != 'x86_64'
- # The --ignorefile on ./python -m test is used to exclude tests known to fail when running on an emulated Linux.
- run: |
- sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }}
- export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
- ./configure --prefix="$(pwd)/../build"
- make install --jobs 4
- make clean --jobs 4
- export HOST=${{ matrix.architecture }}-linux-gnu
- sudo apt install --yes "gcc-$HOST" qemu-user
- export QEMU_LD_PREFIX="/usr/$HOST"
- CC="$HOST-gcc" \
- CPP="$HOST-gcc --preprocess" \
- HOSTRUNNER=qemu-${{ matrix.architecture }} \
- ./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '' }} --build=x86_64-linux-gnu --host="$HOST" --with-build-python=../build/bin/python3 --with-pkg-config=no ac_cv_buggy_getaddrinfo=no ac_cv_file__dev_ptc=no ac_cv_file__dev_ptmx=yes
- make all --jobs 4
- ./python -m test --ignorefile=Tools/jit/ignore-tests-emulated-linux.txt --multiprocess 0 --timeout 4500 --verbose2 --verbose3
-
jit-with-disabled-gil:
name: Free-Threaded (Debug)
needs: interpreter
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
strategy:
matrix:
llvm:
diff --git a/.github/workflows/reusable-ubuntu.yml b/.github/workflows/reusable-ubuntu.yml
index 642354f..2869202 100644
--- a/.github/workflows/reusable-ubuntu.yml
+++ b/.github/workflows/reusable-ubuntu.yml
@@ -11,16 +11,16 @@ on:
required: false
type: boolean
default: false
+ os:
+ description: OS to run the job
+ required: true
+ type: string
jobs:
build_ubuntu_reusable:
- name: 'build and test'
+ name: build and test (${{ inputs.os }})
timeout-minutes: 60
- runs-on: ${{ matrix.os }}
- strategy:
- fail-fast: false
- matrix:
- os: [ubuntu-24.04, ubuntu-24.04-aarch64]
+ runs-on: ${{ inputs.os }}
env:
FORCE_COLOR: 1
OPENSSL_VER: 3.0.15
@@ -42,7 +42,7 @@ jobs:
uses: actions/cache@v4
with:
path: ./multissl/openssl/${{ env.OPENSSL_VER }}
- key: ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
+ key: ${{ inputs.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
- name: Install OpenSSL
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
@@ -84,7 +84,7 @@ jobs:
working-directory: ${{ env.CPYTHON_BUILDDIR }}
run: make -j
- name: Build CPython out-of-tree (for compiler warning check)
- if: ${{ !inputs.free-threading}}
+ if: ${{ !inputs.free-threading }}
working-directory: ${{ env.CPYTHON_BUILDDIR }}
run: set -o pipefail; make -j --output-sync 2>&1 | tee compiler_output_ubuntu.txt
- name: Display build info