Skip to content

Commit

Permalink
Merge pull request #20031 from ashley-cui/winmake
Browse files Browse the repository at this point in the history
Makefile equiv Powershell script
  • Loading branch information
openshift-merge-robot authored Sep 21, 2023
2 parents ebbc423 + 6d8b304 commit 53e6a44
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 11 deletions.
13 changes: 2 additions & 11 deletions pkg/machine/qemu/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import (
"github.com/containers/storage/pkg/lockfile"
"github.com/digitalocean/go-qemu/qmp"
"github.com/sirupsen/logrus"
"golang.org/x/sys/unix"
)

var (
Expand Down Expand Up @@ -590,15 +589,7 @@ func (v *MachineVM) qemuPid() (int, error) {
logrus.Warnf("Reading QEMU pidfile: %v", err)
return -1, nil
}

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
return findProcess(pid)
}

// Start executes the qemu command line and forks it
Expand Down Expand Up @@ -971,7 +962,7 @@ func (v *MachineVM) Stop(_ string, _ machine.StopOptions) error {
return stopErr
}

if err := unix.Kill(qemuPid, unix.SIGKILL); err != nil {
if err := sigKill(qemuPid); err != nil {
if stopErr == nil {
return err
}
Expand Down
14 changes: 14 additions & 0 deletions pkg/machine/qemu/machine_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,17 @@ func extractTargetPath(paths []string) string {
}
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
}
8 changes: 8 additions & 0 deletions pkg/machine/qemu/machine_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,11 @@ func extractTargetPath(paths []string) string {
dedup := regexp.MustCompile(`//+`)
return dedup.ReplaceAllLiteralString("/"+target, "/")
}

func sigKill(pid int) error {
return nil
}

func findProcess(pid int) (int, error) {
return -1, nil
}
103 changes: 103 additions & 0 deletions winmake.ps1
Original file line number Diff line number Diff line change
@@ -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""
}
}

0 comments on commit 53e6a44

Please sign in to comment.