Resolve Windows cross-compilation issue

This commit is contained in:
Trevor Slocum 2019-07-15 22:46:55 -07:00
parent f6204aca7f
commit 1624767cde
6 changed files with 77 additions and 46 deletions

1
.gitignore vendored
View File

@ -4,4 +4,5 @@ dist/
gmenu
!cmd/gmenu/
gtkmenu
!cmd/gtkmenu/
vendor/

View File

@ -4,16 +4,11 @@ import (
"flag"
"fmt"
"log"
"os"
"os/exec"
"sort"
"strings"
"syscall"
"time"
"git.sr.ht/~tslocum/desktop"
"git.sr.ht/~tslocum/gmenu/pkg/config"
"github.com/jroimartin/gocui"
"github.com/kballard/go-shellquote"
"github.com/pkg/errors"
)
@ -142,33 +137,5 @@ func listSelect() error {
return errors.Wrap(err, "failed to create run script")
}
var cmd *exec.Cmd
if runInTerminal {
cmd = exec.Command(config.TerminalCommand, "-e", runScript)
} else {
cmd = exec.Command("/usr/bin/env", "bash", "-c", runScript)
}
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true, Pgid: 0}
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err = cmd.Start()
if err != nil {
return errors.Wrap(err, "failed to start command")
}
if !waitUntilFinished {
return gocui.ErrQuit
}
err = cmd.Wait()
_, isExitErr := err.(*exec.ExitError)
if err != nil && !isExitErr {
return errors.Wrap(err, "failed to execute command")
}
return gocui.ErrQuit
return run(runScript, waitUntilFinished, runInTerminal)
}

45
cmd/gmenu/run_linux.go Normal file
View File

@ -0,0 +1,45 @@
// +build linux
package main
import (
"os"
"os/exec"
"syscall"
"git.sr.ht/~tslocum/gmenu/pkg/config"
"github.com/jroimartin/gocui"
"github.com/pkg/errors"
)
func run(runScript string, waitUntilFinished, runInTerminal bool) error {
var cmd *exec.Cmd
if runInTerminal {
cmd = exec.Command(config.TerminalCommand, "-e", runScript)
} else {
cmd = exec.Command("/usr/bin/env", "bash", "-c", runScript)
}
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true, Pgid: 0}
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err := cmd.Start()
if err != nil {
return errors.Wrap(err, "failed to start command")
}
if !waitUntilFinished {
return gocui.ErrQuit
}
err = cmd.Wait()
_, isExitErr := err.(*exec.ExitError)
if err != nil && !isExitErr {
return errors.Wrap(err, "failed to execute command")
}
return gocui.ErrQuit
}

8
cmd/gmenu/run_windows.go Normal file
View File

@ -0,0 +1,8 @@
// +build windows
package main
func run(runScript string, waitUntilFinished, runInTerminal bool) error {
// TODO
return nil
}

3
cmd/gtkmenu/main.go Normal file
View File

@ -0,0 +1,3 @@
package gtkmenu
func main() {}

View File

@ -1,26 +1,33 @@
project_name: gophast
project_name: gmenu
before:
hooks:
- go mod download
builds:
-
main: ./cmd/gmenu/main.go
- binary: gmenu
main: ./cmd/gmenu
env:
- CGO_ENABLED=0
ldflags:
- -s -w -X git.sr.ht/~tslocum/gmenu/pkg/config.Version={{.Version}}
goos:
- linux
- windows
goarch:
- 386
- amd64
- binary: gtkmenu
main: ./cmd/gtkmenu
env:
- CGO_ENABLED=0
ldflags:
- -s -w -X git.sr.ht/~tslocum/gmenu/pkg/config.Version={{.Version}}
goos:
# - darwin
# - freebsd
- linux
- windows
goarch:
- 386
- amd64
# - arm
# - arm64
# - ppc64
# - ppc64le
# goarm:
# - 6
# - 7
archive:
replacements:
386: i386