From 5d0312856d6438a5874bad1b76b0f2c6852a9cb1 Mon Sep 17 00:00:00 2001 From: EnumDev Date: Mon, 20 Apr 2026 17:17:54 +0300 Subject: [PATCH] Install missing dependencies on update --- src/bpmlib/general.go | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/src/bpmlib/general.go b/src/bpmlib/general.go index 9a0e1a1..d347dd8 100644 --- a/src/bpmlib/general.go +++ b/src/bpmlib/general.go @@ -416,16 +416,37 @@ func UpdatePackages(rootDir string, syncDatabase, allowDowngrades, forceInstalla DatabaseEntry: entry, }) } - } - } - // Check for new dependencies in updated packages - operation.ResolveDependencies(true) - if len(operation.UnresolvedDepends) != 0 { - if !forceInstallation { - return nil, DependencyNotFoundErr{operation.UnresolvedDepends} - } else if verbose { - log.Printf("Warning: %s", DependencyNotFoundErr{operation.UnresolvedDepends}) + // Check for new uninstalled dependencies + for _, dep := range entry.Info.Depends { + if !IsPackageInstalled(dep, rootDir) && len(GetVirtualPackageInfo(dep, rootDir)) == 0 { + // Find database entry for missing dependency + depEntry, _, err := GetDatabaseEntry(dep) + if err != nil { + return nil, err + } + + operation.AppendAction(&FetchPackageAction{ + InstallationReason: InstallationReasonDependency, + DatabaseEntry: depEntry, + }) + } + } + // Check for new uninstalled runtime dependencies + for _, dep := range entry.Info.RuntimeDepends { + if !IsPackageInstalled(dep, rootDir) && len(GetVirtualPackageInfo(dep, rootDir)) == 0 { + // Find database entry for missing dependency + depEntry, _, err := GetDatabaseEntry(dep) + if err != nil { + return nil, err + } + + operation.AppendAction(&FetchPackageAction{ + InstallationReason: InstallationReasonDependency, + DatabaseEntry: depEntry, + }) + } + } } }