ClickHouse/tools/init.d/CMakeLists.init

32 lines
2.5 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 initname daemonname)
add_custom_target(${initname}.target ALL
COMMAND sed -e 's,[@]DAEMON[@],${daemonname},g' < ${PROJECT_SOURCE_DIR}/tools/init.d/template > ${CMAKE_CURRENT_BINARY_DIR}/${initname}-metrika-yandex
COMMAND sed -i 's,[@]CRONFILE[@],${initname}-metrika-yandex,g' ${CMAKE_CURRENT_BINARY_DIR}/${initname}-metrika-yandex
COMMAND chmod a+x ${CMAKE_CURRENT_BINARY_DIR}/${initname}-metrika-yandex
COMMENT "Building ${initname}"
)
INSTALL(
FILES ${CMAKE_CURRENT_BINARY_DIR}/${initname}-metrika-yandex
DESTINATION /etc/init.d
PERMISSIONS OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
)
endmacro (CREATE_INIT_SCRIPT)