Skip to content
Snippets Groups Projects
Commit e1dff715 authored by Natanael Copa's avatar Natanael Copa
Browse files

abuild: initial support for versioned dependencies

parent ec8fd835
No related branches found
No related tags found
No related merge requests found
...@@ -648,12 +648,12 @@ depparse_aports() { ...@@ -648,12 +648,12 @@ depparse_aports() {
. $i . $i
dir=${i%/APKBUILD} dir=${i%/APKBUILD}
deps= deps=
# filter out conflicts from deps # filter out conflicts from deps and version info
for j in $depends $makedepends; do for j in $depends $makedepends; do
case "$j" in case "$j" in
!*) continue;; !*) continue;;
esac esac
deps="$deps $j" deps="$deps ${j%[<>=]*}"
done done
for j in $pkgname $subpackages; do for j in $pkgname $subpackages; do
echo "o ${j%%:*} $dir" echo "o ${j%%:*} $dir"
...@@ -672,7 +672,7 @@ depparse_aports() { ...@@ -672,7 +672,7 @@ depparse_aports() {
deptrace() { deptrace() {
local deps="$@" local deps="$@"
[ -z "$deps" ] && deps="$BUILD_BASE $depends $makedepends" [ -z "$deps" ] && die "should not happen"
( depparse_aports ( depparse_aports
if [ -z "$upgrade" ]; then if [ -z "$upgrade" ]; then
# list installed pkgs and prefix with 'i ' # list installed pkgs and prefix with 'i '
...@@ -704,15 +704,15 @@ deptrace() { ...@@ -704,15 +704,15 @@ deptrace() {
# build and install dependencies # build and install dependencies
builddeps() { 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 [ -n "$nodeps" ] && return 0
msg "Analyzing dependencies..." msg "Analyzing dependencies..."
deps="$BUILD_BASE $makedepends" deps="$BUILD_BASE $makedepends"
# add depends unless it is a subpackage # add depends unless it is a subpackage
for i in $depends; do for i in $depends; do
subpackages_has $i || deps="$deps $i" subpackages_has ${i%[<>=]*} || deps="$deps $i"
done done
installed_deps=$(apk info -e $deps) installed_deps=$(apk info -e $deps)
...@@ -721,7 +721,7 @@ builddeps() { ...@@ -721,7 +721,7 @@ builddeps() {
if [ "${i#\!}" != "$i" ]; then if [ "${i#\!}" != "$i" ]; then
list_has ${i#\!} $installed_deps \ list_has ${i#\!} $installed_deps \
&& die "Conflicting package ${i#\!} is installed." && 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 if [ -z "$install_deps" ] && [ -z "$recursive" ]; then
die "Missing dependency $i. Use -r to autoinstall or -R to build" die "Missing dependency $i. Use -r to autoinstall or -R to build"
fi fi
...@@ -743,7 +743,7 @@ builddeps() { ...@@ -743,7 +743,7 @@ builddeps() {
# find dependencies that are installed but missing in repo. # find dependencies that are installed but missing in repo.
for i in $deps; do for i in $deps; do
local m=$(apk search --repo "$apkcache" $i) local m=$(apk search --repo "$apkcache" ${i%[<>=]*})
if [ -z "$m" ]; then if [ -z "$m" ]; then
missing="$missing $i" missing="$missing $i"
fi fi
...@@ -826,16 +826,29 @@ list_has() { ...@@ -826,16 +826,29 @@ list_has() {
return 1 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() { options_has() {
list_has "$1" $options list_has "$1" $options
} }
depends_has() { depends_has() {
list_has "$1" $depends deplist_has "$1" $depends
} }
makedepends_has() { makedepends_has() {
list_has "$1" $makedepends deplist_has "$1" $makedepends
} }
md5sums_has() { md5sums_has() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment