From 072e93458d554ee22c74c97a3b23d0a24d99d0c9 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Thu, 6 May 2010 21:02:07 +0000
Subject: [PATCH] abuild: break circular deps when building recursively

---
 abuild.in | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/abuild.in b/abuild.in
index 3fea58ad6024..21b1b43e5520 100755
--- a/abuild.in
+++ b/abuild.in
@@ -820,7 +820,7 @@ builddeps() {
 		if [ "${i#\!}" != "$i" ]; then
 			list_has ${i#\!} $installed_deps \
 				&& conflicts="$conflicts ${i#\!}"
-		elif ! deplist_has $i $installed_deps; then
+		elif ! deplist_has $i $installed_deps || [ -n "$upgrade" ]; then
 			missing="$missing $i"
 		fi
 	done
@@ -863,11 +863,17 @@ builddeps() {
 		# i = pkg:dir
 		local dir=${i#*:}
 		local pkg=${i%:*}
-		if [ -d "$dir" ]; then
-			msg "Entering $dir"
-			cd "$dir" && $0 $forceroot $keep $quiet $install_deps \
-				$recursive $upgrade abuildindex || return 1
-		fi
+
+		# ignore if dependency is in other repo
+		[ -d "$dir" ] || continue
+		
+		# break cricular deps
+		list_has $pkg $ABUILD_VISITED && continue
+		export ABUILD_VISITED="$ABUILD_VISITED $pkg"
+
+		msg "Entering $dir"
+		cd "$dir" && $0 $forceroot $keep $quiet $install_deps \
+			$recursive $upgrade abuildindex || return 1
 	done
 	$SUDO $APK add -u --repository "$abuildrepo" \
 		--wait 30 \
-- 
GitLab