Files
Mario Loriedo 35e1c2033a Fix windows arm64 installer build
This is a followup of https://github.com/containers/podman/pull/26048

It fixes `process-release.ps1` that was always looking for the amd64 release
zip file, even if `$env:PODMAN_ARCH` was set to arm64. With this fix it looks
for the right zip file.

It fixes `winmake.ps1` that, when the `-arch` param was not passed, set `$env:PODMAN_ARCH`
to the empty string instead of the local `$env:GOARCH`.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2025-05-07 18:33:32 +02:00

155 lines
4.5 KiB
PowerShell

function ExitOnError() {
if ($LASTEXITCODE -ne 0) {
Exit 1
}
}
function SignItem() {
param(
[Parameter(Mandatory)]
[string[]]$fileNames
)
foreach ($val in $ENV:APP_ID, $ENV:TENANT_ID, $ENV:CLIENT_SECRET, $ENV:CERT_NAME) {
if (!$val) {
Write-Host "Skipping signing (no config)"
Return
}
}
CheckCommand AzureSignTool.exe "AzureSignTool"
AzureSignTool.exe sign -du "https://github.com/containers/podman" `
-kvu "https://$ENV:VAULT_ID.vault.azure.net" `
-kvi $ENV:APP_ID `
-kvt $ENV:TENANT_ID `
-kvs $ENV:CLIENT_SECRET `
-kvc $ENV:CERT_NAME `
-tr http://timestamp.digicert.com $fileNames
ExitOnError
}
function CheckCommand() {
param(
[Parameter(Mandatory)]
[string] $cmd,
[Parameter(Mandatory)]
[string] $description
)
if (! (Get-Command $cmd -errorAction SilentlyContinue)) {
Write-Host "Required dep `"$description`" is not installed"
Exit 1
}
}
function CheckRequirements() {
CheckCommand "wix" "WiX Toolset"
CheckCommand "go" "Golang"
}
if ($args.Count -lt 1 -or $args[0].Length -lt 1) {
Write-Host "Usage: " $MyInvocation.MyCommand.Name "<version> [dev|prod] [release_dir]"
Write-Host
Write-Host 'Uses Env Vars: '
Write-Host ' $ENV:FETCH_BASE_URL - GitHub Repo Address to locate release on'
Write-Host ' $ENV:V531_SETUP_EXE_PATH - Path to v5.3.1 setup.exe used to build the patch'
Write-Host ' $ENV:PODMAN_ARCH - Installer target platform (x64 or arm64)'
Write-Host 'Env Settings for signing (optional)'
Write-Host ' $ENV:VAULT_ID'
Write-Host ' $ENV:APP_ID'
Write-Host ' $ENV:TENANT_ID'
Write-Host ' $ENV:CLIENT_SECRET'
Write-Host ' $ENV:CERT_NAME'
Write-Host
Write-Host "Example: Download and build from the official Github release (dev output): "
Write-Host " .\build.ps1 4.2.0"
Write-Host
Write-Host "Example: Build a dev build from a pre-download release "
Write-Host " .\build.ps1 4.2.0 dev fetchdir"
Write-Host
Exit 1
}
# Pre-set to standard locations in-case build env does not refresh paths
$Env:Path="$Env:Path;C:\Users\micro\mingw64\bin;C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin;;C:\Program Files\Go\bin;C:\Program Files\dotnet"
CheckRequirements
$version = $args[0]
if ($version[0] -eq "v") {
$version = $version.Substring(1)
}
$suffix = "-dev"
if ($args.Count -gt 1 -and $args[1] -eq "prod") {
$suffix = ""
}
$releaseDir = ""
if ($args.Count -gt 2) {
$releaseDir = $args[2]
}
.\process-release.ps1 $version $releaseDir
if ($LASTEXITCODE -eq 2) {
Write-Host "Skip signaled, relaying skip"
Exit 2
}
if ($ENV:INSTVER -eq "") {
Write-Host "process-release did not define an install version!"
Exit 1
}
$installerPlatform = ""
if ($null -eq $ENV:PODMAN_ARCH -or "" -eq $ENV:PODMAN_ARCH -or "amd64" -eq $ENV:PODMAN_ARCH) {
$installerPlatform = "x64"
} elseif ($ENV:PODMAN_ARCH -eq "arm64") {
$installerPlatform = "arm64"
} else {
Write-Host "Unknown architecture $ENV:PODMAN_ARCH. Valid options are amd64 or arm64."
Exit 1
}
SignItem @("artifacts/win-sshproxy.exe",
"artifacts/podman.exe")
$gvExists = Test-Path "artifacts/gvproxy.exe"
if ($gvExists) {
SignItem @("artifacts/gvproxy.exe")
Remove-Item Env:\UseGVProxy -ErrorAction SilentlyContinue
} else {
$env:UseGVProxy = "Skip"
}
# Retaining for possible future additions
# $pExists = Test-Path "artifacts/policy.json"
# if ($pExists) {
# Remove-Item Env:\IncludePolicyJSON -ErrorAction SilentlyContinue
# } else {
# $env:IncludePolicyJSON = "Skip"
# }
if (Test-Path ./obj) {
Remove-Item ./obj -Recurse -Force -Confirm:$false
}
dotnet build podman.wixproj /property:DefineConstants="VERSION=$ENV:INSTVER" /property:InstallerPlatform="$installerPlatform" -o .; ExitOnError
SignItem @("en-US\podman.msi")
dotnet build podman-setup.wixproj /property:DefineConstants="VERSION=$ENV:INSTVER" /property:InstallerPlatform="$installerPlatform" -o .; ExitOnError
wix burn detach podman-setup.exe -engine engine.exe; ExitOnError
SignItem @("engine.exe")
$file = "podman-$version$suffix-setup.exe"
wix burn reattach -engine engine.exe podman-setup.exe -o $file; ExitOnError
SignItem @("$file")
if (Test-Path -Path shasums) {
$hash = (Get-FileHash -Algorithm SHA256 $file).Hash.ToLower()
Write-Output "$hash $file" | Out-File -Append -FilePath shasums
}
Write-Host "Complete"
Get-ChildItem "podman-$version$suffix-setup.exe"