diff options
author | Bryan C. Mills <bcmills@google.com> | 2019-03-14 14:27:26 +0000 |
---|---|---|
committer | Bryan C. Mills <bcmills@google.com> | 2019-03-14 16:39:37 +0000 |
commit | 32355f5c316e7bdf2d1ab35c71b2cad1f26782d5 (patch) | |
tree | 2bee41072501ce4f9b273267b71575f62fe84bdf | |
parent | 35ddc140c4f64f30a96bc008185a73dd670f6123 (diff) | |
download | go-32355f5c316e7bdf2d1ab35c71b2cad1f26782d5.tar.gz go-32355f5c316e7bdf2d1ab35c71b2cad1f26782d5.zip |
Revert "[release-branch.go1.12] cmd/go: fix the default build output name for versioned binaries"
This reverts commit 746edd459d26f07f69fcb6bddfafaaae7c5a2911 (CL 167384).
Reason for revert: Dmitri identified a potential problem in https://go-review.googlesource.com/c/go/+/140863/11#message-db0ff6bb2c7b06161ca47de771c4465afa8b1102, and we'd like more time to investigate without holding up the 1.12 release branch.
Updates #27283
Updates #30266
Updates #30821
Change-Id: I49d7bbbe200e80b81899c3bcbf7844717af010aa
Reviewed-on: https://go-review.googlesource.com/c/go/+/167617
Reviewed-by: Andrew Bonventre <andybons@golang.org>
-rw-r--r-- | src/cmd/go/internal/load/pkg.go | 71 | ||||
-rw-r--r-- | src/cmd/go/internal/test/test.go | 2 | ||||
-rw-r--r-- | src/cmd/go/internal/work/build.go | 3 | ||||
-rw-r--r-- | src/cmd/go/testdata/mod/rsc.io_fortune_v2_v2.0.0.txt | 6 | ||||
-rw-r--r-- | src/cmd/go/testdata/script/mod_build_versioned.txt | 16 |
5 files changed, 35 insertions, 63 deletions
diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index 187295b345..228be07f24 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -1178,44 +1178,6 @@ var cgoSyscallExclude = map[string]bool{ var foldPath = make(map[string]string) -// DefaultExecName returns the default executable name of the given -// package. -func DefaultExecName(p *Package) string { - _, elem := filepath.Split(p.ImportPath) - if cfg.ModulesEnabled { - // NOTE(rsc): Using p.ImportPath instead of p.Dir - // makes sure we install a package in the root of a - // cached module directory as that package name - // not name@v1.2.3. - // Using p.ImportPath instead of p.Dir - // is probably correct all the time, - // even for non-module-enabled code, - // but I'm not brave enough to change the - // non-module behavior this late in the - // release cycle. Maybe for Go 1.12. - // See golang.org/issue/26869. - _, elem = pathpkg.Split(p.ImportPath) - - // If this is example.com/mycmd/v2, it's more useful to install it as mycmd than as v2. - // See golang.org/issue/24667. - isVersion := func(v string) bool { - if len(v) < 2 || v[0] != 'v' || v[1] < '1' || '9' < v[1] { - return false - } - for i := 2; i < len(v); i++ { - if c := v[i]; c < '0' || '9' < c { - return false - } - } - return true - } - if isVersion(elem) { - _, elem = pathpkg.Split(pathpkg.Dir(p.ImportPath)) - } - } - return elem -} - // load populates p using information from bp, err, which should // be the result of calling build.Context.Import. func (p *Package) load(stk *ImportStack, bp *build.Package, err error) { @@ -1256,7 +1218,38 @@ func (p *Package) load(stk *ImportStack, bp *build.Package, err error) { p.Error = &PackageError{Err: e} return } - elem := DefaultExecName(p) + _, elem := filepath.Split(p.Dir) + if cfg.ModulesEnabled { + // NOTE(rsc): Using p.ImportPath instead of p.Dir + // makes sure we install a package in the root of a + // cached module directory as that package name + // not name@v1.2.3. + // Using p.ImportPath instead of p.Dir + // is probably correct all the time, + // even for non-module-enabled code, + // but I'm not brave enough to change the + // non-module behavior this late in the + // release cycle. Maybe for Go 1.12. + // See golang.org/issue/26869. + _, elem = pathpkg.Split(p.ImportPath) + + // If this is example.com/mycmd/v2, it's more useful to install it as mycmd than as v2. + // See golang.org/issue/24667. + isVersion := func(v string) bool { + if len(v) < 2 || v[0] != 'v' || v[1] < '1' || '9' < v[1] { + return false + } + for i := 2; i < len(v); i++ { + if c := v[i]; c < '0' || '9' < c { + return false + } + } + return true + } + if isVersion(elem) { + _, elem = pathpkg.Split(pathpkg.Dir(p.ImportPath)) + } + } full := cfg.BuildContext.GOOS + "_" + cfg.BuildContext.GOARCH + "/" + elem if cfg.BuildContext.GOOS != base.ToolGOOS || cfg.BuildContext.GOARCH != base.ToolGOARCH { // Install cross-compiled binaries to subdirectories of bin. diff --git a/src/cmd/go/internal/test/test.go b/src/cmd/go/internal/test/test.go index 2eca627c9a..8dfb3df22d 100644 --- a/src/cmd/go/internal/test/test.go +++ b/src/cmd/go/internal/test/test.go @@ -805,7 +805,7 @@ func builderTest(b *work.Builder, p *load.Package) (buildAction, runAction, prin if p.ImportPath == "command-line-arguments" { elem = p.Name } else { - elem = load.DefaultExecName(p) + _, elem = path.Split(p.ImportPath) } testBinary := elem + ".test" diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go index d89ee899f0..145b87513a 100644 --- a/src/cmd/go/internal/work/build.go +++ b/src/cmd/go/internal/work/build.go @@ -10,6 +10,7 @@ import ( "go/build" "os" "os/exec" + "path" "path/filepath" "runtime" "strings" @@ -284,7 +285,7 @@ func runBuild(cmd *base.Command, args []string) { pkgs := load.PackagesForBuild(args) if len(pkgs) == 1 && pkgs[0].Name == "main" && cfg.BuildO == "" { - cfg.BuildO = load.DefaultExecName(pkgs[0]) + _, cfg.BuildO = path.Split(pkgs[0].ImportPath) cfg.BuildO += cfg.ExeSuffix } diff --git a/src/cmd/go/testdata/mod/rsc.io_fortune_v2_v2.0.0.txt b/src/cmd/go/testdata/mod/rsc.io_fortune_v2_v2.0.0.txt index 3acd637931..cfa91f08a5 100644 --- a/src/cmd/go/testdata/mod/rsc.io_fortune_v2_v2.0.0.txt +++ b/src/cmd/go/testdata/mod/rsc.io_fortune_v2_v2.0.0.txt @@ -13,9 +13,3 @@ import "rsc.io/quote" func main() { println(quote.Hello()) } --- fortune_test.go -- -package main - -import "testing" - -func TestFortuneV2(t *testing.T) {} diff --git a/src/cmd/go/testdata/script/mod_build_versioned.txt b/src/cmd/go/testdata/script/mod_build_versioned.txt deleted file mode 100644 index eb081c9be1..0000000000 --- a/src/cmd/go/testdata/script/mod_build_versioned.txt +++ /dev/null @@ -1,16 +0,0 @@ -env GO111MODULE=on - -go get -m rsc.io/fortune/v2 - -# The default executable name shouldn't be v2$exe -go build rsc.io/fortune/v2 -! exists v2$exe -exists fortune$exe - -# The default test binary name shouldn't be v2.test$exe -go test -c rsc.io/fortune/v2 -! exists v2.test$exe -exists fortune.test$exe - --- go.mod -- -module scratch |