From: Ian Lance Taylor Date: Fri, 4 May 2018 23:44:05 +0000 (-0700) Subject: cmd/go: don't give an error for an attempt to recreate a symlink X-Git-Tag: go1.11beta1~524 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f7c767edc52e0989b58083c43241a1f21d82915f;p=gostls13.git cmd/go: don't give an error for an attempt to recreate a symlink When building for gccgo cmd/go uses symlinks for import maps. In some cases, such as TestVendorTest, it generates the same symlink multiple times. Don't give an error when this happens. Change-Id: Iecc154ea1ac53d7c5427b36795881909c5cac7e3 Reviewed-on: https://go-review.googlesource.com/111636 Run-TryBot: Ian Lance Taylor Reviewed-by: Brad Fitzpatrick --- diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go index 7379b886cc..c839438ba3 100644 --- a/src/cmd/go/internal/work/exec.go +++ b/src/cmd/go/internal/work/exec.go @@ -1622,6 +1622,11 @@ func (b *Builder) Mkdir(dir string) error { // symlink creates a symlink newname -> oldname. func (b *Builder) Symlink(oldname, newname string) error { + // It's not an error to try to recreate an existing symlink. + if link, err := os.Readlink(newname); err == nil && link == oldname { + return nil + } + if cfg.BuildN || cfg.BuildX { b.Showcmd("", "ln -s %s %s", oldname, newname) if cfg.BuildN {