File: CMakeLists.txt

package info (click to toggle)
tarantool 2.6.0-1.2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 85,396 kB
  • sloc: ansic: 513,775; cpp: 69,493; sh: 25,650; python: 19,190; perl: 14,973; makefile: 4,176; yacc: 1,329; sql: 1,074; pascal: 620; ruby: 190; awk: 18; lisp: 7
file content (174 lines) | stat: -rw-r--r-- 5,793 bytes parent folder | download | duplicates (3)
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()