]> Cypherpunks repositories - gostls13.git/commitdiff
Revert "cmd/go: import runtime/cgo when externally linking"
authorBryan Mills <bcmills@google.com>
Mon, 20 Mar 2023 14:31:59 +0000 (14:31 +0000)
committerGopher Robot <gobot@golang.org>
Mon, 20 Mar 2023 15:39:11 +0000 (15:39 +0000)
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>
src/cmd/go/internal/load/pkg.go
src/cmd/go/testdata/script/build_static.txt [deleted file]

index 930471b6677c29ee76a3fc4ad06c506f82f8dbe8..dcba2cc28b650a6770d8ca980d533cf73e62e03f 100644 (file)
@@ -684,15 +684,6 @@ const (
        // GetTestDeps is for download (part of "go get") and indicates
        // that test dependencies should be fetched too.
        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,
@@ -747,30 +738,18 @@ func loadImport(ctx context.Context, opts PackageOpts, pre *preload, path, srcDi
                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
        p := packageCache[importPath]
        if p != nil {
                stk.Push(path)
                p = reusePackage(p, stk)
                stk.Pop()
-               setCmdline(p)
        } else {
                p = new(Package)
                p.Internal.Local = build.IsLocalImport(path)
                p.ImportPath = importPath
                packageCache[importPath] = p
 
-               setCmdline(p)
-
                // Load package.
                // loadPackageData may return bp != nil even if an error occurs,
                // in order to return partial information.
@@ -2865,15 +2844,15 @@ func PackagesAndErrors(ctx context.Context, opts PackageOpts, patterns []string)
                        if pkg == "" {
                                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() {
                                // Note: do not set = m.IsLiteral unconditionally
                                // because maybe we'll see p matching both
                                // 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] {
                                continue
                        }
diff --git a/src/cmd/go/testdata/script/build_static.txt b/src/cmd/go/testdata/script/build_static.txt
deleted file mode 100644 (file)
index 611d94d..0000000
+++ /dev/null
@@ -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")
-}