]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: enforce the lowest bootstrap version
authorqiulaidongfeng <2645477756@qq.com>
Tue, 24 Sep 2024 12:53:21 +0000 (12:53 +0000)
committerGopher Robot <gobot@golang.org>
Thu, 26 Sep 2024 13:17:04 +0000 (13:17 +0000)
The go1.24 release notes say that go1.22.6 is the
minimum bootstraps required,
the go team also use go1.22.6 bootstraps in testing,
so if there's a problem with using an older version,
automated testing won't uncover it.

Now enforce this in dist to avoid
release notes that do not match reality, which can be confusing.

For #64751

Change-Id: Icd2f8a47b2bbb2d7c3dab9be9a228f43b9630063
GitHub-Last-Rev: 425cd7f03c09ca5e4017d5a70a71fe8cf56d63e5
GitHub-Pull-Request: golang/go#69168
Reviewed-on: https://go-review.googlesource.com/c/go/+/609762
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/cmd/dist/buildtool.go

index 045f136c22c8e722294a8543335850dee7e32ed0..89a1c0ec8b44395bb3d04d9d687dab5280c2e845 100644 (file)
@@ -13,6 +13,7 @@ package main
 
 import (
        "fmt"
+       "go/version"
        "os"
        "path/filepath"
        "regexp"
@@ -118,9 +119,11 @@ var ignoreSuffixes = []string{
        "~",
 }
 
+const minBootstrap = "go1.22.6"
+
 var tryDirs = []string{
-       "sdk/go1.22.6",
-       "go1.22.6",
+       "sdk/" + minBootstrap,
+       minBootstrap,
 }
 
 func bootstrapBuildTools() {
@@ -134,6 +137,15 @@ func bootstrapBuildTools() {
                        }
                }
        }
+
+       // check bootstrap version.
+       ver := run(pathf("%s/bin", goroot_bootstrap), CheckExit, pathf("%s/bin/go", goroot_bootstrap), "env", "GOVERSION")
+       // go env GOVERSION output like "go1.22.6\n" or "devel go1.24-ffb3e574 Thu Aug 29 20:16:26 2024 +0000\n".
+       ver = ver[:len(ver)-1]
+       if version.Compare(ver, version.Lang(minBootstrap)) > 0 && version.Compare(ver, minBootstrap) < 0 {
+               fatalf("%s does not meet the minimum bootstrap requirement of %s or later", ver, minBootstrap)
+       }
+
        xprintf("Building Go toolchain1 using %s.\n", goroot_bootstrap)
 
        mkbuildcfg(pathf("%s/src/internal/buildcfg/zbootstrap.go", goroot))