diff --git a/Makefile b/Makefile index 4aca6840cf..614f1d66ef 100644 --- a/Makefile +++ b/Makefile @@ -207,7 +207,6 @@ endif # win-sshproxy is checked out manually to keep from pulling in gvisor and it's transitive # dependencies. This is only used for the Windows client archives, which must # include this lightweight helper binary. -# GV_GITURL=https://github.com/containers/gvisor-tap-vsock.git GV_SHA=db608827124caa71ba411cec8ea959bb942984fe diff --git a/winmake.ps1 b/winmake.ps1 index 1c390b0801..56a29c3c00 100644 --- a/winmake.ps1 +++ b/winmake.ps1 @@ -2,7 +2,7 @@ $ErrorActionPreference = 'Stop' # Targets function Podman-Remote{ - New-Item ./bin/windows -ItemType Directory -ea 0 + New-Item -ItemType Directory -Force -Path "./bin/windows" $buildInfo = Get-Date -UFormat %s -Millisecond 0 $buildInfo = "-X github.com/containers/podman/v4/libpod/define.buildInfo=$buildInfo " @@ -28,6 +28,49 @@ function Local-Machine { Run-Command "./test/tools/build/ginkgo.exe -vv --tags `"$remotetags`" -timeout=90m --trace --no-color $files pkg/machine/e2e/. " } +# Expect starting directory to be /podman +function Win-SSHProxy { + param ( + [string]$Ref + ); + + # git is not installed by default on windows + # fail if git doesn't exist + Get-Command git -ErrorAction SilentlyContinue | out-null + if(!$?){ + Write-Host "Git not installed, cannot build Win-SSHProxy" + Exit 1 + } + + if (Test-Path ./tmp-gv) { + Remove-Item ./tmp-gv -Recurse -Force -Confirm:$false + } + + $GV_GITURL = "https://github.com/containers/gvisor-tap-vsock.git" + + New-Item ./tmp-gv -ItemType Directory -ea 0 + Push-Location ./tmp-gv + Run-Command "git init" + Run-Command "git remote add origin $GV_GITURL" + Run-Command "git fetch --depth 1 origin main" + Run-Command "git fetch --depth 1 --tags" + Run-Command "git checkout main" + if (-Not $Ref) { + Write-Host "empty" + $Ref = git describe --abbrev=0 + } + Run-Command "git checkout $Ref" + Run-Command "go build -ldflags -H=windowsgui -o bin/win-sshproxy.exe ./cmd/win-sshproxy" + Run-Command "go build -ldflags -H=windowsgui -o bin/gvproxy.exe ./cmd/gvproxy" + Pop-Location + + # Move location to ./bin/windows for packaging script and for Windows binary testing + New-Item -ItemType Directory -Force -Path "./bin/windows" + Copy-Item -Path "tmp-gv/bin/win-sshproxy.exe" -Destination "./bin/windows/" + Copy-Item -Path "tmp-gv/bin/gvproxy.exe" -Destination "./bin/windows/" + Remove-Item ./tmp-gv -Recurse -Force -Confirm:$false +} + # Helpers function Build-Ginkgo{ if (Test-Path -Path ./test/tools/build/ginkgo.exe -PathType Leaf) { @@ -48,10 +91,10 @@ function Git-Commit{ } $commit = git rev-parse HEAD $dirty = git status --porcelain --untracked-files=no - if ($dirty){ + if ($dirty){ $commit = "$commit-dirty" - } - return $commit + } + return $commit } function Run-Command { @@ -88,6 +131,12 @@ switch ($target) { 'clean' { Make-Clean } + 'win-sshproxy' { + if ($args.Count -gt 1) { + $ref = $args[1] + } + Win-SSHProxy -Ref $ref + } default { Write-Host "Usage: " $MyInvocation.MyCommand.Name " [options]" Write-Host