]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Enable native AArch64 Ubuntu CI jobs (#127584)
authorDiego Russo <diego.russo@arm.com>
Wed, 4 Dec 2024 22:12:06 +0000 (22:12 +0000)
committerGitHub <noreply@github.com>
Wed, 4 Dec 2024 22:12:06 +0000 (14:12 -0800)
Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
.github/workflows/build.yml
.github/workflows/jit.yml
.github/workflows/reusable-ubuntu.yml
Tools/jit/ignore-tests-emulated-linux.txt [deleted file]

index 55effee0e1e393e2c10662a88ff8c499ee010915..9b2f19fd6bcf541a2342da5d77a891c7c6b1e576 100644 (file)
@@ -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'
index 4ef543d736973482cd22d095622e7414a56757f3..ee30cf5786d55b14740718d28f4897e3727bd58b 100644 (file)
@@ -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:
index 642354f8b4f61b89a33071187c698ed0983325d5..2869202c7910c962d654bc4cbb1462aa86419955 100644 (file)
@@ -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
diff --git a/Tools/jit/ignore-tests-emulated-linux.txt b/Tools/jit/ignore-tests-emulated-linux.txt
deleted file mode 100644 (file)
index 080a569..0000000
+++ /dev/null
@@ -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