9cfc437
5e18ef4
931eabc
999f926
88f8e3e
cfc28ae
b6a1d24
f830d4f
b6a1d24
23db362
34c68b2
86d55e8
5f4657b
34c68b2
23db362
32fc064
999f926
ea9f59b
931eabc
609d97b
5c6aa34
931eabc
1230b71
9cc53ba
1057693
1230b71
999f926
1230b71
cc003c9
f360093
ba39315
cc003c9
b4e5b9d
baae6f7
|
| # -*- mode: sh -*-
# Common shell utilities.
#
# Envvars:
# DEBCARGO
# Path to debcargo. Set this to use your custom version, e.g. from git.
set -e
abort() { local x=$1; shift; for i in "$@"; do echo >&2 "$0: abort: $i"; done; exit "$x"; }
mkdir -p "$(dirname "$0")/.git/hooks"
HOOK_COMMIT="$(dirname "$0")/.git/hooks/pre-commit"
if [ ! -x "$HOOK_COMMIT" ]; then
cat <<'eof' >"$HOOK_COMMIT"
#!/bin/sh
if git rev-parse -q --verify MERGE_HEAD; then exit; fi
case $(git rev-parse --abbrev-ref HEAD) in
pending-*) true;;
*) if git diff --cached --name-only | \
grep '^src/.*/debian/changelog$' | \
while read x; do if ! [ -f "$x" ]; then continue; fi; echo "$x: $(head -n1 $x)"; done | \
grep -v UNRELEASED-FIXME-AUTOGENERATED-DEBCARGO; then
echo >&2 "please don't finalise changelogs directly on the master branch, use ./release.sh instead"; exit 1;
fi;;
esac
eof
chmod +x "$HOOK_COMMIT"
fi
if [ -n "$DEBCARGO" ]; then
true
elif which debcargo >/dev/null; then
DEBCARGO=$(which debcargo)
elif [ -f "$HOME/.cargo/bin/debcargo" ]; then
DEBCARGO="$HOME/.cargo/bin/debcargo"
else
abort 1 "debcargo not found, run \`cargo install debcargo\` or set DEBCARGO to point to it"
fi
test -x "$DEBCARGO" || abort 1 "debcargo found but not executable: $DEBCARGO"
dcver=$($DEBCARGO --version | sed -ne 's/debcargo //p')
case $dcver in
2.0.*|2.1.*|2.2.*|2.3.*) abort 1 "unsupported debcargo version $dcver. try reinstalling with \`cargo install debcargo --force\`";;
2.4.*) true;;
*) abort 1 "unsupported debcargo version: $dcver";;
esac
if [ $# -ne 1 -a $# -ne 2 ]; then
echo >&2 "Usage: $0 <rust-crate-name>"
echo >&2 " $0 <rust-crate-name> <old-version>"
echo >&2 "See README.rst for more details on usage."
exit 2
fi
CRATE="$1"
VER="$2"
if [ -n "$CRATE" -a -z "$VER" ] && grep -q crate_src_path "src/$CRATE/debian/debcargo.toml" 2>/dev/null; then
# special hack for crate_src_path, could be cleaner...
PKGNAME="$CRATE"
PKGBASE="$CRATE"
else
PKGNAME=${PKGNAME:-$($DEBCARGO deb-src-name "$CRATE" $VER || abort 1 "couldn't find crate $CRATE")}
PKGBASE=${PKGBASE:-$($DEBCARGO deb-src-name "$CRATE" || abort 1 "couldn't find crate $CRATE")}
fi
PKGDIR_REL="src/$PKGNAME"
PKGDIR="$PWD/$PKGDIR_REL"
BUILDDIR="$PWD/build/$PKGNAME"
PKGCFG="$PKGDIR/debian/debcargo.toml"
mkdir -p "$(dirname $BUILDDIR)"
ln -srf "$PWD/build.sh" "$PWD/build/build.sh"
chmod +x "$PWD/build/build.sh"
if [ -z "$CRATE" ]; then
abort 2 "Usage: $0 <crate> [<version>]"
fi
run_debcargo() {
rm -rf "$BUILDDIR" "$(dirname "$BUILDDIR")/rust-${PKGNAME}_${REALVER:-$VER}"*.orig.tar.*
$DEBCARGO package --config "$PKGCFG" --directory "$BUILDDIR" "$@" "$CRATE" "${REALVER:-$VER}"
}
shouldbuild() {
local dst="$1"
local src="$2"
test ! -e "$dst" -o "$src" -nt "$dst"
}
get_existing_version() {
sed -nre "s/.*Package .* (.*) from crates.io.*/\1/gp" "$1/debian/changelog" | head -n1
}
|
|