https://github.com/python/cpython/commit/0dbaeb94a8b39972ebda7782b50bb49488951e3c commit: 0dbaeb94a8b39972ebda7782b50bb49488951e3c branch: main author: Diego Russo <diego.ru...@arm.com> committer: ambv <luk...@langa.pl> date: 2025-04-03T22:32:29+02:00 summary:
Enable Windows on Arm GitHub runners (#131994) files: M .github/workflows/build.yml M .github/workflows/jit.yml M .github/workflows/reusable-windows-msi.yml M .github/workflows/reusable-windows.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 97ec5cbaa7475f..c8fc5cff28bdd2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -164,10 +164,12 @@ jobs: - false - true include: - - os: windows-latest # FIXME(diegorusso): change to os: windows-aarch64 + # Forks don't have access to Windows on Arm runners. These jobs are skipped below: + - os: ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }} arch: arm64 free-threading: false - - os: windows-latest # FIXME(diegorusso): change to os: windows-aarch64 + # Forks don't have access to Windows on Arm runners. These jobs are skipped below: + - os: ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }} arch: arm64 free-threading: true - os: windows-latest @@ -187,12 +189,18 @@ jobs: strategy: fail-fast: false matrix: + os: + - windows-latest arch: - x86 - x64 - - arm64 + include: + # Forks don't have access to Windows on Arm runners. These jobs are skipped below: + - os: ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }} + arch: arm64 uses: ./.github/workflows/reusable-windows-msi.yml with: + os: ${{ matrix.os }} arch: ${{ matrix.arch }} build-macos: diff --git a/.github/workflows/jit.yml b/.github/workflows/jit.yml index d9e2ffc3fd4da6..4f5ba84d48ef3d 100644 --- a/.github/workflows/jit.yml +++ b/.github/workflows/jit.yml @@ -74,7 +74,8 @@ jobs: runner: windows-latest - target: aarch64-pc-windows-msvc/msvc architecture: ARM64 - runner: windows-latest + # Forks don't have access to Windows on Arm runners. These jobs are skipped below: + runner: ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }} - target: x86_64-apple-darwin/clang architecture: x86_64 runner: macos-13 @@ -95,25 +96,19 @@ jobs: with: python-version: '3.11' - - name: Native Windows - if: runner.os == 'Windows' && matrix.architecture != 'ARM64' + - name: Windows + # Forks don't have access to Windows on Arm runners. Skip those: + if: runner.os == 'Windows' && (matrix.architecture != 'ARM64' || github.repository_owner == 'python') run: | choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.0 ./PCbuild/build.bat --experimental-jit ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }} ./PCbuild/rt.bat ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3 - # No tests (yet): - - name: Emulated Windows - if: runner.os == 'Windows' && matrix.architecture == 'ARM64' - run: | - choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.0 - ./PCbuild/build.bat --experimental-jit ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }} - # The `find` line is required as a result of https://github.com/actions/runner-images/issues/9966. # This is a bug in the macOS runner image where the pre-installed Python is installed in the same # directory as the Homebrew Python, which causes the build to fail for macos-13. This line removes # the symlink to the pre-installed Python so that the Homebrew Python is used instead. - - name: Native macOS + - name: macOS if: runner.os == 'macOS' run: | brew update @@ -124,7 +119,7 @@ jobs: make all --jobs 4 ./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 - - name: Native Linux + - name: Linux if: runner.os == 'Linux' run: | sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }} diff --git a/.github/workflows/reusable-windows-msi.yml b/.github/workflows/reusable-windows-msi.yml index bc0414d1bbcd8f..6213c903c5ab84 100644 --- a/.github/workflows/reusable-windows-msi.yml +++ b/.github/workflows/reusable-windows-msi.yml @@ -3,6 +3,10 @@ name: Reusable Windows MSI on: workflow_call: inputs: + os: + description: OS to run on + required: true + type: string arch: description: CPU architecture required: true @@ -17,7 +21,7 @@ env: jobs: build: name: installer for ${{ inputs.arch }} - runs-on: windows-latest + runs-on: ${{ inputs.os }} timeout-minutes: 60 env: ARCH: ${{ inputs.arch }} @@ -27,5 +31,7 @@ jobs: with: persist-credentials: false - name: Build CPython installer + # Forks don't have access to Windows on Arm runners. Skip those: + if: inputs.arch != 'arm64' || github.repository_owner == 'python' run: ./Tools/msi/build.bat --doc -"${ARCH}" shell: bash diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index 5485a0169130b0..deb1f41640e41f 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -24,7 +24,7 @@ env: jobs: build: - name: ${{ inputs.arch == 'arm64' && 'build' || 'build and test' }} (${{ inputs.arch }}) + name: Build and test (${{ inputs.arch }}) runs-on: ${{ inputs.os }} timeout-minutes: 60 env: @@ -37,17 +37,21 @@ jobs: if: inputs.arch != 'Win32' run: echo "::add-matcher::.github/problem-matchers/msvc.json" - name: Build CPython + # Forks don't have access to Windows on Arm runners. Skip those: + if: inputs.arch != 'arm64' || github.repository_owner == 'python' run: >- .\\PCbuild\\build.bat -e -d -v -p "${ARCH}" ${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }} shell: bash - - name: Display build info # FIXME(diegorusso): remove the `if` - if: inputs.arch != 'arm64' + - name: Display build info + # Forks don't have access to Windows on Arm runners. Skip those: + if: inputs.arch != 'arm64' || github.repository_owner == 'python' run: .\\python.bat -m test.pythoninfo - - name: Tests # FIXME(diegorusso): remove the `if` - if: inputs.arch != 'arm64' + - name: Tests + # Forks don't have access to Windows on Arm runners. Skip those: + if: inputs.arch != 'arm64' || github.repository_owner == 'python' run: >- .\\PCbuild\\rt.bat -p "${ARCH}" _______________________________________________ Python-checkins mailing list -- python-checkins@python.org To unsubscribe send an email to python-checkins-le...@python.org https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: arch...@mail-archive.com