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
entry, _, err = bpmlib.GetDatabaseEntry(pkg)
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)
exitCode = 1
return
+7 -10
View File
@@ -20,7 +20,7 @@ import (
type BPMDatabase struct {
DatabaseVersion int `yaml:"database_version"`
Entries map[string]*BPMDatabaseEntry `yaml:"entries"`
VirtualPackages map[string][]string
VirtualPackages map[string][]*BPMDatabaseEntry
Name string
Source string
}
@@ -59,7 +59,7 @@ func (db *configDatabase) ReadLocalDatabase() error {
}
// Initialize struct values
database.VirtualPackages = make(map[string][]string)
database.VirtualPackages = make(map[string][]*BPMDatabaseEntry)
database.Name = db.Name
database.Source = db.Source
@@ -105,13 +105,13 @@ func (db *configDatabase) ReadLocalDatabase() error {
// Add virtual packages to database
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 {
// Add virtual packages to database
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
}
func ResolveVirtualPackage(vpkg string) *BPMDatabaseEntry {
func GetDatabaseVirtualPackageEntry(vpkg string) (providers []*BPMDatabaseEntry) {
for _, db := range BPMDatabases {
if v, ok := db.VirtualPackages[vpkg]; ok {
slices.Sort(v)
return db.Entries[v[0]]
}
providers = append(providers, db.VirtualPackages[vpkg]...)
}
return nil
return providers
}
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)
continue
} else if entry = ResolveVirtualPackage(pkgIR.PkgName); entry != nil {
} else if providers := GetDatabaseVirtualPackageEntry(pkgIR.PkgName); len(providers) > 0 {
// Virtual package found in database
entry = providers[0]
} else {
// Virtual package not found
if !slices.Contains(*unresolved, pkgIR.PkgName) {
+2 -2
View File
@@ -99,8 +99,8 @@ func InstallPackages(rootDir string, forceInstallationReason InstallationReason,
pkgsNotFound = append(pkgsNotFound, pkg)
continue
}
} else if e := ResolveVirtualPackage(pkg); e != nil {
entry = e
} else if providers := GetDatabaseVirtualPackageEntry(pkg); len(providers) > 0 {
entry = providers[0]
} else {
pkgsNotFound = append(pkgsNotFound, pkg)
continue