Enable native AArch64 Ubuntu CI jobs (#127584)
Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
This commit is contained in:
9
.github/workflows/build.yml
vendored
9
.github/workflows/build.yml
vendored
@@ -235,10 +235,19 @@ jobs:
|
|||||||
free-threading:
|
free-threading:
|
||||||
- false
|
- false
|
||||||
- true
|
- 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
|
uses: ./.github/workflows/reusable-ubuntu.yml
|
||||||
with:
|
with:
|
||||||
config_hash: ${{ needs.check_source.outputs.config_hash }}
|
config_hash: ${{ needs.check_source.outputs.config_hash }}
|
||||||
free-threading: ${{ matrix.free-threading }}
|
free-threading: ${{ matrix.free-threading }}
|
||||||
|
os: ${{ matrix.os }}
|
||||||
|
|
||||||
build_ubuntu_ssltests:
|
build_ubuntu_ssltests:
|
||||||
name: 'Ubuntu SSL tests with OpenSSL'
|
name: 'Ubuntu SSL tests with OpenSSL'
|
||||||
|
|||||||
31
.github/workflows/jit.yml
vendored
31
.github/workflows/jit.yml
vendored
@@ -28,7 +28,7 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
interpreter:
|
interpreter:
|
||||||
name: Interpreter (Debug)
|
name: Interpreter (Debug)
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-24.04
|
||||||
timeout-minutes: 90
|
timeout-minutes: 90
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
@@ -78,10 +78,11 @@ jobs:
|
|||||||
runner: macos-14
|
runner: macos-14
|
||||||
- target: x86_64-unknown-linux-gnu/gcc
|
- target: x86_64-unknown-linux-gnu/gcc
|
||||||
architecture: x86_64
|
architecture: x86_64
|
||||||
runner: ubuntu-22.04
|
runner: ubuntu-24.04
|
||||||
- target: aarch64-unknown-linux-gnu/gcc
|
- target: aarch64-unknown-linux-gnu/gcc
|
||||||
architecture: aarch64
|
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:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v5
|
||||||
@@ -118,7 +119,8 @@ jobs:
|
|||||||
./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
|
./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
|
||||||
|
|
||||||
- name: Native Linux
|
- 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: |
|
run: |
|
||||||
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }}
|
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }}
|
||||||
export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
|
export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
|
||||||
@@ -126,29 +128,10 @@ jobs:
|
|||||||
make all --jobs 4
|
make all --jobs 4
|
||||||
./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
|
./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:
|
jit-with-disabled-gil:
|
||||||
name: Free-Threaded (Debug)
|
name: Free-Threaded (Debug)
|
||||||
needs: interpreter
|
needs: interpreter
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-24.04
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
llvm:
|
llvm:
|
||||||
|
|||||||
16
.github/workflows/reusable-ubuntu.yml
vendored
16
.github/workflows/reusable-ubuntu.yml
vendored
@@ -11,16 +11,16 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
os:
|
||||||
|
description: OS to run the job
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_ubuntu_reusable:
|
build_ubuntu_reusable:
|
||||||
name: 'build and test'
|
name: build and test (${{ inputs.os }})
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ inputs.os }}
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-24.04, ubuntu-24.04-aarch64]
|
|
||||||
env:
|
env:
|
||||||
FORCE_COLOR: 1
|
FORCE_COLOR: 1
|
||||||
OPENSSL_VER: 3.0.15
|
OPENSSL_VER: 3.0.15
|
||||||
@@ -42,7 +42,7 @@ jobs:
|
|||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ./multissl/openssl/${{ env.OPENSSL_VER }}
|
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
|
- name: Install OpenSSL
|
||||||
if: steps.cache-openssl.outputs.cache-hit != 'true'
|
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
|
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 }}
|
working-directory: ${{ env.CPYTHON_BUILDDIR }}
|
||||||
run: make -j
|
run: make -j
|
||||||
- name: Build CPython out-of-tree (for compiler warning check)
|
- name: Build CPython out-of-tree (for compiler warning check)
|
||||||
if: ${{ !inputs.free-threading}}
|
if: ${{ !inputs.free-threading }}
|
||||||
working-directory: ${{ env.CPYTHON_BUILDDIR }}
|
working-directory: ${{ env.CPYTHON_BUILDDIR }}
|
||||||
run: set -o pipefail; make -j --output-sync 2>&1 | tee compiler_output_ubuntu.txt
|
run: set -o pipefail; make -j --output-sync 2>&1 | tee compiler_output_ubuntu.txt
|
||||||
- name: Display build info
|
- name: Display build info
|
||||||
|
|||||||
@@ -1,85 +0,0 @@
|
|||||||
test_multiprocessing_fork
|
|
||||||
test_strftime_y2k
|
|
||||||
test.test_asyncio.test_unix_events.TestFork.test_fork_asyncio_run
|
|
||||||
test.test_asyncio.test_unix_events.TestFork.test_fork_asyncio_subprocess
|
|
||||||
test.test_asyncio.test_unix_events.TestFork.test_fork_signal_handling
|
|
||||||
test.test_cmd_line.CmdLineTest.test_no_std_streams
|
|
||||||
test.test_cmd_line.CmdLineTest.test_no_stdin
|
|
||||||
test.test_concurrent_futures.test_init.ProcessPoolForkFailingInitializerTest.test_initializer
|
|
||||||
test.test_concurrent_futures.test_process_pool.ProcessPoolForkProcessPoolExecutorTest.test_ressources_gced_in_workers
|
|
||||||
test.test_external_inspection.TestGetStackTrace.test_remote_stack_trace
|
|
||||||
test.test_external_inspection.TestGetStackTrace.test_self_trace
|
|
||||||
test.test_faulthandler.FaultHandlerTests.test_enable_fd
|
|
||||||
test.test_faulthandler.FaultHandlerTests.test_enable_file
|
|
||||||
test.test_init.ProcessPoolForkFailingInitializerTest.test_initializer
|
|
||||||
test.test_logging.ConfigDictTest.test_111615
|
|
||||||
test.test_logging.ConfigDictTest.test_config_queue_handler
|
|
||||||
test.test_logging.ConfigDictTest.test_multiprocessing_queues
|
|
||||||
test.test_logging.ConfigDictTest.test_config_queue_handler_multiprocessing_context
|
|
||||||
test.test_os.ForkTests.test_fork_warns_when_non_python_thread_exists
|
|
||||||
test.test_os.TimerfdTests.test_timerfd_initval
|
|
||||||
test.test_os.TimerfdTests.test_timerfd_interval
|
|
||||||
test.test_os.TimerfdTests.test_timerfd_TFD_TIMER_ABSTIME
|
|
||||||
test.test_pathlib.PathSubclassTest.test_is_mount_root
|
|
||||||
test.test_pathlib.PathTest.test_is_mount_root
|
|
||||||
test.test_pathlib.PosixPathTest.test_is_mount_root
|
|
||||||
test.test_pathlib.test_pathlib.PathSubclassTest.test_is_mount_root
|
|
||||||
test.test_pathlib.test_pathlib.PathTest.test_is_mount_root
|
|
||||||
test.test_pathlib.test_pathlib.PosixPathTest.test_is_mount_root
|
|
||||||
test.test_posix.TestPosixSpawn.test_close_file
|
|
||||||
test.test_posix.TestPosixSpawnP.test_close_file
|
|
||||||
test.test_posixpath.PosixPathTest.test_ismount
|
|
||||||
test.test_signal.StressTest.test_stress_modifying_handlers
|
|
||||||
test.test_socket.BasicCANTest.testFilter
|
|
||||||
test.test_socket.BasicCANTest.testLoopback
|
|
||||||
test.test_socket.LinuxKernelCryptoAPI.test_aead_aes_gcm
|
|
||||||
test.test_socket.LinuxKernelCryptoAPI.test_aes_cbc
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDP6Test.testSecondCmsgTrunc1
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDP6Test.testSecondCmsgTrunc2Int
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDP6Test.testSecondCmsgTruncInData
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDP6Test.testSecondCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDP6Test.testSingleCmsgTruncInData
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDP6Test.testSingleCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDPLITE6Test.testSecondCmsgTrunc1
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDPLITE6Test.testSecondCmsgTrunc2Int
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDPLITE6Test.testSecondCmsgTruncInData
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDPLITE6Test.testSecondCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDPLITE6Test.testSingleCmsgTruncInData
|
|
||||||
test.test_socket.RecvmsgIntoRFC3542AncillaryUDPLITE6Test.testSingleCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncLen0
|
|
||||||
test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncLen0Plus1
|
|
||||||
test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncLen1
|
|
||||||
test.test_socket.RecvmsgIntoSCMRightsStreamTest.testCmsgTruncLen2Minus1
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDP6Test.testSecondCmsgTrunc1
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDP6Test.testSecondCmsgTrunc2Int
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDP6Test.testSecondCmsgTruncInData
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDP6Test.testSecondCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDP6Test.testSingleCmsgTruncInData
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDP6Test.testSingleCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDPLITE6Test.testSecondCmsgTrunc1
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDPLITE6Test.testSecondCmsgTrunc2Int
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDPLITE6Test.testSecondCmsgTruncInData
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDPLITE6Test.testSecondCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDPLITE6Test.testSingleCmsgTruncInData
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDPLITE6Test.testSingleCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgRFC3542AncillaryUDPLITE6Test.testSingleCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncLen0
|
|
||||||
test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncLen0Minus1
|
|
||||||
test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncLen0Plus1
|
|
||||||
test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncLen1
|
|
||||||
test.test_socket.RecvmsgSCMRightsStreamTest.testCmsgTruncLen2Minus1
|
|
||||||
test.test_subprocess.POSIXProcessTestCase.test_exception_bad_args_0
|
|
||||||
test.test_subprocess.POSIXProcessTestCase.test_exception_bad_executable
|
|
||||||
test.test_subprocess.POSIXProcessTestCase.test_vfork_used_when_expected
|
|
||||||
test.test_subprocess.ProcessTestCase.test_cwd_with_relative_arg
|
|
||||||
test.test_subprocess.ProcessTestCase.test_cwd_with_relative_executable
|
|
||||||
test.test_subprocess.ProcessTestCase.test_empty_env
|
|
||||||
test.test_subprocess.ProcessTestCase.test_file_not_found_includes_filename
|
|
||||||
test.test_subprocess.ProcessTestCase.test_one_environment_variable
|
|
||||||
test.test_subprocess.ProcessTestCaseNoPoll.test_cwd_with_relative_arg
|
|
||||||
test.test_subprocess.ProcessTestCaseNoPoll.test_cwd_with_relative_executable
|
|
||||||
test.test_subprocess.ProcessTestCaseNoPoll.test_empty_env
|
|
||||||
test.test_subprocess.ProcessTestCaseNoPoll.test_file_not_found_includes_filename
|
|
||||||
test.test_subprocess.ProcessTestCaseNoPoll.test_one_environment_variable
|
|
||||||
test.test_venv.BasicTest.test_zippath_from_non_installed_posix
|
|
||||||
Reference in New Issue
Block a user