Merge pull request #390 from dpmcnevin/master
Added support for custom Go executable name.
diff --git a/Makefile b/Makefile
index eb244ef..340fd63 100644
--- a/Makefile
+++ b/Makefile
@@ -1,15 +1,16 @@
+GLIDE_GO_EXECUTABLE ?= go
VERSION := $(shell git describe --tags)
DIST_DIRS := find * -type d -exec
build:
- go build -o glide -ldflags "-X main.version=${VERSION}" glide.go
+ ${GLIDE_GO_EXECUTABLE} build -o glide -ldflags "-X main.version=${VERSION}" glide.go
install: build
install -d ${DESTDIR}/usr/local/bin/
install -m 755 ./glide ${DESTDIR}/usr/local/bin/glide
test:
- go test . ./gb ./path ./action ./tree ./util ./godep ./godep/strip ./gpm ./cfg ./dependency ./importer ./msg ./repo
+ ${GLIDE_GO_EXECUTABLE} test . ./gb ./path ./action ./tree ./util ./godep ./godep/strip ./gpm ./cfg ./dependency ./importer ./msg ./repo
clean:
rm -f ./glide.test
@@ -17,7 +18,7 @@
rm -rf ./dist
bootstrap-dist:
- go get -u github.com/mitchellh/gox
+ ${GLIDE_GO_EXECUTABLE} get -u github.com/mitchellh/gox
build-all:
gox -verbose \
diff --git a/action/ensure.go b/action/ensure.go
index de729fe..c57ba7f 100644
--- a/action/ensure.go
+++ b/action/ensure.go
@@ -67,7 +67,7 @@
// EnsureGoVendor ensures that the Go version is correct.
func EnsureGoVendor() {
// 6l was removed in 1.5, when vendoring was introduced.
- cmd := exec.Command("go", "tool", "6l")
+ cmd := exec.Command(goExecutable(), "tool", "6l")
if _, err := cmd.CombinedOutput(); err == nil {
msg.Warn("You must install the Go 1.5 or greater toolchain to work with Glide.\n")
os.Exit(1)
@@ -75,13 +75,13 @@
// Check if this is go15, which requires GO15VENDOREXPERIMENT
// Any release after go15 does not require that env var.
- cmd = exec.Command("go", "version")
+ cmd = exec.Command(goExecutable(), "version")
if out, err := cmd.CombinedOutput(); err != nil {
msg.Err("Error getting version: %s.\n", err)
os.Exit(1)
} else if strings.HasPrefix(string(out), "go version 1.5") {
// This works with 1.5 and 1.6.
- cmd = exec.Command("go", "env", "GO15VENDOREXPERIMENT")
+ cmd = exec.Command(goExecutable(), "env", "GO15VENDOREXPERIMENT")
if out, err := cmd.CombinedOutput(); err != nil {
msg.Err("Error looking for $GOVENDOREXPERIMENT: %s.\n", err)
os.Exit(1)
@@ -147,3 +147,18 @@
msg.Die("Wihtout src, cannot continue.")
return ""
}
+
+
+// goExecutable checks for a set environment variable of GLIDE_GO_EXECUTABLE
+// for the go executable name. The Google App Engine SDK ships with a python
+// wrapper called goapp
+//
+// Example usage: GLIDE_GO_EXECUTABLE=goapp glide install
+func goExecutable() string {
+ goExecutable := os.Getenv("GLIDE_GO_EXECUTABLE")
+ if len(goExecutable) <= 0 {
+ goExecutable = "go"
+ }
+
+ return goExecutable
+}
diff --git a/action/rebuild.go b/action/rebuild.go
index 83dc301..f76d948 100644
--- a/action/rebuild.go
+++ b/action/rebuild.go
@@ -92,9 +92,10 @@
msg.Info("Running go build %s\n", path)
// . in a filepath.Join is removed so it needs to be prepended separately.
p := "." + string(filepath.Separator) + filepath.Join("vendor", path)
- out, err := exec.Command("go", "install", p).CombinedOutput()
+ out, err := exec.Command(goExecutable(), "install", p).CombinedOutput()
if err != nil {
msg.Warn("Failed to run 'go install' for %s: %s", path, string(out))
}
return err
}
+
diff --git a/util/util.go b/util/util.go
index ab67610..e32fffa 100644
--- a/util/util.go
+++ b/util/util.go
@@ -279,7 +279,11 @@
}
if goRoot := os.Getenv("GOROOT"); len(goRoot) == 0 {
- out, err := exec.Command("go", "env", "GOROOT").Output()
+ goExecutable := os.Getenv("GLIDE_GO_EXECUTABLE")
+ if len(goExecutable) <= 0 {
+ goExecutable = "go"
+ }
+ out, err := exec.Command(goExecutable, "env", "GOROOT").Output()
if goRoot = strings.TrimSpace(string(out)); len(goRoot) == 0 || err != nil {
return nil, fmt.Errorf("Please set the $GOROOT environment " +
"variable to use this command\n")