Eliminate transient container deps from wslkerninst

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>
This commit is contained in:
Jason T. Greene
2023-04-23 11:51:48 -05:00
parent c08859bd74
commit fb3b92b969
4 changed files with 61 additions and 47 deletions

View File

@ -0,0 +1,55 @@
//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
}