Fixed circular dependency problems
This commit is contained in:
parent
4793424f3d
commit
c8939614b1
4
main.go
4
main.go
@ -224,7 +224,7 @@ func resolveCommand() {
|
|||||||
}]()
|
}]()
|
||||||
for _, pkg := range clone.Keys() {
|
for _, pkg := range clone.Keys() {
|
||||||
value, _ := clone.Get(pkg)
|
value, _ := clone.Get(pkg)
|
||||||
resolved, unresolved := value.pkgInfo.ResolveAll(&[]string{}, &[]string{}, value.pkgInfo.Type == "source", !noOptional, !reinstall, rootDir)
|
resolved, unresolved := value.pkgInfo.ResolveAll(&[]string{}, &[]string{}, value.pkgInfo.Type == "source", !noOptional, !reinstall, verbose, rootDir)
|
||||||
unresolvedDepends = append(unresolvedDepends, unresolved...)
|
unresolvedDepends = append(unresolvedDepends, unresolved...)
|
||||||
for _, depend := range resolved {
|
for _, depend := range resolved {
|
||||||
if _, ok := pkgsToInstall.Get(depend); !ok && depend != value.pkgInfo.Name {
|
if _, ok := pkgsToInstall.Get(depend); !ok && depend != value.pkgInfo.Name {
|
||||||
@ -411,7 +411,7 @@ func resolveCommand() {
|
|||||||
clone := toUpdate.Copy()
|
clone := toUpdate.Copy()
|
||||||
for _, key := range clone.Keys() {
|
for _, key := range clone.Keys() {
|
||||||
pkg, _ := clone.Get(key)
|
pkg, _ := clone.Get(key)
|
||||||
r, u := pkg.entry.Info.ResolveAll(&[]string{}, &[]string{}, pkg.entry.Info.Type == "source", !noOptional, true, rootDir)
|
r, u := pkg.entry.Info.ResolveAll(&[]string{}, &[]string{}, pkg.entry.Info.Type == "source", !noOptional, true, verbose, rootDir)
|
||||||
unresolved = append(unresolved, u...)
|
unresolved = append(unresolved, u...)
|
||||||
for _, depend := range r {
|
for _, depend := range r {
|
||||||
if _, ok := toUpdate.Get(depend); !ok {
|
if _, ok := toUpdate.Get(depend); !ok {
|
||||||
|
@ -1284,11 +1284,21 @@ func (pkgInfo *PackageInfo) CheckConflicts(rootDir string) []string {
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pkgInfo *PackageInfo) ResolveAll(resolved, unresolved *[]string, checkMake, checkOptional, ignoreInstalled bool, rootDir string) ([]string, []string) {
|
func (pkgInfo *PackageInfo) ResolveAll(resolved, unresolved *[]string, checkMake, checkOptional, ignoreInstalled, verbose bool, rootDir string) ([]string, []string) {
|
||||||
*unresolved = append(*unresolved, pkgInfo.Name)
|
*unresolved = append(*unresolved, pkgInfo.Name)
|
||||||
for _, depend := range pkgInfo.GetAllDependencies(checkMake, checkOptional) {
|
for _, depend := range pkgInfo.GetAllDependencies(checkMake, checkOptional) {
|
||||||
|
depend = strings.TrimSpace(depend)
|
||||||
|
depend = strings.ToLower(depend)
|
||||||
if !slices.Contains(*resolved, depend) {
|
if !slices.Contains(*resolved, depend) {
|
||||||
if slices.Contains(*unresolved, depend) || (ignoreInstalled && IsPackageInstalled(depend, rootDir)) {
|
if slices.Contains(*unresolved, depend) {
|
||||||
|
if verbose {
|
||||||
|
fmt.Printf("Circular dependency was detected (%s -> %s). Installing %s first\n", pkgInfo.Name, depend, depend)
|
||||||
|
}
|
||||||
|
if !slices.Contains(*resolved, depend) {
|
||||||
|
*resolved = append(*resolved, depend)
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
} else if ignoreInstalled && IsPackageInstalled(depend, rootDir) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
entry, _, err := GetRepositoryEntry(depend)
|
entry, _, err := GetRepositoryEntry(depend)
|
||||||
@ -1298,7 +1308,7 @@ func (pkgInfo *PackageInfo) ResolveAll(resolved, unresolved *[]string, checkMake
|
|||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
entry.Info.ResolveAll(resolved, unresolved, checkMake, checkOptional, ignoreInstalled, rootDir)
|
entry.Info.ResolveAll(resolved, unresolved, checkMake, checkOptional, ignoreInstalled, verbose, rootDir)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !slices.Contains(*resolved, pkgInfo.Name) {
|
if !slices.Contains(*resolved, pkgInfo.Name) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user