blob: b6b631cdcdb8caf355b7d6070185696ca5b7c6c8 (
plain)
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
|
# InstallRspamdFiles.cmake
# Manages the installation of Rspamd files, configurations, and components
function(InstallRspamdFiles)
# Create necessary directories
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${CONFDIR})")
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${SHAREDIR})")
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${LUALIBDIR})")
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${PLUGINSDIR})")
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${RULESDIR})")
# Install configuration files
set(GLOB_PATTERNS "${CMAKE_SOURCE_DIR}/conf/*.conf;${CMAKE_SOURCE_DIR}/conf/*.inc")
if (INSTALL_EXAMPLES)
list(APPEND GLOB_PATTERNS "${CMAKE_SOURCE_DIR}/conf/*.lua.example")
list(APPEND GLOB_PATTERNS "${CMAKE_SOURCE_DIR}/conf/*.conf.example")
endif ()
file(GLOB_RECURSE CONF_FILES RELATIVE "${CMAKE_SOURCE_DIR}/conf" CONFIGURE_DEPENDS
${GLOB_PATTERNS})
foreach (CONF_FILE ${CONF_FILES})
get_filename_component(_rp ${CONF_FILE} PATH)
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${CONFDIR}/${_rp})")
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/conf/${CONF_FILE}"
DESTINATION ${CONFDIR}/${_rp})
endforeach ()
# Install Lua plugins
file(GLOB LUA_PLUGINS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/src/plugins/lua" CONFIGURE_DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/src/plugins/lua/*.lua")
foreach (LUA_PLUGIN ${LUA_PLUGINS})
get_filename_component(_rp ${LUA_PLUGIN} PATH)
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${PLUGINSDIR}/${_rp})")
install(FILES "src/plugins/lua/${LUA_PLUGIN}" DESTINATION ${PLUGINSDIR}/${_rp})
endforeach ()
# Install TLD list
install(FILES "contrib/publicsuffix/effective_tld_names.dat" DESTINATION
"${SHAREDIR}")
# Install language data
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${SHAREDIR}/languages)")
file(GLOB LANGUAGES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/languages-data/*.json")
foreach (_LANG ${LANGUAGES})
install(FILES "${_LANG}" DESTINATION ${SHAREDIR}/languages)
endforeach ()
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/contrib/languages-data/stop_words"
DESTINATION ${SHAREDIR}/languages)
# Install Lua rules
file(GLOB_RECURSE LUA_CONFIGS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/rules" CONFIGURE_DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/rules/*.lua")
foreach (LUA_CONF ${LUA_CONFIGS})
get_filename_component(_rp ${LUA_CONF} PATH)
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${RULESDIR}/${_rp})")
install(FILES "rules/${LUA_CONF}" DESTINATION ${RULESDIR}/${_rp})
endforeach ()
# Install Lua libraries
file(GLOB_RECURSE LUA_LIBS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/lualib" CONFIGURE_DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/lualib/*.lua")
foreach (LUA_LIB ${LUA_LIBS})
get_filename_component(_rp ${LUA_LIB} PATH)
install(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${LUALIBDIR}/${_rp})")
install(FILES "lualib/${LUA_LIB}" DESTINATION ${LUALIBDIR}/${_rp})
endforeach ()
# Install third-party Lua libraries
install(FILES "contrib/lua-fun/fun.lua" DESTINATION ${LUALIBDIR})
install(FILES "contrib/lua-argparse/argparse.lua" DESTINATION ${LUALIBDIR})
install(FILES "contrib/lua-tableshape/tableshape.lua" DESTINATION ${LUALIBDIR})
install(FILES "contrib/lua-lupa/lupa.lua" DESTINATION ${LUALIBDIR})
install(FILES "contrib/lua-lpeg/lpegre.lua" DESTINATION ${LUALIBDIR})
# Install systemd unit if on Linux and requested
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND WANT_SYSTEMD_UNITS)
install(FILES "rspamd.service" DESTINATION ${SYSTEMDDIR})
endif ()
# Install man pages
install(FILES "doc/rspamd.8" DESTINATION ${MANDIR}/man8)
install(FILES "doc/rspamc.1" DESTINATION ${MANDIR}/man1)
install(FILES "doc/rspamadm.1" DESTINATION ${MANDIR}/man1)
# Install utilities
install(PROGRAMS "utils/rspamd_stats.pl" RENAME rspamd_stats DESTINATION bin)
# Install web UI if requested
if (INSTALL_WEBUI)
install(DIRECTORY "interface/" DESTINATION ${WWWDIR} PATTERN ".git" EXCLUDE)
endif ()
# Log installation paths
message(STATUS "Rspamd will be installed in the following directories:")
message(STATUS " - Binaries: ${CMAKE_INSTALL_PREFIX}/bin")
message(STATUS " - Configuration: ${CONFDIR}")
message(STATUS " - Rules: ${RULESDIR}")
message(STATUS " - Lua libraries: ${LUALIBDIR}")
message(STATUS " - Plugins: ${PLUGINSDIR}")
message(STATUS " - Shared data: ${SHAREDIR}")
if (INSTALL_WEBUI)
message(STATUS " - Web UI: ${WWWDIR}")
endif ()
endfunction()
|