Unlike CentOS, Debian variants has python3 package on official repository, so we don't have to use relocatable python3 on these distributions. However, official python3 version is different on each distribution, we may have issue because of that. Also, our scripts and packaging implementation are becoming presuppose existence of relocatable python3, it is causing issue on Debian variants. Switching to relocatable python3 on Debian variants avoid these issues, it will easier to manage Scylla python3 environments accross multiple distributions. Fixes #4495 Signed-off-by: Takuya ASADA <syuu@scylladb.com> Message-Id: <20190531112707.20082-1-syuu@scylladb.com>
141 lines
3.7 KiB
Bash
Executable File
141 lines
3.7 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
|
|
for i in debian/scylla-*;do
|
|
mv $i ${i/scylla-/$PRODUCT-}
|
|
done
|
|
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
|