pthbs-install (1784B)
1 #!/bin/sh -e 2 if test -n "$pthbs_xtrace"; then 3 set -x 4 if test -n "$BB_ASH_VERSION"; then PS4="+${0##*/}"':${FUNCNAME}:${LINENO} '; fi 5 fi 6 if test -z "$pthbs_versions"; then 7 echo >&2 "ERROR: pthbs_versions is undefined" 8 exit 2 9 elif ! test -d "$pthbs_versions"; then 10 echo >&2 "ERROR: pthbs_versions '$pthbs_versions' is not directory" 11 exit 1 12 fi 13 14 test "$#" -eq 2 || exit 2 15 16 pthbs_destdir="$1" 17 pthbs_package="$2" 18 19 if ! test -f "$pthbs_destdir/${pthbs_versions%/}/$pthbs_package/.install-links"; then 20 echo >&2 "ERROR: link file not found" 21 exit 1 22 fi 23 24 if test -n "$pthbs_install_uid"; then 25 chown -R "$pthbs_install_uid:$pthbs_install_gid" "$pthbs_destdir/${pthbs_versions%/}/$pthbs_package" 26 fi 27 pthbs-digest-tree >"$pthbs_destdir/pthbs-digest" "$pthbs_destdir/${pthbs_versions%/}/$pthbs_package/" || exit $? 28 mv "$pthbs_destdir/pthbs-digest" "$pthbs_destdir/${pthbs_versions%/}/$pthbs_package/.pthbs-digest" || exit $? 29 chmod -R ugo-w "$pthbs_destdir/${pthbs_versions%/}/$pthbs_package" 30 chmod u+w "$pthbs_destdir/${pthbs_versions%/}/$pthbs_package" 31 32 if test -e "$pthbs_versions/$pthbs_package"; then 33 if ! diff -u "$pthbs_versions/$pthbs_package" "$pthbs_destdir/${pthbs_versions%/}/$pthbs_package/.pthbs-digest"; then 34 echo >&2 "ERROR: digest file mismatch - packages with same buildhash differ" 35 exit 3 36 fi 37 N=1 38 while test -e "$pthbs_versions/$pthbs_package.$N"; do 39 N=$(1+$N) 40 done 41 echo >&2 "INFO: replacing previous package" 42 mv "$pthbs_versions/$pthbs_package" "$pthbs_versions/$pthbs_package.$N" 43 # remove dangling links 44 find "$pthbs_versions" -type l ! -exec test -e {} \; -exec rm -v {} + 45 fi 46 47 mv "$pthbs_destdir/${pthbs_versions%/}/$pthbs_package" "$pthbs_versions/$pthbs_package" 48 find "$pthbs_destdir" -type d -o -exec printf 'WARNING: stray file in destdir: %s\n' '{}' +