]> pd.if.org Git - zpackage/blobdiff - zpm-preserve
remove gpg references
[zpackage] / zpm-preserve
index 3b79306b1bf72a8b7bcb3b943ed7960f3566e09c..a8d79d89446318a36e798e90dc5f040ca0fc22d3 100755 (executable)
@@ -3,23 +3,51 @@
 # preserve a packages libraries
 
 verbose=0
+all=0
+script=0
+check=0
 
-if [ "$1" eq '-v' ]; then
-       verbose=1
-fi
+while getopts avs arg; do
+       case $arg in
+               a) all=1;;
+               v) verbose=1;;
+       c) check=1;;
+       s) script=1;;
+       ?) printf 'usage: zpm-preserve [-av] <pkgname>\n'
+               exit 1
+               ;;
+       esac
+done
 
-pkgname=$1
+pkgname="$1"
 
-pacman -Qlq "$1" | while read file; do
+pacman -Qlq "$pkgname" | while read file; do
        if [ ! -f "$file" ]; then continue; fi
+       base=$(basename "$file")
+       if [ $all -eq 0 ] && [ "$base" = "${base#lib}" ]; then continue; fi
+
+       if [ $check -eq 1 ]; then
+               elftype -e "$file"
+               rv=$?
+               if [ $rv -ne 0 ]; then continue; fi
+               for lib in $(zpm getlibs $file | grep preserve); do
+                       echo $pkgname $file $lib
+               done
+               continue
+       fi
 
-       soname=$(soname $file)
+       soname=$(zpm soname $file)
        if [ $? -eq 0 ] && [ -n "$soname" ]; then
                dir=$(dirname "$file")
-               mkdir -p $dir/preserve
-               if [ "$verbose" -gt 0 ]; then
-                       printf 'preserving %s\n' $file
+               if [ "$script" -ne 0 ]; then
+                       printf 'mkdir -p "%s"\n' "$dir/preserve"
+                       printf 'ln -f "%s" "%s"\n' "$file" "$dir/preserve/"
+               else
+                       mkdir -p "$dir/preserve"
+                       if [ "$verbose" -gt 0 ]; then
+                               printf '# preserving %s\n' "$file"
+                       fi
+                       ln -f "$file" "$dir/preserve/"
                fi
-               ln -f $file "$dir/preserve/"
        fi
 done