debian-service
This commit is contained in:
@@ -73,7 +73,8 @@ deploy_target(<target> [DEPLOY_DIR <dir>] [DESTINATION <dir>]
|
||||
[RESOURCES <dir|file> [<dir|file> ...] ]
|
||||
[PLUGINS <dir|file> [<dir|file> ...] ]
|
||||
[FILES <dir|file> [<dir|file> ...] ]
|
||||
[OPTIONS <flag> ...] [VERBOSE] [ZIP_NO_DMG] [DEB_USR_DIR])
|
||||
[OPTIONS <flag> ...] [VERBOSE] [ZIP_NO_DMG]
|
||||
[DEB_USR_DIR] [DEB_ADD_SERVICE])
|
||||
|
||||
Create make target "deploy_<target>", depends on target "deploy".
|
||||
On this target create release package, containing all dependencies:
|
||||
@@ -119,6 +120,13 @@ depends on target platform
|
||||
DEPLOY_ADD_LIBPATH variable used as additional
|
||||
library search path
|
||||
|
||||
If DEB_ADD_SERVICE then <T>-service.deb package will be created.
|
||||
This package use contents of CMAKE_CURRENT_SOURCE_DIR/debian-service directory:
|
||||
* CMAKE_CURRENT_SOURCE_DIR/debian-service/DEBIAN/
|
||||
* CMAKE_CURRENT_SOURCE_DIR/debian-service/*.service
|
||||
.service file placed in /opt/COMPANY/target, you should copy it to system with script
|
||||
You can use "postinst,postrm,preinst,prerm,config" files to configure service
|
||||
|
||||
]]
|
||||
|
||||
|
||||
@@ -550,8 +558,9 @@ macro(deploy_target _T)
|
||||
set(_OPTIONS)
|
||||
set(_ZIP_DMG 1)
|
||||
set(_DEB_OPT 1)
|
||||
set(_DEB_SERVICE 0)
|
||||
set(_cur_arg)
|
||||
set(__args "DESTINATION;DEPLOY_DIR;RESOURCES;PLUGINS;FILES;OPTIONS;VERBOSE;ZIP_NO_DMG;DEB_USR_DIR")
|
||||
set(__args "DESTINATION;DEPLOY_DIR;RESOURCES;PLUGINS;FILES;OPTIONS;VERBOSE;ZIP_NO_DMG;DEB_USR_DIR;DEB_ADD_SERVICE")
|
||||
foreach(_i ${ARGN})
|
||||
if (_i IN_LIST __args)
|
||||
set(_cur_arg "${_i}")
|
||||
@@ -562,6 +571,8 @@ macro(deploy_target _T)
|
||||
set(_ZIP_DMG 0)
|
||||
elseif("${_cur_arg}" STREQUAL "DEB_USR_DIR")
|
||||
set(_DEB_OPT 0)
|
||||
elseif("${_cur_arg}" STREQUAL "DEB_ADD_SERVICE")
|
||||
set(_DEB_SERVICE 1)
|
||||
endif()
|
||||
elseif ("${_cur_arg}" STREQUAL "DESTINATION")
|
||||
set(_cur_arg)
|
||||
@@ -596,7 +607,7 @@ macro(deploy_target _T)
|
||||
#set(_add_search_path "${_add_search_path}")
|
||||
#message("app depend ${_T} libpath ${_add_search_path}")
|
||||
set(_CMD_)
|
||||
set(_has_deploy 0)
|
||||
set(_deployed)
|
||||
if ("x${CMAKE_SYSTEM_NAME}" STREQUAL "xLinux")
|
||||
set(_os_id "")
|
||||
set(_os_ver "")
|
||||
@@ -689,6 +700,17 @@ macro(deploy_target _T)
|
||||
set(_CMD_ ${_CMD_} COMMAND mkdir ${_VERB} -p "${_AGD}/usr/bin")
|
||||
set(_CMD_ ${_CMD_} COMMAND ln -srf ${_VERB} "${_bin_path}/${_T}" "${_AGD}/usr/bin/${_T}")
|
||||
endif()
|
||||
|
||||
file(GLOB _files "${CMAKE_CURRENT_SOURCE_DIR}/debian/DEBIAN/*")
|
||||
foreach (_f ${_files})
|
||||
set(_CMD_ ${_CMD_} COMMAND cp ${_VERB} -f "${_f}" "${_AGD}/DEBIAN/")
|
||||
endforeach()
|
||||
|
||||
file(GLOB _files "${_AGD}/DEBIAN/p*inst" "${_AGD}/DEBIAN/p*rm" "${_AGD}/DEBIAN/config")
|
||||
foreach (_f ${_files})
|
||||
set(_CMD_ ${_CMD_} COMMAND chmod 0755 ${_VERB} "${_f}")
|
||||
endforeach()
|
||||
|
||||
if (NOT CMAKE_LDD)
|
||||
find_program(CMAKE_LDD ldd)
|
||||
endif()
|
||||
@@ -704,45 +726,99 @@ macro(deploy_target _T)
|
||||
set(_deb_name "${_TV}_${_TARGET_OS}_${_DEB_ARCH}.deb")
|
||||
#message("VER = \"${_DEBVERSION}\"")
|
||||
#message("DEB = \"${_deb_name}\"")
|
||||
list(APPEND _CMD_ COMMAND echo "Package: ${_DEBNAME}" ${_C_echof})
|
||||
list(APPEND _CMD_ COMMAND echo "Version: ${_DEBVERSION}" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Architecture: ${_DEB_ARCH}" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Maintainer: ${${_T}_COMPANY} <>" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND ${PIP_DEPLOY_TOOL} ${_OPTIONS} --prefix "Depends: " --dependencies ${_dt_opts} -a "${_DEP_LIBS_CS}" -o "${_lib_path}" ${_DEPLOY_DIR}/${_T} ${_ADD_DEPS} ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Conflicts:" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Replaces:" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Section: misc" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Priority: optional" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Description: ${${_T}_INFO}" ${_C_echo})
|
||||
|
||||
list(APPEND _CMD_ COMMAND echo "[Desktop Entry]" ${_D_echof})
|
||||
list(APPEND _CMD_ COMMAND echo "Encoding=UTF-8" ${_D_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Type=Application" ${_D_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Name=${${_T}_LABEL}" ${_D_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "GenericName=${${_T}_LABEL}" ${_D_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Comment=${${_T}_INFO}" ${_D_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Exec=${_app_bin_path}/${_T}" ${_D_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Icon=${_app_ico_path}/${_ICON_NAME}" ${_D_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Terminal=false" ${_D_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "StartupNotify=true" ${_D_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Categories=Utility;" ${_D_echo})
|
||||
|
||||
add_custom_target(deploy_${_T}
|
||||
# gather deb dir
|
||||
COMMAND rm -rf ${_VERB} "${_AGD}"
|
||||
COMMAND mkdir ${_VERB} -p "${_AGD}/DEBIAN"
|
||||
${_CMD_}
|
||||
|
||||
COMMAND echo "Package: ${_DEBNAME}" ${_C_echof}
|
||||
COMMAND echo "Version: ${_DEBVERSION}" ${_C_echo}
|
||||
COMMAND echo "Architecture: ${_DEB_ARCH}" ${_C_echo}
|
||||
COMMAND echo "Maintainer: ${${_T}_COMPANY} <>" ${_C_echo}
|
||||
COMMAND ${PIP_DEPLOY_TOOL} ${_OPTIONS} --prefix "Depends: " --dependencies ${_dt_opts} -a "${_DEP_LIBS_CS}" -o "${_lib_path}" ${_DEPLOY_DIR}/${_T} ${_ADD_DEPS} ${_C_echo}
|
||||
COMMAND echo "Conflicts:" ${_C_echo}
|
||||
COMMAND echo "Replaces:" ${_C_echo}
|
||||
COMMAND echo "Section: misc" ${_C_echo}
|
||||
COMMAND echo "Priority: optional" ${_C_echo}
|
||||
COMMAND echo "Description: ${${_T}_INFO}" ${_C_echo}
|
||||
|
||||
COMMAND echo "[Desktop Entry]" ${_D_echof}
|
||||
COMMAND echo "Encoding=UTF-8" ${_D_echo}
|
||||
COMMAND echo "Type=Application" ${_D_echo}
|
||||
COMMAND echo "Name=${${_T}_LABEL}" ${_D_echo}
|
||||
COMMAND echo "GenericName=${${_T}_LABEL}" ${_D_echo}
|
||||
COMMAND echo "Comment=${${_T}_INFO}" ${_D_echo}
|
||||
COMMAND echo "Exec=${_app_bin_path}/${_T}" ${_D_echo}
|
||||
COMMAND echo "Icon=${_app_ico_path}/${_ICON_NAME}" ${_D_echo}
|
||||
COMMAND echo "Terminal=false" ${_D_echo}
|
||||
COMMAND echo "StartupNotify=true" ${_D_echo}
|
||||
#COMMAND echo "X-KDE-StartupNotify=true" ${_D_echo}
|
||||
COMMAND echo "Categories=Utility;" ${_D_echo}
|
||||
|
||||
#COMMAND -l "${CMAKE_LDD}" -P xcb -q ${Qt5_ROOT} -s "\"${CMAKE_PREFIX_PATH}/lib;${_add_search_path}\"" -o ${_AGD}/usr/lib -p ${_AGD}/usr/ ${_AGD}/Contents/MacOS/${_T}
|
||||
# generate deb
|
||||
COMMAND cd ${_AGD} "&&" md5deep -rl usr opt ">" DEBIAN/md5sums
|
||||
COMMAND cd ${_AGD} "&&" md5deep -rl opt usr ">" DEBIAN/md5sums
|
||||
COMMAND mkdir ${_VERB} -p ${_DESTINATION}
|
||||
COMMAND dpkg-deb -Z gzip -b ${_AGD} ${_DESTINATION}/${_deb_name}
|
||||
VERBATIM
|
||||
COMMENT "Generating ${_deb_name}"
|
||||
)
|
||||
set(_has_deploy 1)
|
||||
set(_deployed "deploy_${_T}")
|
||||
|
||||
if (_DEB_SERVICE)
|
||||
set(_CMD_)
|
||||
set(_DEB "${_TV}-service_deb_${_DEB_ARCH}")
|
||||
set(_AGD "${_DEPLOY_DIR}/${_DEB}")
|
||||
set(_C_echof ">" "${_AGD}/DEBIAN/control")
|
||||
set(_C_echo ">>" "${_AGD}/DEBIAN/control")
|
||||
set(_opt_path "${_AGD}/opt/${${_T}_COMPANY}/${_T}")
|
||||
set(_CMD_ ${_CMD_} COMMAND mkdir ${_VERB} -p "${_opt_path}")
|
||||
|
||||
file(GLOB _files "${CMAKE_CURRENT_SOURCE_DIR}/debian-service/*.service")
|
||||
foreach (_f ${_files})
|
||||
set(_CMD_ ${_CMD_} COMMAND cp ${_VERB} -f "${_f}" "${_opt_path}/")
|
||||
endforeach()
|
||||
|
||||
file(GLOB _files "${CMAKE_CURRENT_SOURCE_DIR}/debian-service/DEBIAN/*")
|
||||
foreach (_f ${_files})
|
||||
set(_CMD_ ${_CMD_} COMMAND cp ${_VERB} -f "${_f}" "${_AGD}/DEBIAN/")
|
||||
endforeach()
|
||||
|
||||
file(GLOB _files "${_AGD}/DEBIAN/p*inst" "${_AGD}/DEBIAN/p*rm" "${_AGD}/DEBIAN/config")
|
||||
foreach (_f ${_files})
|
||||
set(_CMD_ ${_CMD_} COMMAND chmod 0755 ${_VERB} "${_f}")
|
||||
endforeach()
|
||||
|
||||
set(_deb_name "${_TV}-service_${_TARGET_OS}_${_DEB_ARCH}.deb")
|
||||
#message("VER = \"${_DEBVERSION}\"")
|
||||
#message("DEB = \"${_deb_name}\"")
|
||||
list(APPEND _CMD_ COMMAND echo "Package: ${_DEBNAME}-service" ${_C_echof})
|
||||
list(APPEND _CMD_ COMMAND echo "Version: ${_DEBVERSION}" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Architecture: ${_DEB_ARCH}" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Maintainer: ${${_T}_COMPANY} <>" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Depends: ${_DEBNAME}" ${_C_echo}) #-${_DEBVERSION}"
|
||||
list(APPEND _CMD_ COMMAND echo "Conflicts:" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Replaces:" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Section: misc" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Priority: optional" ${_C_echo})
|
||||
list(APPEND _CMD_ COMMAND echo "Description: ${${_T}_LABEL} service" ${_C_echo})
|
||||
|
||||
add_custom_target(deploy_${_T}-service
|
||||
# gather deb dir
|
||||
COMMAND rm -rf ${_VERB} "${_AGD}"
|
||||
COMMAND mkdir ${_VERB} -p "${_AGD}/DEBIAN"
|
||||
${_CMD_}
|
||||
|
||||
# generate deb
|
||||
#COMMAND cd ${_AGD} "&&" md5deep -rl * ">" DEBIAN/md5sums
|
||||
COMMAND mkdir ${_VERB} -p ${_DESTINATION}
|
||||
COMMAND dpkg-deb -Z gzip -b ${_AGD} ${_DESTINATION}/${_deb_name}
|
||||
VERBATIM
|
||||
COMMENT "Generating ${_deb_name}"
|
||||
)
|
||||
list(APPEND _deployed "deploy_${_T}-service")
|
||||
endif()
|
||||
|
||||
elseif(WIN32)
|
||||
if (NOT CMAKE_OBJDUMP)
|
||||
find_program(CMAKE_OBJDUMP objdump)
|
||||
@@ -769,7 +845,7 @@ macro(deploy_target _T)
|
||||
COMMAND cd "\"${_DEPLOY_DIR}\"" "&&" zip -q -r "\"${_DESTINATION}/${_zip_name}\"" "\"${_TV}_win_${MY_ARCH}\""
|
||||
COMMENT "Generating ${_zip_name}"
|
||||
)
|
||||
set(_has_deploy 1)
|
||||
set(_deployed "deploy_${_T}")
|
||||
elseif (APPLE)
|
||||
set(MACOSX_BUNDLE_GUI_IDENTIFIER "${${_T}_FULLNAME}")
|
||||
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${${_T}_VERSION}")
|
||||
@@ -834,7 +910,7 @@ macro(deploy_target _T)
|
||||
${_cmd_gen_dmg}
|
||||
COMMENT "${_comment}"
|
||||
)
|
||||
set(_has_deploy 1)
|
||||
set(_deployed "deploy_${_T}")
|
||||
elseif (DEFINED ANDROID_PLATFORM)
|
||||
set(_res_files)
|
||||
set(_res_files "${_res_files}\n <qresource prefix=\"/\">")
|
||||
@@ -972,9 +1048,9 @@ macro(deploy_target _T)
|
||||
${_CMD_}
|
||||
COMMENT "Generating ${_base_name}.apk/aab"
|
||||
)
|
||||
set(_has_deploy 1)
|
||||
endif()
|
||||
if (_has_deploy)
|
||||
add_dependencies(deploy deploy_${_T})
|
||||
set(_deployed "deploy_${_T}")
|
||||
endif()
|
||||
foreach (_d ${_deployed})
|
||||
add_dependencies(deploy ${_d})
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
Reference in New Issue
Block a user