aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2019-03-14 14:27:26 +0000
committerBryan C. Mills <bcmills@google.com>2019-03-14 16:39:37 +0000
commit32355f5c316e7bdf2d1ab35c71b2cad1f26782d5 (patch)
tree2bee41072501ce4f9b273267b71575f62fe84bdf
parent35ddc140c4f64f30a96bc008185a73dd670f6123 (diff)
downloadgo-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.go71
-rw-r--r--src/cmd/go/internal/test/test.go2
-rw-r--r--src/cmd/go/internal/work/build.go3
-rw-r--r--src/cmd/go/testdata/mod/rsc.io_fortune_v2_v2.0.0.txt6
-rw-r--r--src/cmd/go/testdata/script/mod_build_versioned.txt16
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