pthbs

Packaging Through Hashed Build Scripts
git clone https://ccx.te2000.cz/git/pthbs
Log | Files | Refs | Submodules | README

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' '{}' +