Replace ResolveVirtualPackage function with GetDatabaseVirtualPackageEntry

This commit is contained in:
2026-02-05 14:54:08 +02:00
parent 8579c688d7
commit 619335bbe6
4 changed files with 14 additions and 14 deletions
+3 -1
View File
@@ -234,7 +234,9 @@ func showPackageInfo() {
var entry *bpmlib.BPMDatabaseEntry var entry *bpmlib.BPMDatabaseEntry
entry, _, err = bpmlib.GetDatabaseEntry(pkg) entry, _, err = bpmlib.GetDatabaseEntry(pkg)
if err != nil { if err != nil {
if entry = bpmlib.ResolveVirtualPackage(pkg); entry == nil { if providers := bpmlib.GetDatabaseVirtualPackageEntry(pkg); len(providers) > 0 {
entry = providers[0]
} else {
log.Printf("Error: could not find package (%s) in any database\n", pkg) log.Printf("Error: could not find package (%s) in any database\n", pkg)
exitCode = 1 exitCode = 1
return return
+7 -10
View File
@@ -20,7 +20,7 @@ import (
type BPMDatabase struct { type BPMDatabase struct {
DatabaseVersion int `yaml:"database_version"` DatabaseVersion int `yaml:"database_version"`
Entries map[string]*BPMDatabaseEntry `yaml:"entries"` Entries map[string]*BPMDatabaseEntry `yaml:"entries"`
VirtualPackages map[string][]string VirtualPackages map[string][]*BPMDatabaseEntry
Name string Name string
Source string Source string
} }
@@ -59,7 +59,7 @@ func (db *configDatabase) ReadLocalDatabase() error {
} }
// Initialize struct values // Initialize struct values
database.VirtualPackages = make(map[string][]string) database.VirtualPackages = make(map[string][]*BPMDatabaseEntry)
database.Name = db.Name database.Name = db.Name
database.Source = db.Source database.Source = db.Source
@@ -105,13 +105,13 @@ func (db *configDatabase) ReadLocalDatabase() error {
// Add virtual packages to database // Add virtual packages to database
for _, p := range splitPkg.Provides { for _, p := range splitPkg.Provides {
database.VirtualPackages[p] = append(database.VirtualPackages[p], splitPkg.Name) database.VirtualPackages[p] = append(database.VirtualPackages[p], database.Entries[splitPkg.Name])
} }
} }
} else { } else {
// Add virtual packages to database // Add virtual packages to database
for _, p := range entry.Info.Provides { for _, p := range entry.Info.Provides {
database.VirtualPackages[p] = append(database.VirtualPackages[p], entry.Info.Name) database.VirtualPackages[p] = append(database.VirtualPackages[p], entry)
} }
} }
} }
@@ -231,15 +231,12 @@ func FindReplacement(pkg string) *BPMDatabaseEntry {
return nil return nil
} }
func ResolveVirtualPackage(vpkg string) *BPMDatabaseEntry { func GetDatabaseVirtualPackageEntry(vpkg string) (providers []*BPMDatabaseEntry) {
for _, db := range BPMDatabases { for _, db := range BPMDatabases {
if v, ok := db.VirtualPackages[vpkg]; ok { providers = append(providers, db.VirtualPackages[vpkg]...)
slices.Sort(v)
return db.Entries[v[0]]
}
} }
return nil return providers
} }
func (db *BPMDatabase) FetchPackage(pkg string) (string, error) { func (db *BPMDatabase) FetchPackage(pkg string) (string, error) {
+2 -1
View File
@@ -201,8 +201,9 @@ func resolvePackageDependenciesFromDatabase(resolved *[]pkgInstallationReason, u
*unresolved = stringSliceRemove(*unresolved, resolvedVirtualPkg) *unresolved = stringSliceRemove(*unresolved, resolvedVirtualPkg)
continue continue
} else if entry = ResolveVirtualPackage(pkgIR.PkgName); entry != nil { } else if providers := GetDatabaseVirtualPackageEntry(pkgIR.PkgName); len(providers) > 0 {
// Virtual package found in database // Virtual package found in database
entry = providers[0]
} else { } else {
// Virtual package not found // Virtual package not found
if !slices.Contains(*unresolved, pkgIR.PkgName) { if !slices.Contains(*unresolved, pkgIR.PkgName) {
+2 -2
View File
@@ -99,8 +99,8 @@ func InstallPackages(rootDir string, forceInstallationReason InstallationReason,
pkgsNotFound = append(pkgsNotFound, pkg) pkgsNotFound = append(pkgsNotFound, pkg)
continue continue
} }
} else if e := ResolveVirtualPackage(pkg); e != nil { } else if providers := GetDatabaseVirtualPackageEntry(pkg); len(providers) > 0 {
entry = e entry = providers[0]
} else { } else {
pkgsNotFound = append(pkgsNotFound, pkg) pkgsNotFound = append(pkgsNotFound, pkg)
continue continue