diff options
author | Nicolás Reynolds <fauno@kiwwwi.com.ar> | 2012-12-31 17:29:39 -0300 |
---|---|---|
committer | Nicolás Reynolds <fauno@kiwwwi.com.ar> | 2012-12-31 17:29:39 -0300 |
commit | 6f102d1647580e0bb9513c124b26a64c77da4f15 (patch) | |
tree | 0340f1f588be251183fe2b251bdba778f2c85c22 /pcr/pactools/pt-deptree | |
parent | 433900b14f11dc9ee55b72e8e5946bf47f65b636 (diff) | |
parent | b6cb10de275cea63bab0bee2a98342afa4fdc4ee (diff) | |
download | abslibre-6f102d1647580e0bb9513c124b26a64c77da4f15.tar.gz abslibre-6f102d1647580e0bb9513c124b26a64c77da4f15.tar.bz2 abslibre-6f102d1647580e0bb9513c124b26a64c77da4f15.zip |
Merge branch 'master' of ssh://gparabola/srv/git/abslibre
Diffstat (limited to 'pcr/pactools/pt-deptree')
-rw-r--r-- | pcr/pactools/pt-deptree | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/pcr/pactools/pt-deptree b/pcr/pactools/pt-deptree new file mode 100644 index 000000000..edb6f538b --- /dev/null +++ b/pcr/pactools/pt-deptree @@ -0,0 +1,54 @@ +#!/bin/sh +# Pacman Dependency Tree +# does NOT handle group names -> unexpected results. +# Package names using aliases, like x-server, should work. +# Breaks on circular dependencies -> you better hit ctrl-c. + +export LC_ALL=en_US + +progname=`basename $0` +pacexec='pacman' +leafnull='None' +branch="" +vbranch="| " +vprune=" " +hbranch="+---" + +_showdep () { + + # Try to use specific pkg req + if $pacexec -Qi $1 &> /dev/null ; then + # Grab deps list|from "Depends"|Remove Tag \| specific version req's. + deplist=`$pacexec -Qi $1|grep Depends|sed 's/^.*: \|>[^ ]*//g;s/ $//'` + else # Oops! Failed on alias, try this... + deplist=`$pacexec -Qs $1 | sed '1!d;s/\(^.*\/\)\(.*\)\( .*$\)/\2/'` + fi + + [ "x$deplist" = "x$leafnull" ] && return + + while [ -n "$deplist" ] + do + set -- $deplist && echo "$branch$hbranch$1" + if [ $# -gt 1 ] ; then + branch=${branch}$vbranch + else + branch=${branch}$vprune + fi + + _showdep $1 + + deplist=${*:2} + branch=${branch:0:${#branch}-${#vprune}} + done +} + +branch=$vprune + +for pkg in `$pacexec -Q $1 | sed 's/ .*//'` +do + echo $pkg + _showdep $pkg +done + +unset _showdep && set -- +exit 0 |