summaryrefslogtreecommitdiff
path: root/abuild.in
diff options
context:
space:
mode:
Diffstat (limited to 'abuild.in')
-rw-r--r--abuild.in48
1 files changed, 23 insertions, 25 deletions
diff --git a/abuild.in b/abuild.in
index 22bd454..a7ff2e6 100644
--- a/abuild.in
+++ b/abuild.in
@@ -1855,10 +1855,27 @@ calcdeps() {
fi
}
+get_missing_deps() {
+ local cmd="$APK info --quiet --installed $1"
+ shift
+
+ while [ "$1" ]; do
+ local cp=${1#\!}
+ if [ $cp != $1 ]; then
+ if $cmd $cp; then
+ error "Conflicting package installed: $cp"
+ 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..."
@@ -1872,30 +1889,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