ClickHouse/tools/init.d/CMakeLists.init
2016-06-07 11:23:15 +03:00

49 lines
2.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# В этом файле описаны действия для добавления init.d скрипта. Пока в разработке.
# Данный файл нужно включать в CMakeLists.txt в каталоге каждого конкретного демона.
# Пример использования:
# INCLUDE( ${PROJECT_SOURCE_DIR}/tools/init.d/CMakeLists.init )
# CREATE_INIT_SCRIPT(divider Divider)
# Будет создан init.d скрипт с названием divider для демона (бинарника) Divider
# NB Тут _не_ используется add_custom_command. Это делается только потому, что
# если её использовать, то у cmake сносит крышу, и она начинает путать цели и файлы. А
# именно, начинает ругаться, что нет файла divider.cpp и нельзя собрать divider.cpp.o.
# Опытным путём было установлено, что эта ошибка возникает из-за совпадения названия (без учёта расширения)
# 'divider.cpp' и добавляемой custom command 'divider' (тот который init.d скрипт). Было найдено два пути решения:
# - писать add_executable (Divider ${CMAKE_CURRENT_SOURCE_DIR}/divider.cpp ${SRCS}), т.е. явно указать,
# где искать файлы для сборки Divider
# - переименовать init.d-скрипт
# Оба варианта накладывают странные ограничения, поэтому, учитывая, что само создание init.d файла весьма
# недорого, было принято решение не использовать add_custom_command
macro (CREATE_INIT_SCRIPT daemonname)
set(filename ${daemonname}-metrika-yandex)
# опционально принимаем filename вторым аргументом
set(extra_args ${ARGN})
list(LENGTH extra_args num_extra_args)
if (${num_extra_args} GREATER 0)
list(GET extra_args 0 optional_arg)
set(filename ${optional_arg})
endif()
set(tmp_file_name ${filename}.init)
add_custom_target(${daemonname}-init.target ALL
COMMAND sed -e 's,[@]DAEMON[@],${daemonname},g' < ${PROJECT_SOURCE_DIR}/tools/init.d/template > ${CMAKE_CURRENT_BINARY_DIR}/${tmp_file_name}
COMMAND sed -i 's,[@]CRONFILE[@],${filename},g' ${CMAKE_CURRENT_BINARY_DIR}/${tmp_file_name}
COMMAND chmod a+x ${CMAKE_CURRENT_BINARY_DIR}/${tmp_file_name}
COMMENT "Building ${daemonname}"
)
INSTALL(
FILES ${CMAKE_CURRENT_BINARY_DIR}/${tmp_file_name}
DESTINATION /etc/init.d
RENAME ${filename}
PERMISSIONS OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
COMPONENT ${daemonname}
)
add_dependencies(${daemonname} ${daemonname}-init.target)
endmacro (CREATE_INIT_SCRIPT)