diff options
Diffstat (limited to 'abuild.in')
-rw-r--r-- | abuild.in | 48 |
1 files changed, 23 insertions, 25 deletions
@@ -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 |