Compare commits

..

16 Commits

Author SHA1 Message Date
aparnajyothi-y
00ec8cc1f2 Update build-python-packages.yml 2024-06-20 13:07:34 +05:30
aparnajyothi-y
1f0d27f0b5 Update build-python-packages.yml 2024-06-20 12:32:21 +05:30
aparnajyothi-y
dd0cf131ab Update build-python-packages.yml 2024-06-20 12:27:29 +05:30
aparnajyothi-y
a77c9e10d6 Update build-python-packages.yml 2024-06-20 12:10:15 +05:30
aparnajyothi-y
fc1f552d8d Update build-python-packages.yml 2024-06-20 10:27:52 +05:30
aparnajyothi-y
cd751e6cc2 Update build-python-packages.yml 2024-06-19 18:55:04 +05:30
aparnajyothi-y
fd01c577f2 Update build-python-packages.yml 2024-06-19 18:45:19 +05:30
aparnajyothi-y
f54bc21e32 Update build-python-packages.yml 2024-06-19 18:28:53 +05:30
aparnajyothi-y
a81c68e746 Update build-python-packages.yml 2024-06-19 17:58:44 +05:30
aparnajyothi-y
c2a676ee84 Update build-python-packages.yml 2024-06-19 15:57:45 +05:30
aparnajyothi-y
0e0d4ed87f Update build-python-packages.yml 2024-06-19 15:54:00 +05:30
aparnajyothi-y
011826ebf7 Update build-python-packages.yml 2024-06-19 15:45:17 +05:30
aparnajyothi-y
d443e40f97 Update build-python-packages.yml 2024-06-17 16:23:44 +05:30
aparnajyothi-y
dd61f119eb Update win-python-builder.psm1 2024-06-17 16:16:18 +05:30
Priya Gupta
cb2aecd6d9 Add Support for Linux arm64 Builds (#274)
* Included ubuntu-arm64 in  Build Python package yml

* Updated builder and installer scripts

* Updated test scripts

* Modified test file

* Replaced macos-11 with macos-13

* Update build-python-packages.yml
2024-06-13 09:17:40 -05:00
github-actions[bot]
1c85886f9c Update versions-manifest (#284)
Co-authored-by: Service account <no-reply@microsoft.com>
2024-06-11 21:40:26 -05:00
6 changed files with 170 additions and 11 deletions

View File

@@ -15,7 +15,7 @@ on:
PLATFORMS: PLATFORMS:
description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)' description: 'Platforms for execution in "os" or "os_arch" format (arch is "x64" by default)'
required: true required: true
default: 'ubuntu-20.04,ubuntu-22.04,ubuntu-24.04,macos-11_x64,macos-11_arm64,windows-2019_x64,windows-2019_x86' default: 'ubuntu-20.04,ubuntu-20.04_arm64,ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-11_x64,macos-14_arm64,windows-2019_x64,windows-2019_x86,windows-2019_arm64'
pull_request: pull_request:
paths-ignore: paths-ignore:
- 'versions-manifest.json' - 'versions-manifest.json'
@@ -39,26 +39,33 @@ jobs:
- name: Generate execution matrix - name: Generate execution matrix
id: generate-matrix id: generate-matrix
run: | run: |
[String[]]$configurations = "${{ inputs.platforms || 'ubuntu-20.04,ubuntu-22.04,ubuntu-24.04,macos-11,macos-11_arm64,windows-2019_x64,windows-2019_x86' }}".Split(",").Trim() [String[]]$configurations = "${{ inputs.platforms || 'ubuntu-20.04,ubuntu-20.04_arm64,ubuntu-22.04,ubuntu-22.04_arm64,ubuntu-24.04,ubuntu-24.04_arm64,macos-11,macos-14_arm64,windows-2019_x64,windows-2019_x86,windows-2019_arm64' }}".Split(",").Trim()
$matrix = @() $matrix = @()
foreach ($configuration in $configurations) { foreach ($configuration in $configurations) {
$parts = $configuration.Split("_") $parts = $configuration.Split("_")
$os = $parts[0] $os = $parts[0]
$arch = if ($parts[1]) {$parts[1]} else {"x64"} $arch = if ($parts[1]) {$parts[1]} else {"x64"}
switch -wildcard ($os) { switch -wildcard ($os) {
"*ubuntu*" { $platform = $os.Replace("ubuntu","linux")} "*ubuntu*" { $platform = $os.Replace("ubuntu","linux")}
"*macos*" { $platform = 'darwin' } "*macos*" { $platform = 'darwin' }
"*windows*" { $platform = 'win32' } "*windows*" { $platform = 'win32' }
} }
if ($configuration -eq "windows-2019_arm64") {
$os = "setup-actions-windows-arm64-4-core"
}
$matrix += @{ $matrix += @{
'platform' = $platform 'platform' = $platform
'os' = $os 'os' = $os
'arch' = $arch 'arch' = $arch
} }
} }
echo "matrix=$($matrix | ConvertTo-Json -Compress -AsArray)" >> $env:GITHUB_OUTPUT echo "matrix=$($matrix | ConvertTo-Json -Compress -AsArray)" >> $env:GITHUB_OUTPUT
build_python: build_python:
needs: generate_matrix needs: generate_matrix
strategy: strategy:
@@ -70,16 +77,38 @@ jobs:
ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }} ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps: 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 - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
submodules: true submodules: true
- name: Build Python ${{ env.VERSION }} - name: Build Python ${{ env.VERSION }}
run: | run: |
./builders/build-python.ps1 -Version $env:VERSION ` ./builders/build-python.ps1 -Version $env:VERSION `
-Platform ${{ matrix.platform }} -Architecture ${{ matrix.arch }} -Platform ${{ matrix.platform }} -Architecture ${{ matrix.arch }}
- name: Publish artifact - name: Publish artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
@@ -97,7 +126,30 @@ jobs:
env: env:
ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }} ARTIFACT_NAME: python-${{ inputs.VERSION || '3.12.3' }}-${{ matrix.platform }}-${{ matrix.arch }}
steps: 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 - name: Check out repository code
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -117,6 +169,7 @@ jobs:
name: ${{ env.ARTIFACT_NAME }} name: ${{ env.ARTIFACT_NAME }}
path: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }} path: ${{ runner.temp }}/${{ env.ARTIFACT_NAME }}
- name: Extract files - name: Extract files
run: | run: |
if ('${{ matrix.platform }}' -eq 'win32') { if ('${{ matrix.platform }}' -eq 'win32') {
@@ -155,7 +208,6 @@ jobs:
run: | run: |
$pythonLocation = which python $pythonLocation = which python
if ('${{ matrix.platform }}' -eq 'darwin') { otool -L $pythonLocation } else { ldd $pythonLocation } if ('${{ matrix.platform }}' -eq 'darwin') { otool -L $pythonLocation } else { ldd $pythonLocation }
- name: Run tests - name: Run tests
run: | run: |
Install-Module Pester -Force -Scope CurrentUser -SkipPublisherCheck Install-Module Pester -Force -Scope CurrentUser -SkipPublisherCheck
@@ -190,7 +242,6 @@ jobs:
release_name: ${{ env.VERSION }} release_name: ${{ env.VERSION }}
body: | body: |
Python ${{ env.VERSION }} Python ${{ env.VERSION }}
- name: Generate hash for packages - name: Generate hash for packages
run: | run: |
$childItems = Get-Childitem -Path '.' $childItems = Get-Childitem -Path '.'
@@ -238,4 +289,3 @@ jobs:
workflow_id: 'create-pr.yml', workflow_id: 'create-pr.yml',
ref: 'main' ref: 'main'
}); });

View File

@@ -97,6 +97,7 @@ class NixPythonBuilder : PythonBuilder {
$variablesToReplace = @{ $variablesToReplace = @{
"{{__VERSION_FULL__}}" = $this.Version; "{{__VERSION_FULL__}}" = $this.Version;
"{{__ARCH__}}" = $this.Architecture;
} }
$variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) } $variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) }

View File

@@ -60,8 +60,11 @@ class WinPythonBuilder : PythonBuilder {
} else { } else {
$ArchitectureExtension = ".amd64" $ArchitectureExtension = ".amd64"
} }
}elseif ($this.Architecture -eq "arm64") {
$ArchitectureExtension = "-arm64"
} }
return $ArchitectureExtension return $ArchitectureExtension
} }

View File

@@ -1,6 +1,7 @@
set -e set -e
PYTHON_FULL_VERSION="{{__VERSION_FULL__}}" PYTHON_FULL_VERSION="{{__VERSION_FULL__}}"
ARCH="{{__ARCH__}}"
MAJOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 1) MAJOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 1)
MINOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 2) MINOR_VERSION=$(echo $PYTHON_FULL_VERSION | cut -d '.' -f 2)
@@ -17,7 +18,7 @@ fi
PYTHON_TOOLCACHE_PATH=$TOOLCACHE_ROOT/Python PYTHON_TOOLCACHE_PATH=$TOOLCACHE_ROOT/Python
PYTHON_TOOLCACHE_VERSION_PATH=$PYTHON_TOOLCACHE_PATH/$PYTHON_FULL_VERSION PYTHON_TOOLCACHE_VERSION_PATH=$PYTHON_TOOLCACHE_PATH/$PYTHON_FULL_VERSION
PYTHON_TOOLCACHE_VERSION_ARCH_PATH=$PYTHON_TOOLCACHE_VERSION_PATH/x64 PYTHON_TOOLCACHE_VERSION_ARCH_PATH=$PYTHON_TOOLCACHE_VERSION_PATH/$ARCH
echo "Check if Python hostedtoolcache folder exist..." echo "Check if Python hostedtoolcache folder exist..."
if [ ! -d $PYTHON_TOOLCACHE_PATH ]; then if [ ! -d $PYTHON_TOOLCACHE_PATH ]; then
@@ -54,4 +55,4 @@ export PIP_ROOT_USER_ACTION=ignore
./python -m pip install --upgrade --force-reinstall pip --disable-pip-version-check --no-warn-script-location ./python -m pip install --upgrade --force-reinstall pip --disable-pip-version-check --no-warn-script-location
echo "Create complete file" echo "Create complete file"
touch $PYTHON_TOOLCACHE_VERSION_PATH/x64.complete touch $PYTHON_TOOLCACHE_VERSION_PATH/$ARCH.complete

