mirror of
https://github.com/EnumeratedDev/bpm.git
synced 2026-09-16 10:36:12 +00:00
Improved dependency resolution to account for provided packages
This commit is contained in:
+19
-3
@@ -1242,13 +1242,13 @@ func GetSourceScript(filename string) (string, error) {
|
|||||||
func CheckDependencies(pkgInfo *PackageInfo, checkMake, checkConditional bool, rootDir string) []string {
|
func CheckDependencies(pkgInfo *PackageInfo, checkMake, checkConditional bool, rootDir string) []string {
|
||||||
var ret []string
|
var ret []string
|
||||||
for _, dependency := range pkgInfo.Depends {
|
for _, dependency := range pkgInfo.Depends {
|
||||||
if !IsPackageInstalled(dependency, rootDir) {
|
if !IsPackageProvided(dependency, rootDir) {
|
||||||
ret = append(ret, dependency)
|
ret = append(ret, dependency)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if checkMake {
|
if checkMake {
|
||||||
for _, dependency := range pkgInfo.MakeDepends {
|
for _, dependency := range pkgInfo.MakeDepends {
|
||||||
if !IsPackageInstalled(dependency, rootDir) {
|
if !IsPackageProvided(dependency, rootDir) {
|
||||||
ret = append(ret, dependency)
|
ret = append(ret, dependency)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1259,7 +1259,7 @@ func CheckDependencies(pkgInfo *PackageInfo, checkMake, checkConditional bool, r
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for _, dependency := range dependencies {
|
for _, dependency := range dependencies {
|
||||||
if !IsPackageInstalled(dependency, rootDir) {
|
if !IsPackageProvided(dependency, rootDir) {
|
||||||
ret = append(ret, dependency)
|
ret = append(ret, dependency)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1311,6 +1311,22 @@ func IsPackageInstalled(pkg, rootDir string) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsPackageProvided(pkg, rootDir string) bool {
|
||||||
|
pkgs, err := GetInstalledPackages(rootDir)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
for _, p := range pkgs {
|
||||||
|
if p == pkg {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if slices.Contains(GetPackageInfo(p, rootDir, true).Provides, pkg) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func GetInstalledPackages(rootDir string) ([]string, error) {
|
func GetInstalledPackages(rootDir string) ([]string, error) {
|
||||||
installedDir := path.Join(rootDir, "var/lib/bpm/installed/")
|
installedDir := path.Join(rootDir, "var/lib/bpm/installed/")
|
||||||
items, err := os.ReadDir(installedDir)
|
items, err := os.ReadDir(installedDir)
|
||||||
|
|||||||
Reference in New Issue
Block a user