]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: add map of broken ports and -force flag
authorDmitri Shuralyov <dmitshur@golang.org>
Mon, 19 Dec 2022 21:50:24 +0000 (16:50 -0500)
committerGopher Robot <gobot@golang.org>
Fri, 20 Jan 2023 17:52:26 +0000 (17:52 +0000)
It's empty so far. The next CL adds linux/sparc64.

Also add -force flag to the bootstrap.bash script
so that it's possible to use it with broken ports.

For #56679.

Change-Id: I09c733d0df0a68df34fb808eae29be010a6da461
Reviewed-on: https://go-review.googlesource.com/c/go/+/458515
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/bootstrap.bash
src/cmd/dist/build.go

index 1e4f1c5081348ccb235cf9d013de7c2432c5b414..5a97d52e5f98197f6d53b0df756b91df3de8a1b5 100755 (executable)
 set -e
 
 if [ "$GOOS" = "" -o "$GOARCH" = "" ]; then
-       echo "usage: GOOS=os GOARCH=arch ./bootstrap.bash" >&2
+       echo "usage: GOOS=os GOARCH=arch ./bootstrap.bash [-force]" >&2
        exit 2
 fi
 
+forceflag=""
+if [ "$1" = "-force" ]; then
+       forceflag=-force
+       shift
+fi
+
 targ="../../go-${GOOS}-${GOARCH}-bootstrap"
 if [ -e $targ ]; then
        echo "$targ already exists; remove before continuing"
@@ -47,7 +53,7 @@ echo
 echo "#### Building $targ"
 echo
 cd src
-./make.bash --no-banner
+./make.bash --no-banner $forceflag
 gohostos="$(../bin/go env GOHOSTOS)"
 gohostarch="$(../bin/go env GOHOSTARCH)"
 goos="$(../bin/go env GOOS)"
index c15515f69562efe0891742bcb8270fe16be1ab7a..96cbd3dbf6c9795ed1381ad32b187b64cad3b523 100644 (file)
@@ -1314,10 +1314,12 @@ func cmdbootstrap() {
 
        var noBanner, noClean bool
        var debug bool
+       var force bool
        flag.BoolVar(&rebuildall, "a", rebuildall, "rebuild all")
        flag.BoolVar(&debug, "d", debug, "enable debugging of bootstrap process")
        flag.BoolVar(&noBanner, "no-banner", noBanner, "do not print banner")
        flag.BoolVar(&noClean, "no-clean", noClean, "print deprecation warning")
+       flag.BoolVar(&force, "force", force, "build even if the port is marked as broken")
 
        xflagparse(0)
 
@@ -1325,6 +1327,12 @@ func cmdbootstrap() {
                xprintf("warning: --no-clean is deprecated and has no effect; use 'go install std cmd' instead\n")
        }
 
+       // Don't build broken ports by default.
+       if broken[goos+"/"+goarch] && !force {
+               fatalf("build stopped because the port %s/%s is marked as broken\n\n"+
+                       "Use the -force flag to build anyway.\n", goos, goarch)
+       }
+
        // Set GOPATH to an internal directory. We shouldn't actually
        // need to store files here, since the toolchain won't
        // depend on modules outside of vendor directories, but if
@@ -1674,12 +1682,18 @@ var cgoEnabled = map[string]bool{
 }
 
 // List of platforms which are supported but not complete yet. These get
-// filtered out of cgoEnabled for 'dist list'. See golang.org/issue/28944
+// filtered out of cgoEnabled for 'dist list'. See go.dev/issue/28944.
 var incomplete = map[string]bool{
        "linux/sparc64": true,
 }
 
-// List of platforms which are first class ports. See golang.org/issue/38874.
+// List of platforms that are marked as broken ports.
+// These require -force flag to build, and also
+// get filtered out of cgoEnabled for 'dist list'.
+// See go.dev/issue/56679.
+var broken = map[string]bool{}
+
+// List of platforms which are first class ports. See go.dev/issue/38874.
 var firstClass = map[string]bool{
        "darwin/amd64":  true,
        "darwin/arm64":  true,
@@ -1825,7 +1839,7 @@ func cmdlist() {
 
        var plats []string
        for p := range cgoEnabled {
-               if incomplete[p] {
+               if broken[p] || incomplete[p] {
                        continue
                }
                plats = append(plats, p)