mirror of
https://github.com/golang/go
synced 2024-11-17 13:14:56 -07:00
cmd/go: 'go get' should not delete binaries when run from $GOBIN
When 'go install' is run without arguments in a directory containing a main package, it deletes an executable file with the same name as the package (presumably created by 'go build' previously). 'go get' in module mode executes the same code after updating and downloading modules. However, the special case was misfiring because we passed an empty list of patterns to InstallPackages. Fixes #32766 Change-Id: I19aca64ee1fb5a216777dd7d559e8e6a45b3e90c Reviewed-on: https://go-review.googlesource.com/c/go/+/183846 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
9bf62783d2
commit
24f7d89a73
@ -472,7 +472,6 @@ func runGet(cmd *base.Command, args []string) {
|
|||||||
// and the load and upgrade operations may only add and upgrade modules
|
// and the load and upgrade operations may only add and upgrade modules
|
||||||
// in the build list.
|
// in the build list.
|
||||||
var matches []*search.Match
|
var matches []*search.Match
|
||||||
var install []string
|
|
||||||
for {
|
for {
|
||||||
var seenPkgs map[string]bool
|
var seenPkgs map[string]bool
|
||||||
seenQuery := make(map[querySpec]bool)
|
seenQuery := make(map[querySpec]bool)
|
||||||
@ -664,7 +663,7 @@ func runGet(cmd *base.Command, args []string) {
|
|||||||
}
|
}
|
||||||
work.BuildInit()
|
work.BuildInit()
|
||||||
pkgs := load.PackagesForBuild(pkgPatterns)
|
pkgs := load.PackagesForBuild(pkgPatterns)
|
||||||
work.InstallPackages(install, pkgs)
|
work.InstallPackages(pkgPatterns, pkgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// runQueries looks up modules at target versions in parallel. Results will be
|
// runQueries looks up modules at target versions in parallel. Results will be
|
||||||
|
12
src/cmd/go/testdata/mod/example.com_tools_v1.0.0.txt
vendored
Normal file
12
src/cmd/go/testdata/mod/example.com_tools_v1.0.0.txt
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
-- .info --
|
||||||
|
{"Version": "v1.0.0"}
|
||||||
|
-- .mod --
|
||||||
|
module example.com/tools
|
||||||
|
-- cmd/hello/hello.go --
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Println("hello")
|
||||||
|
}
|
20
src/cmd/go/testdata/script/mod_get_cmd.txt
vendored
Normal file
20
src/cmd/go/testdata/script/mod_get_cmd.txt
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
env GO111MODULE=on
|
||||||
|
[short] skip
|
||||||
|
|
||||||
|
# Test that when 'go get' is run from $GOBIN, it does not delete binaries
|
||||||
|
# after it installs them. Verifies golang.org/issue/32766.
|
||||||
|
|
||||||
|
go get example.com/tools/cmd/hello
|
||||||
|
|
||||||
|
# 'go get' should not delete the command when run from $GOPATH/bin
|
||||||
|
cd $GOPATH/bin
|
||||||
|
exists hello$GOEXE
|
||||||
|
go get example.com/tools/cmd/hello
|
||||||
|
exists hello$GOEXE
|
||||||
|
|
||||||
|
# 'go get' should not delete the command when run from a different $GOBIN
|
||||||
|
mkdir $WORK/bin
|
||||||
|
cd $WORK/bin
|
||||||
|
env GOBIN=$WORK/bin
|
||||||
|
go get example.com/tools/cmd/hello
|
||||||
|
exists hello$GOEXE
|
Loading…
Reference in New Issue
Block a user