ClickHouse/release

141 lines
4.9 KiB
Plaintext
Raw Normal View History

2016-02-07 20:02:44 +00:00
#!/bin/bash
2018-05-05 12:31:47 +00:00
# Advanced usage:
# Test gcc-8:
# env DIST=bionic EXTRAPACKAGES="gcc-8 g++-8" DEB_CC=gcc-8 DEB_CXX=g++-8 CMAKE_FLAGS=" -DNO_WERROR=1 " ./release
# Clang6 build:
2018-05-11 18:00:24 +00:00
# env DIST=bionic EXTRAPACKAGES="clang-6.0 libstdc++-8-dev lld-6.0 liblld-6.0-dev libclang-6.0-dev liblld-6.0" DEB_CC=clang-6.0 DEB_CXX=clang++-6.0 CMAKE_FLAGS=" -DNO_WERROR=1 " ./release
# Clang7 build:
2018-05-11 18:00:24 +00:00
# env DIST=unstable EXTRAPACKAGES="clang-7 libstdc++-8-dev lld-7 liblld-7-dev libclang-7-dev liblld-7" DEB_CC=clang-7 DEB_CXX=clang++-7 CMAKE_FLAGS=" -DNO_WERROR=1 " ./release
2018-05-05 12:31:47 +00:00
# Clang6 without internal compiler (for low memory arm64):
# env DIST=bionic DISABLE_PARALLEL=1 EXTRAPACKAGES="clang-6.0 libstdc++-8-dev" DEB_CC=clang-6.0 DEB_CXX=clang++-6.0 CMAKE_FLAGS=" -DNO_WERROR=1 " ./release
2018-07-17 11:15:14 +00:00
# Version increment:
# Default release: 18.1.2 -> 18.2.0:
# ./release --version
# or
# ./release --version minor
# Bugfix release (only with small patches to previous release): 18.1.2 -> 18.1.3:
# ./release --version patch
# Do this once per year: 18.1.2 -> 19.0.0:
# ./release --version major
set -e
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
cd $CURDIR
source "./release_lib.sh"
2016-02-07 20:02:44 +00:00
DEB_CC=${DEB_CC:=gcc-7}
DEB_CXX=${DEB_CXX:=g++-7}
PBUILDER_AUTOUPDATE=${PBUILDER_AUTOUPDATE=4320}
2017-08-30 14:08:19 +00:00
2016-02-07 20:02:44 +00:00
CONTROL=debian/control
DEBUILD_NOSIGN_OPTIONS="-us -uc"
DEBUILD_NODEPS_OPTIONS="-d"
USE_PBUILDER=1
2018-07-17 11:15:14 +00:00
if [ -z "$VERSION_STRING" ] ; then
get_revision_author
fi
2016-06-10 14:42:05 +00:00
while [[ $1 == --* ]]
do
if [[ $1 == '--test' ]]; then
TEST='yes'
VERSION_POSTFIX+=+test
shift
elif [[ $1 == '--check-build-dependencies' ]]; then
DEBUILD_NODEPS_OPTIONS=""
shift
elif [[ $1 == '--version' ]]; then
2018-07-17 11:15:14 +00:00
gen_revision_author $2
exit 0
2018-07-17 11:15:14 +00:00
# who use this?
#elif [[ $1 == '--head' ]]; then
# VERSION_STRING=`git rev-parse HEAD`
# shift
2018-03-15 09:41:06 +00:00
elif [[ $1 == '--pbuilder' ]]; then
# Default
shift
elif [[ $1 == '--no-pbuilder' ]]; then
USE_PBUILDER=
2017-12-28 13:27:49 +00:00
shift
2018-01-19 21:33:48 +00:00
elif [[ $1 == '--fast' ]]; then
# Wrong but fast pbuilder mode: create base package with all depends
EXTRAPACKAGES="$EXTRAPACKAGES debhelper cmake ninja-build gcc-7 g++-7 libc6-dev libmariadbclient-dev libicu-dev libltdl-dev libreadline-dev libssl-dev unixodbc-dev psmisc bash expect python python-lxml python-termcolor python-requests curl perl sudo openssl netcat-openbsd"
2018-01-19 21:33:48 +00:00
shift
else
echo "Unknown option $1"
exit 2
fi
2016-06-10 14:42:05 +00:00
done
# Build options
if [ -n "$SANITIZER" ]
2016-06-10 14:42:05 +00:00
then
CMAKE_BUILD_TYPE=$SANITIZER
VERSION_POSTFIX+=+${SANITIZER,,}
# todo: нужно ли отключить libtcmalloc?
LIBTCMALLOC_OPTS="-DENABLE_TCMALLOC=0"
# GLIBC_COMPATIBILITY отключен по умолчанию
export DEB_CC=${DEB_CC=clang-6.0}
export DEB_CXX=${DEB_CXX=clang++-6.0}
EXTRAPACKAGES="$EXTRAPACKAGES clang-6.0 lld-6.0"
elif [[ $BUILD_TYPE == 'valgrind' ]]; then
LIBTCMALLOC_OPTS="-DENABLE_TCMALLOC=0"
VERSION_POSTFIX+=+$BUILD_TYPE
elif [[ $BUILD_TYPE == 'debug' ]]; then
CMAKE_BUILD_TYPE=Debug
LIBTCMALLOC_OPTS="-DDEBUG_TCMALLOC=1"
VERSION_POSTFIX+=+$BUILD_TYPE
fi
2018-05-28 16:17:09 +00:00
CMAKE_FLAGS=" $LIBTCMALLOC_OPTS -DENABLE_EMBEDDED_COMPILER=1 $CMAKE_FLAGS"
2018-05-17 17:55:07 +00:00
[[ -n "$CMAKE_BUILD_TYPE" ]] && CMAKE_FLAGS=" -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE $CMAKE_FLAGS"
2018-05-29 17:54:48 +00:00
#[[ "$CMAKE_FLAGS" =~ "USE_INTERNAL_LLVM_LIBRARY" ]] || CMAKE_FLAGS=" -DUSE_INTERNAL_LLVM_LIBRARY=1 $CMAKE_FLAGS"
2018-05-16 00:34:56 +00:00
2017-12-28 13:27:49 +00:00
export CMAKE_FLAGS
2018-01-19 21:33:48 +00:00
export EXTRAPACKAGES
2018-07-17 11:15:14 +00:00
VERSION_STRING+=$VERSION_POSTFIX
echo -e "\nCurrent version is $VERSION_STRING"
2016-02-07 20:02:44 +00:00
2018-07-17 11:15:14 +00:00
gen_changelog "$VERSION_STRING" "" "$AUTHOR" ""
2016-02-07 20:02:44 +00:00
2017-12-28 13:27:49 +00:00
if [ -z "$USE_PBUILDER" ] ; then
# Build (only binary packages).
debuild -e PATH -e SSH_AUTH_SOCK \
-e DEB_CC=$DEB_CC -e DEB_CXX=$DEB_CXX -e CMAKE_FLAGS="$CMAKE_FLAGS" \
-b ${DEBUILD_NOSIGN_OPTIONS} ${DEBUILD_NODEPS_OPTIONS}
2017-12-28 13:27:49 +00:00
else
export DIST=${DIST:=bionic}
export SET_BUILDRESULT=${SET_BUILDRESULT:=$CURDIR/..}
2017-12-28 13:57:35 +00:00
. $CURDIR/debian/.pbuilderrc
if [[ -z `which pbuilder` ]] ; then
sudo apt install -y pbuilder fakeroot debhelper debian-archive-keyring debian-keyring
fi
if [[ ! -e "/usr/share/debootstrap/scripts/${DIST}" ]] ; then
sudo ln -s gutsy /usr/share/debootstrap/scripts/${DIST}
fi
2017-12-28 13:57:35 +00:00
if [[ -n "$FORCE_PBUILDER_CREATE" || ! -e "$BASETGZ" ]] ; then
echo Creating base system $BASETGZ
[ ! -e "/usr/share/debootstrap/scripts/${DIST}" ] && sudo ln -s gutsy /usr/share/debootstrap/scripts/${DIST}
sudo --preserve-env bash -x pbuilder create --configfile $CURDIR/debian/.pbuilderrc $PBUILDER_OPT
2018-01-19 21:33:48 +00:00
fi
if [ "$PBUILDER_AUTOUPDATE" -gt 0 ]; then
# Update every 3 days (60*24*3 minutes)
if [[ -n "$PBUILDER_UPDATE" ]] || test `find "$BASETGZ" -mmin +$PBUILDER_AUTOUPDATE` ; then
echo Updating base system $BASETGZ
sudo --preserve-env pbuilder update --configfile $CURDIR/debian/.pbuilderrc $PBUILDER_OPT
fi
2017-12-28 13:27:49 +00:00
fi
2018-01-19 21:33:48 +00:00
pdebuild --configfile $CURDIR/debian/.pbuilderrc -- $PBUILDER_OPT
2017-12-28 13:27:49 +00:00
fi