From a973b4256e4ad3a5bde270e3358c8cc574c21954 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Wed, 27 Mar 2024 12:09:26 -0400 Subject: [PATCH] cmd/dist: allow arbitrary package renames for bootstrap imports Import declaration matching currently has a list of specific cases. It allows bare imports, dot imports, and renamed imports named "exec" and "rtabi". Keeping a specific allowlist of renamed imports is unnecessary and causes annoyance for developers adding such imports, as the bootstrap build errors do not make it clear that this is where the issue lies. We can simplify this to be much more general. The body of the condition will still only rewrite imports in cmd/ or in bootstrapDirs. I believe the only downside of this change is that it makes it a bit more likely to match and replace within comments. That said, there should be no harm in replacements within comments. This change results in no change to the resulting bootstrap source tree: $ diff -u -r /tmp/bootstrap.before/src /tmp/bootstrap.after/src diff -u -r /tmp/bootstrap.before/src/bootstrap/internal/buildcfg/zbootstrap.go /tmp/bootstrap.after/src/bootstrap/internal/buildcfg/zbootstrap.go --- /tmp/bootstrap.before/src/bootstrap/internal/buildcfg/zbootstrap.go 2024-03-27 12:29:27.439540946 -0400 +++ /tmp/bootstrap.after/src/bootstrap/internal/buildcfg/zbootstrap.go 2024-03-27 12:28:08.516211238 -0400 @@ -20,6 +20,6 @@ const defaultGOEXPERIMENT = `` const defaultGO_EXTLINK_ENABLED = `` const defaultGO_LDSO = `` -const version = `devel go1.23-38087c80ae Wed Mar 27 12:09:16 2024 -0400` +const version = `devel go1.23-fa64f04409 Wed Mar 27 12:22:52 2024 -0400` const defaultGOOS = runtime.GOOS const defaultGOARCH = runtime.GOARCH Change-Id: Ia933c6373f366f2e607b28d900227c24cb214674 Reviewed-on: https://go-review.googlesource.com/c/go/+/574735 Reviewed-by: Cherry Mui LUCI-TryBot-Result: Go LUCI Auto-Submit: Michael Pratt --- src/cmd/dist/buildtool.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go index 8949949bd2..1141981329 100644 --- a/src/cmd/dist/buildtool.go +++ b/src/cmd/dist/buildtool.go @@ -316,8 +316,7 @@ func bootstrapFixImports(srcFile string) string { inBlock = false continue } - if strings.HasPrefix(line, `import "`) || strings.HasPrefix(line, `import . "`) || - inBlock && (strings.HasPrefix(line, "\t\"") || strings.HasPrefix(line, "\t. \"") || strings.HasPrefix(line, "\texec \"") || strings.HasPrefix(line, "\trtabi \"") || strings.HasPrefix(line, "\tpgoir \"")) { + if strings.HasPrefix(line, `import `) || inBlock { line = strings.Replace(line, `"cmd/`, `"bootstrap/cmd/`, -1) for _, dir := range bootstrapDirs { if strings.HasPrefix(dir, "cmd/") {