mirror of
https://github.com/containers/podman.git
synced 2025-06-22 01:48:54 +08:00
Merge pull request #20031 from ashley-cui/winmake
Makefile equiv Powershell script
This commit is contained in:
@ -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
|
||||||
|
}
|
||||||
|
103
winmake.ps1
Normal file
103
winmake.ps1
Normal file
@ -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""
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user