mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-03 13:37:04 +00:00
dist/debian: Use pbuilder for Ubuntu/Debian debs
Enable pbuilder for Ubuntu/Debian to prevent build enviroment dependent issues. Also support cross building by pbuilder. (cross-building from Fedora 25 and Ubuntu 16.04 are tested) closes #629 Signed-off-by: Takuya ASADA <syuu@scylladb.com> Message-Id: <1497895661-26376-1-git-send-email-syuu@scylladb.com>
This commit is contained in:
126
dist/debian/build_deb.sh
vendored
126
dist/debian/build_deb.sh
vendored
@@ -2,7 +2,8 @@
|
||||
|
||||
. /etc/os-release
|
||||
print_usage() {
|
||||
echo "build_deb.sh --rebuild-dep"
|
||||
echo "build_deb.sh -target <codename> --dist --rebuild-dep"
|
||||
echo " --target target distribution codename"
|
||||
echo " --dist create a public distribution package"
|
||||
echo " --rebuild-dep rebuild dependency packages"
|
||||
exit 1
|
||||
@@ -17,6 +18,7 @@ install_deps() {
|
||||
|
||||
REBUILD=0
|
||||
DIST=0
|
||||
TARGET=
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
"--rebuild-dep")
|
||||
@@ -27,51 +29,89 @@ while [ $# -gt 0 ]; do
|
||||
DIST=1
|
||||
shift 1
|
||||
;;
|
||||
"--target")
|
||||
TARGET=$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 dist/debian/build_deb.sh ]; then
|
||||
echo "run build_deb.sh in top of scylla dir"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$(arch)" != "x86_64" ]; then
|
||||
echo "Unsupported architecture: $(arch)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -e debian ] || [ -e build/release ]; then
|
||||
rm -rf debian build
|
||||
sudo rm -rf debian build
|
||||
mkdir build
|
||||
fi
|
||||
sudo apt-get -y update
|
||||
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
|
||||
sudo apt-get -y install git
|
||||
pkg_install git
|
||||
fi
|
||||
if [ ! -f /usr/bin/mk-build-deps ]; then
|
||||
sudo apt-get -y install devscripts
|
||||
if [ ! -f /usr/bin/python ]; then
|
||||
pkg_install python
|
||||
fi
|
||||
if [ ! -f /usr/bin/equivs-build ]; then
|
||||
sudo apt-get -y install equivs
|
||||
if [ ! -f /usr/sbin/pbuilder ]; then
|
||||
pkg_install pbuilder
|
||||
fi
|
||||
if [ ! -f /usr/bin/add-apt-repository ]; then
|
||||
sudo apt-get -y install software-properties-common
|
||||
if [ ! -f /usr/bin/ant ]; then
|
||||
pkg_install ant
|
||||
fi
|
||||
if [ ! -f /usr/bin/wget ]; then
|
||||
sudo apt-get -y install wget
|
||||
fi
|
||||
if [ ! -f /usr/bin/lsb_release ]; then
|
||||
sudo apt-get -y install lsb-release
|
||||
fi
|
||||
if [ ! -f /usr/bin/gdebi ]; then
|
||||
sudo apt-get -y install gdebi-core
|
||||
if [ ! -f /usr/bin/dh_testdir ]; then
|
||||
pkg_install debhelper
|
||||
fi
|
||||
|
||||
DISTRIBUTION=`lsb_release -i|awk '{print $3}'`
|
||||
CODENAME=`lsb_release -c|awk '{print $2}'`
|
||||
if [ `grep -c $VERSION_ID dist/debian/supported_release` -lt 1 ]; then
|
||||
echo "Unsupported release: $VERSION_ID"
|
||||
echo "Pless any key to continue..."
|
||||
read input
|
||||
|
||||
if [ -z "$TARGET" ]; then
|
||||
if is_debian_variant; then
|
||||
if [ ! -f /usr/bin/lsb_release ]; then
|
||||
pkg_install lsb-release
|
||||
fi
|
||||
TARGET=$CODENAME
|
||||
else
|
||||
echo "Please specify target"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ $REBUILD -eq 1 ] && [ "$TARGET" != "$CODENAME" ]; then
|
||||
echo "Rebuild dependencies doesn't support cross-build."
|
||||
echo "Please run it on following distribution: $TARGET"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VERSION=$(./SCYLLA-VERSION-GEN)
|
||||
@@ -85,11 +125,12 @@ cp dist/common/sysconfig/scylla-server debian/scylla-server.default
|
||||
cp dist/debian/changelog.in debian/changelog
|
||||
sed -i -e "s/@@VERSION@@/$SCYLLA_VERSION/g" debian/changelog
|
||||
sed -i -e "s/@@RELEASE@@/$SCYLLA_RELEASE/g" debian/changelog
|
||||
sed -i -e "s/@@CODENAME@@/$CODENAME/g" debian/changelog
|
||||
sed -i -e "s/@@CODENAME@@/$TARGET/g" debian/changelog
|
||||
cp dist/debian/rules.in debian/rules
|
||||
cp dist/debian/control.in debian/control
|
||||
cp dist/debian/scylla-server.install.in debian/scylla-server.install
|
||||
if [ "$DISTRIBUTION" = "Debian" ]; then
|
||||
if [ "$TARGET" = "jessie" ]; then
|
||||
cp dist/debian/scylla-server.cron.d debian/
|
||||
sed -i -e "s/@@REVISION@@/1/g" debian/changelog
|
||||
sed -i -e "s/@@DH_INSTALLINIT@@//g" debian/rules
|
||||
sed -i -e "s/@@COMPILER@@/g++-5/g" debian/rules
|
||||
@@ -102,7 +143,8 @@ if [ "$DISTRIBUTION" = "Debian" ]; then
|
||||
sed -i -e "s#@@SCRIPTS_SAVE_COREDUMP@@#dist/debian/scripts/scylla_save_coredump usr/lib/scylla#g" debian/scylla-server.install
|
||||
sed -i -e "s#@@SCRIPTS_FSTRIM@@#dist/debian/scripts/scylla_fstrim usr/lib/scylla#g" debian/scylla-server.install
|
||||
sed -i -e "s#@@SCRIPTS_DELAY_FSTRIM@@#dist/debian/scripts/scylla_delay_fstrim usr/lib/scylla#g" debian/scylla-server.install
|
||||
elif [ "$VERSION_ID" = "14.04" ]; then
|
||||
elif [ "$TARGET" = "trusty" ]; then
|
||||
cp dist/debian/scylla-server.cron.d debian/
|
||||
sed -i -e "s/@@REVISION@@/0ubuntu1/g" debian/changelog
|
||||
sed -i -e "s/@@DH_INSTALLINIT@@/--upstart-only/g" debian/rules
|
||||
sed -i -e "s/@@COMPILER@@/g++-5/g" debian/rules
|
||||
@@ -134,36 +176,22 @@ if [ $DIST -gt 0 ]; then
|
||||
else
|
||||
sed -i -e "s#@@ADDHKCFG@@##g" debian/scylla-server.install
|
||||
fi
|
||||
|
||||
cp dist/common/systemd/scylla-server.service.in debian/scylla-server.service
|
||||
sed -i -e "s#@@SYSCONFDIR@@#/etc/default#g" debian/scylla-server.service
|
||||
cp dist/common/systemd/scylla-housekeeping-daily.service debian/scylla-server.scylla-housekeeping-daily.service
|
||||
cp dist/common/systemd/scylla-housekeeping-restart.service debian/scylla-server.scylla-housekeeping-restart.service
|
||||
cp dist/common/systemd/node-exporter.service debian/scylla-server.node-exporter.service
|
||||
if [ "$DISTRIBUTION" = "Debian" ] || [ "$VERSION_ID" = "14.04" ]; then
|
||||
cp dist/debian/scylla-server.cron.d debian/
|
||||
fi
|
||||
|
||||
if [ $REBUILD -eq 0 ]; then
|
||||
if [ ! -f /etc/apt/sources.list.d/scylla-3rdparty.list ]; then
|
||||
cd /etc/apt/sources.list.d
|
||||
sudo wget -nv https://s3.amazonaws.com/downloads.scylladb.com/deb/3rdparty/$CODENAME/scylla-3rdparty.list
|
||||
cd -
|
||||
fi
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y --allow-unauthenticated install antlr3 antlr3-c++-dev libthrift-dev libthrift0 thrift-compiler
|
||||
else
|
||||
if [ $REBUILD -eq 1 ]; then
|
||||
./dist/debian/dep/build_dependency.sh
|
||||
fi
|
||||
|
||||
if [ "$VERSION_ID" = "14.04" ]; then
|
||||
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||
sudo apt-get -y update
|
||||
elif [ "$DISTRIBUTION" = "Ubuntu" ]; then
|
||||
sudo apt-get -y install g++-5
|
||||
else
|
||||
sudo apt-get install g++
|
||||
cp ./dist/debian/pbuilderrc ~/.pbuilderrc
|
||||
sudo rm -fv /var/cache/pbuilder/scylla-server-$TARGET.tgz
|
||||
sudo -E DIST=$TARGET REBUILD=$REBUILD /usr/sbin/pbuilder clean
|
||||
sudo -E DIST=$TARGET REBUILD=$REBUILD /usr/sbin/pbuilder create
|
||||
sudo -E DIST=$TARGET REBUILD=$REBUILD /usr/sbin/pbuilder update
|
||||
if [ $REBUILD -eq 1 ]; then
|
||||
sudo -E DIST=$TARGET REBUILD=$REBUILD /usr/sbin/pbuilder execute --save-after-exec dist/debian/dep/pbuilder_install_deps.sh
|
||||
fi
|
||||
|
||||
install_deps
|
||||
debuild -r fakeroot -us -uc
|
||||
sudo -E DIST=$TARGET REBUILD=$REBUILD pdebuild --buildresult build/debs
|
||||
|
||||
43
dist/debian/dep/build_dependency.sh
vendored
43
dist/debian/dep/build_dependency.sh
vendored
@@ -21,7 +21,16 @@ if [ "$CODENAME" = "jessie" ]; then
|
||||
sudo apt-get install -t jessie-backports -y texlive
|
||||
fi
|
||||
|
||||
sudo apt-get install -y gdebi-core
|
||||
if [ ! -f /usr/bin/gdebi ]; then
|
||||
sudo apt-get install -y gdebi-core
|
||||
fi
|
||||
if [ ! -f /usr/bin/mk-build-deps ]; then
|
||||
sudo apt-get install -y devscripts
|
||||
fi
|
||||
if [ ! -f /usr/bin/equivs ]; then
|
||||
sudo apt-get install -y equivs
|
||||
fi
|
||||
|
||||
if [ "$VERSION_ID" = "14.04" ] || [ "$DISTRIBUTION" = "Debian" ]; then
|
||||
if [ ! -f build/antlr3_*.deb ]; then
|
||||
rm -rf build/antlr3-3.5.2
|
||||
@@ -110,32 +119,6 @@ if [ "$DISTRIBUTION" = "Debian" ] && [ "$VERSION_ID" = "8" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$VERSION_ID" = "14.04" ]; then
|
||||
sudo gdebi -n build/antlr3_*.deb
|
||||
sudo gdebi -n build/thrift-compiler_*.deb
|
||||
elif [ "$DISTRIBUTION" = "Debian" ]; then
|
||||
sudo gdebi -n build/antlr3_*.deb
|
||||
fi
|
||||
sudo gdebi -n build/antlr3-c++-dev_*.deb
|
||||
sudo gdebi -n build/libthrift0_*.deb
|
||||
sudo gdebi -n build/libthrift-dev_*.deb
|
||||
if [ "$DISTRIBUTION" = "Debian" ] && [ "$VERSION_ID" = "8" ]; then
|
||||
sudo gdebi -n build/gcc-5-base_*.deb
|
||||
sudo gdebi -n build/libatomic1_*.deb
|
||||
sudo gdebi -n build/libcilkrts5_*.deb
|
||||
sudo gdebi -n build/libgcc1_*.deb
|
||||
sudo gdebi -n build/libgomp1_*.deb
|
||||
sudo gdebi -n build/libitm1_*.deb
|
||||
sudo gdebi -n build/liblsan0_*.deb
|
||||
sudo gdebi -n build/libstdc++6_*.deb
|
||||
sudo gdebi -n build/libtsan0_*.deb
|
||||
sudo gdebi -n build/libubsan0_*.deb
|
||||
sudo gdebi -n build/libasan2_*.deb
|
||||
sudo gdebi -n build/libcc1-0_*.deb
|
||||
sudo gdebi -n build/libmpx0_*.deb
|
||||
sudo gdebi -n build/libgcc-5-dev_*.deb
|
||||
sudo gdebi -n build/libstdc++-5-dev_*.deb
|
||||
sudo gdebi -n build/cpp-5_*.deb
|
||||
sudo gdebi -n build/gcc-5_*.deb
|
||||
sudo gdebi -n build/g++-5_*.deb
|
||||
fi
|
||||
rm -rf /var/tmp/pbuilder
|
||||
mkdir /var/tmp/pbuilder
|
||||
cp -v build/*.deb /var/tmp/pbuilder/
|
||||
|
||||
38
dist/debian/dep/pbuilder_install_deps.sh
vendored
Executable file
38
dist/debian/dep/pbuilder_install_deps.sh
vendored
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
sudo apt update
|
||||
if [ ! -f /usr/bin/gdebi ]; then
|
||||
sudo apt install -y gdebi-core
|
||||
fi
|
||||
if [ ! -f /usr/bin/lsb_release ]; then
|
||||
sudo apt install -y lsb-release
|
||||
fi
|
||||
|
||||
CODENAME=`lsb_release -c|awk '{print $2}'`
|
||||
|
||||
sudo gdebi -n /var/tmp/pbuilder/antlr3-c++-dev_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libthrift0_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libthrift-dev_*.deb
|
||||
if [ "$CODENAME" = "trusty" ] || [ "$CODENAME" = "jessie" ]; then
|
||||
sudo gdebi -n /var/tmp/pbuilder/antlr3_*.deb
|
||||
fi
|
||||
if [ "$CODENAME" = "jessie" ]; then
|
||||
sudo gdebi -n /var/tmp/pbuilder/gcc-5-base_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libatomic1_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libcilkrts5_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libgcc1_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libgomp1_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libitm1_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/liblsan0_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libstdc++6_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libtsan0_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libubsan0_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libasan2_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libcc1-0_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libmpx0_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libgcc-5-dev_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/libstdc++-5-dev_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/cpp-5_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/gcc-5_*.deb
|
||||
sudo gdebi -n /var/tmp/pbuilder/g++-5_*.deb
|
||||
fi
|
||||
40
dist/debian/pbuilderrc
vendored
Normal file
40
dist/debian/pbuilderrc
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
USENETWORK=yes
|
||||
BUILD_HOME=/tmp
|
||||
BASETGZ="/var/cache/pbuilder/scylla-server-$DIST.tgz"
|
||||
DISTRIBUTION="$DIST"
|
||||
BUILDRESULT="/var/cache/pbuilder/scylla-server-$DIST/result/"
|
||||
APTCACHE="/var/cache/pbuilder/scylla-server-$DIST/aptcache/"
|
||||
ALLOWUNTRUSTED=yes
|
||||
if [ $REBUILD -eq 1 ]; then
|
||||
BINDMOUNTS="/var/tmp/pbuilder"
|
||||
fi
|
||||
|
||||
if [ "$DIST" = "trusty" ] || [ "$DIST" = "xenial" ]; then
|
||||
MIRRORSITE="http://archive.ubuntu.com/ubuntu/"
|
||||
COMPONENTS="main restricted universe multiverse"
|
||||
DEBOOTSTRAPOPTS="--keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg"
|
||||
if [ "$DIST" = "trusty" ]; then
|
||||
OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse|deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu trusty main|deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu trusty main"
|
||||
if [ $REBUILD -eq 0 ]; then
|
||||
OTHERMIRROR="$OTHERMIRROR|deb [arch=amd64] http://downloads.scylladb.com/deb/3rdparty/trusty trusty scylladb/multiverse"
|
||||
fi
|
||||
elif [ "$DIST" = "xenial" ]; then
|
||||
OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse"
|
||||
if [ $REBUILD -eq 0 ]; then
|
||||
OTHERMIRROR="$OTHERMIRROR|deb [arch=amd64] http://downloads.scylladb.com/deb/3rdparty/xenial xenial scylladb/multiverse"
|
||||
fi
|
||||
else
|
||||
echo "Unknown distribution: $DIST"
|
||||
exit 1
|
||||
fi
|
||||
elif [ "$DIST" = "jessie" ]; then
|
||||
MIRRORSITE="http://deb.debian.org/debian/"
|
||||
COMPONENTS="main contrib non-free"
|
||||
DEBOOTSTRAPOPTS="--keyring=/usr/share/keyrings/debian-archive-keyring.gpg"
|
||||
if [ $REBUILD -eq 0 ]; then
|
||||
OTHERMIRROR="deb [arch=amd64] http://downloads.scylladb.com/deb/3rdparty/jessie jessie scylladb/non-free"
|
||||
fi
|
||||
else
|
||||
echo "Unknown distribution: $DIST"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user