-
Notifications
You must be signed in to change notification settings - Fork 17.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cmd/go: executables are sometimes named after their module's last element, not directory #27283
Comments
Confirmed.
Now:
But:
|
Change https://golang.org/cl/140863 mentions this issue: |
If this does not land before RC1 (in the next couple of days), open a backport issue if it should be cherry-picked into 1.12. /cc @hyangah |
Change https://golang.org/cl/157798 mentions this issue: |
Modules with name 'example.com/mymodule.git' ,where the .git extension is used to trigger the local VCS command, get a binary named mymodule.git.exe. Shouldn't '.git' be stripped? |
Looks like it didn't make 1.12. I don't know how a backport issue is started, but if this could be cherry-picked into 1.12 I'd be very happy. |
@gopherbot please backport to 1.12 |
Backport issue(s) opened: #30266 (for 1.12). Remember to create the cherry-pick CL(s) as soon as the patch is submitted to master, according to https://golang.org/wiki/MinorReleases. |
Are we trying to get https://golang.org/cl/140863 into 1.12? @hyangah @bcmills |
@ianlancetaylor from the "backport" wording earlier, I presume 1.12.1 was meant. |
@mvdan is correct: we're targeting 1.12.1. |
Change https://golang.org/cl/167384 mentions this issue: |
… versioned binaries `go build` has chosen the last element of the package import path as the default output name when -o option is given. That caused the output of a package build when the module root is the major version component such as 'v2'. A similar issue involving `go install` was fixed in https://golang.org/cl/128900. This CL refactors the logic added with the change and makes it available as internal/load.DefaultExecName. This CL makes 'go test' to choose the right default test binary name when the tested package is in the module root. (E.g., instead of v2.test, choose pkg.test for the test of 'path/pkg/v2') Fixes #27283 Fixes #30266 Change-Id: I6905754f0906db46e3ce069552715f45356913ae Reviewed-on: https://go-review.googlesource.com/c/go/+/140863 Reviewed-by: Bryan C. Mills <bcmills@google.com> (cherry picked from commit bf94fc3) Reviewed-on: https://go-review.googlesource.com/c/go/+/167384 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Change https://golang.org/cl/167617 mentions this issue: |
…name for versioned binaries" This reverts commit 746edd4 (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>
Change https://golang.org/cl/167503 mentions this issue: |
Change https://golang.org/cl/168958 mentions this issue: |
… versioned binaries This change is a re-apply of the reverted CL 140863 with changes to address issue #30821. Specifically, path.Split continues to be used to split the '/'-separated import path, rather than filepath.Split. Document the algorithm for how the default executable name is determined in DefaultExecName. Rename a variable returned from os.Stat from bs to fi for consistency. CL 140863 factored out the logic to determine the default executable name from the Package.load method into a DefaultExecName function, and started using it in more places to avoid having to re-implement the logic everywhere it's needed. Most previous callers already computed the default executable name based on the import path. The load.Package method, before CL 140863, was the exception, in that it used the p.Dir value in GOPATH mode instead. There was a NOTE(rsc) comment that it should be equivalent to use import path, but it was too late in Go 1.11 cycle to risk implementing that change. This is part 1, a more conservative change for backporting to Go 1.12.2, and it keeps the original behavior of splitting on p.Dir in GOPATH mode. Part 2 will address the NOTE(rsc) comment and modify behavior in Package.load to always use DefaultExecName which splits the import path rather than directory. It is intended to be included in Go 1.13. Updates #27283 Updates #26869 Updates #30821 Fixes #30266 Change-Id: Ib1ebb95acba7c85c24e3a55c40cdf48405af34f3 Reviewed-on: https://go-review.googlesource.com/c/go/+/167503 Reviewed-by: Jay Conrod <jayconrod@google.com> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> (cherry picked from commit 94563de) Reviewed-on: https://go-review.googlesource.com/c/go/+/168958 Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
What version of Go are you using (
go version
)?go1.11
Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (
go env
)?darwin amd64
What did you do?
In a
package main
's directory (specifically, github.com/twitchtv/twirp/protoc-gen-twirp), I had ago.mod
like this:module github.com/twitchtv/twirp/protoc-gen-twirp/v5
I then ran
GO111MODULE=on go build .
from within $GOPATH/src/github.com/twitchtv/twirp/protoc-gen-twirp.I expected an executable named
protoc-gen-twirp
, because that is the last element of the directory. This is the documented behavior in https://tip.golang.org/cmd/go/#hdr-Compile_packages_and_dependencies:Instead, an executable was produced named
v5
.However, if I invoke
go build
with a full path, I get the expected name.GO111MODULE=on go build github.com/twitchtv/twirp/protoc-gen-twirp
produces an executable namedprotoc-gen-twirp
.This is either a documentation error, or a bug.
The text was updated successfully, but these errors were encountered: