diff options
author | Einhard Leichtfuß <alguien@respiranto.de> | 2017-10-23 09:37:48 +0200 |
---|---|---|
committer | Einhard Leichtfuß <alguien@respiranto.de> | 2017-10-23 09:37:48 +0200 |
commit | d09c629c5513a650e7dabf501f870a2c3031cb91 (patch) | |
tree | f903442fe78158f55d51cdb91950559b89275e9f | |
parent | 5bc80ccb6f99d4e001a6bb4c6fbd23843fd41a91 (diff) |
Create function to install the dep tree
unfinished.
-rwxr-xr-x | auria.sh | 31 |
1 files changed, 31 insertions, 0 deletions
@@ -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 |