mirror of https://github.com/golang/go.git
cmd/go: ignore import "C" files in module loader in non-cgo mode
Obviously, including files that import "C" when cgo is disabled is wrong. The package load step correctly excludes them and finds no files at all, which then causes a failure. Fixes #26927. Change-Id: I00e6d6450e783d467d20bde99e91240ecb0db837 Reviewed-on: https://go-review.googlesource.com/129062 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: David du Colombier <0intro@gmail.com>
This commit is contained in:
parent
c265c893de
commit
974d5364a6
|
|
@ -37,6 +37,7 @@ func scanFiles(files []string, tags map[string]bool, explicitFiles bool) ([]stri
|
|||
imports := make(map[string]bool)
|
||||
testImports := make(map[string]bool)
|
||||
numFiles := 0
|
||||
Files:
|
||||
for _, name := range files {
|
||||
r, err := os.Open(name)
|
||||
if err != nil {
|
||||
|
|
@ -48,6 +49,12 @@ func scanFiles(files []string, tags map[string]bool, explicitFiles bool) ([]stri
|
|||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("reading %s: %v", name, err)
|
||||
}
|
||||
// import "C" is implicit requirement of cgo tag
|
||||
for _, path := range list {
|
||||
if path == `"C"` && !tags["cgo"] && !tags["*"] {
|
||||
continue Files
|
||||
}
|
||||
}
|
||||
if !explicitFiles && !ShouldBuild(data, tags) {
|
||||
continue
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,10 @@ stdout example.com/m/useunsafe
|
|||
[cgo] stdout example.com/m/useC
|
||||
[!cgo] ! stdout example.com/m/useC
|
||||
|
||||
env CGO_ENABLED=0
|
||||
go list -f '{{.ImportPath}}: {{.Match}}' all ... example.com/m/... ./... ./xyz...
|
||||
! stdout example.com/m/useC
|
||||
|
||||
-- m/go.mod --
|
||||
module example.com/m
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue