mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/go/internal/modload: make EditBuildList report whether the build list was changed
For #36460 Change-Id: I8dd6e6f998a217a4287212815ce61209df6f007f Reviewed-on: https://go-review.googlesource.com/c/go/+/296609 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
b7f0fb6d9e
commit
2ceb79db52
3 changed files with 17 additions and 13 deletions
|
|
@ -30,7 +30,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
|
||||||
"runtime"
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
@ -1635,7 +1634,8 @@ func (r *resolver) updateBuildList(ctx context.Context, additions []module.Versi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := modload.EditBuildList(ctx, additions, resolved); err != nil {
|
changed, err := modload.EditBuildList(ctx, additions, resolved)
|
||||||
|
if err != nil {
|
||||||
var constraint *modload.ConstraintError
|
var constraint *modload.ConstraintError
|
||||||
if !errors.As(err, &constraint) {
|
if !errors.As(err, &constraint) {
|
||||||
base.Errorf("go get: %v", err)
|
base.Errorf("go get: %v", err)
|
||||||
|
|
@ -1654,12 +1654,11 @@ func (r *resolver) updateBuildList(ctx context.Context, additions []module.Versi
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
if !changed {
|
||||||
buildList := modload.LoadAllModules(ctx)
|
|
||||||
if reflect.DeepEqual(r.buildList, buildList) {
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
r.buildList = buildList
|
|
||||||
|
r.buildList = modload.LoadAllModules(ctx)
|
||||||
r.buildListVersion = make(map[string]string, len(r.buildList))
|
r.buildListVersion = make(map[string]string, len(r.buildList))
|
||||||
for _, m := range r.buildList {
|
for _, m := range r.buildList {
|
||||||
r.buildListVersion[m.Path] = m.Version
|
r.buildListVersion[m.Path] = m.Version
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"golang.org/x/mod/module"
|
"golang.org/x/mod/module"
|
||||||
|
|
@ -81,12 +82,12 @@ func Selected(path string) (version string) {
|
||||||
// If the versions listed in mustSelect are mutually incompatible (due to one of
|
// If the versions listed in mustSelect are mutually incompatible (due to one of
|
||||||
// the listed modules requiring a higher version of another), EditBuildList
|
// the listed modules requiring a higher version of another), EditBuildList
|
||||||
// returns a *ConstraintError and leaves the build list in its previous state.
|
// returns a *ConstraintError and leaves the build list in its previous state.
|
||||||
func EditBuildList(ctx context.Context, add, mustSelect []module.Version) error {
|
func EditBuildList(ctx context.Context, add, mustSelect []module.Version) (changed bool, err error) {
|
||||||
LoadModFile(ctx)
|
LoadModFile(ctx)
|
||||||
|
|
||||||
final, err := editBuildList(ctx, buildList, add, mustSelect)
|
final, err := editBuildList(ctx, buildList, add, mustSelect)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
selected := make(map[string]module.Version, len(final))
|
selected := make(map[string]module.Version, len(final))
|
||||||
|
|
@ -106,14 +107,18 @@ func EditBuildList(ctx context.Context, add, mustSelect []module.Version) error
|
||||||
}
|
}
|
||||||
|
|
||||||
if !inconsistent {
|
if !inconsistent {
|
||||||
buildList = final
|
|
||||||
additionalExplicitRequirements = make([]string, 0, len(mustSelect))
|
additionalExplicitRequirements = make([]string, 0, len(mustSelect))
|
||||||
for _, m := range mustSelect {
|
for _, m := range mustSelect {
|
||||||
if m.Version != "none" {
|
if m.Version != "none" {
|
||||||
additionalExplicitRequirements = append(additionalExplicitRequirements, m.Path)
|
additionalExplicitRequirements = append(additionalExplicitRequirements, m.Path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
changed := false
|
||||||
|
if !reflect.DeepEqual(buildList, final) {
|
||||||
|
buildList = final
|
||||||
|
changed = true
|
||||||
|
}
|
||||||
|
return changed, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// We overshot one or more of the modules in mustSelect, which means that
|
// We overshot one or more of the modules in mustSelect, which means that
|
||||||
|
|
@ -136,7 +141,7 @@ func EditBuildList(ctx context.Context, add, mustSelect []module.Version) error
|
||||||
m, queue = queue[0], queue[1:]
|
m, queue = queue[0], queue[1:]
|
||||||
required, err := reqs.Required(m)
|
required, err := reqs.Required(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return false, err
|
||||||
}
|
}
|
||||||
for _, r := range required {
|
for _, r := range required {
|
||||||
if _, ok := reason[r]; !ok {
|
if _, ok := reason[r]; !ok {
|
||||||
|
|
@ -164,7 +169,7 @@ func EditBuildList(ctx context.Context, add, mustSelect []module.Version) error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &ConstraintError{
|
return false, &ConstraintError{
|
||||||
Conflicts: conflicts,
|
Conflicts: conflicts,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -836,7 +836,7 @@ func installOutsideModule(ctx context.Context, args []string) {
|
||||||
// Since we are in NoRoot mode, the build list initially contains only
|
// Since we are in NoRoot mode, the build list initially contains only
|
||||||
// the dummy command-line-arguments module. Add a requirement on the
|
// the dummy command-line-arguments module. Add a requirement on the
|
||||||
// module that provides the packages named on the command line.
|
// module that provides the packages named on the command line.
|
||||||
if err := modload.EditBuildList(ctx, nil, []module.Version{installMod}); err != nil {
|
if _, err := modload.EditBuildList(ctx, nil, []module.Version{installMod}); err != nil {
|
||||||
base.Fatalf("go install %s: %v", args[0], err)
|
base.Fatalf("go install %s: %v", args[0], err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue