X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-pkgdeps;h=4a0528fa5e987d076641b0c78bc10a1de9da8762;hb=1f811b8eda96d6ed0197d1cd7780b345e6aa85b7;hp=b1ea0ce58ec551278a1d110bdfb22699ed07b10d;hpb=09490cd2433e3c37a0d85220b4f12f01e6740d46;p=zpackage diff --git a/zpm-pkgdeps b/zpm-pkgdeps index b1ea0ce..4a0528f 100755 --- a/zpm-pkgdeps +++ b/zpm-pkgdeps @@ -5,8 +5,10 @@ remove= setlist= quiet=0 clearlist=0 +includelibs=1 +resolvelibs=0 -while getopts :f:s:a:r:qc opt; do +while getopts :f:s:a:r:qcLR opt; do case $opt in f) pkgfile="$OPTARG" ;; s) setlist="$setlist $OPTARG"; clearlist=1 ;; @@ -14,6 +16,8 @@ while getopts :f:s:a:r:qc opt; do r) remove="$remove $OPTARG" ;; q) quiet=1 ;; c) clearlist=1 ;; + L) includelibs=0 ;; + R) resolvelibs=1 ;; esac done shift $(( OPTIND - 1)) @@ -34,17 +38,21 @@ fi eval $(zpm parse -E "$pkgid") package=$(zpm quote -q "$name") version=$(zpm quote -q "$version") -pkgselector="package = $package and version = $version and release = $release" -listdeps="select requires from packagedeps where %s;\n" +pkgselector="P.package = $package and P.version = $version and P.release = $release" +selector="package = $package and version = $version and release = $release" +listdeps="select requires from packagedeps P where %s;\n" adddep='insert or ignore into packagedeps (package,version,release,requires) values (%s,%s,%d,%s);\n' rmdep='delete from packagedeps where %s and requires = %s;\n' cleardeps='delete from packagedeps where %s;\n' +libdeps="select distinct EN.needed from elfneeded EN join packagefiles P on P.hash = EN.file where %s;\n" +resolvelibs="select distinct EN.needed from elfneeded EN join packagefiles PF on PF.hash = EN.file left join where %s;\n" { - printf ".bail on\n"; + printf ".bail on\n" + printf ".log stderr\n" printf "begin;\n"; if [ $clearlist -eq 1 ]; then - printf "$cleardeps" "$pkgselector" + printf "$cleardeps" "$selector" fi if [ -n "$setlist" ]; then for dep in $setlist; do @@ -61,11 +69,14 @@ fi if [ -n "$remove" ]; then for dep in $remove; do qdep=$(zpm quote -q "$dep") - printf "$rmdep" "$pkgselector" "$qdep" + printf "$rmdep" "$selector" "$qdep" done fi if [ $quiet -eq 0 ]; then printf "$listdeps" "$pkgselector" + if [ $includelibs -eq 1 ]; then + printf "$libdeps" "$pkgselector" + fi fi printf "commit;\n"; } | zpm shell $pkgfile