diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2009-08-05 13:55:35 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2009-08-05 13:55:35 +0000 |
commit | e1dff715951d8ebdde61287050c82b7299fc5999 (patch) | |
tree | 22551526e871819a0a30bb4dc8807c6b76c38a71 /abuild.in | |
parent | ec8fd835b4f64776e34451ea8dde158567275d16 (diff) | |
download | abuild-e1dff715951d8ebdde61287050c82b7299fc5999.tar.gz abuild-e1dff715951d8ebdde61287050c82b7299fc5999.tar.bz2 abuild-e1dff715951d8ebdde61287050c82b7299fc5999.tar.xz abuild-e1dff715951d8ebdde61287050c82b7299fc5999.zip |
abuild: initial support for versioned dependencies
Diffstat (limited to 'abuild.in')
-rwxr-xr-x | abuild.in | 33 |
1 files changed, 23 insertions, 10 deletions
@@ -648,12 +648,12 @@ depparse_aports() { . $i dir=${i%/APKBUILD} deps= - # filter out conflicts from deps + # filter out conflicts from deps and version info for j in $depends $makedepends; do case "$j" in !*) continue;; esac - deps="$deps $j" + deps="$deps ${j%[<>=]*}" done for j in $pkgname $subpackages; do echo "o ${j%%:*} $dir" @@ -672,7 +672,7 @@ depparse_aports() { deptrace() { local deps="$@" - [ -z "$deps" ] && deps="$BUILD_BASE $depends $makedepends" + [ -z "$deps" ] && die "should not happen" ( depparse_aports if [ -z "$upgrade" ]; then # list installed pkgs and prefix with 'i ' @@ -704,15 +704,15 @@ deptrace() { # build and install dependencies builddeps() { - local deps alldeps pkg i dir ver missing installed_deps + local deps= alldeps= pkg= i= dir= ver= missing= installed_deps= + local filtered_deps= [ -n "$nodeps" ] && return 0 msg "Analyzing dependencies..." deps="$BUILD_BASE $makedepends" - # add depends unless it is a subpackage for i in $depends; do - subpackages_has $i || deps="$deps $i" + subpackages_has ${i%[<>=]*} || deps="$deps $i" done installed_deps=$(apk info -e $deps) @@ -721,7 +721,7 @@ builddeps() { if [ "${i#\!}" != "$i" ]; then list_has ${i#\!} $installed_deps \ && die "Conflicting package ${i#\!} is installed." - elif ! list_has $i $installed_deps; then + elif ! deplist_has $i $installed_deps; then if [ -z "$install_deps" ] && [ -z "$recursive" ]; then die "Missing dependency $i. Use -r to autoinstall or -R to build" fi @@ -743,7 +743,7 @@ builddeps() { # find dependencies that are installed but missing in repo. for i in $deps; do - local m=$(apk search --repo "$apkcache" $i) + local m=$(apk search --repo "$apkcache" ${i%[<>=]*}) if [ -z "$m" ]; then missing="$missing $i" fi @@ -826,16 +826,29 @@ list_has() { return 1 } +# same as list_has but we filter version info +deplist_has() { + local needle="$1" + local i + shift + for i in $@; do + i=${i%[<>=]*} + [ "$needle" = "$i" ] && return 0 + [ "$needle" = "!$i" ] && return 1 + done + return 1 +} + options_has() { list_has "$1" $options } depends_has() { - list_has "$1" $depends + deplist_has "$1" $depends } makedepends_has() { - list_has "$1" $makedepends + deplist_has "$1" $makedepends } md5sums_has() { |