Blame | Last modification | View Log | RSS feed
## Receive a symlink to a package# Script run by ssh create a symlink to a package version# Works in bash and dash##set -xset -eerror() {echo ERROR: $*exit 1;}delete_dir() {if [ -d "$1" ] ; thenchmod -R u+w "$1"rm -rf "$1"fi}# User optionswhile getopts D arg ; docase $arg inD) set -x ;;*) error Unknown option: $arg ;;esacdoneshift $(($OPTIND - 1))# User argumentspname=${1:?Need file name}pver=${2:?Need package version}tver=${3:?Need target package version}dpkg="dpkg_archive"[ -d $dpkg ] || error dpkg_archive not founddpkg="dpkg_archive"[ -d $dpkg ] || error dpkg_archive not found## Names of working directories#realdir="$dpkg/${pname}/${pver}"newdir="$dpkg/${pname}/${pver}.NEW.TMPDIR"olddir="$dpkg/${pname}/${pver}.OLD.TMPDIR"pkgdir="$dpkg/${pname}"## Create package directory# Ensure its writablemkdir -p "$pkgdir"chmod u+w "$pkgdir"## Delete possible tmp directorydelete_dir "$newdir"delete_dir "$olddir"## Create the temp symlink#ln -s "$tver" "$newdir"## Swap in the new directory - minimize disruption# Then delete the old#if [ -d "$realdir" ] ; thenmv "$realdir" "$olddir"fimv "$newdir" "$realdir"# Delete the original directorydelete_dir "$olddir"# Fix up permissions on the package and package-versionchmod a-w "$pkgdir"