mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-12 09:22:05 +00:00
32 lines
2.5 KiB
Plaintext
32 lines
2.5 KiB
Plaintext
# В этом файле описаны действия для добавления 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)
|