aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEinhard Leichtfuß <alguien@respiranto.de>2017-10-23 09:37:48 +0200
committerEinhard Leichtfuß <alguien@respiranto.de>2017-10-23 09:37:48 +0200
commitd09c629c5513a650e7dabf501f870a2c3031cb91 (patch)
treef903442fe78158f55d51cdb91950559b89275e9f
parent5bc80ccb6f99d4e001a6bb4c6fbd23843fd41a91 (diff)
Create function to install the dep tree
unfinished.
-rwxr-xr-xauria.sh31
1 files changed, 31 insertions, 0 deletions
diff --git a/auria.sh b/auria.sh
index d6b7a7e..b74a5fa 100755
--- a/auria.sh
+++ b/auria.sh
@@ -119,6 +119,7 @@ typeset retstr
typeset -a repo_deps # dependencies in official repositories.
typeset -A aur_deps # aur deps for each aur package (space sep.).
+typeset -A aur_deps_test # copy of the above for dependency circle testing.
typeset -A aur_revdeps # aur pkgs depending on an pkg, for each.
typeset -A aur_itype # explicit / dep / update / ""
typeset -A aur_pkgbase
@@ -130,6 +131,7 @@ function reset_vars
{
repo_deps=()
aur_deps=()
+ aur_deps_test=()
aur_revdeps=()
aur_itype=()
aur_pkgbase=()
@@ -481,11 +483,13 @@ function resolve_deps
|| return 4) )
aur_deps["$pkg"]="$(printf " %s " "${deps[@]}" "${makedeps[@]}")"
+ aur_deps_test["$pkg"]="${aur_deps["$pkg"]}"
if [ ${#dep} -eq 0 ]
then
aur_pkgorder+=("$pkg")
else
+ # Recurse.
local dep
for dep in "${deps[@]}" "${makedeps[@]}"
do
@@ -497,6 +501,33 @@ function resolve_deps
fi
}
+function install_deptree
+{
+ local pkg
+
+ # Use $@ in order to be able to use shift.
+ set "${aur_pkgorder[@]}"
+
+ while [ $# -ne 0 ]
+ do
+ # Pop.
+ pkg="$1"; shift
+
+ # TODO: install $pkg
+
+ # Remove the resolved package off the dependency tree.
+ # Note, that the reverse dependencies do not require removal.
+ for revdep in "${aur_revdeps["$pkg"]}"
+ do
+ aur_deps["$revdep"]="${aur_deps["$revdep"]/ $pkg /}"
+ if test -z "${aur_deps["$revdep"]}"
+ then
+ aur_pkgorder+=("$revdep")
+ fi
+ done
+ done
+}
+
# $1 package: name
# $2 package: name [. pkgver-comparator . version string]
function depsearch_noaur