11 while getopts :f:s:a:r:qcLR opt; do
13 f) pkgfile="$OPTARG" ;;
14 s) setlist="$setlist $OPTARG"; clearlist=1 ;;
15 a) add="$add $OPTARG"; ;;
16 r) remove="$remove $OPTARG" ;;
23 shift $(( OPTIND - 1))
25 : ${pkgfile:=${ZPMDB:-/var/lib/zpm/local.db}}
27 if [ -z "$pkgfile" ]; then
28 echo "must specify package file"
32 pkgid=$(zpm findpkg -f $pkgfile "$1")
33 if [ -z "$pkgid" ]; then
34 echo "cannot find pkgid for $1"
38 eval $(zpm parse -E "$pkgid")
39 package=$(zpm quote -q "$name")
40 version=$(zpm quote -q "$version")
41 pkgselector="P.package = $package and P.version = $version and P.release = $release"
42 listdeps="select requires from packagedeps P where %s;\n"
43 adddep='insert or ignore into packagedeps (package,version,release,requires) values (%s,%s,%d,%s);\n'
44 rmdep='delete from packagedeps P where %s and requires = %s;\n'
45 cleardeps='delete from packagedeps P where %s;\n'
46 libdeps="select distinct EN.needed from elfneeded EN join packagefiles P on P.hash = EN.file where %s;\n"
47 resolvelibs="select distinct EN.needed from elfneeded EN join packagefiles PF on PF.hash = EN.file left join where %s;\n"
52 if [ $clearlist -eq 1 ]; then
53 printf "$cleardeps" "$pkgselector"
55 if [ -n "$setlist" ]; then
56 for dep in $setlist; do
57 qdep=$(zpm quote -q "$dep")
58 printf "$adddep" "$package" "$version" "$release" "$qdep"
61 if [ -n "$add" ]; then
63 qdep=$(zpm quote -q "$dep")
64 printf "$adddep" "$package" "$version" "$release" "$qdep"
67 if [ -n "$remove" ]; then
68 for dep in $remove; do
69 qdep=$(zpm quote -q "$dep")
70 printf "$rmdep" "$pkgselector" "$qdep"
73 if [ $quiet -eq 0 ]; then
74 printf "$listdeps" "$pkgselector"
75 if [ $includelibs -eq 1 ]; then
76 printf "$libdeps" "$pkgselector"
80 } | zpm shell $pkgfile