Mail archive
alpine-devel

[alpine-devel] [PATCH 1/2] abuild: fix dependency checking

From: Kaarle Ritvanen <kaarle.ritvanen_at_datakunkku.fi>
Date: Mon, 6 Mar 2017 18:12:38 +0200

- versioned dependencies
- dependencies on 'provides' tags or library names
---
 abuild.in | 47 ++++++++++++++++++++++-------------------------
 1 file changed, 22 insertions(+), 25 deletions(-)
diff --git a/abuild.in b/abuild.in
index 22bd454..90da90d 100644
--- a/abuild.in
+++ b/abuild.in
_at_@ -1855,10 +1855,26 @@ calcdeps() {
 	fi
 }
 
+get_missing_deps() {
+	local cmd="$APK info --quiet --installed $1"
+	shift
+
+	while [ "$1" ]; do
+		if [ ${1:0:1} = "!" ]; then
+			if $cmd ${1:1}; then
+				error "Conflicting package installed: ${1:1}"
+				return 1
+			fi
+		elif [ "$upgrade" ] || ! $cmd $1; then
+			echo $1
+		fi
+		shift
+	done
+}
+
 # build and install dependencies
 builddeps() {
-	local pkg= i= missing= BUILD_BASE=
-	local installed_hostdeps= installed_builddeps=
+	local pkg= i= BUILD_BASE=
 	[ -n "$nodeps" ] && return 0
 
 	msg "Analyzing dependencies..."
_at_@ -1872,30 +1888,11 @@ builddeps() {
 	esac
 	calcdeps "$BUILD_BASE"
 
-	installed_builddeps=$($APK info --installed $builddeps)
-	[ -n "$CBUILDROOT" -a -n "$hostdeps" ] && installed_hostdeps=$($APK info --root "$CBUILDROOT" --arch "$CTARGET_ARCH" --installed $hostdeps)
-
 	# find which deps are missing
-	for i in $builddeps; do
-		if [ "${i#\!}" != "$i" ]; then
-			if $APK info --quiet --installed "${i#\!}"; then
-				error "Conflicting package installed: ${i#\!}"
-				return 1
-			fi
-		elif ! deplist_has $i $installed_builddeps || [ -n "$upgrade" ]; then
-			missing="$missing $i"
-		fi
-	done
-	for i in $hostdeps; do
-		if [ "${i#\!}" != "$i" ]; then
-			if $APK info --quiet --installed --root "$CBUILDROOT" --arch "$CTARGET_ARCH" "${i#\!}"; then
-				error "Conflicting package installed: ${i#\!}"
-				return 1
-			fi
-		elif ! deplist_has $i $installed_hostdeps || [ -n "$upgrade" ]; then
-			missing="$missing $i"
-		fi
-	done
+	local mbd mhd missing
+	mbd=$(get_missing_deps "" $builddeps) || return 1
+	mhd=$(get_missing_deps "--root $CBUILDROOT --arch $CTARGET_ARCH" $hostdeps) || return 1
+	missing=$(echo $mbd $mhd)
 
 	if [ -z "$install_deps" ] && [ -z "$recursive" ]; then
 		# if we dont have any missing deps we are done now
-- 
2.9.3
---
Unsubscribe:  alpine-devel+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-devel+help_at_lists.alpinelinux.org
---
Received on Mon Mar 06 2017 - 18:12:38 UTC