diff options
Diffstat (limited to 'project/cmake/cpack/CPackConfigDEB.cmake')
| -rw-r--r-- | project/cmake/cpack/CPackConfigDEB.cmake | 352 |
1 files changed, 352 insertions, 0 deletions
diff --git a/project/cmake/cpack/CPackConfigDEB.cmake b/project/cmake/cpack/CPackConfigDEB.cmake new file mode 100644 index 0000000..cb8e59e --- /dev/null +++ b/project/cmake/cpack/CPackConfigDEB.cmake | |||
| @@ -0,0 +1,352 @@ | |||
| 1 | # include Macros.cmake to automate generation of time/date stamps, maintainer, etc. | ||
| 2 | include(${PROJECT_SOURCE_DIR}/scripts/common/Macros.cmake) | ||
| 3 | |||
| 4 | # find stuff we need | ||
| 5 | find_program(LSB_RELEASE_CMD lsb_release) | ||
| 6 | find_program(DPKG_CMD dpkg) | ||
| 7 | find_package(Git) | ||
| 8 | find_program(GZIP_CMD gzip) | ||
| 9 | |||
| 10 | # set packaging dir | ||
| 11 | if(NOT CPACK_PACKAGE_DIRECTORY) | ||
| 12 | set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/packages) | ||
| 13 | endif() | ||
| 14 | |||
| 15 | # force CPack generated DEBs to use the same path as CMAKE_INSTALL_PREFIX | ||
| 16 | set(CPACK_SET_DESTDIR true) | ||
| 17 | |||
| 18 | # set architecture | ||
| 19 | if(NOT CPACK_SYSTEM_NAME) | ||
| 20 | set(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_PROCESSOR}) | ||
| 21 | # sanity check | ||
| 22 | if(CPACK_SYSTEM_NAME STREQUAL x86_64) | ||
| 23 | set(CPACK_SYSTEM_NAME amd64) | ||
| 24 | endif() | ||
| 25 | endif() | ||
| 26 | |||
| 27 | # set packaging by components | ||
| 28 | set(CPACK_DEB_COMPONENT_INSTALL ON) | ||
| 29 | |||
| 30 | # enforce Debian policy permission rules | ||
| 31 | set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION ON) | ||
| 32 | |||
| 33 | # packaging by components doesn't fully work with CMake/CPack <3.6.0 | ||
| 34 | # CPACK_DEBIAN_<COMPONENT>_FILE_NAME is a 3.6.0 addition | ||
| 35 | # warn if detected version is lower | ||
| 36 | if(CMAKE_VERSION VERSION_LESS 3.6) | ||
| 37 | message(WARNING "DEB Generator: CMake/CPack 3.6 or higher is needed to produce correctly named packages.") | ||
| 38 | endif() | ||
| 39 | |||
| 40 | # distro codename | ||
| 41 | if(NOT DISTRO_CODENAME) | ||
| 42 | if(NOT LSB_RELEASE_CMD) | ||
| 43 | message(WARNING "DEB Generator: Can't find lsb_release in your path. Setting DISTRO_CODENAME to unknown.") | ||
| 44 | set(DISTRO_CODENAME unknown) | ||
| 45 | else() | ||
| 46 | execute_process(COMMAND ${LSB_RELEASE_CMD} -cs | ||
| 47 | OUTPUT_VARIABLE DISTRO_CODENAME | ||
| 48 | OUTPUT_STRIP_TRAILING_WHITESPACE) | ||
| 49 | endif() | ||
| 50 | endif() | ||
| 51 | |||
| 52 | # package version | ||
| 53 | if(DEBIAN_PACKAGE_VERSION) | ||
| 54 | set(DISTRO_CODENAME ${DEBIAN_PACKAGE_VERSION}${DISTRO_CODENAME}) | ||
| 55 | else() | ||
| 56 | set(DISTRO_CODENAME 0${DISTRO_CODENAME}) | ||
| 57 | endif() | ||
| 58 | |||
| 59 | # package revision | ||
| 60 | if(DEBIAN_PACKAGE_REVISION) | ||
| 61 | set(DISTRO_CODENAME ${DISTRO_CODENAME}${DEBIAN_PACKAGE_REVISION}) | ||
| 62 | endif() | ||
| 63 | |||
| 64 | # package type | ||
| 65 | if(DEBIAN_PACKAGE_TYPE STREQUAL stable) | ||
| 66 | set(RELEASE_IDENTIFIER final) | ||
| 67 | elseif(DEBIAN_PACKAGE_TYPE STREQUAL unstable) | ||
| 68 | set(RELEASE_IDENTIFIER ${APP_VERSION_TAG_LC}) | ||
| 69 | else() | ||
| 70 | core_find_git_rev(RELEASE_IDENTIFIER) | ||
| 71 | endif() | ||
| 72 | |||
| 73 | # package name | ||
| 74 | string(TIMESTAMP PACKAGE_TIMESTAMP "%Y%m%d.%H%M" UTC) | ||
| 75 | set(PACKAGE_NAME_VERSION ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}~git${PACKAGE_TIMESTAMP}-${RELEASE_IDENTIFIER}-${DISTRO_CODENAME}) | ||
| 76 | unset(RELEASE_IDENTIFIER) | ||
| 77 | |||
| 78 | # package version | ||
| 79 | if(DEBIAN_PACKAGE_EPOCH) | ||
| 80 | set(CPACK_DEBIAN_PACKAGE_VERSION ${DEBIAN_PACKAGE_EPOCH}:${PACKAGE_NAME_VERSION}) | ||
| 81 | else() | ||
| 82 | set(CPACK_DEBIAN_PACKAGE_VERSION 2:${PACKAGE_NAME_VERSION}) | ||
| 83 | endif() | ||
| 84 | |||
| 85 | # architecture | ||
| 86 | if(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE) | ||
| 87 | if(NOT DPKG_CMD) | ||
| 88 | message(WARNING "DEB Generator: Can't find dpkg in your path. Setting CPACK_DEBIAN_PACKAGE_ARCHITECTURE to i386.") | ||
| 89 | set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386) | ||
| 90 | endif() | ||
| 91 | execute_process(COMMAND "${DPKG_CMD}" --print-architecture | ||
| 92 | OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE | ||
| 93 | OUTPUT_STRIP_TRAILING_WHITESPACE) | ||
| 94 | endif() | ||
| 95 | |||
| 96 | # package maintainer | ||
| 97 | if(NOT CPACK_DEBIAN_PACKAGE_MAINTAINER) | ||
| 98 | userstamp() | ||
| 99 | set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${PACKAGE_MAINTAINER}) | ||
| 100 | unset(PACKAGE_MAINTAINER) | ||
| 101 | endif() | ||
| 102 | |||
| 103 | # package description common to all packages | ||
| 104 | if(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION) | ||
| 105 | file(STRINGS ${PROJECT_SOURCE_DIR}/cpack/deb/package-description.txt DESC_LINES) | ||
| 106 | foreach(LINE IN LISTS DESC_LINES) | ||
| 107 | set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "${CPACK_DEBIAN_PACKAGE_DESCRIPTION} ${LINE}\n") | ||
| 108 | endforeach() | ||
| 109 | endif() | ||
| 110 | |||
| 111 | # package homepage | ||
| 112 | if(NOT CPACK_DEBIAN_PACKAGE_HOMEPAGE) | ||
| 113 | set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${APP_WEBSITE}) | ||
| 114 | endif() | ||
| 115 | |||
| 116 | # generate a Debian compliant changelog | ||
| 117 | set(CHANGELOG_HEADER "${APP_NAME_LC} (${CPACK_DEBIAN_PACKAGE_VERSION}) ${DISTRO_CODENAME}\; urgency=high") | ||
| 118 | rfc2822stamp() | ||
| 119 | # two spaces between maintainer and timestamp is NOT a mistake | ||
| 120 | set(CHANGELOG_FOOTER " -- ${CPACK_DEBIAN_PACKAGE_MAINTAINER} ${RFC2822_TIMESTAMP}") | ||
| 121 | |||
| 122 | if(GIT_FOUND AND GZIP_CMD AND EXISTS ${CORE_SOURCE_DIR}/.git) | ||
| 123 | execute_process(COMMAND ${GIT_EXECUTABLE} log --no-merges --pretty=format:"%n [%an]%n * %s" --since="last month" | ||
| 124 | OUTPUT_VARIABLE CHANGELOG | ||
| 125 | WORKING_DIRECTORY ${CORE_SOURCE_DIR} | ||
| 126 | OUTPUT_STRIP_TRAILING_WHITESPACE) | ||
| 127 | string(REPLACE "\"" "" CHANGELOG ${CHANGELOG}) | ||
| 128 | file(WRITE ${CPACK_PACKAGE_DIRECTORY}/deb/changelog.Debian ${CHANGELOG_HEADER}\n${CHANGELOG}\n\n${CHANGELOG_FOOTER}) | ||
| 129 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/changelog.Debian) | ||
| 130 | unset(CHANGELOG_HEADER) | ||
| 131 | unset(CHANGELOG_FOOTER) | ||
| 132 | unset(RFC2822_TIMESTAMP) | ||
| 133 | else() | ||
| 134 | message(WARNING "DEB Generator: Can't find git and/or gzip in your path. DEB packages will be missing changelog.Debian.gz.") | ||
| 135 | endif() | ||
| 136 | |||
| 137 | # Generate NEWS.Debian | ||
| 138 | configure_file(${PROJECT_SOURCE_DIR}/cpack/deb/NEWS.Debian | ||
| 139 | ${CPACK_PACKAGE_DIRECTORY}/deb/NEWS.Debian @ONLY) | ||
| 140 | if(GZIP_CMD) | ||
| 141 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/NEWS.Debian) | ||
| 142 | else() | ||
| 143 | message(WARNING "DEB Generator: Can't find gzip in your path. DEB packages will be missing NEWS.Debian.") | ||
| 144 | endif() | ||
| 145 | |||
| 146 | # Generate man pages | ||
| 147 | configure_file(${CORE_SOURCE_DIR}/docs/manpages/kodi.bin.1 | ||
| 148 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.1 COPYONLY) | ||
| 149 | configure_file(${CORE_SOURCE_DIR}/docs/manpages/kodi.bin.1 | ||
| 150 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.bin.1 COPYONLY) | ||
| 151 | configure_file(${CORE_SOURCE_DIR}/docs/manpages/kodi-standalone.1 | ||
| 152 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-standalone.1 COPYONLY) | ||
| 153 | if(ENABLE_EVENTCLIENTS) | ||
| 154 | configure_file(${CORE_SOURCE_DIR}/docs/manpages/kodi-ps3remote.1 | ||
| 155 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-ps3remote.1 COPYONLY) | ||
| 156 | configure_file(${CORE_SOURCE_DIR}/docs/manpages/kodi-send.1 | ||
| 157 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-send.1 COPYONLY) | ||
| 158 | configure_file(${CORE_SOURCE_DIR}/docs/manpages/kodi-wiiremote.1 | ||
| 159 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-wiiremote.1 COPYONLY) | ||
| 160 | endif() | ||
| 161 | |||
| 162 | if(GZIP_CMD) | ||
| 163 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.1) | ||
| 164 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.bin.1) | ||
| 165 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-standalone.1) | ||
| 166 | if(ENABLE_EVENTCLIENTS) | ||
| 167 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-ps3remote.1) | ||
| 168 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-send.1) | ||
| 169 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-wiiremote.1) | ||
| 170 | endif() | ||
| 171 | else() | ||
| 172 | message(WARNING "DEB Generator: Can't find gzip in your path. Several DEB packages will be missing man pages.") | ||
| 173 | endif() | ||
| 174 | |||
| 175 | install(FILES ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.1.gz | ||
| 176 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.bin.1.gz | ||
| 177 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-standalone.1.gz | ||
| 178 | DESTINATION share/man/man1 | ||
| 179 | COMPONENT kodi) | ||
| 180 | if(ENABLE_EVENTCLIENTS) | ||
| 181 | install(FILES ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-ps3remote.1.gz | ||
| 182 | DESTINATION share/man/man1 | ||
| 183 | COMPONENT kodi-eventclients-ps3) | ||
| 184 | install(FILES ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-send.1.gz | ||
| 185 | DESTINATION share/man/man1 | ||
| 186 | COMPONENT kodi-eventclients-xbmc-send) | ||
| 187 | install(FILES ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-wiiremote.1.gz | ||
| 188 | DESTINATION share/man/man1 | ||
| 189 | COMPONENT kodi-eventclients-wiiremote) | ||
| 190 | endif() | ||
| 191 | |||
| 192 | # configure package metadata files | ||
| 193 | file(GLOB DEBIAN_PACKAGE_FILES ${PROJECT_SOURCE_DIR}/cpack/deb/packages/*.txt.in) | ||
| 194 | foreach(file ${DEBIAN_PACKAGE_FILES}) | ||
| 195 | get_filename_component(package ${file} NAME_WE) | ||
| 196 | # filter eventclients so we don't have to support two more deps | ||
| 197 | # (libbluetooth-dev and libcwiid-dev) just because of wii-remote | ||
| 198 | string(SUBSTRING ${package} 0 17 PACKAGE_FILTER) | ||
| 199 | if(NOT ENABLE_EVENTCLIENTS AND PACKAGE_FILTER STREQUAL kodi-eventclients) | ||
| 200 | message(STATUS "DEB Generator: ${package} matches ${PACKAGE_FILTER}, skipping.") | ||
| 201 | # do nothing | ||
| 202 | else() | ||
| 203 | configure_file(${file} | ||
| 204 | ${CPACK_PACKAGE_DIRECTORY}/deb/${package}.txt @ONLY) | ||
| 205 | list(APPEND DEBIAN_PACKAGES ${package}) | ||
| 206 | endif() | ||
| 207 | endforeach() | ||
| 208 | unset(DEBIAN_PACKAGE_FILES) | ||
| 209 | |||
| 210 | # generate packages | ||
| 211 | include(CMakeParseArguments) | ||
| 212 | foreach(file ${DEBIAN_PACKAGES}) | ||
| 213 | core_file_read_filtered(DEBIAN_METADATA ${CPACK_PACKAGE_DIRECTORY}/deb/${file}.txt) | ||
| 214 | string(REPLACE " " ";" DEBIAN_METADATA "${DEBIAN_METADATA}") | ||
| 215 | cmake_parse_arguments(DEB | ||
| 216 | "" | ||
| 217 | "PACKAGE_NAME;PACKAGE_ARCHITECTURE;PACKAGE_SECTION;PACKAGE_PRIORITY;PACKAGE_SHLIBDEPS" | ||
| 218 | "PACKAGE_DEPENDS;PACKAGE_RECOMMENDS;PACKAGE_SUGGESTS;PACKAGE_BREAKS;PACKAGE_REPLACES;PACKAGE_PROVIDES;PACKAGE_DESCRIPTION_HEADER;PACKAGE_DESCRIPTION_FOOTER" | ||
| 219 | ${DEBIAN_METADATA}) | ||
| 220 | string(REPLACE ";" " " DEB_PACKAGE_DEPENDS "${DEB_PACKAGE_DEPENDS}") | ||
| 221 | string(REPLACE ";" " " DEB_PACKAGE_RECOMMENDS "${DEB_PACKAGE_RECOMMENDS}") | ||
| 222 | string(REPLACE ";" " " DEB_PACKAGE_SUGGESTS "${DEB_PACKAGE_SUGGESTS}") | ||
| 223 | string(REPLACE ";" " " DEB_PACKAGE_BREAKS "${DEB_PACKAGE_BREAKS}") | ||
| 224 | string(REPLACE ";" " " DEB_PACKAGE_REPLACES "${DEB_PACKAGE_REPLACES}") | ||
| 225 | string(REPLACE ";" " " DEB_PACKAGE_PROVIDES "${DEB_PACKAGE_PROVIDES}") | ||
| 226 | string(REPLACE ";" " " DEB_PACKAGE_DESCRIPTION_HEADER "${DEB_PACKAGE_DESCRIPTION_HEADER}") | ||
| 227 | string(REPLACE ";" " " DEB_PACKAGE_DESCRIPTION_FOOTER "${DEB_PACKAGE_DESCRIPTION_FOOTER}") | ||
| 228 | |||
| 229 | string(TOUPPER ${file} COMPONENT) | ||
| 230 | |||
| 231 | if(NOT DEB_PACKAGE_ARCHITECTURE) | ||
| 232 | message(STATUS "DEB Generator: Mandatory variable CPACK_DEBIAN_${COMPONENT}_PACKAGE_ARCHITECTURE is empty. Setting to ${CPACK_SYSTEM_NAME}.") | ||
| 233 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_ARCHITECTURE ${CPACK_SYSTEM_NAME}) | ||
| 234 | else() | ||
| 235 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_ARCHITECTURE ${DEB_PACKAGE_ARCHITECTURE}) | ||
| 236 | endif() | ||
| 237 | |||
| 238 | if(DEB_PACKAGE_NAME) | ||
| 239 | if(DEB_PACKAGE_ARCHITECTURE) | ||
| 240 | set(CPACK_DEBIAN_${COMPONENT}_FILE_NAME ${DEB_PACKAGE_NAME}_${PACKAGE_NAME_VERSION}_${DEB_PACKAGE_ARCHITECTURE}.deb) | ||
| 241 | else() | ||
| 242 | set(CPACK_DEBIAN_${COMPONENT}_FILE_NAME ${DEB_PACKAGE_NAME}_${PACKAGE_NAME_VERSION}_${CPACK_SYSTEM_NAME}.deb) | ||
| 243 | endif() | ||
| 244 | else() | ||
| 245 | message(FATAL_ERROR "DEB Generator: Mandatory variable CPACK_DEBIAN_${COMPONENT}_FILE_NAME is not set.") | ||
| 246 | endif() | ||
| 247 | |||
| 248 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_SOURCE ${APP_NAME_LC}) | ||
| 249 | |||
| 250 | if(DEB_PACKAGE_NAME) | ||
| 251 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_NAME ${DEB_PACKAGE_NAME}) | ||
| 252 | else() | ||
| 253 | message(FATAL_ERROR "DEB Generator: Mandatory variable CPACK_DEBIAN_${COMPONENT}_PACKAGE_NAME is not set.") | ||
| 254 | endif() | ||
| 255 | |||
| 256 | if(DEB_PACKAGE_SECTION) | ||
| 257 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_SECTION ${DEB_PACKAGE_SECTION}) | ||
| 258 | else() | ||
| 259 | message(FATAL_ERROR "DEB Generator: Mandatory variable CPACK_DEBIAN_${COMPONENT}_PACKAGE_SECTION is not set.") | ||
| 260 | endif() | ||
| 261 | |||
| 262 | if(DEB_PACKAGE_PRIORITY) | ||
| 263 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_PRIORITY ${DEB_PACKAGE_PRIORITY}) | ||
| 264 | else() | ||
| 265 | message(FATAL_ERROR "DEB Generator: Mandatory variable CPACK_DEBIAN_${COMPONENT}_PACKAGE_PRIORITY is not set.") | ||
| 266 | endif() | ||
| 267 | |||
| 268 | if(DEB_PACKAGE_SHLIBDEPS) | ||
| 269 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_SHLIBDEPS ON) | ||
| 270 | else() | ||
| 271 | if(DEB_PACKAGE_DEPENDS) | ||
| 272 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_DEPENDS "${DEB_PACKAGE_DEPENDS}") | ||
| 273 | endif() | ||
| 274 | endif() | ||
| 275 | |||
| 276 | if(DEB_PACKAGE_RECOMMENDS) | ||
| 277 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_RECOMMENDS "${DEB_PACKAGE_RECOMMENDS}") | ||
| 278 | endif() | ||
| 279 | |||
| 280 | if(DEB_PACKAGE_SUGGESTS) | ||
| 281 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_SUGGESTS "${DEB_PACKAGE_SUGGESTS}") | ||
| 282 | endif() | ||
| 283 | |||
| 284 | if(DEB_PACKAGE_BREAKS) | ||
| 285 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_BREAKS "${DEB_PACKAGE_BREAKS}") | ||
| 286 | endif() | ||
| 287 | |||
| 288 | if(DEB_PACKAGE_REPLACES) | ||
| 289 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_REPLACES "${DEB_PACKAGE_REPLACES}") | ||
| 290 | endif() | ||
| 291 | |||
| 292 | if(DEB_PACKAGE_PROVIDES) | ||
| 293 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_PROVIDES "${DEB_PACKAGE_PROVIDES}") | ||
| 294 | endif() | ||
| 295 | |||
| 296 | if(NOT DEB_PACKAGE_DESCRIPTION_HEADER OR NOT DEB_PACKAGE_DESCRIPTION_FOOTER) | ||
| 297 | message(FATAL_ERROR "DEB Generator: Mandatory variable CPACK_COMPONENT_${COMPONENT}_DESCRIPTION is not set.") | ||
| 298 | else() | ||
| 299 | set(CPACK_COMPONENT_${COMPONENT}_DESCRIPTION "\ | ||
| 300 | ${DEB_PACKAGE_DESCRIPTION_HEADER}\n\ | ||
| 301 | ${CPACK_DEBIAN_PACKAGE_DESCRIPTION} \ | ||
| 302 | ${DEB_PACKAGE_DESCRIPTION_FOOTER}") | ||
| 303 | endif() | ||
| 304 | |||
| 305 | install(FILES ${CPACK_PACKAGE_DIRECTORY}/deb/changelog.Debian.gz | ||
| 306 | ${CPACK_PACKAGE_DIRECTORY}/deb/NEWS.Debian.gz | ||
| 307 | ${PROJECT_SOURCE_DIR}/cpack/deb/copyright | ||
| 308 | DESTINATION share/doc/${file} | ||
| 309 | COMPONENT ${file}) | ||
| 310 | |||
| 311 | # kodi package exclusive files | ||
| 312 | if(CPACK_DEBIAN_KODI_PACKAGE_NAME) | ||
| 313 | set(CPACK_DEBIAN_KODI_PACKAGE_CONTROL_EXTRA | ||
| 314 | "${PROJECT_SOURCE_DIR}/cpack/deb/postinst;${PROJECT_SOURCE_DIR}/cpack/deb/postrm") | ||
| 315 | install(FILES ${PROJECT_SOURCE_DIR}/cpack/deb/lintian/overrides/kodi | ||
| 316 | DESTINATION share/lintian/overrides | ||
| 317 | COMPONENT kodi) | ||
| 318 | install(FILES ${PROJECT_SOURCE_DIR}/cpack/deb/menu/kodi | ||
| 319 | DESTINATION share/menu | ||
| 320 | COMPONENT kodi) | ||
| 321 | endif() | ||
| 322 | endforeach() | ||
| 323 | unset(DEBIAN_PACKAGES) | ||
| 324 | |||
| 325 | ### source package generation specific variables | ||
| 326 | # source generator | ||
| 327 | set(CPACK_SOURCE_GENERATOR TGZ) | ||
| 328 | |||
| 329 | # source package name | ||
| 330 | set(CPACK_SOURCE_PACKAGE_FILE_NAME ${APP_NAME_LC}_${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}~git${PACKAGE_TIMESTAMP}-${GIT_HASH}.orig) | ||
| 331 | |||
| 332 | # source dir | ||
| 333 | set(CMAKE_SOURCE_DIR ${CORE_SOURCE_DIR}) | ||
| 334 | |||
| 335 | # ignore files for source package | ||
| 336 | set(CPACK_SOURCE_IGNORE_FILES | ||
| 337 | "/build/" | ||
| 338 | "/debian/" | ||
| 339 | "/.git/" | ||
| 340 | ".gitignore" | ||
| 341 | "yml$" | ||
| 342 | "~$") | ||
| 343 | |||
| 344 | # unset variables | ||
| 345 | unset(PACKAGE_TIMESTAMP) | ||
| 346 | unset(DISTRO_CODENAME) | ||
| 347 | |||
| 348 | # reference docs | ||
| 349 | # https://cmake.org/cmake/help/latest/module/CPack.html | ||
| 350 | # https://cmake.org/cmake/help/latest/module/CPackDeb.html | ||
| 351 | # https://cmake.org/cmake/help/latest/module/CPackComponent.html | ||
| 352 | include(CPack) | ||
