mirror of https://github.com/containers/podman.git
				
				
				
			Merge pull request #20031 from ashley-cui/winmake
Makefile equiv Powershell script
This commit is contained in:
		
						commit
						53e6a4435f
					
				|  | @ -29,7 +29,6 @@ import ( | ||||||
| 	"github.com/containers/storage/pkg/lockfile" | 	"github.com/containers/storage/pkg/lockfile" | ||||||
| 	"github.com/digitalocean/go-qemu/qmp" | 	"github.com/digitalocean/go-qemu/qmp" | ||||||
| 	"github.com/sirupsen/logrus" | 	"github.com/sirupsen/logrus" | ||||||
| 	"golang.org/x/sys/unix" |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
|  | @ -590,15 +589,7 @@ func (v *MachineVM) qemuPid() (int, error) { | ||||||
| 		logrus.Warnf("Reading QEMU pidfile: %v", err) | 		logrus.Warnf("Reading QEMU pidfile: %v", err) | ||||||
| 		return -1, nil | 		return -1, nil | ||||||
| 	} | 	} | ||||||
| 
 | 	return findProcess(pid) | ||||||
| 	if err := unix.Kill(pid, 0); err != nil { |  | ||||||
| 		if err == unix.ESRCH { |  | ||||||
| 			return -1, nil |  | ||||||
| 		} |  | ||||||
| 		return -1, fmt.Errorf("pinging QEMU process: %w", err) |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return pid, nil |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Start executes the qemu command line and forks it
 | // Start executes the qemu command line and forks it
 | ||||||
|  | @ -971,7 +962,7 @@ func (v *MachineVM) Stop(_ string, _ machine.StopOptions) error { | ||||||
| 		return stopErr | 		return stopErr | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err := unix.Kill(qemuPid, unix.SIGKILL); err != nil { | 	if err := sigKill(qemuPid); err != nil { | ||||||
| 		if stopErr == nil { | 		if stopErr == nil { | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -43,3 +43,17 @@ func extractTargetPath(paths []string) string { | ||||||
| 	} | 	} | ||||||
| 	return paths[0] | 	return paths[0] | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func sigKill(pid int) error { | ||||||
|  | 	return unix.Kill(pid, unix.SIGKILL) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func findProcess(pid int) (int, error) { | ||||||
|  | 	if err := unix.Kill(pid, 0); err != nil { | ||||||
|  | 		if err == unix.ESRCH { | ||||||
|  | 			return -1, nil | ||||||
|  | 		} | ||||||
|  | 		return -1, fmt.Errorf("pinging QEMU process: %w", err) | ||||||
|  | 	} | ||||||
|  | 	return pid, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -50,3 +50,11 @@ func extractTargetPath(paths []string) string { | ||||||
| 	dedup := regexp.MustCompile(`//+`) | 	dedup := regexp.MustCompile(`//+`) | ||||||
| 	return dedup.ReplaceAllLiteralString("/"+target, "/") | 	return dedup.ReplaceAllLiteralString("/"+target, "/") | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func sigKill(pid int) error { | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func findProcess(pid int) (int, error) { | ||||||
|  | 	return -1, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,103 @@ | ||||||
|  | $ErrorActionPreference = 'Stop' | ||||||
|  | 
 | ||||||
|  | # Targets | ||||||
|  | function Podman-Remote{ | ||||||
|  |     New-Item  ./bin/windows -ItemType Directory -ea 0 | ||||||
|  | 
 | ||||||
|  |     $buildInfo = Get-Date -UFormat %s -Millisecond 0 | ||||||
|  |     $buildInfo = "-X github.com/containers/podman/v4/libpod/define.buildInfo=$buildInfo " | ||||||
|  |     $commit = Git-Commit | ||||||
|  |     $commit = "-X github.com/containers/podman/v4/libpod/define.gitCommit=$commit " | ||||||
|  | 
 | ||||||
|  |     Run-Command "go build --ldflags `"$commit $buildInfo `" --tags `"$remotetags`" --o ./bin/windows/podman.exe ./cmd/podman/." | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function Make-Clean{ | ||||||
|  |      Remove-Item ./bin -Recurse -Force -Confirm:$false | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function Local-Machine { | ||||||
|  |     param ( | ||||||
|  |     [string]$files | ||||||
|  |     ); | ||||||
|  |     Build-Ginkgo | ||||||
|  |     if ($files) { | ||||||
|  |          $files = " --focus-file $files " | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     Run-Command "./test/tools/build/ginkgo.exe -vv  --tags `"$remotetags`" -timeout=90m --trace --no-color $files pkg/machine/e2e/. " | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Helpers | ||||||
|  | function Build-Ginkgo{ | ||||||
|  |     if (Test-Path -Path ./test/tools/build/ginkgo.exe -PathType Leaf) { | ||||||
|  |         return | ||||||
|  |     } | ||||||
|  |     Write-Host "Building Ginkgo" | ||||||
|  |     Push-Location ./test/tools | ||||||
|  |     Run-Command "go build -o build/ginkgo.exe ./vendor/github.com/onsi/ginkgo/v2/ginkgo" | ||||||
|  |     Pop-Location | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function Git-Commit{ | ||||||
|  |     # git is not installed by default on windows, | ||||||
|  |     # so if we can't get the commit, we don't include this info | ||||||
|  |     Get-Command git  -ErrorAction SilentlyContinue  | out-null | ||||||
|  |     if(!$?){ | ||||||
|  |         return | ||||||
|  |     } | ||||||
|  |     $commit = git rev-parse HEAD | ||||||
|  |     $dirty = git status --porcelain --untracked-files=no | ||||||
|  |      if ($dirty){ | ||||||
|  |         $commit = "$commit-dirty" | ||||||
|  |      } | ||||||
|  |      return $commit | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function Run-Command { | ||||||
|  |     param ( | ||||||
|  |         [string] $command | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     Write-Host $command | ||||||
|  | 
 | ||||||
|  |     Invoke-Expression $command | ||||||
|  |     $result = $LASTEXITCODE | ||||||
|  |     if ($result -ne 0) { | ||||||
|  |         Write-Host "Command failed (exit: $result)" | ||||||
|  |         Exit $result | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | # Init script | ||||||
|  | $target = $args[0] | ||||||
|  | 
 | ||||||
|  | $remotetags = "remote exclude_graphdriver_btrfs btrfs_noversion exclude_graphdriver_devicemapper containers_image_openpgp" | ||||||
|  | $Env:GOOS = "windows"; $Env:GOARCH = "amd64" | ||||||
|  | 
 | ||||||
|  | switch ($target) { | ||||||
|  |     {$_ -in '', 'podman-remote', 'podman'} { | ||||||
|  |         Podman-Remote | ||||||
|  |     } | ||||||
|  |     'localmachine' { | ||||||
|  |         if ($args.Count -gt 1) { | ||||||
|  |             $files = $args[1] | ||||||
|  |         } | ||||||
|  |         Local-Machine  -files $files | ||||||
|  |     } | ||||||
|  |     'clean' { | ||||||
|  |         Make-Clean | ||||||
|  |     } | ||||||
|  |     default { | ||||||
|  |         Write-Host "Usage: " $MyInvocation.MyCommand.Name "<target> [options]" | ||||||
|  |         Write-Host | ||||||
|  |         Write-Host "Example: Build podman-remote " | ||||||
|  |         Write-Host " .\winmake podman-remote" | ||||||
|  |         Write-Host | ||||||
|  |         Write-Host "Example: Run all machine tests " | ||||||
|  |         Write-Host " .\winmake localmachine" | ||||||
|  |         Write-Host | ||||||
|  |         Write-Host "Example: Run specfic machine tests " | ||||||
|  |         Write-Host " .\winmake localmachine "basic_test.go"" | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue