]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: stat the archive file only when executing the commands
authorMohit Agarwal <mohit@sdf.org>
Thu, 24 Mar 2016 17:16:10 +0000 (22:46 +0530)
committerIan Lance Taylor <iant@golang.org>
Fri, 25 Mar 2016 18:35:15 +0000 (18:35 +0000)
Fixes #14944

Change-Id: I73e0997cb6ebaeced1045b0ddadac893319bd78f
Reviewed-on: https://go-review.googlesource.com/21065
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>

src/cmd/go/build.go
src/cmd/go/go_test.go

index 08062ea9a536171da2c12a725a3bf9588eeecf50..01b32c30ed0513cfcee7f4d0554beb4f8b8b673e 100644 (file)
@@ -2346,8 +2346,10 @@ func (gcToolchain) pack(b *builder, p *Package, objDir, afile string, ofiles []s
 
        // The archive file should have been created by the compiler.
        // Since it used to not work that way, verify.
-       if _, err := os.Stat(absAfile); err != nil {
-               fatalf("os.Stat of archive file failed: %v", err)
+       if !buildN {
+               if _, err := os.Stat(absAfile); err != nil {
+                       fatalf("os.Stat of archive file failed: %v", err)
+               }
        }
 
        if buildN || buildX {
index e20ec814c50720da8f489135cea0823c7a853cee..05e509d41dd81367723424cdb12a7a574da50fa6 100644 (file)
@@ -1982,6 +1982,27 @@ func TestCoverageUsesActualSettingToOverrideEvenForRace(t *testing.T) {
        checkCoverage(tg, data)
 }
 
+func TestBuildDryRunWithCgo(t *testing.T) {
+       if !canCgo {
+               t.Skip("skipping because cgo not enabled")
+       }
+
+       tg := testgo(t)
+       defer tg.cleanup()
+       tg.tempFile("foo.go", `package main
+
+/*
+#include <limits.h>
+*/
+import "C"
+
+func main() {
+        println(C.INT_MAX)
+}`)
+       tg.run("build", "-n", tg.path("foo.go"))
+       tg.grepStderrNot(`os.Stat .* no such file or directory`, "unexpected stat of archive file")
+}
+
 func TestCoverageWithCgo(t *testing.T) {
        if !canCgo {
                t.Skip("skipping because cgo not enabled")