mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00
Update winmake.ps1 to build arm64 artifacts
Winmake could only build amd64 artifacts (podman-remote, gvproxy, win-sshproxy, podman.msi and podman-setup.exe). This commit makes the necessary change to winmake so that it: 1) builds arm64 artifacts when executed on arm64 2) cross-compiles to arm64/amd64 with the `-architecture` parameter It depends on https://github.com/containers/podman/pull/26023 that removes the need to build `check.c` code (that is not used anyway). Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
This commit is contained in:
@ -55,6 +55,7 @@ if ($args.Count -lt 1 -or $args[0].Length -lt 1) {
|
|||||||
Write-Host 'Uses Env Vars: '
|
Write-Host 'Uses Env Vars: '
|
||||||
Write-Host ' $ENV:FETCH_BASE_URL - GitHub Repo Address to locate release on'
|
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: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 Settings for signing (optional)'
|
||||||
Write-Host ' $ENV:VAULT_ID'
|
Write-Host ' $ENV:VAULT_ID'
|
||||||
Write-Host ' $ENV:APP_ID'
|
Write-Host ' $ENV:APP_ID'
|
||||||
@ -103,6 +104,16 @@ if ($ENV:INSTVER -eq "") {
|
|||||||
Exit 1
|
Exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$installerPlatform = ""
|
||||||
|
if ($null -eq $ENV:PODMAN_ARCH -or $ENV:PODMAN_ARCH -eq "amd64") {
|
||||||
|
$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",
|
SignItem @("artifacts/win-sshproxy.exe",
|
||||||
"artifacts/podman.exe")
|
"artifacts/podman.exe")
|
||||||
$gvExists = Test-Path "artifacts/gvproxy.exe"
|
$gvExists = Test-Path "artifacts/gvproxy.exe"
|
||||||
@ -123,10 +134,10 @@ if ($gvExists) {
|
|||||||
if (Test-Path ./obj) {
|
if (Test-Path ./obj) {
|
||||||
Remove-Item ./obj -Recurse -Force -Confirm:$false
|
Remove-Item ./obj -Recurse -Force -Confirm:$false
|
||||||
}
|
}
|
||||||
dotnet build podman.wixproj /property:DefineConstants="VERSION=$ENV:INSTVER" -o .; ExitOnError
|
dotnet build podman.wixproj /property:DefineConstants="VERSION=$ENV:INSTVER" /property:InstallerPlatform="$installerPlatform" -o .; ExitOnError
|
||||||
SignItem @("en-US\podman.msi")
|
SignItem @("en-US\podman.msi")
|
||||||
|
|
||||||
dotnet build podman-setup.wixproj /property:DefineConstants="VERSION=$ENV:INSTVER" -o .; ExitOnError
|
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
|
wix burn detach podman-setup.exe -engine engine.exe; ExitOnError
|
||||||
SignItem @("engine.exe")
|
SignItem @("engine.exe")
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
<Project Sdk="WixToolset.Sdk/5.0.2">
|
<Project Sdk="WixToolset.Sdk/5.0.2">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<InstallerPlatform>x64</InstallerPlatform>
|
|
||||||
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
|
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
|
||||||
<OutputType>Bundle</OutputType>
|
<OutputType>Bundle</OutputType>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
<Project Sdk="WixToolset.Sdk/5.0.2">
|
<Project Sdk="WixToolset.Sdk/5.0.2">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<InstallerPlatform>x64</InstallerPlatform>
|
|
||||||
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
|
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
-->
|
-->
|
||||||
<SetProperty Id="HIDE_PROVIDER_CHOICE" After="AppSearch" Value="1" Sequence="first" Condition="(SKIP_CONFIG_FILE_CREATION = 1) OR (MACHINE_PROVIDER_CONFIG_FILE_PATH) OR (MAIN_EXECUTABLE_FILE_PATH)" />
|
<SetProperty Id="HIDE_PROVIDER_CHOICE" After="AppSearch" Value="1" Sequence="first" Condition="(SKIP_CONFIG_FILE_CREATION = 1) OR (MACHINE_PROVIDER_CONFIG_FILE_PATH) OR (MAIN_EXECUTABLE_FILE_PATH)" />
|
||||||
|
|
||||||
<CustomAction Id="OpenGuide" DllEntry="WixShellExec" Impersonate="yes" BinaryRef="Wix4UtilCA_X86" />
|
<CustomAction Id="OpenGuide" DllEntry="WixShellExec" Impersonate="yes" BinaryRef="Wix4UtilCA_$(sys.BUILDARCHSHORT)" />
|
||||||
<util:BroadcastEnvironmentChange />
|
<util:BroadcastEnvironmentChange />
|
||||||
<Feature Id="Complete" Level="1">
|
<Feature Id="Complete" Level="1">
|
||||||
<ComponentRef Id="INSTALLDIR_Component" />
|
<ComponentRef Id="INSTALLDIR_Component" />
|
||||||
|
47
winmake.ps1
47
winmake.ps1
@ -1,5 +1,22 @@
|
|||||||
|
|
||||||
#!/usr/bin/env powershell
|
#!/usr/bin/env powershell
|
||||||
|
[CmdletBinding(PositionalBinding=$false)]
|
||||||
|
param (
|
||||||
|
[ValidateSet("amd64", "arm64")]
|
||||||
|
[Alias("arch")]
|
||||||
|
[string]$architecture = $(
|
||||||
|
$defaultArchitecture = "amd64"
|
||||||
|
$arch = try {& go env GOARCH} catch {
|
||||||
|
Write-Warning "Failed retriving the host architecture, using default ($defaultArchitecture). Is Go installed?"
|
||||||
|
return $defaultArchitecture
|
||||||
|
}
|
||||||
|
if ($arch -cnotin @("arm64", "amd64")) {
|
||||||
|
Write-Warning "Unsupported architecture $arch. Using default ($defaultArchitecture)."
|
||||||
|
return $defaultArchitecture
|
||||||
|
}
|
||||||
|
),
|
||||||
|
[parameter(ValueFromRemainingArguments)][object[]]$params = @()
|
||||||
|
)
|
||||||
|
|
||||||
. ./contrib/cirrus/win-lib.ps1
|
. ./contrib/cirrus/win-lib.ps1
|
||||||
|
|
||||||
@ -12,6 +29,7 @@ function Podman-Remote{
|
|||||||
$commit = Git-Commit
|
$commit = Git-Commit
|
||||||
$commit = "-X github.com/containers/podman/v5/libpod/define.gitCommit=$commit "
|
$commit = "-X github.com/containers/podman/v5/libpod/define.gitCommit=$commit "
|
||||||
|
|
||||||
|
$ENV:GOARCH = $architecture
|
||||||
Run-Command "go build --ldflags `"$commit $buildInfo `" --tags `"$remotetags`" --o ./bin/windows/podman.exe ./cmd/podman/."
|
Run-Command "go build --ldflags `"$commit $buildInfo `" --tags `"$remotetags`" --o ./bin/windows/podman.exe ./cmd/podman/."
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,8 +93,14 @@ function Win-SSHProxy {
|
|||||||
$match = Select-String -Path "$PSScriptRoot\go.mod" -Pattern "github.com/containers/gvisor-tap-vsock\s+(v[\d\.]+)"
|
$match = Select-String -Path "$PSScriptRoot\go.mod" -Pattern "github.com/containers/gvisor-tap-vsock\s+(v[\d\.]+)"
|
||||||
$Version = $match.Matches.Groups[1].Value
|
$Version = $match.Matches.Groups[1].Value
|
||||||
}
|
}
|
||||||
|
Write-Host "Downloading gvproxy version $version"
|
||||||
|
if ($architecture -eq "amd64") {
|
||||||
curl.exe -sSL -o "./bin/windows/gvproxy.exe" --retry 5 "https://github.com/containers/gvisor-tap-vsock/releases/download/$Version/gvproxy-windowsgui.exe"
|
curl.exe -sSL -o "./bin/windows/gvproxy.exe" --retry 5 "https://github.com/containers/gvisor-tap-vsock/releases/download/$Version/gvproxy-windowsgui.exe"
|
||||||
curl.exe -sSL -o "./bin/windows/win-sshproxy.exe" --retry 5 "https://github.com/containers/gvisor-tap-vsock/releases/download/$Version/win-sshproxy.exe"
|
curl.exe -sSL -o "./bin/windows/win-sshproxy.exe" --retry 5 "https://github.com/containers/gvisor-tap-vsock/releases/download/$Version/win-sshproxy.exe"
|
||||||
|
} else {
|
||||||
|
curl.exe -sSL -o "./bin/windows/gvproxy.exe" --retry 5 "https://github.com/containers/gvisor-tap-vsock/releases/download/$Version/gvproxy-windows-arm64.exe"
|
||||||
|
curl.exe -sSL -o "./bin/windows/win-sshproxy.exe" --retry 5 "https://github.com/containers/gvisor-tap-vsock/releases/download/$Version/win-sshproxy-arm64.exe"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function Installer{
|
function Installer{
|
||||||
@ -115,6 +139,7 @@ function Installer{
|
|||||||
|
|
||||||
# Run \contrib\win-installer\build.ps1
|
# Run \contrib\win-installer\build.ps1
|
||||||
Push-Location $PSScriptRoot\contrib\win-installer
|
Push-Location $PSScriptRoot\contrib\win-installer
|
||||||
|
$ENV:PODMAN_ARCH = $architecture # This is used by the "build.ps1" script
|
||||||
Run-Command ".\build.ps1 $version $suffix `"$zipFileDest`""
|
Run-Command ".\build.ps1 $version $suffix `"$zipFileDest`""
|
||||||
Pop-Location
|
Pop-Location
|
||||||
}
|
}
|
||||||
@ -298,7 +323,7 @@ function Build-Distribution-Zip-File{
|
|||||||
);
|
);
|
||||||
$binariesFolder = "$PSScriptRoot\bin\windows"
|
$binariesFolder = "$PSScriptRoot\bin\windows"
|
||||||
$documentationFolder = "$PSScriptRoot\docs\build\remote\"
|
$documentationFolder = "$PSScriptRoot\docs\build\remote\"
|
||||||
$zipFile = "$destinationPath\podman-remote-release-windows_amd64.zip"
|
$zipFile = "$destinationPath\podman-remote-release-windows_$architecture.zip"
|
||||||
|
|
||||||
# Create a temporary folder to store the distribution files
|
# Create a temporary folder to store the distribution files
|
||||||
$tempFolder = New-Item -ItemType Directory -Force -Path "$env:TEMP\podman-windows"
|
$tempFolder = New-Item -ItemType Directory -Force -Path "$env:TEMP\podman-windows"
|
||||||
@ -332,7 +357,7 @@ function Get-Podman-Version{
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Init script
|
# Init script
|
||||||
$target = $args[0]
|
$target = $params[0]
|
||||||
|
|
||||||
$remotetags = "remote exclude_graphdriver_btrfs containers_image_openpgp"
|
$remotetags = "remote exclude_graphdriver_btrfs containers_image_openpgp"
|
||||||
|
|
||||||
@ -344,8 +369,8 @@ switch ($target) {
|
|||||||
Local-Unit
|
Local-Unit
|
||||||
}
|
}
|
||||||
'localmachine' {
|
'localmachine' {
|
||||||
if ($args.Count -gt 1) {
|
if ($params.Count -gt 1) {
|
||||||
$files = $args[1]
|
$files = $params[1]
|
||||||
}
|
}
|
||||||
Local-Machine -files $files
|
Local-Machine -files $files
|
||||||
}
|
}
|
||||||
@ -353,21 +378,21 @@ switch ($target) {
|
|||||||
Make-Clean
|
Make-Clean
|
||||||
}
|
}
|
||||||
{$_ -in 'win-sshproxy', 'win-gvproxy'} {
|
{$_ -in 'win-sshproxy', 'win-gvproxy'} {
|
||||||
if ($args.Count -gt 1) {
|
if ($params.Count -gt 1) {
|
||||||
$ref = $args[1]
|
$ref = $params[1]
|
||||||
}
|
}
|
||||||
Win-SSHProxy($ref)
|
Win-SSHProxy($ref)
|
||||||
}
|
}
|
||||||
'installer' {
|
'installer' {
|
||||||
if ($args.Count -gt 1) {
|
if ($params.Count -gt 1) {
|
||||||
Installer -version $args[1]
|
Installer -version $params[1]
|
||||||
} else {
|
} else {
|
||||||
Installer
|
Installer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'installertest' {
|
'installertest' {
|
||||||
if ($args.Count -gt 1) {
|
if ($params.Count -gt 1) {
|
||||||
Test-Installer -provider $args[1]
|
Test-Installer -provider $params[1]
|
||||||
} else {
|
} else {
|
||||||
Test-Installer
|
Test-Installer
|
||||||
}
|
}
|
||||||
@ -385,7 +410,7 @@ switch ($target) {
|
|||||||
Lint
|
Lint
|
||||||
}
|
}
|
||||||
default {
|
default {
|
||||||
Write-Host "Usage: " $MyInvocation.MyCommand.Name "<target> [options]"
|
Write-Host "Usage: " $MyInvocation.MyCommand.Name "<target> [options] [<-architecture|-arch>=<amd64|arm64>]"
|
||||||
Write-Host
|
Write-Host
|
||||||
Write-Host "Example: Build podman-remote "
|
Write-Host "Example: Build podman-remote "
|
||||||
Write-Host " .\winmake podman-remote"
|
Write-Host " .\winmake podman-remote"
|
||||||
|
Reference in New Issue
Block a user