You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
debian-installer/build/d-i-unpack-helper

69 lines
1.6 KiB

#!/bin/sh
# For use in .ssh/authorized keys as, e.g.,
# command="~/d-i-unpack-helper alpha [30]"
ARCH="$1"
NUM_KEEP="$2"
# Note that if NUM_KEEP is set, d-i-unpack-helper will expect
# to find daily-build and the rest of the d-i installer/build/ tree in
# the same directory as itself.
if [ -z "$BASEDIR" ]; then
BASEDIR=public_html/d-i/${ARCH:-images}
fi
if [ -z "$DIR" ]; then
DIR=$(date -u '+%Y%m%d-%H:%M')
fi
[ -n "$SSH_ORIGINAL_COMMAND" ] || exit 1
# Fix up the rsync command for security reasons (letting the user rsync
# over .ssh would be bad, mmkay)
# This mangles non-rsync commands quite badly, but since we disallow
# them below anyway, I don't care. :)
for WORD in $SSH_ORIGINAL_COMMAND; do
case $WORD in
rsync|-*|.)
SSH_FIXED_COMMAND="$SSH_FIXED_COMMAND $WORD"
;;
*)
SSH_FIXED_COMMAND="$SSH_FIXED_COMMAND $BASEDIR/${DIR}_RSYNC_IN_PROGRESS"
;;
esac
done
set -- $SSH_FIXED_COMMAND
# Ignore all requests other than rsync (all other fixups are handled on
# this side when rsync is called)
bn=$(basename "$1")
if [ "$bn" != "rsync" ]; then
exit 0
fi
shift
mkdir -p $BASEDIR/${DIR}_RSYNC_IN_PROGRESS
test ! -d $BASEDIR/daily || cp -a $BASEDIR/daily/* $BASEDIR/${DIR}_RSYNC_IN_PROGRESS/
rsync $@
rm -rf $BASEDIR/$DIR
mv $BASEDIR/${DIR}_RSYNC_IN_PROGRESS $BASEDIR/$DIR
rm -rf $BASEDIR/daily
ln -sf $DIR $BASEDIR/daily
if [ -n "$NUM_KEEP" ]; then
cd $BASEDIR
BASEDIR=$(pwd)
MYDIR=$(dirname $0)
if [ ! -x "$MYDIR/daily-build" ]; then
echo "$MYDIR/daily-build not found, cannot trim" >&2
exit 1
fi
cd "$MYDIR"
export NUM_KEEP
export BASEDIR
TRIM_LOG=$BASEDIR/$DIR/trim.log HOST=local ./daily-build trim
fi