aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/dist/buildgo.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2016-04-26 15:18:48 -0700
committerRobert Griesemer <gri@golang.org>2016-04-26 22:48:31 +0000
commit19912e1d0a0739cd8a3214de994f7e9ecb656e1d (patch)
treeb02c44039dfea7085f7727cc91c08bdfecadbcc0 /src/cmd/dist/buildgo.go
parente607abbfd6e0550c13f4fa7b666d033eb9b14759 (diff)
downloadgo-19912e1d0a0739cd8a3214de994f7e9ecb656e1d.tar.xz
cmd/dist: sort entries in zcgo.go generated file for deterministic build
This simplifies comparison of object files across different builds by ensuring that the strings in the zcgo.go always appear in the same order. Change-Id: I3639ea4fd10e0d645b838d1bbb03cd33deca340e Reviewed-on: https://go-review.googlesource.com/22478 Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/cmd/dist/buildgo.go')
-rw-r--r--src/cmd/dist/buildgo.go16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/cmd/dist/buildgo.go b/src/cmd/dist/buildgo.go
index af33ecd66d..2b68fc2224 100644
--- a/src/cmd/dist/buildgo.go
+++ b/src/cmd/dist/buildgo.go
@@ -7,6 +7,7 @@ package main
import (
"bytes"
"fmt"
+ "sort"
)
/*
@@ -48,6 +49,15 @@ func mkzdefaultcc(dir, file string) {
//
// It is invoked to write go/build/zcgo.go.
func mkzcgo(dir, file string) {
+ // sort for deterministic zcgo.go file
+ var list []string
+ for plat, hasCgo := range cgoEnabled {
+ if hasCgo {
+ list = append(list, plat)
+ }
+ }
+ sort.Strings(list)
+
var buf bytes.Buffer
fmt.Fprintf(&buf,
@@ -56,10 +66,8 @@ func mkzcgo(dir, file string) {
"package build\n"+
"\n"+
"var cgoEnabled = map[string]bool{\n")
- for plat, hasCgo := range cgoEnabled {
- if hasCgo {
- fmt.Fprintf(&buf, "\t%q: true,\n", plat)
- }
+ for _, plat := range list {
+ fmt.Fprintf(&buf, "\t%q: true,\n", plat)
}
fmt.Fprintf(&buf, "}")