mirror of
https://github.com/golang/go.git
synced 2025-05-17 21:34:36 +00:00
cmd/go/internal/mvs: in Upgrade, pass upgrades to buildList as upgrades
This has no impact on the resulting build list, but provides clearer diagnostics if reqs.Required returns an error for one of the upgraded modules. For #37438 Change-Id: I5cd8f72a9b7b9a0b185e1a728f46fefbd2f09b4a Reviewed-on: https://go-review.googlesource.com/c/go/+/266897 Trust: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Michael Matloob <matloob@golang.org>
This commit is contained in:
parent
4a3339223c
commit
a19a4dcb98
@ -108,19 +108,21 @@ func buildList(target module.Version, reqs Reqs, upgrade func(module.Version) (m
|
|||||||
node := &modGraphNode{m: m}
|
node := &modGraphNode{m: m}
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
modGraph[m] = node
|
modGraph[m] = node
|
||||||
if v, ok := min[m.Path]; !ok || reqs.Max(v, m.Version) != v {
|
if m.Version != "none" {
|
||||||
min[m.Path] = m.Version
|
if v, ok := min[m.Path]; !ok || reqs.Max(v, m.Version) != v {
|
||||||
|
min[m.Path] = m.Version
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mu.Unlock()
|
mu.Unlock()
|
||||||
|
|
||||||
required, err := reqs.Required(m)
|
if m.Version != "none" {
|
||||||
if err != nil {
|
required, err := reqs.Required(m)
|
||||||
setErr(node, err)
|
if err != nil {
|
||||||
return
|
setErr(node, err)
|
||||||
}
|
return
|
||||||
node.required = required
|
}
|
||||||
for _, r := range node.required {
|
node.required = required
|
||||||
if r.Version != "none" {
|
for _, r := range node.required {
|
||||||
work.Add(r)
|
work.Add(r)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -333,12 +335,31 @@ func Upgrade(target module.Version, reqs Reqs, upgrade ...module.Version) ([]mod
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// TODO: Maybe if an error is given,
|
|
||||||
// rerun with BuildList(upgrade[0], reqs) etc
|
pathInList := make(map[string]bool, len(list))
|
||||||
// to find which ones are the buggy ones.
|
for _, m := range list {
|
||||||
|
pathInList[m.Path] = true
|
||||||
|
}
|
||||||
list = append([]module.Version(nil), list...)
|
list = append([]module.Version(nil), list...)
|
||||||
list = append(list, upgrade...)
|
|
||||||
return BuildList(target, &override{target, list, reqs})
|
upgradeTo := make(map[string]string, len(upgrade))
|
||||||
|
for _, u := range upgrade {
|
||||||
|
if !pathInList[u.Path] {
|
||||||
|
list = append(list, module.Version{Path: u.Path, Version: "none"})
|
||||||
|
}
|
||||||
|
if prev, dup := upgradeTo[u.Path]; dup {
|
||||||
|
upgradeTo[u.Path] = reqs.Max(prev, u.Version)
|
||||||
|
} else {
|
||||||
|
upgradeTo[u.Path] = u.Version
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return buildList(target, &override{target, list, reqs}, func(m module.Version) (module.Version, error) {
|
||||||
|
if v, ok := upgradeTo[m.Path]; ok {
|
||||||
|
return module.Version{Path: m.Path, Version: v}, nil
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Downgrade returns a build list for the target module
|
// Downgrade returns a build list for the target module
|
||||||
|
@ -491,9 +491,9 @@ func (r reqsMap) Max(v1, v2 string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r reqsMap) Upgrade(m module.Version) (module.Version, error) {
|
func (r reqsMap) Upgrade(m module.Version) (module.Version, error) {
|
||||||
var u module.Version
|
u := module.Version{Version: "none"}
|
||||||
for k := range r {
|
for k := range r {
|
||||||
if k.Path == m.Path && u.Version < k.Version && !strings.HasSuffix(k.Version, ".hidden") {
|
if k.Path == m.Path && r.Max(u.Version, k.Version) == k.Version && !strings.HasSuffix(k.Version, ".hidden") {
|
||||||
u = k
|
u = k
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user