]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: fix bugs in replacement path handling
authorMichael Matloob <matloob@golang.org>
Tue, 19 Oct 2021 18:05:29 +0000 (14:05 -0400)
committerMichael Matloob <matloob@golang.org>
Fri, 5 Nov 2021 22:00:16 +0000 (22:00 +0000)
These are tested in golang.org/cl/357169 and golang.org/cl/358540.

Change-Id: I5add3f202db71731487f2688234c547abe1fd287
Reviewed-on: https://go-review.googlesource.com/c/go/+/361416
Trust: Michael Matloob <matloob@golang.org>
Run-TryBot: Michael Matloob <matloob@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
src/cmd/go/internal/modload/init.go
src/cmd/go/internal/modload/modfile.go

index 0602aee0cccd63300d90d92256fda9bcf2912af4..9aef5a7c33e5684c90bb6b64c7fc0ff109459fb7 100644 (file)
@@ -968,7 +968,7 @@ func makeMainModules(ms []module.Version, rootDirs []string, modFiles []*modfile
                        for _, r := range modFiles[i].Replace {
                                if replacedByWorkFile[r.Old.Path] {
                                        continue
-                               } else if prev, ok := replacements[r.Old]; ok && !curModuleReplaces[r.Old] {
+                               } else if prev, ok := replacements[r.Old]; ok && !curModuleReplaces[r.Old] && prev != r.New {
                                        base.Fatalf("go: conflicting replacements for %v:\n\t%v\n\t%v\nuse \"go mod editwork -replace %v=[override]\" to resolve", r.Old, prev, r.New, r.Old)
                                }
                                curModuleReplaces[r.Old] = true
index 1672d563b794bf844665bff28965c7e4930826c4..a7e92222a1ecf188223fe6e667fdc0c527b356bb 100644 (file)
@@ -378,7 +378,7 @@ func canonicalizeReplacePath(r module.Version, modRoot string) module.Version {
                return r
        }
        abs := filepath.Join(modRoot, r.Path)
-       if rel, err := filepath.Rel(workFilePath, abs); err == nil {
+       if rel, err := filepath.Rel(filepath.Dir(workFilePath), abs); err == nil {
                return module.Version{Path: rel, Version: r.Version}
        }
        // We couldn't make the version's path relative to the workspace's path,