]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: fix swigOne action with -n
authorAustin Clements <austin@google.com>
Sat, 6 May 2023 19:27:02 +0000 (15:27 -0400)
committerAustin Clements <austin@google.com>
Fri, 12 May 2023 12:00:04 +0000 (12:00 +0000)
Currently, if cmd/go builds a swig file with the -n (dry run) flag, it
will print the swig command invocation without executing it, but then
attempt to actually rename one of swig's output files, which will
fail. Make this rename conditional on -n. While we're here, we fix the
missing logging of the rename command with -x, too.

Change-Id: I1f6e6efc53dfe4ac5a42d26096679b97bc322827
Reviewed-on: https://go-review.googlesource.com/c/go/+/493255
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/cmd/go/internal/work/exec.go

index 66c1bfc41a0bb5ad51f940cc1509749dcfae8d3b..e52de3b6af2a78497a3f169b0bd416100afa587a 100644 (file)
@@ -3779,8 +3779,13 @@ func (b *Builder) swigOne(a *Action, p *load.Package, file, objdir string, pcCFL
        // going to compile.
        goFile = objdir + goFile
        newGoFile := objdir + "_" + base + "_swig.go"
-       if err := os.Rename(goFile, newGoFile); err != nil {
-               return "", "", err
+       if cfg.BuildX || cfg.BuildN {
+               b.Showcmd("", "mv %s %s", goFile, newGoFile)
+       }
+       if !cfg.BuildN {
+               if err := os.Rename(goFile, newGoFile); err != nil {
+                       return "", "", err
+               }
        }
        return newGoFile, objdir + gccBase + gccExt, nil
 }