From 917c7a6fc9c6843e40da7f8e1a1fcf8605d1383e Mon Sep 17 00:00:00 2001 From: Andrew Bonventre Date: Mon, 24 Feb 2020 22:47:00 +0000 Subject: [PATCH] Revert "cmd/go/internal/modload: record the replacement for the module containing package main in BuildInfo" This reverts CL 220645 (commit e092fc352ad393a4d2f1f7fa641df2d23572ccff). Reason for revert: Seems to have broken windows/amd64 longtest Change-Id: Iffa8c882524250e5845514bc827fcd8927645a44 Reviewed-on: https://go-review.googlesource.com/c/go/+/220722 Run-TryBot: Andrew Bonventre Reviewed-by: Bryan C. Mills TryBot-Result: Gobot Gobot --- src/cmd/go/internal/modload/build.go | 30 +++++------ .../mod/example.com_printversion_v0.1.0.txt | 6 --- .../mod/example.com_printversion_v1.0.0.txt | 6 --- .../go/testdata/script/version_replace.txt | 33 ------------ src/runtime/debug/mod.go | 51 ++++++++----------- 5 files changed, 36 insertions(+), 90 deletions(-) delete mode 100644 src/cmd/go/testdata/script/version_replace.txt diff --git a/src/cmd/go/internal/modload/build.go b/src/cmd/go/internal/modload/build.go index 454dbf28cf..6fa47d7400 100644 --- a/src/cmd/go/internal/modload/build.go +++ b/src/cmd/go/internal/modload/build.go @@ -207,7 +207,6 @@ func PackageBuildInfo(path string, deps []string) string { if isStandardImportPath(path) || !Enabled() { return "" } - target := mustFindModule(path, path) mdeps := make(map[module.Version]bool) for _, dep := range deps { @@ -224,25 +223,26 @@ func PackageBuildInfo(path string, deps []string) string { var buf bytes.Buffer fmt.Fprintf(&buf, "path\t%s\n", path) - - writeEntry := func(token string, m module.Version) { - mv := m.Version + tv := target.Version + if tv == "" { + tv = "(devel)" + } + fmt.Fprintf(&buf, "mod\t%s\t%s\t%s\n", target.Path, tv, modfetch.Sum(target)) + for _, mod := range mods { + mv := mod.Version if mv == "" { mv = "(devel)" } - fmt.Fprintf(&buf, "%s\t%s\t%s", token, m.Path, mv) - if r := Replacement(m); r.Path == "" { - fmt.Fprintf(&buf, "\t%s\n", modfetch.Sum(m)) - } else { - fmt.Fprintf(&buf, "\n=>\t%s\t%s\t%s\n", r.Path, r.Version, modfetch.Sum(r)) + r := Replacement(mod) + h := "" + if r.Path == "" { + h = "\t" + modfetch.Sum(mod) + } + fmt.Fprintf(&buf, "dep\t%s\t%s%s\n", mod.Path, mv, h) + if r.Path != "" { + fmt.Fprintf(&buf, "=>\t%s\t%s\t%s\n", r.Path, r.Version, modfetch.Sum(r)) } } - - writeEntry("mod", target) - for _, mod := range mods { - writeEntry("dep", mod) - } - return buf.String() } diff --git a/src/cmd/go/testdata/mod/example.com_printversion_v0.1.0.txt b/src/cmd/go/testdata/mod/example.com_printversion_v0.1.0.txt index 606322ac86..bae8b13d47 100644 --- a/src/cmd/go/testdata/mod/example.com_printversion_v0.1.0.txt +++ b/src/cmd/go/testdata/mod/example.com_printversion_v0.1.0.txt @@ -21,13 +21,7 @@ func main() { info, _ := debug.ReadBuildInfo() fmt.Fprintf(os.Stdout, "path is %s\n", info.Path) fmt.Fprintf(os.Stdout, "main is %s %s\n", info.Main.Path, info.Main.Version) - if r := info.Main.Replace; r != nil { - fmt.Fprintf(os.Stdout, "\t(replaced by %s %s)\n", r.Path, r.Version) - } for _, m := range info.Deps { fmt.Fprintf(os.Stdout, "using %s %s\n", m.Path, m.Version) - if r := m.Replace; r != nil { - fmt.Fprintf(os.Stdout, "\t(replaced by %s %s)\n", r.Path, r.Version) - } } } diff --git a/src/cmd/go/testdata/mod/example.com_printversion_v1.0.0.txt b/src/cmd/go/testdata/mod/example.com_printversion_v1.0.0.txt index b9b71e9538..246741821a 100644 --- a/src/cmd/go/testdata/mod/example.com_printversion_v1.0.0.txt +++ b/src/cmd/go/testdata/mod/example.com_printversion_v1.0.0.txt @@ -29,13 +29,7 @@ func main() { info, _ := debug.ReadBuildInfo() fmt.Fprintf(os.Stdout, "path is %s\n", info.Path) fmt.Fprintf(os.Stdout, "main is %s %s\n", info.Main.Path, info.Main.Version) - if r := info.Main.Replace; r != nil { - fmt.Fprintf(os.Stdout, "\t(replaced by %s %s)\n", r.Path, r.Version) - } for _, m := range info.Deps { fmt.Fprintf(os.Stdout, "using %s %s\n", m.Path, m.Version) - if r := m.Replace; r != nil { - fmt.Fprintf(os.Stdout, "\t(replaced by %s %s)\n", r.Path, r.Version) - } } } diff --git a/src/cmd/go/testdata/script/version_replace.txt b/src/cmd/go/testdata/script/version_replace.txt deleted file mode 100644 index e832b2ec07..0000000000 --- a/src/cmd/go/testdata/script/version_replace.txt +++ /dev/null @@ -1,33 +0,0 @@ -[short] skip - -go mod download example.com/printversion@v0.1.0 example.com/printversion@v1.0.0 - -go install example.com/printversion - -go run example.com/printversion -cmp stdout out.txt - -go version -m $GOPATH/bin/printversion -stdout '^.*[/\\]bin[/\\]printversion: .*$' -stdout '^ path example.com/printversion$' -stdout '^ mod example.com/printversion v0.1.0$' -stdout '^ => example.com/printversion v1.0.0 h1:.*$' -stdout '^ dep example.com/version v1.0.0$' -stdout '^ => example.com/version v1.0.1 h1:.*$' - --- go.mod -- -module golang.org/issue/37392 -go 1.14 -require ( - example.com/printversion v0.1.0 -) -replace ( - example.com/printversion => example.com/printversion v1.0.0 - example.com/version v1.0.0 => example.com/version v1.0.1 -) --- out.txt -- -path is example.com/printversion -main is example.com/printversion v0.1.0 - (replaced by example.com/printversion v1.0.0) -using example.com/version v1.0.0 - (replaced by example.com/version v1.0.1) diff --git a/src/runtime/debug/mod.go b/src/runtime/debug/mod.go index 0381bdcc53..837cd689a0 100644 --- a/src/runtime/debug/mod.go +++ b/src/runtime/debug/mod.go @@ -47,27 +47,9 @@ func readBuildInfo(data string) (*BuildInfo, bool) { repLine = "=>\t" ) - readEntryFirstLine := func(elem []string) (Module, bool) { - if len(elem) != 2 && len(elem) != 3 { - return Module{}, false - } - sum := "" - if len(elem) == 3 { - sum = elem[2] - } - return Module{ - Path: elem[0], - Version: elem[1], - Sum: sum, - }, true - } + info := &BuildInfo{} - var ( - info = &BuildInfo{} - last *Module - line string - ok bool - ) + var line string // Reverse of cmd/go/internal/modload.PackageBuildInfo for len(data) > 0 { i := strings.IndexByte(data, '\n') @@ -81,33 +63,42 @@ func readBuildInfo(data string) (*BuildInfo, bool) { info.Path = elem case strings.HasPrefix(line, modLine): elem := strings.Split(line[len(modLine):], "\t") - last = &info.Main - *last, ok = readEntryFirstLine(elem) - if !ok { + if len(elem) != 3 { return nil, false } + info.Main = Module{ + Path: elem[0], + Version: elem[1], + Sum: elem[2], + } case strings.HasPrefix(line, depLine): elem := strings.Split(line[len(depLine):], "\t") - last = new(Module) - info.Deps = append(info.Deps, last) - *last, ok = readEntryFirstLine(elem) - if !ok { + if len(elem) != 2 && len(elem) != 3 { return nil, false } + sum := "" + if len(elem) == 3 { + sum = elem[2] + } + info.Deps = append(info.Deps, &Module{ + Path: elem[0], + Version: elem[1], + Sum: sum, + }) case strings.HasPrefix(line, repLine): elem := strings.Split(line[len(repLine):], "\t") if len(elem) != 3 { return nil, false } - if last == nil { + last := len(info.Deps) - 1 + if last < 0 { return nil, false } - last.Replace = &Module{ + info.Deps[last].Replace = &Module{ Path: elem[0], Version: elem[1], Sum: elem[2], } - last = nil } } return info, true -- 2.50.0