ClickHouse/debian/rules

163 lines
7.4 KiB
Plaintext
Raw Normal View History

2016-02-07 20:02:44 +00:00
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
ifndef THREADS_COUNT
THREADS_COUNT=24
endif
configure-stamp:
dh_testdir
rm -rf build
make clean 1> /dev/null 2>&1 || echo "Nothing to clean"
rm -f CMakeCache.txt
mkdir -p build
touch configure-stamp
build: build-stamp
build-stamp: configure-stamp
dh_testdir
# если не задан тип сборки запускаем cmake без указания типа, если задан - передаём его
# для сборки в Debug нужно запустить так: debuild -e CMAKE_BUILD_TYPE=Debug
cd build && pwd && if [ -z CMAKE_BUILD_TYPE ]; then cmake ..; else cmake -DCMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) ..; fi
# TODO: возможно надо исправить
# последовательно зкапускаем make для каждой из целей.
# т.к. при параллельном запуске (make target1 target2) несколько раз одновременно создаются бинарники
# и возникает raise с custom_command, использующие эти бинарники
for daemon in ${DAEMONS}; do $(MAKE) -j$(THREADS_COUNT) -C build $$daemon; done
touch $@
clean:
dh_testdir
dh_testroot
rm -f configure-stamp
rm -f build-stamp
rm -rf build
# Удалим созданные для dh_installinit файлы
find ./debian/ -name "*.init" -type l -delete
# Удалим созданные для dh_installcron файлы
find ./debian/ -name "*.cron.d" -type f -delete
# Удалим созданные для dh_installlogrotate файлы
find ./debian/ -name "*.logrotate" -type f -delete
# Удалим созданные *.install файлы
for DAEMON_PKG in ${DAEMONS}; do AUTO=`grep "# automatically created" debian/$$DAEMON_PKG-metrika-yandex.install`; if [ "x$$AUTO" != "x" ]; then rm -f debian/$$DAEMON_PKG-metrika-yandex.install; fi; done
dh_clean
install: build
dh_testdir
dh_testroot
dh_prep
cd build && \
for daemon in ${DAEMONS}; do\
DESTDIR=../debian/tmp cmake -DCOMPONENT=$$daemon -P cmake_install.cmake;\
done
# Создаём нужные файлы для dh_installinit, т.к. он их понимает только внутри debian/
for I in debian/tmp/etc/init.d/*; do echo $$I; ln -s tmp/etc/init.d/`basename $$I` debian/`basename $$I`.init; done
# Хотим, чтобы для пакета clickhouse-server-base init file назывался clickhouse-server
if [ -e debian/tmp/etc/init.d/clickhouse-server ]; then ln -s tmp/etc/init.d/clickhouse-server debian/clickhouse-server-base.clickhouse-server.init; fi
# создаем дефолтный cron, если нет крон-файла созданного пользователем
# cron_name имеет вид daemonname-metrika-yandex
# logrotate_name имеет вид daemonname
# Для ClickHouse не должно быть лишних зависимостей.
for I in debian/tmp/etc/init.d/*; \
do \
cron_name=`basename $$I`; \
if [ ! -d debian/tmp/etc/cron.d ]; then \
mkdir -p debian/tmp/etc/cron.d; \
fi; \
if [ ! -f debian/tmp/etc/cron.d/$$cron_name ]; then \
echo "#*/10 * * * * root /etc/init.d/$$cron_name condstart 1>/dev/null 2>&1" > debian/tmp/etc/cron.d/$$cron_name; \
logrotate_name=`basename $$I | sed 's/-metrika-yandex//'`; \
if [ -f debian/tmp/etc/logrotate.d/$$logrotate_name.logrt ]; then \
if [ -e debian/tmp/etc/init.d/clickhouse-server ]; then \
echo "#23 * * * * root flock -w 200 /var/run/lock/metrika-logrotate -c '/usr/sbin/logrotate /etc/logrotate.d/$$logrotate_name.logrt'" >> debian/tmp/etc/cron.d/$$cron_name; \
else \
echo "#23 * * * * root /usr/local/bin/metrika-logrotate /etc/logrotate.d/$$logrotate_name.logrt" >> debian/tmp/etc/cron.d/$$cron_name; \
fi; \
fi; \
fi; \
done; \
# Создаём нужные *.install файлы
# Только для демонов, т.к. пакеты ClickHouse не имеют суффикса metrika-yandex
for DAEMON_PKG in ${DAEMONS}; do \
if [ ! -e "debian/$$DAEMON_PKG-metrika-yandex.install" ]; then \
echo "# automatically created" > debian/$$DAEMON_PKG-metrika-yandex.install; \
echo "/etc/$$DAEMON_PKG/config.xml" >> debian/$$DAEMON_PKG-metrika-yandex.install; \
echo "/usr/bin/$$DAEMON_PKG" >> debian/$$DAEMON_PKG-metrika-yandex.install; \
echo "/etc/logrotate.d/$$DAEMON_PKG.logrt" >> debian/$$DAEMON_PKG-metrika-yandex.install; \
echo "/etc/cron.d/$$DAEMON_PKG-metrika-yandex" >> debian/$$DAEMON_PKG-metrika-yandex.install; \
if [ -e "debian/tmp/etc/monrun/conf.d/$$DAEMON_PKG.conf" ]; then \
echo "/etc/monrun/conf.d/$$DAEMON_PKG.conf" >> debian/$$DAEMON_PKG-metrika-yandex.install; \
fi;\
fi; \
done
# Создаём нужные *.postinst файлы
# Note: Только для демонов, т.к. пакеты ClickHouse не имеют суффикса metrika-yandex
for DAEMON_PKG in ${DAEMONS}; do \
if [ ! -e "debian/$$DAEMON_PKG-metrika-yandex.postinst" ]; then \
echo "# automatically created" > debian/$$DAEMON_PKG-metrika-yandex.postinst; \
echo "mkdir -p /etc/$$DAEMON_PKG/conf.d" >> debian/$$DAEMON_PKG-metrika-yandex.postinst; \
echo "chown metrika: /etc/$$DAEMON_PKG/conf.d" >> debian/$$DAEMON_PKG-metrika-yandex.postinst; \
if [ -e "debian/tmp/etc/init.d/$$DAEMON_PKG-metrika-yandex" ]; then \
if echo $$DAEMON_PKG | grep server > /dev/null; then\
2016-02-17 09:38:36 +00:00
echo "update-rc.d $$DAEMON_PKG-metrika-yandex defaults > /dev/null || exit \$$?" >> debian/$$DAEMON_PKG-metrika-yandex.postinst; \
2016-02-07 20:02:44 +00:00
else\
2016-02-17 09:38:36 +00:00
echo "update-rc.d $$DAEMON_PKG-metrika-yandex start 30 2 3 4 5 . stop 70 0 1 6 . > /dev/null || exit \$$?" >> debian/$$DAEMON_PKG-metrika-yandex.postinst; \
2016-02-07 20:02:44 +00:00
fi\
fi\
\
else \
echo >> debian/$$DAEMON_PKG-metrika-yandex.postinst; \
echo "mkdir -p /etc/$$DAEMON_PKG/conf.d; chown metrika: /etc/$$DAEMON_PKG/conf.d" >> debian/$$DAEMON_PKG-metrika-yandex.postinst; \
fi; \
done
# В случае сборки clickhouse-server, добавим в пакет бинарник clang-а и заголовочные файлы - для динамической компиляции.
if [ -e debian/tmp/etc/init.d/clickhouse-server ]; then \
mkdir -p debian/tmp/usr/share/clickhouse/bin debian/tmp/usr/share/clickhouse/headers; \
debian/copy_clang_binaries.sh debian/tmp/usr/share/clickhouse/bin/; \
./copy_headers.sh . debian/tmp/usr/share/clickhouse/headers; \
fi;
# Список бинариев, для которых делаем strip. Это делается из-за того, что на некоторых серверах мало места.
$(eval STRIP_LIST=\
clickhouse-client \
)
for DAEMON in ${STRIP_LIST}; do \
if [ -e debian/tmp/usr/bin/$$DAEMON ]; then strip debian/tmp/usr/bin/$$DAEMON; fi; \
done
# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
dh_testroot
dh_installdocs
dh_installinit --no-start --no-package=clickhouse-server-base
dh_installinit --no-start --package=clickhouse-server-base --name=clickhouse-server
dh_installcron
dh_installdirs
dh_installchangelogs
dh_install --sourcedir=debian/tmp
dh_link
dh_compress
dh_fixperms
dh_installdeb
dh_shlibdeps --exclude=clang --exclude=stdc
dh_gencontrol
dh_md5sums
dh_builddeb -- -z3
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install