mirror of https://github.com/golang/go.git
Revert "cmd/go: import runtime/cgo when externally linking"
This reverts CL 477195. Reason for revert: test fails on darwin and solaris builders. Change-Id: I68085f06bc84b0b8649804b8968626ed0e788931 Reviewed-on: https://go-review.googlesource.com/c/go/+/477795 Run-TryBot: Bryan Mills <bcmills@google.com> TryBot-Bypass: Bryan Mills <bcmills@google.com> Auto-Submit: Bryan Mills <bcmills@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
parent
20e9b7f1b5
commit
b414ba4c99
|
|
@ -684,15 +684,6 @@ const (
|
||||||
// GetTestDeps is for download (part of "go get") and indicates
|
// GetTestDeps is for download (part of "go get") and indicates
|
||||||
// that test dependencies should be fetched too.
|
// that test dependencies should be fetched too.
|
||||||
GetTestDeps
|
GetTestDeps
|
||||||
|
|
||||||
// The remainder are internal modes for calls to loadImport.
|
|
||||||
|
|
||||||
// cmdlinePkg is for a package mentioned on the command line.
|
|
||||||
cmdlinePkg
|
|
||||||
|
|
||||||
// cmdlinePkgLiteral is for a package mentioned on the command line
|
|
||||||
// without using any wildcards or meta-patterns.
|
|
||||||
cmdlinePkgLiteral
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// LoadImport scans the directory named by path, which must be an import path,
|
// LoadImport scans the directory named by path, which must be an import path,
|
||||||
|
|
@ -747,30 +738,18 @@ func loadImport(ctx context.Context, opts PackageOpts, pre *preload, path, srcDi
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
setCmdline := func(p *Package) {
|
|
||||||
if mode&cmdlinePkg != 0 {
|
|
||||||
p.Internal.CmdlinePkg = true
|
|
||||||
}
|
|
||||||
if mode&cmdlinePkgLiteral != 0 {
|
|
||||||
p.Internal.CmdlinePkgLiteral = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
importPath := bp.ImportPath
|
importPath := bp.ImportPath
|
||||||
p := packageCache[importPath]
|
p := packageCache[importPath]
|
||||||
if p != nil {
|
if p != nil {
|
||||||
stk.Push(path)
|
stk.Push(path)
|
||||||
p = reusePackage(p, stk)
|
p = reusePackage(p, stk)
|
||||||
stk.Pop()
|
stk.Pop()
|
||||||
setCmdline(p)
|
|
||||||
} else {
|
} else {
|
||||||
p = new(Package)
|
p = new(Package)
|
||||||
p.Internal.Local = build.IsLocalImport(path)
|
p.Internal.Local = build.IsLocalImport(path)
|
||||||
p.ImportPath = importPath
|
p.ImportPath = importPath
|
||||||
packageCache[importPath] = p
|
packageCache[importPath] = p
|
||||||
|
|
||||||
setCmdline(p)
|
|
||||||
|
|
||||||
// Load package.
|
// Load package.
|
||||||
// loadPackageData may return bp != nil even if an error occurs,
|
// loadPackageData may return bp != nil even if an error occurs,
|
||||||
// in order to return partial information.
|
// in order to return partial information.
|
||||||
|
|
@ -2865,15 +2844,15 @@ func PackagesAndErrors(ctx context.Context, opts PackageOpts, patterns []string)
|
||||||
if pkg == "" {
|
if pkg == "" {
|
||||||
panic(fmt.Sprintf("ImportPaths returned empty package for pattern %s", m.Pattern()))
|
panic(fmt.Sprintf("ImportPaths returned empty package for pattern %s", m.Pattern()))
|
||||||
}
|
}
|
||||||
mode := cmdlinePkg
|
p := loadImport(ctx, opts, pre, pkg, base.Cwd(), nil, &stk, nil, 0)
|
||||||
|
p.Match = append(p.Match, m.Pattern())
|
||||||
|
p.Internal.CmdlinePkg = true
|
||||||
if m.IsLiteral() {
|
if m.IsLiteral() {
|
||||||
// Note: do not set = m.IsLiteral unconditionally
|
// Note: do not set = m.IsLiteral unconditionally
|
||||||
// because maybe we'll see p matching both
|
// because maybe we'll see p matching both
|
||||||
// a literal and also a non-literal pattern.
|
// a literal and also a non-literal pattern.
|
||||||
mode |= cmdlinePkgLiteral
|
p.Internal.CmdlinePkgLiteral = true
|
||||||
}
|
}
|
||||||
p := loadImport(ctx, opts, pre, pkg, base.Cwd(), nil, &stk, nil, mode)
|
|
||||||
p.Match = append(p.Match, m.Pattern())
|
|
||||||
if seenPkg[p] {
|
if seenPkg[p] {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
# This test requires external linking. Assume that if cgo is supported
|
|
||||||
# then external linking works.
|
|
||||||
[!cgo] skip 'links and runs binaries'
|
|
||||||
|
|
||||||
# Only run on Unix systems that support -static.
|
|
||||||
[GOOS:windows] skip
|
|
||||||
[GOOS:plan9] skip
|
|
||||||
|
|
||||||
# Ordinary build should work.
|
|
||||||
go build
|
|
||||||
exec ./hello
|
|
||||||
stdout Hello
|
|
||||||
|
|
||||||
# Building with -linkmode=external should not say anything about
|
|
||||||
# runtime/cgo (issue #31544).
|
|
||||||
go build -ldflags=-linkmode=external
|
|
||||||
! stderr runtime/cgo
|
|
||||||
exec ./hello
|
|
||||||
stdout Hello
|
|
||||||
|
|
||||||
# Building with -linkmode=external -extldflags=-static should work.
|
|
||||||
go build -ldflags='-linkmode=external -extldflags=-static'
|
|
||||||
! stderr runtime/cgo
|
|
||||||
exec ./hello
|
|
||||||
stdout Hello
|
|
||||||
|
|
||||||
-- go.mod --
|
|
||||||
module hello
|
|
||||||
|
|
||||||
go 1.20
|
|
||||||
-- hello.go --
|
|
||||||
package main
|
|
||||||
|
|
||||||
import "fmt"
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
fmt.Println("Hello, world")
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue