X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-preserve;h=a8d79d89446318a36e798e90dc5f040ca0fc22d3;hb=62f6ff407bc4f2cf03d1fa7cf3dc9a3f4026624a;hp=3b79306b1bf72a8b7bcb3b943ed7960f3566e09c;hpb=768968c058e7f068ef97c0be5820ac26e7647504;p=zpackage diff --git a/zpm-preserve b/zpm-preserve index 3b79306..a8d79d8 100755 --- a/zpm-preserve +++ b/zpm-preserve @@ -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] \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