mirror of
https://github.com/containers/podman.git
synced 2025-12-08 23:00:23 +08:00
Resolves Win Installer CI issues where dep processing variance can pull in gpgme, which doesn't compile on Windows without a specialized msys2 setup. Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
//go:build windows
|
|
// +build windows
|
|
|
|
package wutil
|
|
|
|
import (
|
|
"bufio"
|
|
"os/exec"
|
|
"strings"
|
|
"syscall"
|
|
|
|
"golang.org/x/text/encoding/unicode"
|
|
"golang.org/x/text/transform"
|
|
)
|
|
|
|
func SilentExec(command string, args ...string) error {
|
|
cmd := exec.Command(command, args...)
|
|
cmd.SysProcAttr = &syscall.SysProcAttr{CreationFlags: 0x08000000}
|
|
cmd.Stdout = nil
|
|
cmd.Stderr = nil
|
|
return cmd.Run()
|
|
}
|
|
|
|
func SilentExecCmd(command string, args ...string) *exec.Cmd {
|
|
cmd := exec.Command(command, args...)
|
|
cmd.SysProcAttr = &syscall.SysProcAttr{CreationFlags: 0x08000000}
|
|
return cmd
|
|
}
|
|
|
|
func IsWSLInstalled() bool {
|
|
cmd := SilentExecCmd("wsl", "--status")
|
|
out, err := cmd.StdoutPipe()
|
|
cmd.Stderr = nil
|
|
if err != nil {
|
|
return false
|
|
}
|
|
if err = cmd.Start(); err != nil {
|
|
return false
|
|
}
|
|
scanner := bufio.NewScanner(transform.NewReader(out, unicode.UTF16(unicode.LittleEndian, unicode.UseBOM).NewDecoder()))
|
|
result := true
|
|
for scanner.Scan() {
|
|
line := scanner.Text()
|
|
// Windows 11 does not set an error exit code when a kernel is not avail
|
|
if strings.Contains(line, "kernel file is not found") {
|
|
result = false
|
|
break
|
|
}
|
|
}
|
|
if err := cmd.Wait(); !result || err != nil {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|