]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: fix -changed don`t print when GOFIPS140 is non-default
authorqiulaidongfeng <2645477756@qq.com>
Wed, 20 Nov 2024 16:01:36 +0000 (00:01 +0800)
committerMichael Matloob <matloob@golang.org>
Thu, 21 Nov 2024 16:35:55 +0000 (16:35 +0000)
See https://github.com/golang/go/issues/70200#issuecomment-2468562595,
GOFIPS140 value when building the toolchain (off when not set)
is the default value for GOFIPS140,
it is buildcfg.defaultGOFIPS140,
export as buildcfg.DefaultGOFIPS140 that can be used in the cmd/go.

For #70200

Change-Id: I5a4873a718eeefda8e65bfab51d9d3d5ad2c21b6
Reviewed-on: https://go-review.googlesource.com/c/go/+/629996
Reviewed-by: Michael Matloob <matloob@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
src/cmd/dist/buildruntime.go
src/cmd/go/internal/cfg/cfg.go
src/cmd/go/testdata/script/env_changed.txt
src/internal/buildcfg/cfg.go

index 73260246faa5a1fd8d325d38976eed358b000978..04b5b45410b70c5462ab4661c86aa75a95140176 100644 (file)
@@ -65,7 +65,7 @@ func mkbuildcfg(file string) {
        fmt.Fprintf(&buf, "const version = `%s`\n", findgoversion())
        fmt.Fprintf(&buf, "const defaultGOOS = runtime.GOOS\n")
        fmt.Fprintf(&buf, "const defaultGOARCH = runtime.GOARCH\n")
-       fmt.Fprintf(&buf, "const defaultGOFIPS140 = `%s`\n", gofips140)
+       fmt.Fprintf(&buf, "const DefaultGOFIPS140 = `%s`\n", gofips140)
 
        writefile(buf.String(), file, writeSkipSame)
 }
index b4dac0bf1eacea9de44d3dd7f0b3b6dd7120dc6f..6c2af99c2dfb09be2188909cc1656fb7cd69bb99 100644 (file)
@@ -439,7 +439,7 @@ var (
        GORISCV64, goRISCV64Changed = EnvOrAndChanged("GORISCV64", buildcfg.DefaultGORISCV64)
        GOWASM, goWASMChanged       = EnvOrAndChanged("GOWASM", fmt.Sprint(buildcfg.GOWASM))
 
-       GOFIPS140, GOFIPS140Changed = EnvOrAndChanged("GOFIPS140", buildcfg.GOFIPS140)
+       GOFIPS140, GOFIPS140Changed = EnvOrAndChanged("GOFIPS140", buildcfg.DefaultGOFIPS140)
        GOPROXY, GOPROXYChanged     = EnvOrAndChanged("GOPROXY", "")
        GOSUMDB, GOSUMDBChanged     = EnvOrAndChanged("GOSUMDB", "")
        GOPRIVATE                   = Getenv("GOPRIVATE")
index 571d754a162f98e14139a6f9ff65fe2c16a3c25d..f57f69bfd78ca050cfb8ba42c984fcd5b1b91b83 100644 (file)
@@ -7,6 +7,7 @@ env GOPROXY=nodefault
 env GO111MODULE=auto
 env CGO_CFLAGS=nodefault
 env CGO_CPPFLAGS=nodefault
+env GOFIPS140=latest
 
 go env -changed
 # linux output like GOTOOLCHAIN='local'
@@ -17,6 +18,7 @@ stdout 'GOPROXY=''?nodefault''?'
 stdout 'GO111MODULE=''?auto''?'
 stdout 'CGO_CFLAGS=''?nodefault''?'
 stdout 'CGO_CPPFLAGS=''?nodefault''?'
+stdout 'GOFIPS140=''?latest''?'
 
 go env -changed -json
 stdout '"GOTOOLCHAIN": "local"'
@@ -25,6 +27,7 @@ stdout '"GOPROXY": "nodefault"'
 stdout '"GO111MODULE": "auto"'
 stdout '"CGO_CFLAGS": "nodefault"'
 stdout '"CGO_CPPFLAGS": "nodefault"'
+stdout '"GOFIPS140": "latest"'
 
 [GOOS:windows] env GOOS=linux
 [!GOOS:windows] env GOOS=windows
@@ -64,6 +67,7 @@ go env -changed
 --  a/go.env --
 GOPROXY=s
 GOAMD64=v1
+GOFIPS140=off
 
 --  b/go.env --
 GOTOOLCHAIN=local
index 1d6dc0ff3c1e50b0637e983c38bf9b76772d435f..fca09bf8d3384a935582f6847af1389cfa204ba5 100644 (file)
@@ -72,7 +72,7 @@ func goamd64() int {
 }
 
 func gofips140() string {
-       v := envOr("GOFIPS140", defaultGOFIPS140)
+       v := envOr("GOFIPS140", DefaultGOFIPS140)
        switch v {
        case "off", "latest", "inprocess", "certified":
                return v
@@ -81,7 +81,7 @@ func gofips140() string {
                return v
        }
        Error = fmt.Errorf("invalid GOFIPS140: must be off, latest, inprocess, certified, or vX.Y.Z")
-       return defaultGOFIPS140
+       return DefaultGOFIPS140
 }
 
 // isFIPSVersion reports whether v is a valid FIPS version,