rpmmd: add Repositories list to PackageSet struct
Attach the repository configurations that are specific to a package set directly on the PackageSet object. This simplifies the Depsolve() signature and avoids requiring a `nil` when no additional repositories are required. More importantly, it makes associating repositories to package sets explicit, no longer relying on matching array indices or map keys.
This commit is contained in:
parent
1c4d8f9988
commit
86536f11e7
10 changed files with 72 additions and 80 deletions
|
|
@ -83,10 +83,10 @@ func TestCrossArchDepsolve(t *testing.T) {
|
|||
|
||||
packages := imgType.PackageSets(blueprint.Blueprint{})
|
||||
|
||||
_, err = solver.Depsolve([]rpmmd.PackageSet{packages["build"]}, repos[archStr], nil)
|
||||
_, err = solver.Depsolve([]rpmmd.PackageSet{packages["build"]}, repos[archStr])
|
||||
assert.NoError(t, err)
|
||||
|
||||
_, err = solver.Depsolve([]rpmmd.PackageSet{packages["packages"]}, repos[archStr], nil)
|
||||
_, err = solver.Depsolve([]rpmmd.PackageSet{packages["packages"]}, repos[archStr])
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
}
|
||||
|
|
@ -155,7 +155,7 @@ func TestDepsolvePackageSets(t *testing.T) {
|
|||
pkgSets[idx] = imagePkgSets[pkgSetName]
|
||||
delete(imagePkgSets, pkgSetName) // will be depsolved here: remove from map
|
||||
}
|
||||
res, err := solver.Depsolve(pkgSets, x86Repos, nil)
|
||||
res, err := solver.Depsolve(pkgSets, x86Repos)
|
||||
if err != nil {
|
||||
require.Nil(t, err)
|
||||
}
|
||||
|
|
@ -164,7 +164,7 @@ func TestDepsolvePackageSets(t *testing.T) {
|
|||
|
||||
// depsolve the rest of the package sets
|
||||
for name, pkgSet := range imagePkgSets {
|
||||
res, err := solver.Depsolve([]rpmmd.PackageSet{pkgSet}, x86Repos, nil)
|
||||
res, err := solver.Depsolve([]rpmmd.PackageSet{pkgSet}, x86Repos)
|
||||
if err != nil {
|
||||
require.Nil(t, err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ func main() {
|
|||
pkgSets[idx] = packageSets[pkgSetName]
|
||||
delete(packageSets, pkgSetName) // will be depsolved here: remove from map
|
||||
}
|
||||
res, err := solver.Depsolve(pkgSets, repos, nil)
|
||||
res, err := solver.Depsolve(pkgSets, repos)
|
||||
if err != nil {
|
||||
panic("Could not depsolve: " + err.Error())
|
||||
}
|
||||
|
|
@ -161,7 +161,7 @@ func main() {
|
|||
|
||||
// depsolve the rest of the package sets
|
||||
for name, pkgSet := range packageSets {
|
||||
res, err := solver.Depsolve([]rpmmd.PackageSet{pkgSet}, repos, nil)
|
||||
res, err := solver.Depsolve([]rpmmd.PackageSet{pkgSet}, repos)
|
||||
if err != nil {
|
||||
panic("Could not depsolve: " + err.Error())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ func getManifest(bp blueprint.Blueprint, t distro.ImageType, a distro.Arch, d di
|
|||
pkgSpecSets := make(map[string][]rpmmd.PackageSpec)
|
||||
solver := dnfjson.NewSolver(d.ModulePlatformID(), d.Releasever(), a.Name(), cacheDir)
|
||||
for name, packages := range packageSets {
|
||||
res, err := solver.Depsolve([]rpmmd.PackageSet{packages}, repos, nil)
|
||||
res, err := solver.Depsolve([]rpmmd.PackageSet{packages}, repos)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,18 +21,17 @@ type DepsolveJobImpl struct {
|
|||
// (matching map keys).
|
||||
func (impl *DepsolveJobImpl) depsolve(packageSetsChains map[string][]string, packageSets map[string]rpmmd.PackageSet, repos []rpmmd.RepoConfig, packageSetsRepos map[string][]rpmmd.RepoConfig, modulePlatformID, arch, releasever string) (map[string][]rpmmd.PackageSpec, error) {
|
||||
solver := dnfjson.NewSolver(modulePlatformID, releasever, arch, impl.RPMMDCache)
|
||||
depsolvedSets := make(map[string][]rpmmd.PackageSpec)
|
||||
psRepos := make([][]rpmmd.RepoConfig, 0)
|
||||
|
||||
depsolvedSets := make(map[string][]rpmmd.PackageSpec)
|
||||
// first depsolve package sets that are part of a chain
|
||||
for specName, setNames := range packageSetsChains {
|
||||
pkgSets := make([]rpmmd.PackageSet, len(setNames))
|
||||
for idx, pkgSetName := range setNames {
|
||||
pkgSets[idx] = packageSets[pkgSetName]
|
||||
psRepos = append(psRepos, packageSetsRepos[pkgSetName]) // will be nil if it doesn't exist
|
||||
delete(packageSets, pkgSetName) // will be depsolved here: remove from map
|
||||
pkgSets[idx].Repositories = packageSetsRepos[pkgSetName]
|
||||
delete(packageSets, pkgSetName) // will be depsolved here: remove from map
|
||||
}
|
||||
res, err := solver.Depsolve(pkgSets, repos, psRepos)
|
||||
res, err := solver.Depsolve(pkgSets, repos)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -41,7 +40,8 @@ func (impl *DepsolveJobImpl) depsolve(packageSetsChains map[string][]string, pac
|
|||
|
||||
// depsolve the rest of the package sets
|
||||
for name, pkgSet := range packageSets {
|
||||
res, err := solver.Depsolve([]rpmmd.PackageSet{pkgSet}, repos, [][]rpmmd.RepoConfig{packageSetsRepos[name]})
|
||||
pkgSet.Repositories = packageSetsRepos[name]
|
||||
res, err := solver.Depsolve([]rpmmd.PackageSet{pkgSet}, repos)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue