From: Robert Griesemer Date: Tue, 26 Apr 2016 22:18:48 +0000 (-0700) Subject: cmd/dist: sort entries in zcgo.go generated file for deterministic build X-Git-Tag: go1.7beta1~480 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=19912e1d0a0739cd8a3214de994f7e9ecb656e1d;p=gostls13.git 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 --- 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, "}")