CommonDeb.cmake 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. # only cmake since 3.17 supports packaging of debuginfo
  2. cmake_minimum_required ( VERSION 3.17 )
  3. set ( CMAKE_INSTALL_FULL_RUNSTATEDIR "/run")
  4. set ( CMAKE_INSTALL_RUNSTATEDIR "run")
  5. if (NOT installed)
  6. # start with short route - set all paths
  7. set ( CPACK_PACKAGING_INSTALL_PREFIX "/" )
  8. set ( CMAKE_INSTALL_PREFIX "${CPACK_PACKAGING_INSTALL_PREFIX}" CACHE PATH "prefix from distr build" FORCE )
  9. include ( GNUInstallDirs )
  10. SET ( FULL_SHARE_DIR "${CMAKE_INSTALL_FULL_DATADIR}/manticore" )
  11. SET ( LOCALDATADIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/manticore" ) # will be used also in the app
  12. SET ( CMAKE_INSTALL_FULL_LOCALLIBDIR "${CMAKE_INSTALL_PREFIX}usr/local/lib" )
  13. set ( installed ON )
  14. diag ( CPACK_PACKAGING_INSTALL_PREFIX CMAKE_INSTALL_PREFIX )
  15. endif ()
  16. if (only_set_paths)
  17. return ()
  18. endif ()
  19. # set or append DEBLINE to deb-spec style DEBLIST
  20. function ( seta DEBLIST DEBLINE )
  21. if (${DEBLIST})
  22. set ( ${DEBLIST} "${${DEBLIST}}, ${DEBLINE}" PARENT_SCOPE )
  23. else ()
  24. set ( ${DEBLIST} "${DEBLINE}" PARENT_SCOPE )
  25. endif ()
  26. endfunction ()
  27. # Common debian-specific build variables
  28. set ( CPACK_GENERATOR DEB )
  29. # Parse version dependencies from file and assign it to vars
  30. include( builds/VersionDeps )
  31. set ( DEP_TZDATA_VERSION "${TZDATA_VERNUM}-${TZDATA_VERDATE}-${TZDATA_VERHASH}" )
  32. set ( DEP_BUDDY_VERSION "${BUDDY_VERNUM}+${BUDDY_VERDATE}-${BUDDY_VERHASH}" )
  33. set ( DEP_BACKUP_VERSION "${BACKUP_VERNUM}-${BACKUP_VERDATE}-${BACKUP_VERHASH}" )
  34. set ( CPACK_COMPONENTS_GROUPING IGNORE )
  35. set ( CPACK_DEBIAN_FILE_NAME DEB-DEFAULT )
  36. set ( CPACK_DEBIAN_DEBUGINFO_PACKAGE ON )
  37. # dependencies will be auto calculated. FIXME! M.b. point them directly?
  38. #set ( CPACK_DEBIAN_BIN_PACKAGE_DEPENDS "libc6 (>= 2.15), libexpat (>= 2.0.1), libgcc1 (>= 1:3.0), libstdc++6 (>= 5.2), zlib1g (>= 1:1.1.4), lsb-base (>= 4.1+Debian11ubuntu7)" )
  39. if (NOT disable_shlideps)
  40. set ( CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON )
  41. endif ()
  42. set ( breaks "manticore (<= 4.2.1-220503-fffffffff)" )
  43. set ( CPACK_DEBIAN_PACKAGE_SECTION "misc" )
  44. set ( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" )
  45. set ( dirserver "${MANTICORE_BINARY_DIR}/config/server" )
  46. set ( dircommon "${MANTICORE_BINARY_DIR}/config/common" )
  47. set ( dircore "${MANTICORE_BINARY_DIR}/config/core" )
  48. set ( dirtools "${MANTICORE_BINARY_DIR}/config/tools" )
  49. set ( CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION ON )
  50. set ( CPACK_DEBIAN_SEARCHD_PACKAGE_NAME "manticore-server-core" )
  51. set ( CPACK_DEBIAN_SEARCHD_PACKAGE_REPLACES "manticore-bin, sphinxsearch, ${breaks}" )
  52. set ( CPACK_DEBIAN_SEARCHD_PACKAGE_CONTROL_EXTRA "${dircore}/postinst;${dircore}/postrm" )
  53. seta ( CPACK_DEBIAN_SEARCHD_PACKAGE_DEPENDS "manticore-common (= ${CPACK_PACKAGE_VERSION}), manticore-tzdata (>= ${DEP_TZDATA_VERSION}), manticore-tzdata (<< ${TZDATA_VERNUM_MAX})" )
  54. seta ( CPACK_DEBIAN_SEARCHD_PACKAGE_SUGGESTS "manticore-server (= ${CPACK_PACKAGE_VERSION})" )
  55. #seta ( CPACK_DEBIAN_SEARCHD_PACKAGE_SUGGESTS "manticore-galera" )
  56. set ( CPACK_DEBIAN_SEARCHD_PACKAGE_BREAKS "${breaks}" )
  57. set ( CPACK_DEBIAN_SERVER_PACKAGE_NAME "manticore-server" )
  58. seta ( CPACK_DEBIAN_SERVER_PACKAGE_DEPENDS "manticore-server-core (= ${CPACK_PACKAGE_VERSION})" )
  59. set ( CPACK_DEBIAN_SERVER_PACKAGE_CONTROL_EXTRA "${dirserver}/conffiles;${dirserver}/postinst;${dirserver}/prerm;${dirserver}/postrm" )
  60. set ( CPACK_DEBIAN_SERVER_PACKAGE_DEBUG OFF )
  61. set ( CPACK_DEBIAN_SERVER_PACKAGE_REPLACES "${breaks}" )
  62. set ( CPACK_DEBIAN_SERVER_PACKAGE_BREAKS "${breaks}" )
  63. set ( CPACK_DEBIAN_TOOLS_PACKAGE_NAME "manticore-tools" )
  64. seta ( CPACK_DEBIAN_TOOLS_PACKAGE_DEPENDS "manticore-common (= ${CPACK_PACKAGE_VERSION})" )
  65. set ( CPACK_DEBIAN_TOOLS_PACKAGE_RECOMMENDS "manticore-backup (>= ${DEP_BACKUP_VERSION} ), manticore-backup(<< ${BACKUP_VERNUM_MAX} )" )
  66. set ( CPACK_DEBIAN_TOOLS_PACKAGE_CONFLICTS "sphinxsearch, manticore (<< 3.5.0-200722-1d34c491)" )
  67. set ( CPACK_DEBIAN_TOOLS_PACKAGE_CONTROL_EXTRA "${dirtools}/conffiles" )
  68. set ( CPACK_DEBIAN_TOOLS_PACKAGE_REPLACES "${breaks}" )
  69. set ( CPACK_DEBIAN_TOOLS_PACKAGE_BREAKS "${breaks}" )
  70. set ( CPACK_DEBIAN_DEVEL_PACKAGE_NAME "manticore-dev" )
  71. set ( CPACK_DEBIAN_DEVEL_PACKAGE_ARCHITECTURE all )
  72. set ( CPACK_DEBIAN_ICUDATA_PACKAGE_NAME "manticore-icudata-65l" )
  73. set ( CPACK_DEBIAN_ICUDATA_FILE_NAME "manticore-icudata-65l.deb" )
  74. set ( CPACK_DEBIAN_ICUDATA_PACKAGE_ARCHITECTURE all )
  75. set ( CPACK_DEBIAN_ICUDATA_PACKAGE_REPLACES "${breaks}" )
  76. set ( CPACK_DEBIAN_ICUDATA_PACKAGE_BREAKS "${breaks}" )
  77. set ( CPACK_DEBIAN_COMMON_PACKAGE_NAME "manticore-common" )
  78. set ( CPACK_DEBIAN_COMMON_PACKAGE_CONTROL_EXTRA "${dircommon}/conffiles;${dircommon}/postinst;${dircommon}/postrm" )
  79. set ( CPACK_DEBIAN_COMMON_PACKAGE_SUGGESTS "manticore-icudata-65l" )
  80. set ( CPACK_DEBIAN_COMMON_PACKAGE_REPLACES "${breaks}" )
  81. set ( CPACK_DEBIAN_COMMON_PACKAGE_BREAKS "${breaks}" )
  82. set ( CPACK_DEBIAN_COMMON_PACKAGE_ARCHITECTURE all )
  83. set ( CPACK_DEBIAN_META_PACKAGE_NAME "manticore" )
  84. seta ( CPACK_DEBIAN_META_PACKAGE_DEPENDS "manticore-server (= ${CPACK_PACKAGE_VERSION}), manticore-tools (= ${CPACK_PACKAGE_VERSION}), manticore-dev (= ${CPACK_PACKAGE_VERSION}), manticore-icudata-65l, manticore-buddy (>= ${DEP_BUDDY_VERSION}), manticore-buddy (<< ${BUDDY_VERNUM_MAX})" )
  85. #set ( CPACK_DEBIAN_META_PACKAGE_ARCHITECTURE all )
  86. set ( CPACK_DEBIAN_META_PACKAGE_DEBUG OFF )
  87. set ( CPACK_DEBIAN_META_PACKAGE_SECTION metapackages )
  88. set ( CPACK_DEBIAN_CONVERTER_PACKAGE_NAME "manticore-converter" )
  89. # pre-configuration. We're not yet configuring with final paths, but just construct incoming file
  90. # at the beginning assume we have NOT yet set CMAKE_INSTALL_PREFIX, so any result of GNUInstallDirs is not actual
  91. # make template postinst.in
  92. FILE ( READ dist/deb/postinst-server.head POSTINST_HEAD )
  93. FILE ( READ dist/deb/postinst.${flavour}.tail POSTINST_TAIL )
  94. configure_file ( "dist/deb/postinst.in.in" "${dirserver}/postinst.in" )
  95. configure_file ( "dist/deb/postinst-common.in" "${dircommon}/postinst.in" COPYONLY )
  96. configure_file ( "dist/deb/postinst-core.in" "${dircore}/postinst.in" COPYONLY )
  97. # copy template prerm
  98. configure_file ( "dist/deb/prerm.${flavour}.in" "${dirserver}/prerm.in" COPYONLY )
  99. # copy template postrm
  100. configure_file ( "dist/deb/postrm-common.in" "${dircommon}/postrm.in" COPYONLY )
  101. configure_file ( "dist/deb/postrm-core.in" "${dircore}/postrm.in" COPYONLY )
  102. configure_file ( "dist/deb/postrm-server.in" "${dirserver}/postrm.in" COPYONLY )
  103. # manually configure (require known prefix/gnu install dirs)
  104. configure_config ( lib/manticore )
  105. # configure conffiles
  106. configure_file ( "dist/deb/conffiles-common.in" "${dircommon}/conffiles" @ONLY )
  107. configure_file ( "dist/deb/conffiles-server.in" "${dirserver}/conffiles" @ONLY )
  108. configure_file ( "dist/deb/conffiles-tools.in" "${dirtools}/conffiles" @ONLY )
  109. configure_file ( "dist/deb/manticore.default.in" "${dirserver}/manticore" @ONLY )
  110. configure_file ( "dist/deb/manticore.service.in" "${dirserver}/manticore.service" @ONLY )
  111. configure_file ( "dist/deb/manticore-indexer.service.in" "${dirtools}/manticore-indexer.service" @ONLY )
  112. configure_file ( "dist/deb/[email protected]" "${dirtools}/[email protected]" @ONLY )
  113. configure_file ( "dist/deb/manticore-indexer_global.default.in" "${dirtools}/manticore-indexer_global" @ONLY )
  114. configure_file ( "dist/deb/README.Debian.in" "${MANTICORE_BINARY_DIR}/README.Debian" @ONLY )
  115. configure_file ( "dist/deb/manticore.logrotate.in" "${MANTICORE_BINARY_DIR}/manticore.logrotate" @ONLY )
  116. # configure common scripts
  117. configure_file ( "${dircommon}/postinst.in" "${dircommon}/postinst" @ONLY )
  118. configure_file ( "${dircommon}/postrm.in" "${dircommon}/postrm" @ONLY )
  119. # configure core scripts
  120. configure_file ( "${dircore}/postinst.in" "${dircore}/postinst" @ONLY )
  121. configure_file ( "${dircore}/postrm.in" "${dircore}/postrm" @ONLY )
  122. # configure systemd scripts
  123. configure_file ( "${dirserver}/postinst.in" "${dirserver}/postinst" @ONLY )
  124. configure_file ( "${dirserver}/prerm.in" "${dirserver}/prerm" @ONLY )
  125. configure_file ( "${dirserver}/postrm.in" "${dirserver}/postrm" @ONLY )
  126. # installation
  127. # stuff going to /etc
  128. # CMAKE_INSTALL_SYSCONFDIR etc /etc
  129. install ( FILES ${MANTICORE_BINARY_DIR}/manticore.conf DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/manticoresearch COMPONENT common )
  130. install ( FILES "${dirserver}/manticore" DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/default COMPONENT server )
  131. install ( FILES ${MANTICORE_BINARY_DIR}/manticore.logrotate DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/logrotate.d COMPONENT searchd RENAME manticore )
  132. install ( FILES ${dirtools}/manticore-indexer_global DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/default COMPONENT tools )
  133. # stuff going to /var
  134. # CMAKE_INSTALL_LOCALSTATEDIR var /var
  135. install ( DIRECTORY DESTINATION ${CMAKE_INSTALL_LOCALSTATEDIR}/lib/manticore COMPONENT common )
  136. install ( DIRECTORY DESTINATION ${CMAKE_INSTALL_LOCALSTATEDIR}/log/manticore COMPONENT searchd )
  137. # stuff that should go to /lib -> actually to /usr/lib
  138. # CMAKE_INSTALL_LIBDIR usr/lib64 /usr/lib64
  139. install ( FILES "${dirserver}/manticore.service" DESTINATION ${CMAKE_INSTALL_LIBDIR}/systemd/system COMPONENT server )
  140. install ( FILES "${dirtools}/manticore-indexer.service" DESTINATION ${CMAKE_INSTALL_LIBDIR}/systemd/system COMPONENT tools )
  141. install ( FILES "${dirtools}/[email protected]" DESTINATION ${CMAKE_INSTALL_LIBDIR}/systemd/system COMPONENT tools )
  142. # binaries go to /usr/bin (here is only new cluster, rest is in main file, installing targets)
  143. # CMAKE_INSTALL_BINDIR usr/bin /usr/bin
  144. install ( PROGRAMS "dist/deb/manticore_new_cluster" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT server )
  145. #fixup - CMAKE_INSTALL_DOCDIR is share/doc/MANTICORE, fixup to share/doc/manticore
  146. set ( CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/manticore" )
  147. GNUInstallDirs_get_absolute_install_dir ( CMAKE_INSTALL_FULL_DOCDIR CMAKE_INSTALL_DOCDIR DOCDIR )
  148. # stuff going to /usr/share/man, /usr/share/doc
  149. # CMAKE_INSTALL_MANDIR usr/share/man /usr/share/man
  150. # CMAKE_INSTALL_DOCDIR usr/share/doc/manticore /usr/share/doc/manticore
  151. install ( FILES doc/searchd.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT searchd )
  152. install ( FILES doc/indexer.1 doc/indextool.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT tools )
  153. install ( FILES "${MANTICORE_BINARY_DIR}/README.Debian" DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT common )
  154. install ( FILES LICENSE INSTALL DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT common )
  155. install ( FILES example.sql DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT tools )
  156. # stuff going to /usr/share/manticore
  157. # CMAKE_INSTALL_DATAROOTDIR usr/share /usr/share
  158. # CMAKE_INSTALL_DATADIR usr/share /usr/share
  159. install ( DIRECTORY misc/stopwords DESTINATION ${CMAKE_INSTALL_DATADIR}/manticore COMPONENT common )
  160. install ( DIRECTORY DESTINATION ${CMAKE_INSTALL_DATADIR}/manticore/modules COMPONENT common )
  161. # stuff going to /usr/local/
  162. install ( DIRECTORY DESTINATION /usr/local/lib/manticore COMPONENT common )
  163. # Install sysctl configuration for Manticore Search
  164. install ( FILES dist/70-manticore.conf DESTINATION /etc/sysctl.d COMPONENT server )
  165. if (WITH_ICU AND WITH_ICU_FORCE_STATIC)
  166. install_icudata ( ${CMAKE_INSTALL_DATADIR}/manticore/icu )
  167. endif ()
  168. if (NOT NOAPI)
  169. install ( DIRECTORY api DESTINATION ${CMAKE_INSTALL_DATADIR}/manticore COMPONENT searchd )
  170. endif ()
  171. get_cmake_property ( CPACK_COMPONENTS_ALL COMPONENTS )
  172. list ( APPEND CPACK_COMPONENTS_ALL "meta" )
  173. # set(CPACK_DEBIAN_PACKAGE_DEBUG ON)