When the product name is other than "scylla", the debian packaging scripts go over all files that starts with "scylla-" and change the prefix to be the actual product name. However, if there are no such files in the directory the script will fail since the renaming command will get the wildcard string instrad of an actual file name. This patch replaces the command with a command with an equivalent desired effect that only operates on files if there are any. Signed-off-by: Eliran Sinvani <eliransin@scylladb.com> Message-Id: <20191230143250.18101-1-eliransin@scylladb.com>
141 lines
3.8 KiB
Bash
Executable File
141 lines
3.8 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
PRODUCT=$(cat SCYLLA-PRODUCT-FILE)
|
|
|
|
. /etc/os-release
|
|
print_usage() {
|
|
echo "build_deb.sh --reloc-pkg build/release/scylla-python3-package.tar.gz"
|
|
echo " --reloc-pkg specify relocatable package path"
|
|
exit 1
|
|
}
|
|
|
|
TARGET=stable
|
|
RELOC_PKG=
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
"--reloc-pkg")
|
|
RELOC_PKG=$2
|
|
shift 2
|
|
;;
|
|
*)
|
|
print_usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
is_redhat_variant() {
|
|
[ -f /etc/redhat-release ]
|
|
}
|
|
is_debian_variant() {
|
|
[ -f /etc/debian_version ]
|
|
}
|
|
pkg_install() {
|
|
if is_redhat_variant; then
|
|
sudo yum install -y $1
|
|
elif is_debian_variant; then
|
|
sudo apt-get install -y $1
|
|
else
|
|
echo "Requires to install following command: $1"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
if [ ! -e SCYLLA-RELOCATABLE-FILE ]; then
|
|
echo "do not directly execute build_deb.sh, use reloc/build_deb.sh instead."
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$(arch)" != "x86_64" ]; then
|
|
echo "Unsupported architecture: $(arch)"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$RELOC_PKG" ]; then
|
|
print_usage
|
|
exit 1
|
|
fi
|
|
if [ ! -f "$RELOC_PKG" ]; then
|
|
echo "$RELOC_PKG is not found."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -e debian ]; then
|
|
rm -rf debian
|
|
fi
|
|
if is_debian_variant; then
|
|
sudo apt-get -y update
|
|
fi
|
|
# this hack is needed since some environment installs 'git-core' package, it's
|
|
# subset of the git command and doesn't works for our git-archive-all script.
|
|
if is_redhat_variant && [ ! -f /usr/libexec/git-core/git-submodule ]; then
|
|
sudo yum install -y git
|
|
fi
|
|
if [ ! -f /usr/bin/git ]; then
|
|
pkg_install git
|
|
fi
|
|
if [ ! -f /usr/bin/python ]; then
|
|
pkg_install python
|
|
fi
|
|
if [ ! -f /usr/bin/debuild ]; then
|
|
pkg_install devscripts
|
|
fi
|
|
if [ ! -f /usr/bin/dh_testdir ]; then
|
|
pkg_install debhelper
|
|
fi
|
|
if [ ! -f /usr/bin/fakeroot ]; then
|
|
pkg_install fakeroot
|
|
fi
|
|
if [ ! -f /usr/bin/pystache ]; then
|
|
if is_redhat_variant; then
|
|
sudo yum install -y /usr/bin/pystache
|
|
elif is_debian_variant; then
|
|
sudo apt-get install -y python-pystache
|
|
fi
|
|
fi
|
|
if [ ! -f /usr/bin/file ]; then
|
|
pkg_install file
|
|
fi
|
|
if is_debian_variant && [ ! -f /usr/share/doc/python-pkg-resources/copyright ]; then
|
|
sudo apt-get install -y python-pkg-resources
|
|
fi
|
|
|
|
if [ "$ID" = "ubuntu" ] && [ ! -f /usr/share/keyrings/debian-archive-keyring.gpg ]; then
|
|
sudo apt-get install -y debian-archive-keyring
|
|
fi
|
|
if [ "$ID" = "debian" ] && [ ! -f /usr/share/keyrings/ubuntu-archive-keyring.gpg ]; then
|
|
sudo apt-get install -y ubuntu-archive-keyring
|
|
fi
|
|
|
|
if [ -z "$TARGET" ]; then
|
|
if is_debian_variant; then
|
|
if [ ! -f /usr/bin/lsb_release ]; then
|
|
pkg_install lsb-release
|
|
fi
|
|
TARGET=`lsb_release -c|awk '{print $2}'`
|
|
else
|
|
echo "Please specify target"
|
|
exit 1
|
|
fi
|
|
fi
|
|
RELOC_PKG_FULLPATH=$(readlink -f $RELOC_PKG)
|
|
RELOC_PKG_BASENAME=$(basename $RELOC_PKG)
|
|
SCYLLA_VERSION=$(cat SCYLLA-VERSION-FILE)
|
|
SCYLLA_RELEASE=$(cat SCYLLA-RELEASE-FILE)
|
|
|
|
ln -fv $RELOC_PKG_FULLPATH ../$PRODUCT-python3_$SCYLLA_VERSION-$SCYLLA_RELEASE.orig.tar.gz
|
|
|
|
cp -al dist/debian/python3/debian debian
|
|
if [ "$PRODUCT" != "scylla" ]; then
|
|
# rename all 'scylla-' prefixed artifacts in the debian folder to have the
|
|
# product name as a prefix
|
|
find debian -maxdepth 1 -name "scylla-*" -exec bash -c 'mv $1 ${1/scylla-/$PRODUCT-}' _ {} \;
|
|
fi
|
|
REVISION="1"
|
|
MUSTACHE_DIST="\"debian\": true, \"product\": \"$PRODUCT\", \"$PRODUCT\": true"
|
|
pystache dist/debian/python3/changelog.mustache "{ $MUSTACHE_DIST, \"version\": \"$SCYLLA_VERSION\", \"release\": \"$SCYLLA_RELEASE\", \"revision\": \"$REVISION\", \"codename\": \"$TARGET\" }" > debian/changelog
|
|
pystache dist/debian/python3/rules.mustache "{ $MUSTACHE_DIST }" > debian/rules
|
|
pystache dist/debian/python3/control.mustache "{ $MUSTACHE_DIST }" > debian/control
|
|
chmod a+rx debian/rules
|
|
|
|
debuild -rfakeroot -us -uc
|