diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2017-03-06 17:23:31 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2017-03-07 12:29:38 +0200 |
commit | d8174e4f3a8fe1c133c15ccdac8be190190db1a1 (patch) | |
tree | 214deaaef3dbfb743e1ae713725b464270d1e273 | |
parent | c909c82ac22563b1235082a73ee1d35fdf1c4b86 (diff) | |
download | abuild-d8174e4f3a8fe1c133c15ccdac8be190190db1a1.tar.gz abuild-d8174e4f3a8fe1c133c15ccdac8be190190db1a1.tar.bz2 abuild-d8174e4f3a8fe1c133c15ccdac8be190190db1a1.tar.xz abuild-d8174e4f3a8fe1c133c15ccdac8be190190db1a1.zip |
abuild: fix dependency checking
- versioned dependencies
- dependencies on 'provides' tags or library names
-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 |