-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request grpc#21271 from lidizheng/py3.8-windows
Release Python3.8 wheels for Windows
- Loading branch information
Showing
8 changed files
with
90 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
#!/usr/bin/env powershell | ||
# Install Python 3.8 for x64 and x86 in order to build wheels on Windows. | ||
|
||
Set-StrictMode -Version 2 | ||
|
||
# Avoid "Could not create SSL/TLS secure channel" | ||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 | ||
|
||
function Install-Python { | ||
Param( | ||
[string]$PythonVersion, | ||
[string]$PythonInstaller, | ||
[string]$PythonInstallPath, | ||
[string]$PythonInstallerHash | ||
) | ||
$PythonInstallerUrl = "https://www.python.org/ftp/python/$PythonVersion/$PythonInstaller" | ||
$PythonInstallerPath = "C:\tools\$PythonInstaller" | ||
|
||
# Downloads installer | ||
Write-Host "Downloading the Python installer: $PythonInstallerUrl => $PythonInstallerPath" | ||
Invoke-WebRequest -Uri $PythonInstallerUrl -OutFile $PythonInstallerPath | ||
|
||
# Validates checksum | ||
$HashFromDownload = Get-FileHash -Path $PythonInstallerPath -Algorithm MD5 | ||
if ($HashFromDownload.Hash -ne $PythonInstallerHash) { | ||
throw "Invalid Python installer: failed checksum!" | ||
} | ||
Write-Host "Python installer $PythonInstallerPath validated." | ||
|
||
# Installs Python | ||
& $PythonInstallerPath /passive InstallAllUsers=1 PrependPath=1 Include_test=0 TargetDir=$PythonInstallPath | ||
if (-Not $?) { | ||
throw "The Python installation exited with error!" | ||
} | ||
|
||
# Validates Python binary | ||
# NOTE(lidiz) Even if the install command finishes in the script, that | ||
# doesn't mean the Python installation is finished. If using "ps" to check | ||
# for running processes, you might see ongoing installers at this point. | ||
# So, we needs this "hack" to reliably validate that the Python binary is | ||
# functioning properly. | ||
$ValidationStartTime = Get-Date | ||
$EarlyExitDDL = $ValidationStartTime.addminutes(5) | ||
$PythonBinary = "$PythonInstallPath\python.exe" | ||
While ($True) { | ||
$CurrentTime = Get-Date | ||
if ($CurrentTime -ge $EarlyExitDDL) { | ||
throw "Invalid Python installation! Timeout!" | ||
} | ||
& $PythonBinary -c 'print(42)' | ||
if ($?) { | ||
Write-Host "Python binary works properly." | ||
break | ||
} | ||
Start-Sleep -Seconds 1 | ||
} | ||
|
||
# Installs pip | ||
& $PythonBinary -m ensurepip --user | ||
|
||
Write-Host "Python $PythonVersion installed by $PythonInstaller at $PythonInstallPath." | ||
} | ||
|
||
$Python38x86Config = @{ | ||
PythonVersion = "3.8.0" | ||
PythonInstaller = "python-3.8.0.exe" | ||
PythonInstallPath = "C:\Python38_32bit" | ||
PythonInstallerHash = "412a649d36626d33b8ca5593cf18318c" | ||
} | ||
Install-Python @Python38x86Config | ||
|
||
$Python38x64Config = @{ | ||
PythonVersion = "3.8.0" | ||
PythonInstaller = "python-3.8.0-amd64.exe" | ||
PythonInstallPath = "C:\Python38" | ||
PythonInstallerHash = "29ea87f24c32f5e924b7d63f8a08ee8d" | ||
} | ||
Install-Python @Python38x64Config |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters