From c6f7c176a3a46ff87d72c4b744bbadf02df1890e Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Mon, 25 Aug 2014 11:35:55 -0700 Subject: [PATCH] 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://golang.org/cl/131210043 --- src/cmd/go/generate.go | 17 ++++++++++++++++- src/cmd/go/generate_test.go | 3 +++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/generate.go b/src/cmd/go/generate.go index 34b10314d2d..5859e9eefd9 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 6be81576363..881a8fe9b60 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}},