all: use path for go.mod module path We have various small submodules in the repository, mostly used for code generation tools with external dependencies. Currently naming is fairly ad-hoc. Some name the module based on the path of the directory, while others use a single name like _gen. If a developer creates a go.work file creating a workspace containing these submodules (go work use -r .) [1], then all module names must be unique. Since CL 772102, we have two modules named _gen, so any operation after creating go.work immediately fails with a duplicate module error. Resolve this by using module paths based on the path to the directory. The load bearing changes here are modifying cmd/compile/internal/ssa/_gen/go.mod and/or simd/archsimd/_gen/go.mod so they no longer conflict, but I've changed all module paths to use the same naming scheme for consistency. Note that std and cmd get special treatment by cmd/go, so avoid those prefixes. e.g., the cmd/vet modules seem to ignore the Go language version when using a cmd/ prefix. [1] I found this issue because the build process for cross-references on https://cs.opensource.google/go does this and is currently broken. Change-Id: I8b3a351c16bd6d52192fb7b45186c38f6a6a6964 Reviewed-on: https://go-review.googlesource.com/c/go/+/798560 Auto-Submit: Michael Pratt <mpratt@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: David Chase <drchase@google.com>
diff --git a/src/cmd/compile/internal/ssa/_gen/go.mod b/src/cmd/compile/internal/ssa/_gen/go.mod index 6f750a5..b8e6449 100644 --- a/src/cmd/compile/internal/ssa/_gen/go.mod +++ b/src/cmd/compile/internal/ssa/_gen/go.mod
@@ -1,4 +1,5 @@ -module _gen +// N.B. cmd/... modules get special treatment, so avoid that prefix. +module compile/internal/ssa/_gen go 1.24
diff --git a/src/cmd/vet/testdata/rangeloop/go.mod b/src/cmd/vet/testdata/rangeloop/go.mod index 178eba2..87a1cd5 100644 --- a/src/cmd/vet/testdata/rangeloop/go.mod +++ b/src/cmd/vet/testdata/rangeloop/go.mod
@@ -1,3 +1,4 @@ -module rangeloop +// N.B. cmd/... modules get special treatment, so avoid that prefix. +module vet/testdata/rangeloop go 1.21
diff --git a/src/cmd/vet/testdata/stdversion/go.mod b/src/cmd/vet/testdata/stdversion/go.mod index 90ae83b..93b0f78 100644 --- a/src/cmd/vet/testdata/stdversion/go.mod +++ b/src/cmd/vet/testdata/stdversion/go.mod
@@ -1,3 +1,4 @@ -module stdversion +// N.B. cmd/... modules get special treatment, so avoid that prefix. +module vet/testdata/stdversion go 1.21
diff --git a/src/crypto/internal/fips140/aes/_asm/ctr/go.mod b/src/crypto/internal/fips140/aes/_asm/ctr/go.mod index 80aac15..c1206f4 100644 --- a/src/crypto/internal/fips140/aes/_asm/ctr/go.mod +++ b/src/crypto/internal/fips140/aes/_asm/ctr/go.mod
@@ -1,4 +1,4 @@ -module crypto/aes/_asm/ctr +module crypto/internal/fips140/aes/_asm/ctr go 1.25
diff --git a/src/crypto/internal/fips140/aes/_asm/standard/go.mod b/src/crypto/internal/fips140/aes/_asm/standard/go.mod index f1329b7..e91f6ab 100644 --- a/src/crypto/internal/fips140/aes/_asm/standard/go.mod +++ b/src/crypto/internal/fips140/aes/_asm/standard/go.mod
@@ -1,4 +1,4 @@ -module crypto/aes/_asm/standard +module crypto/internal/fips140/aes/_asm/standard go 1.24
diff --git a/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.mod b/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.mod index 3fd2094..67ef7fd 100644 --- a/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.mod +++ b/src/crypto/internal/fips140/aes/gcm/_asm/gcm/go.mod
@@ -1,4 +1,4 @@ -module crypto/aes/_asm/gcm +module crypto/internal/fips140/aes/gcm/_asm/gcm go 1.24
diff --git a/src/crypto/internal/fips140/sha256/_asm/go.mod b/src/crypto/internal/fips140/sha256/_asm/go.mod index eb93418..4aca05a 100644 --- a/src/crypto/internal/fips140/sha256/_asm/go.mod +++ b/src/crypto/internal/fips140/sha256/_asm/go.mod
@@ -1,4 +1,4 @@ -module crypto/sha256/_asm +module crypto/internal/fips140/sha256/_asm go 1.24
diff --git a/src/crypto/internal/fips140/sha3/_asm/go.mod b/src/crypto/internal/fips140/sha3/_asm/go.mod index 39e83ac..27df08c 100644 --- a/src/crypto/internal/fips140/sha3/_asm/go.mod +++ b/src/crypto/internal/fips140/sha3/_asm/go.mod
@@ -1,4 +1,4 @@ -module sha3/_asm +module crypto/internal/fips140/sha3/_asm go 1.22
diff --git a/src/crypto/internal/fips140/sha512/_asm/go.mod b/src/crypto/internal/fips140/sha512/_asm/go.mod index 78b9532..75bfd78 100644 --- a/src/crypto/internal/fips140/sha512/_asm/go.mod +++ b/src/crypto/internal/fips140/sha512/_asm/go.mod
@@ -1,4 +1,4 @@ -module crypto/sha512/_asm +module crypto/internal/fips140/sha512/_asm go 1.24
diff --git a/src/runtime/_mkmalloc/go.mod b/src/runtime/_mkmalloc/go.mod index f6bc431..45c10cf 100644 --- a/src/runtime/_mkmalloc/go.mod +++ b/src/runtime/_mkmalloc/go.mod
@@ -1,4 +1,4 @@ -module _mkmalloc +module runtime/_mkmalloc go 1.26
diff --git a/src/simd/archsimd/_gen/go.mod b/src/simd/archsimd/_gen/go.mod index 32b075b..f297b79 100644 --- a/src/simd/archsimd/_gen/go.mod +++ b/src/simd/archsimd/_gen/go.mod
@@ -1,4 +1,4 @@ -module _gen +module simd/archsimd/_gen go 1.25.0
diff --git a/src/simd/archsimd/_gen/simdgen/arm64/emit.go b/src/simd/archsimd/_gen/simdgen/arm64/emit.go index 1bf1281..09b9237 100644 --- a/src/simd/archsimd/_gen/simdgen/arm64/emit.go +++ b/src/simd/archsimd/_gen/simdgen/arm64/emit.go
@@ -8,7 +8,7 @@ "fmt" "strings" - "_gen/unify" + "simd/archsimd/_gen/unify" ) // asComment formats text as a comment
diff --git a/src/simd/archsimd/_gen/simdgen/arm64/load.go b/src/simd/archsimd/_gen/simdgen/arm64/load.go index 75b4c80..aaf2e40 100644 --- a/src/simd/archsimd/_gen/simdgen/arm64/load.go +++ b/src/simd/archsimd/_gen/simdgen/arm64/load.go
@@ -9,7 +9,7 @@ import ( "sort" - "_gen/unify" + "simd/archsimd/_gen/unify" "golang.org/x/arch/arm64/instgen/xmlspec" )
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go b/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go index b4da36d..4a8c350 100644 --- a/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go +++ b/src/simd/archsimd/_gen/simdgen/gen_simdGenericOps.go
@@ -5,8 +5,8 @@ package main import ( - "_gen/sgutil" "bytes" + "simd/archsimd/_gen/sgutil" ) // writeSIMDGenericOps generates the generic ops for the current architecture,
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go b/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go index 4ecbf9f..0f53336 100644 --- a/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go +++ b/src/simd/archsimd/_gen/simdgen/gen_simdIntrinsics.go
@@ -5,9 +5,9 @@ package main import ( - "_gen/sgutil" "bytes" "fmt" + "simd/archsimd/_gen/sgutil" "slices" "text/template" )
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go b/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go index 4024b61..25d53ed 100644 --- a/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go +++ b/src/simd/archsimd/_gen/simdgen/gen_simdTypes.go
@@ -15,7 +15,7 @@ "text/template" "unicode" - "_gen/sgutil" + "simd/archsimd/_gen/sgutil" ) type simdType struct {
diff --git a/src/simd/archsimd/_gen/simdgen/gen_simdrules.go b/src/simd/archsimd/_gen/simdgen/gen_simdrules.go index d6e933f..a09b208 100644 --- a/src/simd/archsimd/_gen/simdgen/gen_simdrules.go +++ b/src/simd/archsimd/_gen/simdgen/gen_simdrules.go
@@ -12,7 +12,7 @@ "text/template" "unicode" - "_gen/sgutil" + "simd/archsimd/_gen/sgutil" ) type tplRuleData struct {
diff --git a/src/simd/archsimd/_gen/simdgen/godefs.go b/src/simd/archsimd/_gen/simdgen/godefs.go index 59a2154..5d2764f 100644 --- a/src/simd/archsimd/_gen/simdgen/godefs.go +++ b/src/simd/archsimd/_gen/simdgen/godefs.go
@@ -14,7 +14,7 @@ "strings" "unicode" - "_gen/unify" + "simd/archsimd/_gen/unify" ) type Operation struct {
diff --git a/src/simd/archsimd/_gen/simdgen/main.go b/src/simd/archsimd/_gen/simdgen/main.go index 276d948..b1be09e 100644 --- a/src/simd/archsimd/_gen/simdgen/main.go +++ b/src/simd/archsimd/_gen/simdgen/main.go
@@ -106,8 +106,8 @@ "slices" "strings" - "_gen/simdgen/arm64" - "_gen/unify" + "simd/archsimd/_gen/simdgen/arm64" + "simd/archsimd/_gen/unify" "gopkg.in/yaml.v3" )
diff --git a/src/simd/archsimd/_gen/simdgen/xed.go b/src/simd/archsimd/_gen/simdgen/xed.go index 5ca8a4d..6e01b66 100644 --- a/src/simd/archsimd/_gen/simdgen/xed.go +++ b/src/simd/archsimd/_gen/simdgen/xed.go
@@ -14,7 +14,7 @@ "strconv" "strings" - "_gen/unify" + "simd/archsimd/_gen/unify" "golang.org/x/arch/x86/xeddata" "gopkg.in/yaml.v3"
diff --git a/src/simd/archsimd/_gen/tmplgen/main.go b/src/simd/archsimd/_gen/tmplgen/main.go index de7352a..ddb667f 100644 --- a/src/simd/archsimd/_gen/tmplgen/main.go +++ b/src/simd/archsimd/_gen/tmplgen/main.go
@@ -8,7 +8,6 @@ // slice operations and tests import ( - "_gen/sgutil" "bufio" "bytes" "flag" @@ -16,6 +15,7 @@ "go/format" "io" "os" + "simd/archsimd/_gen/sgutil" "strings" "text/template" )
diff --git a/src/simd/archsimd/_gen/wasmgen/main.go b/src/simd/archsimd/_gen/wasmgen/main.go index b73cff8..0e39c56 100644 --- a/src/simd/archsimd/_gen/wasmgen/main.go +++ b/src/simd/archsimd/_gen/wasmgen/main.go
@@ -16,7 +16,7 @@ "text/template" "unicode" - "_gen/sgutil" + "simd/archsimd/_gen/sgutil" ) var (
diff --git a/src/simd/testdata/ip/go.mod b/src/simd/testdata/ip/go.mod index f82bc93..2c6447d 100644 --- a/src/simd/testdata/ip/go.mod +++ b/src/simd/testdata/ip/go.mod
@@ -1,3 +1,3 @@ -module ip +module simd/testdata/ip go 1.27