mirror of
https://git.proxmox.com/git/debcargo-conf
synced 2025-04-28 13:09:51 +00:00
85 lines
2.6 KiB
Bash
Executable File
85 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
abort() { local x=$1; shift; for i in "$@"; do echo >&2 "$0: abort: $i"; done; exit "$x"; }
|
|
|
|
if [ "$(basename "$PWD")" != "build" ]; then
|
|
abort 1 "This script is only meant to be run from the build/ directory."
|
|
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
|
|
|
|
CRATE="$1"
|
|
VER="$2"
|
|
if test -z "$VER" -o -f "$VER"; then
|
|
VER=""
|
|
shift
|
|
else
|
|
shift 2
|
|
fi
|
|
DISTRIBUTION="${DISTRIBUTION:-unstable}"
|
|
|
|
PKGNAME=$($DEBCARGO deb-src-name "$CRATE" $VER || abort 1 "couldn't find crate $CRATE")
|
|
DEBVER=$(dpkg-parsechangelog -l $PKGNAME/debian/changelog -SVersion)
|
|
DEBSRC=$(dpkg-parsechangelog -l $PKGNAME/debian/changelog -SSource)
|
|
DEBDIST=$(dpkg-parsechangelog -l $PKGNAME/debian/changelog -SDistribution)
|
|
DEB_HOST_ARCH=$(dpkg-architecture -q DEB_HOST_ARCH)
|
|
if [ -z "$CHROOT" ] && schroot -i -c "debcargo-unstable-${DEB_HOST_ARCH}-sbuild" >/dev/null 2>&1; then
|
|
CHROOT="debcargo-unstable-${DEB_HOST_ARCH}-sbuild"
|
|
fi
|
|
|
|
shouldbuild() {
|
|
local dst="$1"
|
|
local src="$2"
|
|
test ! -e "$dst" -o "$src" -nt "$dst"
|
|
}
|
|
|
|
if shouldbuild ${DEBSRC}_${DEBVER}.dsc "$PKGNAME/debian/changelog" ]; then
|
|
( cd "$PKGNAME" && dpkg-buildpackage -d -S --no-sign )
|
|
# sign if not UNRELEASED
|
|
if echo "$DEBDIST" | grep -qv UNRELEASED-FIXME-AUTOGENERATED-DEBCARGO; then
|
|
debsign ${DEBSRC}_${DEBVER}_source.changes
|
|
fi
|
|
fi
|
|
|
|
check_build_deps() {
|
|
mkdir -p dpkg-dummy
|
|
if shouldbuild dpkg-dummy/status /var/cache/apt/pkgcache.bin; then
|
|
# pretend dpkg status file that marks all packages as installed
|
|
# this is because dpkg-checkbuilddeps only works on installed pkgs
|
|
apt-cache dumpavail -o APT::Default-Release=unstable | \
|
|
sed -e 's/Package: .*/\0\nStatus: install ok installed/g' > dpkg-dummy/status
|
|
fi
|
|
( cd "$PKGNAME" && dpkg-checkbuilddeps --admindir=../dpkg-dummy )
|
|
}
|
|
|
|
if ! check_build_deps; then
|
|
if [ "$IGNORE_MISSING_BUILD_DEPS" != 1 ]; then
|
|
abort 1 "Missing build-dependencies, but maybe try '{apt,cargo} update'"
|
|
fi
|
|
fi
|
|
|
|
if [ "$SOURCEONLY" = 1 ]; then
|
|
exit
|
|
fi
|
|
|
|
sbuild --no-source --arch-any --arch-all \
|
|
${CHROOT:+-c $CHROOT} \
|
|
${DISTRIBUTION:+-d $DISTRIBUTION} \
|
|
${@/#/--extra-package=} \
|
|
${DEBSRC}_${DEBVER}.dsc
|
|
changestool ${DEBSRC}_${DEBVER}_${DEB_HOST_ARCH}.changes adddsc ${DEBSRC}_${DEBVER}.dsc
|
|
|
|
# sign if not UNRELEASED
|
|
if echo "$DEBDIST" | grep -qv UNRELEASED-FIXME-AUTOGENERATED-DEBCARGO; then
|
|
debsign ${DEBSIGN_KEYID:+-k $DEBSIGN_KEYID }--no-re-sign ${DEBSRC}_${DEBVER}_${DEB_HOST_ARCH}.changes
|
|
fi
|