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.
111 lines
2.2 KiB
111 lines
2.2 KiB
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
THIS_SCRIPT=`basename "$0"`
|
|
|
|
function usage
|
|
{
|
|
echo "$THIS_SCRIPT <BZR_URL> <SRC_DIR> [<GPG_KEY>]"
|
|
}
|
|
|
|
function gpg_sign
|
|
{
|
|
FILE="$1"
|
|
rm -f "$FILE".sig
|
|
$GPG --batch --use-agent --detach-sign --local-user "$GPG_KEY" \
|
|
"$FILE"
|
|
}
|
|
|
|
function maybe_gpg_sign
|
|
{
|
|
[[ -e "$1" ]] && gpg_sign "$1"
|
|
}
|
|
|
|
function command_exists
|
|
{
|
|
type "$1" &>/dev/null
|
|
}
|
|
|
|
function find_archiver
|
|
{
|
|
command_exists "$1" && echo "$1" || echo ':'
|
|
}
|
|
|
|
BZR_URL="$1"
|
|
if [[ -z "$BZR_URL" ]] ; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z "$2" ]] ; then
|
|
BZR_URL=${BZR_URL%/}
|
|
BZR_BASE_URL=${BZR_URL%/*}
|
|
BZR_BRANCH_NAME=${BZR_URL#$BZR_BASE_URL}
|
|
BZR_BRANCH_NAME=${BZR_BRANCH_NAME#/}
|
|
SRC_DIR=$BZR_BRANCH_NAME
|
|
else
|
|
SRC_DIR="$2"
|
|
fi
|
|
|
|
if [[ ! -z "$3" ]] ; then
|
|
GPG_KEY="$3"
|
|
else
|
|
GPG_KEY=
|
|
fi
|
|
|
|
DEST_DIR="$PWD"
|
|
|
|
TMPDIR=${TMPDIR:-${TMP:-${TEMP}}}
|
|
if [[ -z "${TMPDIR}" ]] ; then
|
|
unset TMPDIR
|
|
else
|
|
export TMPDIR
|
|
fi
|
|
TMP_DIR=`mktemp -d -t log4cplus.XXXXXXX`
|
|
pushd "$TMP_DIR"
|
|
|
|
TAR=${TAR:-$(find_archiver tar)}
|
|
XZ=${XZ:-$(find_archiver xz)}
|
|
BZIP2=${BZIP2:-$(find_archiver bzip2)}
|
|
GZIP=${GZIP:-$(find_archiver gzip)}
|
|
SEVENZA=${SEVENZA:-$(find_archiver 7za)}
|
|
LRZIP=${LRZIP:-$(find_archiver lrzip)}
|
|
BZR=${BZR:-bzr}
|
|
GPG=${GPG:-gpg}
|
|
|
|
$BZR export --per-file-timestamps -v "$SRC_DIR" "$BZR_URL"
|
|
$BZR version-info "$BZR_URL" >"$SRC_DIR/REVISION"
|
|
|
|
pushd "$SRC_DIR"
|
|
$SHELL ./scripts/fix-timestamps.sh
|
|
popd
|
|
|
|
$SEVENZA a -t7z "$DEST_DIR/$SRC_DIR".7z "$SRC_DIR" >/dev/null \
|
|
& $SEVENZA a -tzip "$DEST_DIR/$SRC_DIR".zip "$SRC_DIR" >/dev/null
|
|
|
|
TAR_FILE="$SRC_DIR".tar
|
|
$TAR -cf "$TAR_FILE" "$SRC_DIR"
|
|
|
|
$XZ -e -c "$TAR_FILE" >"$DEST_DIR/$TAR_FILE".xz \
|
|
& $BZIP2 -9 -c "$TAR_FILE" >"$DEST_DIR/$TAR_FILE".bz2 \
|
|
& $GZIP -9 -c "$TAR_FILE" >"$DEST_DIR/$TAR_FILE".gz \
|
|
& $LRZIP -q -o - "$TAR_FILE" |([[ "$LRZIP" = ":" ]] && cat >/dev/null || cat >"$DEST_DIR/$TAR_FILE".lrz)
|
|
|
|
echo waiting for tarballs...
|
|
wait
|
|
echo done waiting
|
|
|
|
if [[ ! -z "$GPG_KEY" ]] ; then
|
|
maybe_gpg_sign "$DEST_DIR/$SRC_DIR".7z
|
|
maybe_gpg_sign "$DEST_DIR/$SRC_DIR".zip
|
|
maybe_gpg_sign "$DEST_DIR/$TAR_FILE".xz
|
|
maybe_gpg_sign "$DEST_DIR/$TAR_FILE".bz2
|
|
maybe_gpg_sign "$DEST_DIR/$TAR_FILE".gz
|
|
maybe_gpg_sign "$DEST_DIR/$TAR_FILE".lrz
|
|
fi
|
|
|
|
rm -rf "$SRC_DIR"
|
|
rm -f "$TAR_FILE"
|
|
popd
|
|
rmdir "$TMP_DIR"
|