dnfjson: drop repo checksums

The repository checksums in the response from dnf-json aren't used
anywhere.  Since we're making changes to dnf-json and depsolving, now is
a good opportunity to drop them completely.
This commit is contained in:
Achilleas Koutsou 2022-05-23 19:06:24 +02:00 committed by Tom Gundersen
parent 0ef4e7ee84
commit 7a70a5e69b
13 changed files with 182 additions and 290 deletions

View file

@ -87,7 +87,7 @@ func NewSolver(modulePlatformID string, releaseVer string, arch string, cacheDir
}
// Depsolve the given packages with explicit excludes using the given configuration and repos
func Depsolve(pkgSets []rpmmd.PackageSet, modulePlatformID string, releaseVer string, arch string, cacheDir string) (*DepsolveResult, error) {
func Depsolve(pkgSets []rpmmd.PackageSet, modulePlatformID string, releaseVer string, arch string, cacheDir string) ([]rpmmd.PackageSpec, error) {
return NewSolver(modulePlatformID, releaseVer, arch, cacheDir).Depsolve(pkgSets)
}
@ -95,7 +95,7 @@ func Depsolve(pkgSets []rpmmd.PackageSet, modulePlatformID string, releaseVer st
// their associated repositories. Each package set is depsolved as a separate
// transactions in a chain. It returns a list of all packages (with solved
// dependencies) that will be installed into the system.
func (s *Solver) Depsolve(pkgSets []rpmmd.PackageSet) (*DepsolveResult, error) {
func (s *Solver) Depsolve(pkgSets []rpmmd.PackageSet) ([]rpmmd.PackageSpec, error) {
req, repoMap, err := s.makeDepsolveRequest(pkgSets)
if err != nil {
return nil, err
@ -105,19 +105,19 @@ func (s *Solver) Depsolve(pkgSets []rpmmd.PackageSet) (*DepsolveResult, error) {
if err != nil {
return nil, err
}
var result *depsolveResult
var result []PackageSpec
if err := json.Unmarshal(output, &result); err != nil {
return nil, err
}
return resultToPublic(result, repoMap), nil
return depsToRPMMD(result, repoMap), nil
}
func FetchMetadata(repos []rpmmd.RepoConfig, modulePlatformID string, releaseVer string, arch string, cacheDir string) (*FetchMetadataResult, error) {
func FetchMetadata(repos []rpmmd.RepoConfig, modulePlatformID string, releaseVer string, arch string, cacheDir string) (rpmmd.PackageList, error) {
return NewSolver(modulePlatformID, releaseVer, arch, cacheDir).FetchMetadata(repos)
}
func (s *Solver) FetchMetadata(repos []rpmmd.RepoConfig) (*FetchMetadataResult, error) {
func (s *Solver) FetchMetadata(repos []rpmmd.RepoConfig) (rpmmd.PackageList, error) {
req, err := s.makeDumpRequest(repos)
if err != nil {
return nil, err
@ -127,25 +127,18 @@ func (s *Solver) FetchMetadata(repos []rpmmd.RepoConfig) (*FetchMetadataResult,
return nil, err
}
metadata := new(FetchMetadataResult)
if err := json.Unmarshal(result, metadata); err != nil {
var pkgs rpmmd.PackageList
if err := json.Unmarshal(result, &pkgs); err != nil {
return nil, err
}
sortID := func(pkg rpmmd.Package) string {
return fmt.Sprintf("%s-%s-%s", pkg.Name, pkg.Version, pkg.Release)
}
pkgs := metadata.Packages
sort.Slice(pkgs, func(i, j int) bool {
return sortID(pkgs[i]) < sortID(pkgs[j])
})
metadata.Packages = pkgs
namedChecksums := make(map[string]string)
for _, repo := range repos {
namedChecksums[repo.Name] = metadata.Checksums[repo.Hash()]
}
metadata.Checksums = namedChecksums
return metadata, nil
return pkgs, nil
}
func (s *Solver) reposFromRPMMD(rpmRepos []rpmmd.RepoConfig) ([]repoConfig, error) {
@ -288,14 +281,6 @@ func (s *Solver) makeDumpRequest(repos []rpmmd.RepoConfig) (*Request, error) {
return &req, nil
}
// convert an internal depsolveResult to a public DepsolveResult.
func resultToPublic(result *depsolveResult, repos map[string]rpmmd.RepoConfig) *DepsolveResult {
return &DepsolveResult{
Checksums: result.Checksums,
Dependencies: depsToRPMMD(result.Dependencies, repos),
}
}
// convert internal a list of PackageSpecs to the rpmmd equivalent and attach
// key and subscription information based on the repository configs.
func depsToRPMMD(dependencies []PackageSpec, repos map[string]rpmmd.RepoConfig) []rpmmd.PackageSpec {
@ -359,31 +344,6 @@ type transactionArgs struct {
RepoIDs []string `json:"repo-ids"`
}
// Private version of the depsolve result. Uses a slightly different
// PackageSpec than the public one that uses the rpmmd type.
type depsolveResult struct {
// Repository checksums
Checksums map[string]string `json:"checksums"`
// Resolved package dependencies
Dependencies []PackageSpec `json:"dependencies"`
}
// DepsolveResult is the result returned from a Depsolve call.
type DepsolveResult struct {
// Repository checksums
Checksums map[string]string
// Resolved package dependencies
Dependencies []rpmmd.PackageSpec
}
// FetchMetadataResult is the result returned from a FetchMetadata call.
type FetchMetadataResult struct {
Checksums map[string]string `json:"checksums"`
Packages rpmmd.PackageList `json:"packages"`
}
// Package specification
type PackageSpec struct {
Name string `json:"name"`