View File

@@ -28,7 +28,7 @@ if os_type == 'Darwin': expected_ld_library_extension = 'dylib'
if pkg_installer: if pkg_installer:
expected_lib_dir_path = f'/Library/Frameworks/Python.framework/Versions/{version_major}.{version_minor}/lib' expected_lib_dir_path = f'/Library/Frameworks/Python.framework/Versions/{version_major}.{version_minor}/lib'
else: else:
expected_lib_dir_path = f'{os.getenv("AGENT_TOOLSDIRECTORY")}/Python/{version}/x64/lib' expected_lib_dir_path = f'{os.getenv("AGENT_TOOLSDIRECTORY")}/Python/{version}/{architecture}/lib'
# Check modules # Check modules
### Validate libraries path ### Validate libraries path

View File

@@ -1,4 +1,56 @@
[ [
{
"version": "3.13.0-beta.2",
"stable": false,
"release_url": "https://github.com/actions/python-versions/releases/tag/3.13.0-beta.2-9470028175",
"files": [
{
"filename": "python-3.13.0-beta.2-darwin-arm64.tar.gz",
"arch": "arm64",
"platform": "darwin",
"download_url": "https://github.com/actions/python-versions/releases/download/3.13.0-beta.2-9470028175/python-3.13.0-beta.2-darwin-arm64.tar.gz"
},
{
"filename": "python-3.13.0-beta.2-darwin-x64.tar.gz",
"arch": "x64",
"platform": "darwin",
"download_url": "https://github.com/actions/python-versions/releases/download/3.13.0-beta.2-9470028175/python-3.13.0-beta.2-darwin-x64.tar.gz"
},
{
"filename": "python-3.13.0-beta.2-linux-20.04-x64.tar.gz",
"arch": "x64",
"platform": "linux",
"platform_version": "20.04",
"download_url": "https://github.com/actions/python-versions/releases/download/3.13.0-beta.2-9470028175/python-3.13.0-beta.2-linux-20.04-x64.tar.gz"
},
{
"filename": "python-3.13.0-beta.2-linux-22.04-x64.tar.gz",
"arch": "x64",
"platform": "linux",
"platform_version": "22.04",
"download_url": "https://github.com/actions/python-versions/releases/download/3.13.0-beta.2-9470028175/python-3.13.0-beta.2-linux-22.04-x64.tar.gz"
},
{
"filename": "python-3.13.0-beta.2-linux-24.04-x64.tar.gz",
"arch": "x64",
"platform": "linux",
"platform_version": "24.04",
"download_url": "https://github.com/actions/python-versions/releases/download/3.13.0-beta.2-9470028175/python-3.13.0-beta.2-linux-24.04-x64.tar.gz"
},
{
"filename": "python-3.13.0-beta.2-win32-x64.zip",
"arch": "x64",
"platform": "win32",
"download_url": "https://github.com/actions/python-versions/releases/download/3.13.0-beta.2-9470028175/python-3.13.0-beta.2-win32-x64.zip"
},
{
"filename": "python-3.13.0-beta.2-win32-x86.zip",
"arch": "x86",
"platform": "win32",
"download_url": "https://github.com/actions/python-versions/releases/download/3.13.0-beta.2-9470028175/python-3.13.0-beta.2-win32-x86.zip"
}
]
},
{ {
"version": "3.13.0-beta.1", "version": "3.13.0-beta.1",
"stable": false, "stable": false,
@@ -321,6 +373,58 @@
} }
] ]
}, },
{
"version": "3.12.4",
"stable": true,
"release_url": "https://github.com/actions/python-versions/releases/tag/3.12.4-9469551593",
"files": [
{
"filename": "python-3.12.4-darwin-arm64.tar.gz",
"arch": "arm64",
"platform": "darwin",
"download_url": "https://github.com/actions/python-versions/releases/download/3.12.4-9469551593/python-3.12.4-darwin-arm64.tar.gz"
},
{
"filename": "python-3.12.4-darwin-x64.tar.gz",
"arch": "x64",
"platform": "darwin",
"download_url": "https://github.com/actions/python-versions/releases/download/3.12.4-9469551593/python-3.12.4-darwin-x64.tar.gz"
},
{
"filename": "python-3.12.4-linux-20.04-x64.tar.gz",
"arch": "x64",
"platform": "linux",
"platform_version": "20.04",
"download_url": "https://github.com/actions/python-versions/releases/download/3.12.4-9469551593/python-3.12.4-linux-20.04-x64.tar.gz"
},
{
"filename": "python-3.12.4-linux-22.04-x64.tar.gz",
"arch": "x64",
"platform": "linux",
"platform_version": "22.04",
"download_url": "https://github.com/actions/python-versions/releases/download/3.12.4-9469551593/python-3.12.4-linux-22.04-x64.tar.gz"
},
{
"filename": "python-3.12.4-linux-24.04-x64.tar.gz",
"arch": "x64",
"platform": "linux",
"platform_version": "24.04",
"download_url": "https://github.com/actions/python-versions/releases/download/3.12.4-9469551593/python-3.12.4-linux-24.04-x64.tar.gz"
},
{
"filename": "python-3.12.4-win32-x64.zip",
"arch": "x64",
"platform": "win32",
"download_url": "https://github.com/actions/python-versions/releases/download/3.12.4-9469551593/python-3.12.4-win32-x64.zip"
},
{
"filename": "python-3.12.4-win32-x86.zip",
"arch": "x86",
"platform": "win32",
"download_url": "https://github.com/actions/python-versions/releases/download/3.12.4-9469551593/python-3.12.4-win32-x86.zip"
}
]
},
{ {
"version": "3.12.3", "version": "3.12.3",
"stable": true, "stable": true,