Browse Source

Fix build order being reversed

morganamilo 7 years ago
parent
commit
6423fb55b5
1 changed files with 14 additions and 8 deletions
  1. 14 8
      depOrder.go

+ 14 - 8
depOrder.go

@@ -26,7 +26,12 @@ func getDepOrder(dp *depPool) *depOrder {
 
 	for _, target := range dp.Targets {
 		dep := target.DepString()
-		aurPkg := dp.findSatisfierAur(dep)
+		aurPkg := dp.Aur[dep]
+		if aurPkg != nil && pkgSatisfies(aurPkg.Name, aurPkg.Version, dep) {
+			do.orderPkgAur(aurPkg, dp, true)
+		}
+
+		aurPkg = dp.findSatisfierAur(dep)
 		if aurPkg != nil {
 			do.orderPkgAur(aurPkg, dp, true)
 		}
@@ -44,12 +49,6 @@ func (do *depOrder) orderPkgAur(pkg *rpc.Pkg, dp *depPool, runtime bool) {
 	if runtime {
 		do.Runtime.set(pkg.Name)
 	}
-	if _, ok := do.Bases[pkg.PackageBase]; !ok {
-		do.Aur = append(do.Aur, pkg)
-		do.Bases[pkg.PackageBase] = make([]*rpc.Pkg, 0)
-	}
-	do.Bases[pkg.PackageBase] = append(do.Bases[pkg.PackageBase], pkg)
-
 	delete(dp.Aur, pkg.Name)
 
 	for i, deps := range [3][]string{pkg.Depends, pkg.MakeDepends, pkg.CheckDepends} {
@@ -65,13 +64,18 @@ func (do *depOrder) orderPkgAur(pkg *rpc.Pkg, dp *depPool, runtime bool) {
 			}
 		}
 	}
+
+	if _, ok := do.Bases[pkg.PackageBase]; !ok {
+		do.Aur = append(do.Aur, pkg)
+		do.Bases[pkg.PackageBase] = make([]*rpc.Pkg, 0)
+	}
+	do.Bases[pkg.PackageBase] = append(do.Bases[pkg.PackageBase], pkg)
 }
 
 func (do *depOrder) orderPkgRepo(pkg *alpm.Package, dp *depPool, runtime bool) {
 	if runtime {
 		do.Runtime.set(pkg.Name())
 	}
-	do.Repo = append(do.Repo, pkg)
 	delete(dp.Repo, pkg.Name())
 
 	pkg.Depends().ForEach(func(dep alpm.Depend) (err error) {
@@ -82,6 +86,8 @@ func (do *depOrder) orderPkgRepo(pkg *alpm.Package, dp *depPool, runtime bool) {
 
 		return nil
 	})
+
+	do.Repo = append(do.Repo, pkg)
 }
 
 func (do *depOrder) HasMake() bool {