gen-manifests: port to new images API

This commit is contained in:
Michael Vogt 2025-01-20 13:02:19 +01:00 committed by Tomáš Hozza
parent 0d669dddbf
commit e91f4ba961

View file

@ -167,12 +167,12 @@ func makeManifestJob(name string, imgType distro.ImageType, cr composeRequest, d
return return
} }
packageSpecs, repoConfigs, err := depsolve(cacheDir, manifest.GetPackageSetChains(), distribution, archName) depsolved, err := depsolve(cacheDir, manifest.GetPackageSetChains(), distribution, archName)
if err != nil { if err != nil {
err = fmt.Errorf("[%s] depsolve failed: %s", filename, err.Error()) err = fmt.Errorf("[%s] depsolve failed: %s", filename, err.Error())
return return
} }
if packageSpecs == nil { if depsolved == nil {
err = fmt.Errorf("[%s] nil package specs", filename) err = fmt.Errorf("[%s] nil package specs", filename)
return return
} }
@ -188,7 +188,7 @@ func makeManifestJob(name string, imgType distro.ImageType, cr composeRequest, d
commitSpecs := resolvePipelineCommits(manifest.GetOSTreeSourceSpecs()) commitSpecs := resolvePipelineCommits(manifest.GetOSTreeSourceSpecs())
mf, err := manifest.Serialize(packageSpecs, containerSpecs, commitSpecs, repoConfigs) mf, err := manifest.Serialize(depsolved, containerSpecs, commitSpecs, nil)
if err != nil { if err != nil {
return fmt.Errorf("[%s] manifest serialization failed: %s", filename, err.Error()) return fmt.Errorf("[%s] manifest serialization failed: %s", filename, err.Error())
} }
@ -202,7 +202,11 @@ func makeManifestJob(name string, imgType distro.ImageType, cr composeRequest, d
Blueprint: cr.Blueprint, Blueprint: cr.Blueprint,
OSTree: cr.OSTree, OSTree: cr.OSTree,
} }
err = save(mf, packageSpecs, containerSpecs, commitSpecs, request, path, filename) rpmmd := map[string][]rpmmd.PackageSpec{}
for plName, pkgSet := range depsolved {
rpmmd[plName] = pkgSet.Packages
}
err = save(mf, rpmmd, containerSpecs, commitSpecs, request, path, filename)
return return
} }
return job return job
@ -322,19 +326,17 @@ func resolvePipelineCommits(commitSources map[string][]ostree.SourceSpec) map[st
return commits return commits
} }
func depsolve(cacheDir string, packageSets map[string][]rpmmd.PackageSet, d distro.Distro, arch string) (map[string][]rpmmd.PackageSpec, map[string][]rpmmd.RepoConfig, error) { func depsolve(cacheDir string, packageSets map[string][]rpmmd.PackageSet, d distro.Distro, arch string) (map[string]dnfjson.DepsolveResult, error) {
solver := dnfjson.NewSolver(d.ModulePlatformID(), d.Releasever(), arch, d.Name(), cacheDir) solver := dnfjson.NewSolver(d.ModulePlatformID(), d.Releasever(), arch, d.Name(), cacheDir)
depsolvedSets := make(map[string][]rpmmd.PackageSpec) depsolvedSets := make(map[string]dnfjson.DepsolveResult)
repoConfigs := make(map[string][]rpmmd.RepoConfig)
for name, pkgSet := range packageSets { for name, pkgSet := range packageSets {
res, err := solver.Depsolve(pkgSet, sbom.StandardTypeNone) res, err := solver.Depsolve(pkgSet, sbom.StandardTypeNone)
if err != nil { if err != nil {
return nil, nil, err return nil, err
} }
depsolvedSets[name] = res.Packages depsolvedSets[name] = *res
repoConfigs[name] = res.Repos
} }
return depsolvedSets, repoConfigs, nil return depsolvedSets, nil
} }
func save(ms manifest.OSBuildManifest, pkgs map[string][]rpmmd.PackageSpec, containers map[string][]container.Spec, commits map[string][]ostree.CommitSpec, cr composeRequest, path, filename string) error { func save(ms manifest.OSBuildManifest, pkgs map[string][]rpmmd.PackageSpec, containers map[string][]container.Spec, commits map[string][]ostree.CommitSpec, cr composeRequest, path, filename string) error {