Improved dependency resolution to account for provided packages
This commit is contained in:
parent
7d2caa542c
commit
743918702a
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user