summaryrefslogtreecommitdiff
path: root/src/cmd/go
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2014-08-25 11:35:55 -0700
committerRob Pike <r@golang.org>2014-08-25 11:35:55 -0700
commite4b65ea6a0b2755b284d20e1822ea2db8df9a7e6 (patch)
tree876ad93f7b668ead54914c2216a584cfe90fb946 /src/cmd/go
parent5f8ad5f6c1d4bd6537ab86a90d7ccc96259a36be (diff)
downloadgo-e4b65ea6a0b2755b284d20e1822ea2db8df9a7e6.tar.gz
cmd/go: add GOOS and GOARCH to generate
Fixes test failure in build, probably a good idea anyway. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://codereview.appspot.com/131210043
Diffstat (limited to 'src/cmd/go')
-rw-r--r--src/cmd/go/generate.go17
-rw-r--r--src/cmd/go/generate_test.go3
2 files changed, 19 insertions, 1 deletions
diff --git a/src/cmd/go/generate.go b/src/cmd/go/generate.go
index 34b10314d..5859e9eef 100644
--- a/src/cmd/go/generate.go
+++ b/src/cmd/go/generate.go
@@ -13,6 +13,7 @@ import (
"os"
"os/exec"
"path/filepath"
+ "runtime"
"strconv"
"strings"
"unicode"
@@ -48,6 +49,10 @@ quoted string appears a single argument to the generator.
Go generate sets several variables when it runs the generator:
+ $GOARCH
+ The execution architecture (arm, amd64, etc.)
+ $GOOS
+ The execution operating system (linux, windows, etc.)
$GOFILE
The base name of the file.
$GOPACKAGE
@@ -287,6 +292,10 @@ func (g *Generator) expandEnv(word string) string {
envVar := word[i+1 : i+w]
var sub string
switch envVar {
+ case "GOARCH":
+ sub = runtime.GOARCH
+ case "GOOS":
+ sub = runtime.GOOS
case "GOFILE":
sub = g.file
case "GOPACKAGE":
@@ -332,7 +341,13 @@ func (g *Generator) exec(words []string) {
cmd.Stderr = os.Stderr
// Run the command in the package directory.
cmd.Dir = g.dir
- cmd.Env = mergeEnvLists([]string{"GOFILE=" + g.file, "GOPACKAGE=" + g.pkg}, os.Environ())
+ env := []string{
+ "GOARCH=" + runtime.GOARCH,
+ "GOOS=" + runtime.GOOS,
+ "GOFILE=" + g.file,
+ "GOPACKAGE=" + g.pkg,
+ }
+ cmd.Env = mergeEnvLists(env, os.Environ())
err := cmd.Run()
if err != nil {
g.errorf("running %q: %s", words[0], err)
diff --git a/src/cmd/go/generate_test.go b/src/cmd/go/generate_test.go
index 6be815763..881a8fe9b 100644
--- a/src/cmd/go/generate_test.go
+++ b/src/cmd/go/generate_test.go
@@ -20,7 +20,10 @@ var splitTests = []splitTest{
{"x", []string{"x"}},
{" a b\tc ", []string{"a", "b", "c"}},
{` " a " `, []string{" a "}},
+ {"$GOARCH", []string{runtime.GOARCH}},
+ {"$GOOS", []string{runtime.GOOS}},
{"$GOFILE", []string{"proc.go"}},
+ {"$GOPACKAGE", []string{"sys"}},
{"a $XXNOTDEFINEDXX b", []string{"a", "", "b"}},
{"/$XXNOTDEFINED/", []string{"//"}},
{"$GOARCH", []string{runtime.GOARCH}},