diff --git a/.github/workflows/build-python-packages.yml b/.github/workflows/build-python-packages.yml index 2b3b151..04e1a98 100644 --- a/.github/workflows/build-python-packages.yml +++ b/.github/workflows/build-python-packages.yml @@ -12,15 +12,10 @@ on: required: true type: boolean default: false - THREADING_BUILD_MODES: - description: 'CPython threading build modes' - required: true - type: string - default: 'default,freethreaded' PLATFORMS: description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)' required: true - default: 'ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-13_x64,macos-14_arm64,windows-2022_x64,windows-2022_x86,windows-2022_arm64' + default: 'ubuntu-20.04,ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,macos-13_x64,macos-14_arm64,windows-2019_x64,windows-2019_x86,windows-2019_arm64' pull_request: paths-ignore: - 'versions-manifest.json' @@ -44,39 +39,31 @@ jobs: - name: Generate execution matrix id: generate-matrix run: | - [String[]]$configurations = "${{ inputs.platforms || 'ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-13,macos-14_arm64,windows-2022_x64,windows-2022_x86,windows-2022_arm64' }}".Split(",").Trim() - [String[]]$buildModes = "${{ inputs.threading_build_modes || 'default' }}".Split(",").Trim() + [String[]]$configurations = "${{ inputs.platforms || 'ubuntu-20.04,ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,macos-13,macos-14_arm64,windows-2019_x64,windows-2019_x86,windows-2019_arm64' }}".Split(",").Trim() $matrix = @() - - foreach ($configuration in $configurations) { - foreach ($buildMode in $buildModes) { - $parts = $configuration.Split("_") - $os = $parts[0] - $arch = if ($parts[1]) {$parts[1]} else {"x64"} - switch -wildcard ($os) { - "*ubuntu*" { $platform = $os.Replace("ubuntu","linux"); if ($arch -eq "arm64" ) { $os = "${os}-arm" } } - "*macos*" { $platform = 'darwin' } - "*windows*" { $platform = 'win32' } - } - if ($configuration -eq "windows-2022_arm64") { - $os = "setup-actions-windows-arm64-4-core" - } - if ($buildMode -eq "freethreaded") { - if ([semver]"${{ inputs.VERSION }}" -lt [semver]"3.13.0") { - continue; - } - $arch += "-freethreaded" - } - $matrix += @{ - 'platform' = $platform - 'os' = $os - 'arch' = $arch - } + foreach ($configuration in $configurations) { + $parts = $configuration.Split("_") + $os = $parts[0] + $arch = if ($parts[1]) {$parts[1]} else {"x64"} + switch -wildcard ($os) { + "*ubuntu*" { $platform = $os.Replace("ubuntu","linux")} + "*macos*" { $platform = 'darwin' } + "*windows*" { $platform = 'win32' } + } + if ($configuration -eq "ubuntu-22.04_arm64") { + $os = "setup-actions-ubuntu-arm64-2-core" + }elseif ($configuration -eq "windows-2019_arm64") { + $os = "setup-actions-windows-arm64-4-core" + } + $matrix += @{ + 'platform' = $platform + 'os' = $os + 'arch' = $arch } } echo "matrix=$($matrix | ConvertTo-Json -Compress -AsArray)" >> $env:GITHUB_OUTPUT - + build_python: needs: generate_matrix strategy: @@ -87,20 +74,40 @@ jobs: env: ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }} steps: + - name: Setup Environment on Windows ARM64 Runner + if: matrix.os == 'setup-actions-windows-arm64-4-core' + shell: powershell + run: | + # Install Chocolatey + Set-ExecutionPolicy Bypass -Scope Process -Force + [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 + iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) + echo "C:\ProgramData\Chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 + + # Install PowerShell + choco install powershell-core -y + echo "C:\Program Files\PowerShell\7" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 + + # Install Git + choco install git -y + echo "C:\Program Files\Git\cmd" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 + + + # Install 7-Zip + choco install 7zip -y + echo "C:\ProgramData\chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 + + - name: Check out repository code uses: actions/checkout@v4 with: submodules: true - - name: Adding Symlink - if: matrix.os == 'macos-13' - run: ln -sf /usr/local/opt/tcl-tk@8 /usr/local/opt/tcl-tk - - name: Build Python ${{ env.VERSION }} run: | ./builders/build-python.ps1 -Version $env:VERSION ` -Platform ${{ matrix.platform }} -Architecture ${{ matrix.arch }} - + - name: Publish artifact uses: actions/upload-artifact@v4 with: @@ -118,6 +125,29 @@ jobs: env: ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }} steps: + - name: Setup Environment on Windows ARM64 Runner + if: matrix.os == 'setup-actions-windows-arm64-4-core' + shell: powershell + run: | + # Install Chocolatey + Set-ExecutionPolicy Bypass -Scope Process -Force + [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 + iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) + echo "C:\ProgramData\Chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 + + # Install PowerShell + choco install powershell-core -y + echo "C:\Program Files\PowerShell\7" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 + + # Install Git + choco install git -y + echo "C:\Program Files\Git\cmd" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 + + + # Install 7-Zip + choco install 7zip -y + echo "C:\ProgramData\chocolatey\bin" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8 + - name: Check out repository code uses: actions/checkout@v4 with: @@ -165,9 +195,6 @@ jobs: python-version: ${{ env.VERSION }} architecture: ${{ matrix.arch }} - - name: Python version - run: python -VVV - - name: Verbose sysconfig dump if: runner.os == 'Linux' || runner.os == 'macOS' run: python ./sources/python-config-output.py @@ -260,4 +287,4 @@ jobs: repo: context.repo.repo, workflow_id: 'create-pr.yml', ref: 'main' - }); + }); \ No newline at end of file