bash error handling and reporting is atrocious. Without -e it will just ignore errors. With -e it will stop on errors, but not report where the error happened (apart from exiting itself with an error code). Improve that with the `trap ERR` command. Note that this won't be invoked on intentional error exit with `exit 1`. We apply this on every bash script that contains -e or that it appears trivial to set it in. Non-trivial scripts without -e are left unmodified, since they might intentionally invoke failing scripts. Closes scylladb/scylladb#22747
60 lines
1.6 KiB
Bash
Executable File
60 lines
1.6 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
trap 'echo "error $? in $0 line $LINENO"' ERR
|
|
|
|
. /etc/os-release
|
|
print_usage() {
|
|
echo "build_deb.sh -target <codename> --dist --rebuild-dep --reloc-pkg build/release/scylla-package.tar.gz"
|
|
echo " --dist create a public distribution package"
|
|
echo " --reloc-pkg specify relocatable package path"
|
|
echo " --builddir specify Debian package build path"
|
|
exit 1
|
|
}
|
|
|
|
DIST="false"
|
|
RELOC_PKG=build/release/scylla-package.tar.gz
|
|
BUILDDIR=build/debian
|
|
OPTS=""
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
"--dist")
|
|
DIST="true"
|
|
shift 1
|
|
;;
|
|
"--reloc-pkg")
|
|
RELOC_PKG=$2
|
|
shift 2
|
|
;;
|
|
"--builddir")
|
|
BUILDDIR="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
print_usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ ! -e $RELOC_PKG ]; then
|
|
echo "$RELOC_PKG does not exist. Please build it with 'ninja' before running this script."
|
|
exit 1
|
|
fi
|
|
RELOC_PKG=$(readlink -f $RELOC_PKG)
|
|
rm -rf "$BUILDDIR"/scylla-package "$BUILDDIR"/scylla-package.orig "$BUILDDIR"/debian
|
|
mkdir -p $BUILDDIR/scylla-package
|
|
tar -C $BUILDDIR/scylla-package -xpf $RELOC_PKG
|
|
cd $BUILDDIR/scylla-package
|
|
|
|
if $DIST; then
|
|
export DEB_BUILD_OPTIONS="housekeeping"
|
|
fi
|
|
|
|
mv scylla/debian debian
|
|
|
|
PKG_NAME=$(dpkg-parsechangelog --show-field Source)
|
|
# XXX: Drop revision number from version string.
|
|
# Since it always '1', this should be okay for now.
|
|
PKG_VERSION=$(dpkg-parsechangelog --show-field Version |sed -e 's/-1$//')
|
|
ln -fv $RELOC_PKG ../"$PKG_NAME"_"$PKG_VERSION".orig.tar.gz
|
|
debuild -rfakeroot -us -uc
|