Skip to content
Snippets Groups Projects
Commit 2e64a8c9 authored by Roman Tsisyk's avatar Roman Tsisyk
Browse files

Fix #1291: enable systemd for Debian packages

parent f951018b
No related branches found
No related tags found
No related merge requests found
......@@ -47,9 +47,9 @@ extra/bin2c
extra/dist/tarantoolctl
extra/dist/tarantoolctl.1
extra/dist/tarantool.logrotate
extra/dist/tarantool.service
extra/dist/tarantool@.service
extra/dist/tarantool.tmpfiles.conf
extra/dist/tarantool-generator
cmake_install.cmake
config.mk
config.guess
......@@ -109,12 +109,17 @@ debian/tarantool-common.postrm.debhelper
debian/tarantool-common.prerm.debhelper
debian/tarantool-common.substvars
debian/tarantool-common.manpages
debian/tarantool-common.install
debian/tarantool-common/*
debian/tarantool-dev.debhelper.log
debian/tarantool-dev.substvars
debian/tarantool-dev.postinst.debhelper
debian/tarantool-dev.postrm.debhelper
debian/tarantool-dev/*
debian/tarantool.debhelper.log
debian/tarantool.substvars
debian/tarantool.postinst.debhelper
debian/tarantool.postrm.debhelper
debian/tarantool.manpages
debian/tarantool/*
debian/tmp/*
......
......@@ -34,6 +34,14 @@ else()
"${SYSTEMD_UNIT_DIR}")
endif()
if ("${SYSTEMD_GENERATOR_DIR}" STREQUAL "")
execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE}
--variable=systemdsystemgeneratordir systemd
OUTPUT_VARIABLE SYSTEMD_GENERATOR_DIR)
string(REGEX REPLACE "[ \t\n]+" "" SYSTEMD_GENERATOR_DIR
"${SYSTEMD_GENERATOR_DIR}")
endif()
if ("${SYSTEMD_TMPFILES_DIR}" STREQUAL "")
# NOTE: don't use ${CMAKE_INSTALL_LIBDIR} here
set(SYSTEMD_TMPFILES_DIR "${CMAKE_INSTALL_PREFIX}/lib/tmpfiles.d")
......@@ -41,11 +49,13 @@ else()
set(WITH_SYSTEMD "ON")
message(STATUS "SYSTEMD_UNIT_DIR: ${SYSTEMD_UNIT_DIR}")
message(STATUS "SYSTEMD_GENERATOR_DIR: ${SYSTEMD_GENERATOR_DIR}")
message(STATUS "SYSTEMD_TMPFILES_DIR: ${SYSTEMD_TMPFILES_DIR}")
# Disable sysvinit if it wasn't implicitly requested
if (NOT DEFINED WITH_SYSVINIT)
set(WITH_SYSVINIT "OFF")
endif()
endif()
file(APPEND "${_OptionalPackagesFile}" "\n")
file(APPEND "${_OptionalPackagesFile}" "-- WITH_SYSTEMD=${WITH_SYSTEMD}\n")
file(APPEND "${_OptionalPackagesFile}" "-- WITH_SYSVINIT=${WITH_SYSVINIT}\n")
tarantool (1.7.1.142.g27d7c6c-1) unstable; urgency=medium
* Enable systemd integration, fix sysvinit + systemd interoperability.
-- Roman Tsisyk <roman@tarantool.org> Wed, 03 Aug 2016 17:20:26 +0300
tarantool (1.7.1.140.g6d1a4be-1) unstable; urgency=medium
* Start 'example.lua' instance by default on 'localhost:3301'
* Start 'example.lua' instance by default on 'localhost:3301'.
-- Roman Tsisyk <roman@tarantool.org> Wed, 03 Aug 2016 16:28:58 +0300
......
......@@ -2,7 +2,9 @@ Source: tarantool
Priority: optional
Maintainer: Roman Tsisyk <roman@tarantool.org>
Uploaders: Dmitry E. Oboukhov <unera@debian.org>
Build-Depends: cdbs, debhelper (>= 8),
Build-Depends: cdbs (>= 0.4.100), debhelper (>= 9),
# Enable systemd for Debian Jessie+ and Ubuntu Wily+
dh-systemd (>= 1.22) | sysvinit (<< 2.88dsf-59) | upstart (<< 1.13),
cmake,
libreadline-dev,
libncurses5-dev,
......@@ -17,7 +19,7 @@ Build-Depends: cdbs, debhelper (>= 8),
# liblz4-dev (>= r131),
libssl-dev
Section: database
Standards-Version: 3.9.6
Standards-Version: 3.9.8
Homepage: http://tarantool.org/
VCS-Browser: https://github.com/tarantool/tarantool
VCS-Git: git://github.com/tarantool/tarantool.git
......@@ -55,7 +57,7 @@ Package: tarantool
Architecture: i386 amd64 armhf arm64
Priority: optional
Depends: ${shlibs:Depends}, ${misc:Depends}, binutils, libgomp1, libyaml-0-2,
openssl, tarantool-common (>= 1.7.1.140)
openssl, tarantool-common (>= 1.7.1.142)
Replaces: tarantool-lts
Conflicts: tarantool-lts-common,
tarantool-lts,
......
......@@ -4,6 +4,12 @@
VERSION := $(shell dpkg-parsechangelog|grep ^Version|awk '{print $$2}')
UVERSION := $(shell echo $(VERSION)|sed 's/-[[:digit:]]\+$$//')
ifneq ($(wildcard /usr/bin/dh_systemd_start),)
WITH_SYSTEMD:=ON
else
WITH_SYSTEMD:=OFF
endif
DEB_CMAKE_EXTRA_FLAGS := \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
......@@ -12,9 +18,11 @@ DEB_CMAKE_EXTRA_FLAGS := \
-DENABLE_BUNDLED_LIBYAML=OFF \
-DENABLE_DIST=ON \
-DWITH_SYSVINIT=ON \
-DWITH_SYSTEMD=OFF
-DWITH_SYSTEMD=$(WITH_SYSTEMD)
DEB_DH_INSTALLINIT_ARGS := --name=tarantool
DEB_DH_INSTALLINIT_ARGS := --name=tarantool
DEB_DH_SYSTEMD_ENABLE_ARGS := --name=tarantool tarantool.service
DEB_DH_SYSTEMD_START_ARGS := --no-restart-on-upgrade tarantool.service
# Needed for proper backtraces in fiber.info()
DEB_DH_STRIP_ARGS := -X/usr/bin/tarantool
......@@ -28,7 +36,15 @@ include /usr/share/cdbs/1/class/cmake.mk
debian/%.manpages: debian/%.manpages.in
sed 's/@DEB_BUILDDIR@/$(DEB_BUILDDIR)/g' $< > $@
build-indep: debian/tarantool.manpages debian/tarantool-common.manpages
debian/tarantool-common.install:
ifneq ($(wildcard /usr/bin/dh_systemd_start),)
cp -p debian/tarantool-common.install.systemd.in $@
else
cp -p debian/tarantool-common.install.sysvinit.in $@
endif
build-indep: debian/tarantool.manpages debian/tarantool-common.manpages \
debian/tarantool-common.install
tarball: clean
git describe --long --always > VERSION
......
/etc/default/tarantool
/usr/bin/tarantoolctl
/etc/tarantool/instances.available/example.lua
/etc/logrotate.d/tarantool
/lib/systemd/system/tarantool.service
/lib/systemd/system/tarantool@.service
/lib/systemd/system-generators/tarantool-generator
......@@ -121,6 +121,26 @@ if (WITH_SYSTEMD)
OWNER_READ OWNER_WRITE
GROUP_READ GROUP_READ
WORLD_READ WORLD_READ)
if(WITH_SYSVINIT)
# Install generator and tarantool.service file to allow
# sysvinit alongside systemd (Debian/Ubuntu)
#
configure_file("tarantool-generator.in" "tarantool-generator" @ONLY)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/tarantool-generator
DESTINATION ${SYSTEMD_GENERATOR_DIR}
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_READ WORLD_EXECUTE)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/tarantool.service
DESTINATION ${SYSTEMD_UNIT_DIR}
PERMISSIONS
OWNER_READ OWNER_WRITE
GROUP_READ GROUP_READ
WORLD_READ WORLD_READ)
endif()
configure_file(tarantool.tmpfiles.conf.in tarantool.tmpfiles.conf @ONLY)
install (FILES "${CMAKE_CURRENT_BINARY_DIR}/tarantool.tmpfiles.conf"
DESTINATION "${SYSTEMD_TMPFILES_DIR}"
......
#!/bin/sh
# This systemd generator creates dependency symlinks that make all Tarantool
# instances in @TARANTOOL_ENABLEDDIR@ be started/stopped/reloaded
# when tarantool.service is started/stopped/reloaded.
set -eu
wantdir="$1/tarantool.service.wants"
service="@SYSTEMD_UNIT_DIR@/tarantool@.service"
mkdir -p "$wantdir"
for file in @TARANTOOL_ENABLEDDIR@/*.lua; do
instance=`basename $file .lua`
ln -s "$service" "$wantdir/tarantool@$instance.service"
done
exit 0
# systemd service for managing all Tarantool instances on the system. This
# service is actually a systemd target, but we are using a service since
# targets cannot be reloaded.
[Unit]
Description=Tarantool Database Server
[Service]
Type=oneshot
ExecStart=/bin/true
ExecReload=/bin/true
RemainAfterExit=on
[Install]
WantedBy=multi-user.target
......@@ -20,7 +20,7 @@ AssertPathIsReadWrite=@TARANTOOL_LOGDIR@
# Created by systemd-tmpfiles
AssertPathIsReadWrite=@TARANTOOL_RUNDIR@
# Instance file
ConditionPathExists=@TARANTOOL_AVAILABLEDIR@/%I.lua
ConditionPathExists=@TARANTOOL_INSTANCEDIR@/%I.lua
[Service]
Type=forking
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment