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)
 }