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
|
# 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 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()
|