]> pd.if.org Git - zpackage/blobdiff - zpm-pkgdeps
add scripts to package hashing
[zpackage] / zpm-pkgdeps
index b1ea0ce58ec551278a1d110bdfb22699ed07b10d..4a0528fa5e987d076641b0c78bc10a1de9da8762 100755 (executable)
@@ -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