Calculate provides for parallel solver too

This commit is contained in:
Ettore Di Giacinto
2020-11-05 21:00:24 +01:00
parent 984366d3a5
commit 5b5735266a
2 changed files with 7 additions and 12 deletions

View File

@@ -556,10 +556,11 @@ func (s *Parallel) Upgrade(checkconflicts, full bool) (pkg.Packages, PackagesAss
toUninstall := pkg.Packages{} toUninstall := pkg.Packages{}
toInstall := pkg.Packages{} toInstall := pkg.Packages{}
availableCache := map[string]pkg.Packages{}
// we do this in memory so we take into account of provides
universe := pkg.NewInMemoryDatabase(false)
for _, p := range s.DefinitionDatabase.World() { for _, p := range s.DefinitionDatabase.World() {
// Each one, should be expanded universe.CreatePackage(p)
availableCache[p.GetName()+p.GetCategory()] = append(availableCache[p.GetName()+p.GetCategory()], p)
} }
installedcopy := pkg.NewInMemoryDatabase(false) installedcopy := pkg.NewInMemoryDatabase(false)
@@ -575,10 +576,10 @@ func (s *Parallel) Upgrade(checkconflicts, full bool) (pkg.Packages, PackagesAss
defer wg.Done() defer wg.Done()
for p := range c { for p := range c {
installedcopy.CreatePackage(p) installedcopy.CreatePackage(p)
packages, ok := availableCache[p.GetName()+p.GetCategory()] packages, err := universe.FindPackageVersions(p)
if ok && len(packages) != 0 { if err == nil && len(packages) != 0 {
best := packages.Best(nil) best := packages.Best(nil)
if best.GetVersion() != p.GetVersion() { if !best.Matches(p) {
results <- []pkg.Package{p, best} results <- []pkg.Package{p, best}
} }
} }

View File

@@ -489,12 +489,6 @@ func (s *Solver) Upgrade(checkconflicts, full bool) (pkg.Packages, PackagesAsser
toUninstall := pkg.Packages{} toUninstall := pkg.Packages{}
toInstall := pkg.Packages{} toInstall := pkg.Packages{}
availableCache := map[string]pkg.Packages{}
for _, p := range s.DefinitionDatabase.World() {
// Each one, should be expanded
availableCache[p.GetName()+p.GetCategory()] = append(availableCache[p.GetName()+p.GetCategory()], p)
}
// we do this in memory so we take into account of provides // we do this in memory so we take into account of provides
universe := pkg.NewInMemoryDatabase(false) universe := pkg.NewInMemoryDatabase(false)
for _, p := range s.DefinitionDatabase.World() { for _, p := range s.DefinitionDatabase.World() {