cmd/dist: make zosarch.go deterministic
Currently zosarch.go is written out in non-deterministic map order.
Sort the keys and write it out in sorted order to make the generated
file contents deterministic.
Change-Id: Id490f0e8665a2c619c5a7a00a30f4fc64f333258
Reviewed-on: https://go-review.googlesource.com/24174
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/src/cmd/dist/buildgo.go b/src/cmd/dist/buildgo.go
index c367c70..3fab235 100644
--- a/src/cmd/dist/buildgo.go
+++ b/src/cmd/dist/buildgo.go
@@ -42,10 +42,21 @@
// mkzcgo writes zosarch.go for cmd/go.
func mkzosarch(dir, file string) {
+ // sort for deterministic zosarch.go file
+ var list []string
+ for plat := range cgoEnabled {
+ list = append(list, plat)
+ }
+ sort.Strings(list)
+
var buf bytes.Buffer
buf.WriteString("// auto generated by go tool dist\n\n")
buf.WriteString("package main\n\n")
- fmt.Fprintf(&buf, "var osArchSupportsCgo = %#v", cgoEnabled)
+ fmt.Fprintf(&buf, "var osArchSupportsCgo = map[string]bool{\n")
+ for _, plat := range list {
+ fmt.Fprintf(&buf, "\t%q: %v,\n", plat, cgoEnabled[plat])
+ }
+ fmt.Fprintf(&buf, "}\n")
writefile(buf.String(), file, writeSkipSame)
}