#!/bin/sh # preserve a packages libraries verbose=0 all=0 script=0 check=0 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=$(zpm soname $file) if [ $? -eq 0 ] && [ -n "$soname" ]; then dir=$(dirname "$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 fi done