Merge pull request #85693 from charles-zablit/charles-zablit/windows/upgrade-python-to-3.10-to-release-6.2

🍒 [windows] add Embeddable Python 3.10.1 to build.ps1
This commit is contained in:
Adrian Prantl
2025-12-09 21:35:21 -08:00
committed by GitHub

View File

@@ -139,7 +139,7 @@ param
[ValidateSet("Asserts", "NoAsserts")]
[string] $PinnedToolchainVariant = "Asserts",
[ValidatePattern('^\d+(\.\d+)*$')]
[string] $PythonVersion = "3.9.10",
[string] $PythonVersion = "3.10.1",
[ValidatePattern("^r(?:[1-9]|[1-9][0-9])(?:[a-z])?$")]
[string] $AndroidNDKVersion = "r27c",
[ValidatePattern("^\d+\.\d+\.\d+(?:-\w+)?")]
@@ -348,7 +348,25 @@ $KnownPythons = @{
URL = "https://www.nuget.org/api/v2/package/pythonarm64/3.9.10";
SHA256 = "429ada77e7f30e4bd8ff22953a1f35f98b2728e84c9b1d006712561785641f69";
};
}
};
"3.10.1" = @{
AMD64 = @{
URL = "https://www.nuget.org/api/v2/package/python/3.10.1";
SHA256 = "987a0e446d68900f58297bc47dc7a235ee4640a49dace58bc9f573797d3a8b33";
};
AMD64_Embedded = @{
URL = "https://www.python.org/ftp/python/3.10.1/python-3.10.1-embed-amd64.zip";
SHA256 = "502670dcdff0083847abf6a33f30be666594e7e5201cd6fccd4a523b577403de";
};
ARM64 = @{
URL = "https://www.nuget.org/api/v2/package/pythonarm64/3.10.1";
SHA256 = "16becfccedf1269ff0b8695a13c64fac2102a524d66cecf69a8f9229a43b10d3";
};
ARM64_Embedded = @{
URL = "https://www.python.org/ftp/python/3.10.1/python-3.10.1-embed-arm64.zip";
SHA256 = "1f9e215fe4e8f22a8e8fba1859efb1426437044fb3103ce85794630e3b511bc2";
};
};
}
$PythonWheels = @{
@@ -527,6 +545,10 @@ function Get-PythonPath([Hashtable] $Platform) {
return [IO.Path]::Combine("$BinaryCache\", "Python$($Platform.Architecture.CMakeName)-$PythonVersion")
}
function Get-EmbeddedPythonPath([Hashtable] $Platform) {
return [IO.Path]::Combine("$BinaryCache\", "EmbeddedPython$($Platform.Architecture.CMakeName)-$PythonVersion")
}
function Get-PythonExecutable {
return [IO.Path]::Combine((Get-PythonPath $BuildPlatform), "tools", "python.exe")
}
@@ -535,6 +557,10 @@ function Get-PythonScriptsPath {
return [IO.Path]::Combine((Get-PythonPath $BuildPlatform), "tools", "Scripts")
}
function Get-EmbeddedPythonInstallDir() {
return [IO.Path]::Combine("$ImageRoot\", "Program Files", "Swift", "Python-$PythonVersion")
}
function Get-InstallDir([Hashtable] $Platform) {
if ($Platform -eq $HostPlatform) {
return [IO.Path]::Combine("$ImageRoot\", "Program Files", "Swift")
@@ -852,6 +878,10 @@ function Invoke-VsDevShell([Hashtable] $Platform) {
}
}
function Get-PythonLibName() {
return "python{0}{1}" -f ([System.Version]$PythonVersion).Major, ([System.Version]$PythonVersion).Minor
}
function Get-Dependencies {
Write-Host "[$([DateTime]::Now.ToString("yyyy-MM-dd HH:mm:ss"))] Fetch-Dependencies ..." -ForegroundColor Cyan
$ProgressPreference = "SilentlyContinue"
@@ -967,18 +997,21 @@ function Get-Dependencies {
New-Item -ItemType Directory -ErrorAction Ignore $BinaryCache\toolchains | Out-Null
Export-Toolchain "$PinnedToolchain.exe" $BinaryCache $PinnedToolchain
function Get-KnownPython([string] $ArchName) {
function Get-KnownPython([string] $ArchName, [bool] $EmbeddedPython = $false) {
if (-not $KnownPythons.ContainsKey($PythonVersion)) {
throw "Unknown python version: $PythonVersion"
}
return $KnownPythons[$PythonVersion].$ArchName
$Key = $(if ($EmbeddedPython) { "${ArchName}_Embedded" } else { $ArchName })
return $KnownPythons[$PythonVersion][$Key]
}
function Install-Python([string] $ArchName) {
$Python = Get-KnownPython $ArchName
DownloadAndVerify $Python.URL "$BinaryCache\Python$ArchName-$PythonVersion.zip" $Python.SHA256
function Install-Python([string] $ArchName, [bool] $EmbeddedPython = $false) {
$Python = Get-KnownPython $ArchName $EmbeddedPython
$FileName = $(if ($EmbeddedPython) { "EmbeddedPython$ArchName-$PythonVersion" } else { "Python$ArchName-$PythonVersion" })
DownloadAndVerify $Python.URL "$BinaryCache\$FileName.zip" $Python.SHA256
if (-not $ToBatch) {
Expand-ZipFile Python$ArchName-$PythonVersion.zip "$BinaryCache" Python$ArchName-$PythonVersion
Expand-ZipFile "$FileName.zip" "$BinaryCache" "$FileName"
Write-Output "$ArchName Python $PythonVersion installed."
}
}
@@ -1017,12 +1050,13 @@ function Get-Dependencies {
}
}
# Ensure Python modules that are required as host build tools
Install-Python $HostArchName
Install-Python $HostArchName $true
if ($IsCrossCompiling) {
Install-Python $BuildArchName
Install-Python $BuildArchName $true
}
# Ensure Python modules that are required as host build tools
Install-PythonModules
if ($Android) {
@@ -1706,7 +1740,7 @@ function Load-LitTestOverrides($Filename) {
function Get-CompilersDefines([Hashtable] $Platform, [switch] $Test) {
$BuildTools = [IO.Path]::Combine((Get-ProjectBinaryCache $BuildPlatform BuildTools), "bin")
$PythonRoot = [IO.Path]::Combine((Get-PythonPath $Platform), "tools")
$PythonLibName = "python{0}{1}" -f ([System.Version]$PythonVersion).Major, ([System.Version]$PythonVersion).Minor
$PythonLibName = Get-PythonLibName
$TestDefines = if ($Test) {
@{
@@ -1745,6 +1779,7 @@ function Get-CompilersDefines([Hashtable] $Platform, [switch] $Test) {
LLDB_PYTHON_EXE_RELATIVE_PATH = "python.exe";
LLDB_PYTHON_EXT_SUFFIX = ".pyd";
LLDB_PYTHON_RELATIVE_PATH = "lib/site-packages";
LLDB_PYTHON_DLL_RELATIVE_PATH = "../../../../Python-$PythonVersion/usr/bin";
LLDB_TABLEGEN = (Join-Path -Path $BuildTools -ChildPath "lldb-tblgen.exe");
LLDB_TEST_MAKE = "$BinaryCache\GnuWin32Make-4.4.1\bin\make.exe";
LLVM_CONFIG_PATH = (Join-Path -Path $BuildTools -ChildPath "llvm-config.exe");
@@ -1758,6 +1793,7 @@ function Get-CompilersDefines([Hashtable] $Platform, [switch] $Test) {
Python3_INCLUDE_DIR = "$PythonRoot\include";
Python3_LIBRARY = "$PythonRoot\libs\$PythonLibName.lib";
Python3_ROOT_DIR = $PythonRoot;
Python3_VERSION = $PythonVersion;
SWIFT_TOOLCHAIN_VERSION = "${ToolchainIdentifier}";
SWIFT_BUILD_SWIFT_SYNTAX = "YES";
SWIFT_CLANG_LOCATION = (Get-PinnedToolchainToolsDir);
@@ -3072,8 +3108,18 @@ function Install-HostToolchain() {
# Switch to swift-driver
$SwiftDriver = ([IO.Path]::Combine((Get-ProjectBinaryCache $HostPlatform Driver), "bin", "swift-driver.exe"))
Copy-Item -Force $SwiftDriver "$($HostPlatform.ToolchainInstallRoot)\usr\bin\swift.exe"
Copy-Item -Force $SwiftDriver "$($HostPlatform.ToolchainInstallRoot)\usr\bin\swiftc.exe"
Copy-Item -Force `
-Path $SwiftDriver `
-Destination "$($HostPlatform.ToolchainInstallRoot)\usr\bin\swift.exe"
Copy-Item -Force `
-Path $SwiftDriver `
-Destination "$($HostPlatform.ToolchainInstallRoot)\usr\bin\swiftc.exe"
# Copy embeddable Python
New-Item -Type Directory -Path "$(Get-EmbeddedPythonInstallDir)" -ErrorAction Ignore | Out-Null
Copy-Item -Force -Recurse `
-Path "$(Get-EmbeddedPythonPath $HostPlatform)\*" `
-Destination "$(Get-EmbeddedPythonInstallDir)"
}
function Build-Inspect([Hashtable] $Platform) {
@@ -3146,6 +3192,7 @@ function Build-Installer([Hashtable] $Platform) {
INCLUDE_SWIFT_DOCC = $INCLUDE_SWIFT_DOCC;
SWIFT_DOCC_BUILD = "$(Get-ProjectBinaryCache $HostPlatform DocC)\release";
SWIFT_DOCC_RENDER_ARTIFACT_ROOT = "${SourceCache}\swift-docc-render-artifact";
PythonVersion = $PythonVersion
}
Invoke-IsolatingEnvVars {