]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: sort entries in zcgo.go generated file for deterministic build
authorRobert Griesemer <gri@golang.org>
Tue, 26 Apr 2016 22:18:48 +0000 (15:18 -0700)
committerRobert Griesemer <gri@golang.org>
Tue, 26 Apr 2016 22:48:31 +0000 (22:48 +0000)
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>
src/cmd/dist/buildgo.go

index af33ecd66d63cbd8a35f36f0f564ac0ca97e23c2..2b68fc222460c89333b4a03d79c4c0ca7bd498bc 100644 (file)
@@ -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, "}")