cmd/go: ignore errors from go/build for standard packages
authorIan Lance Taylor <ian@gcc.gnu.org>
Mon, 15 Aug 2016 18:05:24 +0000 (18:05 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Mon, 15 Aug 2016 18:05:24 +0000 (18:05 +0000)
    The go/build package does not know that gccgo's standard packages don't
    have source, and will report an error saying that it can not find them.
    Work around that in the cmd/go sources, since the go/build sources don't
    currently have a list of standard packages.

    This should get a real fix in the master sources, somehow.

    Fixes golang/go#16701.

    Reviewed-on: https://go-review.googlesource.com/27052

From-SVN: r239486

gcc/go/gofrontend/MERGE
libgo/go/cmd/go/pkg.go

index 16beba1d84393403b54558b7ce7546819b22529f..e6a0f8483f547f6ae6550278b3aa0bfda696a9b3 100644 (file)
@@ -1,4 +1,4 @@
-24e0c4c98e0614b1892316aca787f1c564f2d269
+affb1bf5fcd7abf05993c54313d8000b93a08d4a
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index 6d5d97f5c07163884748f987602a62b6a9379629..d1292a132d26747649bec35476fc4dfe6f6c3593 100644 (file)
@@ -763,6 +763,13 @@ var cgoSyscallExclude = map[string]bool{
 func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package {
        p.copyBuild(bp)
 
+       // When using gccgo the go/build package will not be able to
+       // find a standard package.  It would be nicer to not get that
+       // error, but go/build doesn't know stdpkg.
+       if runtime.Compiler == "gccgo" && err != nil && p.Standard {
+               err = nil
+       }
+
        // The localPrefix is the path we interpret ./ imports relative to.
        // Synthesized main packages sometimes override this.
        p.localPrefix = dirToImportPath(p.Dir)