1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
# config file for tarantoolctl
if (TARGET_OS_FREEBSD)
set(SYSCONFIG_DEFAULT "tarantool/default")
elseif (NOT IS_DIRECTORY "${CMAKE_INSTALL_SYSCONFDIR}/sysconfig")
# Debian/Ubuntu/etc.
set(SYSCONFIG_DEFAULT "default")
else()
# RedHat/Fedora/etc.
set(SYSCONFIG_DEFAULT "sysconfig")
endif()
configure_file(tarantoolctl.in tarantoolctl @ONLY)
option(ENABLE_DIST "Enable install of init scripts" OFF)
if (NOT ENABLE_DIST)
return ()
endif()
include(systemd)
#
# tarantoolctl
#
# Default path to data in default/tarantool
if (TARGET_OS_FREEBSD)
set(TARANTOOL_DATADIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/db/tarantool")
else()
set(TARANTOOL_DATADIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/tarantool")
endif()
message (STATUS "tarantoolctl datadir: ${TARANTOOL_DATADIR}")
set(TARANTOOL_LOGDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/tarantool")
message (STATUS "tarantoolctl logdir: ${TARANTOOL_LOGDIR}")
set(TARANTOOL_RUNDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run/tarantool")
message (STATUS "tarantoolctl rundir: ${TARANTOOL_RUNDIR}")
set(TARANTOOL_USER "tarantool")
set(TARANTOOL_LANGUAGE "lua")
set(SYSCONFIG_AVAILABLEDIR "tarantool/instances.available")
set(SYSCONFIG_ENABLEDDIR "tarantool/instances.enabled")
set(TARANTOOL_AVAILABLEDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${SYSCONFIG_AVAILABLEDIR}")
set(TARANTOOL_ENABLEDDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}/${SYSCONFIG_ENABLEDDIR}")
if(NOT WITH_SYSVINIT)
# Don't use instances.enabled on systemd distros
set(TARANTOOL_INSTANCEDIR "${TARANTOOL_AVAILABLEDIR}")
else()
set(TARANTOOL_INSTANCEDIR "${TARANTOOL_ENABLEDDIR}")
endif()
configure_file(default/tarantool.in default/tarantool @ONLY)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/default/tarantool DESTINATION
${CMAKE_INSTALL_SYSCONFDIR}/${SYSCONFIG_DEFAULT}/
PERMISSIONS
OWNER_READ OWNER_WRITE
GROUP_READ
WORLD_READ)
# tarantoolctl itself
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/tarantoolctl DESTINATION ${CMAKE_INSTALL_BINDIR}
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
# directories in /etc/ for tarantoolctl
install(DIRECTORY DESTINATION
${CMAKE_INSTALL_SYSCONFDIR}/${SYSCONFIG_AVAILABLEDIR}
)
if (WITH_SYSVINIT)
install(DIRECTORY DESTINATION
${CMAKE_INSTALL_SYSCONFDIR}/${SYSCONFIG_ENABLEDDIR}
)
endif()
# an example instance script for tarantoolctl
install (FILES example.lua DESTINATION
${CMAKE_INSTALL_SYSCONFDIR}/${SYSCONFIG_AVAILABLEDIR}
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_READ
GROUP_READ WORLD_READ
)
# directories for data, logs and pid files
# Sic: chmod and chown are performed by rpm/deb
install(DIRECTORY DESTINATION ${TARANTOOL_DATADIR})
install(DIRECTORY DESTINATION ${TARANTOOL_LOGDIR})
# /var/run/tarantool is only needed with sysvinit
# systemd creates this directory automatically using systemd-tmpfiles
if (WITH_SYSVINIT)
install(DIRECTORY DESTINATION ${TARANTOOL_RUNDIR})
endif()
if (NOT TARGET_OS_FREEBSD)
set (WITH_LOGROTATE_DEFAULT ON)
endif()
option(WITH_LOGROTATE "Enable logrotate configuration" ${WITH_LOGROTATE_DEFAULT})
file(APPEND "${_OptionalPackagesFile}" "-- WITH_LOGROTATE=${WITH_LOGROTATE}\n")
if (WITH_LOGROTATE)
# logrotate files
configure_file(tarantool.logrotate.in tarantool.logrotate @ONLY)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/tarantool.logrotate
DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/logrotate.d/
RENAME "tarantool"
PERMISSIONS
OWNER_READ OWNER_WRITE
GROUP_READ
WORLD_READ)
endif()
# man page for tarantoolctl
pod2man (
tarantoolctl.pod "tarantoolctl" 1
"Tarantool instances control"
)
#
# Init scripts
#
if (WITH_SYSTEMD)
message (STATUS "Using scripts for systemd")
# NOTE: always install tarantool.init to ${CMAKE_INSTALL_PREFIX}/lib
# instead of ${CMAKE_INSTALL_LIBDIR} because LIBDIR depends on the target
# architecture, but tarantool-common is noarch package.
set(SYSV_INITD_DIR ${CMAKE_INSTALL_PREFIX}/lib/tarantool)
configure_file("tarantool@.service.in" "tarantool@.service" @ONLY)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/tarantool@.service
DESTINATION ${SYSTEMD_UNIT_DIR}
PERMISSIONS
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}"
RENAME "tarantool.conf"
PERMISSIONS
OWNER_READ OWNER_WRITE
GROUP_READ GROUP_READ
WORLD_READ WORLD_READ)
endif()
if (WITH_SYSVINIT)
message (STATUS "Using scripts for sysvinit")
install (FILES tarantool.init DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/init.d/
RENAME tarantool
PERMISSIONS
OWNER_READ OWNER_WRITE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
endif()
|