X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-preserve;h=a8d79d89446318a36e798e90dc5f040ca0fc22d3;hb=62f6ff407bc4f2cf03d1fa7cf3dc9a3f4026624a;hp=2a9661c7640c6d50c3da7f29254833b14e6659d8;hpb=0ea78a1197b7f6d17335ab8137a0a31d0ca41670;p=zpackage diff --git a/zpm-preserve b/zpm-preserve index 2a9661c..a8d79d8 100755 --- a/zpm-preserve +++ b/zpm-preserve @@ -2,15 +2,52 @@ # preserve a packages libraries -pkgname=$1 +verbose=0 +all=0 +script=0 +check=0 -pacman -Qlq "$1" | while read file; do +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" + +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 - ln -f $file "$dir/preserve/" + 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 fi done