35 lines
1.7 KiB
PowerShell
35 lines
1.7 KiB
PowerShell
param(
|
|
[Parameter(Mandatory=$true)][string]$PublicKey,
|
|
[string]$Iscc,
|
|
[string]$Vcvars,
|
|
[switch]$PrepareEnvironment
|
|
)
|
|
$ErrorActionPreference = 'Stop'
|
|
$projectRoot = (Resolve-Path (Join-Path $PSScriptRoot '../..')).Path
|
|
$buildPython = Join-Path $projectRoot '.build-venv/Scripts/python.exe'
|
|
if ($PrepareEnvironment) {
|
|
$sourcePython = Join-Path $projectRoot '.venv/Scripts/python.exe'
|
|
if (-not (Test-Path -LiteralPath $sourcePython)) {
|
|
throw 'Create the CPU project environment from requirements-windows-cpu.lock.txt first.'
|
|
}
|
|
if (-not (Test-Path -LiteralPath $buildPython)) {
|
|
& $sourcePython -m venv (Join-Path $projectRoot '.build-venv')
|
|
if ($LASTEXITCODE -ne 0) { throw 'Build venv creation failed' }
|
|
}
|
|
# Copy a pinned runtime snapshot; no symlinks and no changes to the developer environment.
|
|
$sourceLib = Join-Path $projectRoot '.venv/Lib/site-packages'
|
|
$buildLib = Join-Path $projectRoot '.build-venv/Lib/site-packages'
|
|
& $sourcePython -c 'import shutil,sys;shutil.copytree(sys.argv[1],sys.argv[2],dirs_exist_ok=True)' $sourceLib $buildLib
|
|
if ($LASTEXITCODE -ne 0) { throw 'Runtime snapshot failed' }
|
|
& $buildPython -m pip install --no-deps -r (Join-Path $PSScriptRoot 'build-tools.lock.txt')
|
|
if ($LASTEXITCODE -ne 0) { throw 'Build tools installation failed' }
|
|
}
|
|
if (-not (Test-Path -LiteralPath $buildPython)) { throw 'Use -PrepareEnvironment for the first build.' }
|
|
& $buildPython -m pip check
|
|
if ($LASTEXITCODE -ne 0) { throw 'Dependency check failed' }
|
|
$buildArgs = @((Join-Path $PSScriptRoot 'build.py'),'--public-key',(Resolve-Path -LiteralPath $PublicKey).Path)
|
|
if ($Iscc) { $buildArgs += @('--iscc',$Iscc) }
|
|
if ($Vcvars) { $buildArgs += @('--vcvars',$Vcvars) }
|
|
& $buildPython @buildArgs
|
|
exit $LASTEXITCODE
|