From d5138e580c2404f2b8f03d2e1e32b2226cb6bbbc Mon Sep 17 00:00:00 2001 From: Kirill Che Date: Fri, 8 Sep 2023 07:51:47 +0000 Subject: [PATCH] cmd/go: improve go build documentation The existing documentation for `go help build` does not match the current behavior of `go build`. This commit fixes inconsistency between documentation and behavior as suggested in #60836 ticket. Fixes #60836 Change-Id: I22f24f84815f50fecfa8c51b7f1c24e8e0cd8bc8 GitHub-Last-Rev: 7613930a3d6eb10fc61f29e4bf1b7b0fc9584cf8 GitHub-Pull-Request: golang/go#61438 Reviewed-on: https://go-review.googlesource.com/c/go/+/511015 Reviewed-by: qiulaidongfeng <2645477756@qq.com> Auto-Submit: Bryan Mills LUCI-TryBot-Result: Go LUCI Reviewed-by: Bryan Mills Reviewed-by: Matthew Dempsky --- src/cmd/go/alldocs.go | 15 ++++++++++----- src/cmd/go/internal/work/build.go | 15 ++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index 3174c6af32..392a21148b 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -79,11 +79,16 @@ // // When compiling packages, build ignores files that end in '_test.go'. // -// When compiling a single main package, build writes -// the resulting executable to an output file named after -// the first source file ('go build ed.go rx.go' writes 'ed' or 'ed.exe') -// or the source code directory ('go build unix/sam' writes 'sam' or 'sam.exe'). -// The '.exe' suffix is added when writing a Windows executable. +// When compiling a single main package, build writes the resulting +// executable to an output file named after the last non-major-version +// component of the package import path. The '.exe' suffix is added +// when writing a Windows executable. +// So 'go build example/sam' writes 'sam' or 'sam.exe'. +// 'go build example.com/foo/v2' writes 'foo' or 'foo.exe', not 'v2.exe'. +// +// When compiling a package from a list of .go files, the executable +// is named after the first source file. +// 'go build ed.go rx.go' writes 'ed' or 'ed.exe'. // // When compiling multiple packages or a single non-main package, // build compiles the packages but discards the resulting object, diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go index 3d82903d2c..408edb5119 100644 --- a/src/cmd/go/internal/work/build.go +++ b/src/cmd/go/internal/work/build.go @@ -37,11 +37,16 @@ build treats them as a list of source files specifying a single package. When compiling packages, build ignores files that end in '_test.go'. -When compiling a single main package, build writes -the resulting executable to an output file named after -the first source file ('go build ed.go rx.go' writes 'ed' or 'ed.exe') -or the source code directory ('go build unix/sam' writes 'sam' or 'sam.exe'). -The '.exe' suffix is added when writing a Windows executable. +When compiling a single main package, build writes the resulting +executable to an output file named after the last non-major-version +component of the package import path. The '.exe' suffix is added +when writing a Windows executable. +So 'go build example/sam' writes 'sam' or 'sam.exe'. +'go build example.com/foo/v2' writes 'foo' or 'foo.exe', not 'v2.exe'. + +When compiling a package from a list of .go files, the executable +is named after the first source file. +'go build ed.go rx.go' writes 'ed' or 'ed.exe'. When compiling multiple packages or a single non-main package, build compiles the packages but discards the resulting object, -- 2.50.0