diff options
Diffstat (limited to 'cmake/cpack/CPackConfigDEB.cmake')
| -rw-r--r-- | cmake/cpack/CPackConfigDEB.cmake | 349 |
1 files changed, 349 insertions, 0 deletions
diff --git a/cmake/cpack/CPackConfigDEB.cmake b/cmake/cpack/CPackConfigDEB.cmake new file mode 100644 index 0000000..800daa5 --- /dev/null +++ b/cmake/cpack/CPackConfigDEB.cmake | |||
| @@ -0,0 +1,349 @@ | |||
| 1 | # include Macros.cmake to automate generation of time/date stamps, maintainer, etc. | ||
| 2 | include(${CMAKE_SOURCE_DIR}/cmake/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 | |||
| 77 | # package version | ||
| 78 | if(DEBIAN_PACKAGE_EPOCH) | ||
| 79 | set(CPACK_DEBIAN_PACKAGE_VERSION ${DEBIAN_PACKAGE_EPOCH}:${PACKAGE_NAME_VERSION}) | ||
| 80 | else() | ||
| 81 | set(CPACK_DEBIAN_PACKAGE_VERSION 2:${PACKAGE_NAME_VERSION}) | ||
| 82 | endif() | ||
| 83 | |||
| 84 | # architecture | ||
| 85 | if(NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE) | ||
| 86 | if(NOT DPKG_CMD) | ||
| 87 | message(WARNING "DEB Generator: Can't find dpkg in your path. Setting CPACK_DEBIAN_PACKAGE_ARCHITECTURE to i386.") | ||
| 88 | set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386) | ||
| 89 | endif() | ||
| 90 | execute_process(COMMAND "${DPKG_CMD}" --print-architecture | ||
| 91 | OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE | ||
| 92 | OUTPUT_STRIP_TRAILING_WHITESPACE) | ||
| 93 | endif() | ||
| 94 | |||
| 95 | # package maintainer | ||
| 96 | if(NOT CPACK_DEBIAN_PACKAGE_MAINTAINER) | ||
| 97 | userstamp() | ||
| 98 | set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${PACKAGE_MAINTAINER}) | ||
| 99 | unset(PACKAGE_MAINTAINER) | ||
| 100 | endif() | ||
| 101 | |||
| 102 | # package description common to all packages | ||
| 103 | if(NOT CPACK_DEBIAN_PACKAGE_DESCRIPTION) | ||
| 104 | file(STRINGS ${CMAKE_SOURCE_DIR}/cmake/cpack/deb/package-description.txt DESC_LINES) | ||
| 105 | foreach(LINE IN LISTS DESC_LINES) | ||
| 106 | set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "${CPACK_DEBIAN_PACKAGE_DESCRIPTION} ${LINE}\n") | ||
| 107 | endforeach() | ||
| 108 | endif() | ||
| 109 | |||
| 110 | # package homepage | ||
| 111 | if(NOT CPACK_DEBIAN_PACKAGE_HOMEPAGE) | ||
| 112 | set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${APP_WEBSITE}) | ||
| 113 | endif() | ||
| 114 | |||
| 115 | # generate a Debian compliant changelog | ||
| 116 | set(CHANGELOG_HEADER "${APP_NAME_LC} (${CPACK_DEBIAN_PACKAGE_VERSION}) ${DISTRO_CODENAME}\; urgency=high") | ||
| 117 | rfc2822stamp() | ||
| 118 | # two spaces between maintainer and timestamp is NOT a mistake | ||
| 119 | set(CHANGELOG_FOOTER " -- ${CPACK_DEBIAN_PACKAGE_MAINTAINER} ${RFC2822_TIMESTAMP}") | ||
| 120 | |||
| 121 | if(GIT_FOUND AND GZIP_CMD AND EXISTS ${CMAKE_SOURCE_DIR}/.git) | ||
| 122 | execute_process(COMMAND ${GIT_EXECUTABLE} log --no-merges --pretty=format:"%n [%an]%n * %s" --since="30 days ago" | ||
| 123 | OUTPUT_VARIABLE CHANGELOG | ||
| 124 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} | ||
| 125 | OUTPUT_STRIP_TRAILING_WHITESPACE) | ||
| 126 | string(REPLACE "\"" "" CHANGELOG ${CHANGELOG}) | ||
| 127 | file(WRITE ${CPACK_PACKAGE_DIRECTORY}/deb/changelog.Debian ${CHANGELOG_HEADER}\n${CHANGELOG}\n\n${CHANGELOG_FOOTER}) | ||
| 128 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/changelog.Debian) | ||
| 129 | unset(CHANGELOG_HEADER) | ||
| 130 | unset(CHANGELOG_FOOTER) | ||
| 131 | unset(RFC2822_TIMESTAMP) | ||
| 132 | else() | ||
| 133 | message(WARNING "DEB Generator: Can't find git and/or gzip in your path. DEB packages will be missing changelog.Debian.gz.") | ||
| 134 | endif() | ||
| 135 | |||
| 136 | # Generate NEWS.Debian | ||
| 137 | configure_file(${CMAKE_SOURCE_DIR}/cmake/cpack/deb/NEWS.Debian | ||
| 138 | ${CPACK_PACKAGE_DIRECTORY}/deb/NEWS.Debian @ONLY) | ||
| 139 | if(GZIP_CMD) | ||
| 140 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/NEWS.Debian) | ||
| 141 | else() | ||
| 142 | message(WARNING "DEB Generator: Can't find gzip in your path. DEB packages will be missing NEWS.Debian.") | ||
| 143 | endif() | ||
| 144 | |||
| 145 | # Generate man pages | ||
| 146 | configure_file(${CMAKE_SOURCE_DIR}/docs/manpages/kodi.bin.1 | ||
| 147 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.1 COPYONLY) | ||
| 148 | configure_file(${CMAKE_SOURCE_DIR}/docs/manpages/kodi.bin.1 | ||
| 149 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.bin.1 COPYONLY) | ||
| 150 | configure_file(${CMAKE_SOURCE_DIR}/docs/manpages/kodi-standalone.1 | ||
| 151 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-standalone.1 COPYONLY) | ||
| 152 | if(ENABLE_EVENTCLIENTS) | ||
| 153 | configure_file(${CMAKE_SOURCE_DIR}/docs/manpages/kodi-ps3remote.1 | ||
| 154 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-ps3remote.1 COPYONLY) | ||
| 155 | configure_file(${CMAKE_SOURCE_DIR}/docs/manpages/kodi-send.1 | ||
| 156 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-send.1 COPYONLY) | ||
| 157 | configure_file(${CMAKE_SOURCE_DIR}/docs/manpages/kodi-wiiremote.1 | ||
| 158 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-wiiremote.1 COPYONLY) | ||
| 159 | endif() | ||
| 160 | |||
| 161 | if(GZIP_CMD) | ||
| 162 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.1) | ||
| 163 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.bin.1) | ||
| 164 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-standalone.1) | ||
| 165 | if(ENABLE_EVENTCLIENTS) | ||
| 166 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-ps3remote.1) | ||
| 167 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-send.1) | ||
| 168 | execute_process(COMMAND ${GZIP_CMD} -f -9 -n ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-wiiremote.1) | ||
| 169 | endif() | ||
| 170 | else() | ||
| 171 | message(WARNING "DEB Generator: Can't find gzip in your path. Several DEB packages will be missing man pages.") | ||
| 172 | endif() | ||
| 173 | |||
| 174 | install(FILES ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.1.gz | ||
| 175 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi.bin.1.gz | ||
| 176 | ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-standalone.1.gz | ||
| 177 | DESTINATION share/man/man1 | ||
| 178 | COMPONENT kodi) | ||
| 179 | if(ENABLE_EVENTCLIENTS) | ||
| 180 | install(FILES ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-ps3remote.1.gz | ||
| 181 | DESTINATION share/man/man1 | ||
| 182 | COMPONENT kodi-eventclients-ps3) | ||
| 183 | install(FILES ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-send.1.gz | ||
| 184 | DESTINATION share/man/man1 | ||
| 185 | COMPONENT kodi-eventclients-xbmc-send) | ||
| 186 | install(FILES ${CPACK_PACKAGE_DIRECTORY}/deb/kodi-wiiremote.1.gz | ||
| 187 | DESTINATION share/man/man1 | ||
| 188 | COMPONENT kodi-eventclients-wiiremote) | ||
| 189 | endif() | ||
| 190 | |||
| 191 | # configure package metadata files | ||
| 192 | file(GLOB DEBIAN_PACKAGE_FILES ${CMAKE_SOURCE_DIR}/cmake/cpack/deb/packages/*.txt.in) | ||
| 193 | foreach(file ${DEBIAN_PACKAGE_FILES}) | ||
| 194 | get_filename_component(package ${file} NAME_WE) | ||
| 195 | # filter eventclients so we don't have to support two more deps | ||
| 196 | # (libbluetooth-dev and libcwiid-dev) just because of wii-remote | ||
| 197 | string(SUBSTRING ${package} 0 17 PACKAGE_FILTER) | ||
| 198 | if(NOT ENABLE_EVENTCLIENTS AND PACKAGE_FILTER STREQUAL kodi-eventclients) | ||
| 199 | message(STATUS "DEB Generator: ${package} matches ${PACKAGE_FILTER}, skipping.") | ||
| 200 | # do nothing | ||
| 201 | else() | ||
| 202 | configure_file(${file} | ||
| 203 | ${CPACK_PACKAGE_DIRECTORY}/deb/${package}.txt @ONLY) | ||
| 204 | list(APPEND DEBIAN_PACKAGES ${package}) | ||
| 205 | endif() | ||
| 206 | endforeach() | ||
| 207 | unset(DEBIAN_PACKAGE_FILES) | ||
| 208 | |||
| 209 | # generate packages | ||
| 210 | include(CMakeParseArguments) | ||
| 211 | foreach(file ${DEBIAN_PACKAGES}) | ||
| 212 | core_file_read_filtered(DEBIAN_METADATA ${CPACK_PACKAGE_DIRECTORY}/deb/${file}.txt) | ||
| 213 | string(REPLACE " " ";" DEBIAN_METADATA "${DEBIAN_METADATA}") | ||
| 214 | cmake_parse_arguments(DEB | ||
| 215 | "" | ||
| 216 | "PACKAGE_NAME;PACKAGE_ARCHITECTURE;PACKAGE_SECTION;PACKAGE_PRIORITY;PACKAGE_SHLIBDEPS" | ||
| 217 | "PACKAGE_DEPENDS;PACKAGE_RECOMMENDS;PACKAGE_SUGGESTS;PACKAGE_BREAKS;PACKAGE_REPLACES;PACKAGE_PROVIDES;PACKAGE_DESCRIPTION_HEADER;PACKAGE_DESCRIPTION_FOOTER" | ||
| 218 | ${DEBIAN_METADATA}) | ||
| 219 | string(REPLACE ";" " " DEB_PACKAGE_DEPENDS "${DEB_PACKAGE_DEPENDS}") | ||
| 220 | string(REPLACE ";" " " DEB_PACKAGE_RECOMMENDS "${DEB_PACKAGE_RECOMMENDS}") | ||
| 221 | string(REPLACE ";" " " DEB_PACKAGE_SUGGESTS "${DEB_PACKAGE_SUGGESTS}") | ||
| 222 | string(REPLACE ";" " " DEB_PACKAGE_BREAKS "${DEB_PACKAGE_BREAKS}") | ||
| 223 | string(REPLACE ";" " " DEB_PACKAGE_REPLACES "${DEB_PACKAGE_REPLACES}") | ||
| 224 | string(REPLACE ";" " " DEB_PACKAGE_PROVIDES "${DEB_PACKAGE_PROVIDES}") | ||
| 225 | string(REPLACE ";" " " DEB_PACKAGE_DESCRIPTION_HEADER "${DEB_PACKAGE_DESCRIPTION_HEADER}") | ||
| 226 | string(REPLACE ";" " " DEB_PACKAGE_DESCRIPTION_FOOTER "${DEB_PACKAGE_DESCRIPTION_FOOTER}") | ||
| 227 | |||
| 228 | string(TOUPPER ${file} COMPONENT) | ||
| 229 | |||
| 230 | if(NOT DEB_PACKAGE_ARCHITECTURE) | ||
| 231 | message(STATUS "DEB Generator: Mandatory variable CPACK_DEBIAN_${COMPONENT}_PACKAGE_ARCHITECTURE is empty. Setting to ${CPACK_SYSTEM_NAME}.") | ||
| 232 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_ARCHITECTURE ${CPACK_SYSTEM_NAME}) | ||
| 233 | else() | ||
| 234 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_ARCHITECTURE ${DEB_PACKAGE_ARCHITECTURE}) | ||
| 235 | endif() | ||
| 236 | |||
| 237 | if(DEB_PACKAGE_NAME) | ||
| 238 | if(DEB_PACKAGE_ARCHITECTURE) | ||
| 239 | set(CPACK_DEBIAN_${COMPONENT}_FILE_NAME ${DEB_PACKAGE_NAME}_${PACKAGE_NAME_VERSION}_${DEB_PACKAGE_ARCHITECTURE}.deb) | ||
| 240 | else() | ||
| 241 | set(CPACK_DEBIAN_${COMPONENT}_FILE_NAME ${DEB_PACKAGE_NAME}_${PACKAGE_NAME_VERSION}_${CPACK_SYSTEM_NAME}.deb) | ||
| 242 | endif() | ||
| 243 | else() | ||
| 244 | message(FATAL_ERROR "DEB Generator: Mandatory variable CPACK_DEBIAN_${COMPONENT}_FILE_NAME is not set.") | ||
| 245 | endif() | ||
| 246 | |||
| 247 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_SOURCE ${APP_NAME_LC}) | ||
| 248 | |||
| 249 | if(DEB_PACKAGE_NAME) | ||
| 250 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_NAME ${DEB_PACKAGE_NAME}) | ||
| 251 | else() | ||
| 252 | message(FATAL_ERROR "DEB Generator: Mandatory variable CPACK_DEBIAN_${COMPONENT}_PACKAGE_NAME is not set.") | ||
| 253 | endif() | ||
| 254 | |||
| 255 | if(DEB_PACKAGE_SECTION) | ||
| 256 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_SECTION ${DEB_PACKAGE_SECTION}) | ||
| 257 | else() | ||
| 258 | message(FATAL_ERROR "DEB Generator: Mandatory variable CPACK_DEBIAN_${COMPONENT}_PACKAGE_SECTION is not set.") | ||
| 259 | endif() | ||
| 260 | |||
| 261 | if(DEB_PACKAGE_PRIORITY) | ||
| 262 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_PRIORITY ${DEB_PACKAGE_PRIORITY}) | ||
| 263 | else() | ||
| 264 | message(FATAL_ERROR "DEB Generator: Mandatory variable CPACK_DEBIAN_${COMPONENT}_PACKAGE_PRIORITY is not set.") | ||
| 265 | endif() | ||
| 266 | |||
| 267 | if(DEB_PACKAGE_SHLIBDEPS) | ||
| 268 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_SHLIBDEPS ON) | ||
| 269 | endif() | ||
| 270 | |||
| 271 | if(DEB_PACKAGE_DEPENDS) | ||
| 272 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_DEPENDS "${DEB_PACKAGE_DEPENDS}") | ||
| 273 | endif() | ||
| 274 | |||
| 275 | if(DEB_PACKAGE_RECOMMENDS) | ||
| 276 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_RECOMMENDS "${DEB_PACKAGE_RECOMMENDS}") | ||
| 277 | endif() | ||
| 278 | |||
| 279 | if(DEB_PACKAGE_SUGGESTS) | ||
| 280 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_SUGGESTS "${DEB_PACKAGE_SUGGESTS}") | ||
| 281 | endif() | ||
| 282 | |||
| 283 | if(DEB_PACKAGE_BREAKS) | ||
| 284 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_BREAKS "${DEB_PACKAGE_BREAKS}") | ||
| 285 | endif() | ||
| 286 | |||
| 287 | if(DEB_PACKAGE_REPLACES) | ||
| 288 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_REPLACES "${DEB_PACKAGE_REPLACES}") | ||
| 289 | endif() | ||
| 290 | |||
| 291 | if(DEB_PACKAGE_PROVIDES) | ||
| 292 | set(CPACK_DEBIAN_${COMPONENT}_PACKAGE_PROVIDES "${DEB_PACKAGE_PROVIDES}") | ||
| 293 | endif() | ||
| 294 | |||
| 295 | if(NOT DEB_PACKAGE_DESCRIPTION_HEADER OR NOT DEB_PACKAGE_DESCRIPTION_FOOTER) | ||
| 296 | message(FATAL_ERROR "DEB Generator: Mandatory variable CPACK_COMPONENT_${COMPONENT}_DESCRIPTION is not set.") | ||
| 297 | else() | ||
| 298 | set(CPACK_COMPONENT_${COMPONENT}_DESCRIPTION "\ | ||
| 299 | ${DEB_PACKAGE_DESCRIPTION_HEADER}\n\ | ||
| 300 | ${CPACK_DEBIAN_PACKAGE_DESCRIPTION} \ | ||
| 301 | ${DEB_PACKAGE_DESCRIPTION_FOOTER}") | ||
| 302 | endif() | ||
| 303 | |||
| 304 | install(FILES ${CPACK_PACKAGE_DIRECTORY}/deb/changelog.Debian.gz | ||
| 305 | ${CPACK_PACKAGE_DIRECTORY}/deb/NEWS.Debian.gz | ||
| 306 | ${CMAKE_SOURCE_DIR}/cmake/cpack/deb/copyright | ||
| 307 | DESTINATION share/doc/${file} | ||
| 308 | COMPONENT ${file}) | ||
| 309 | |||
| 310 | # kodi package exclusive files | ||
| 311 | if(CPACK_DEBIAN_KODI_PACKAGE_NAME) | ||
| 312 | set(CPACK_DEBIAN_KODI_PACKAGE_CONTROL_EXTRA | ||
| 313 | "${CMAKE_SOURCE_DIR}/cmake/cpack/deb/postinst;${CMAKE_SOURCE_DIR}/cmake/cpack/deb/postrm") | ||
| 314 | install(FILES ${CMAKE_SOURCE_DIR}/cmake/cpack/deb/lintian/overrides/kodi | ||
| 315 | DESTINATION share/lintian/overrides | ||
| 316 | COMPONENT kodi) | ||
| 317 | install(FILES ${CMAKE_SOURCE_DIR}/cmake/cpack/deb/menu/kodi | ||
| 318 | DESTINATION share/menu | ||
| 319 | COMPONENT kodi) | ||
| 320 | endif() | ||
| 321 | endforeach() | ||
| 322 | unset(DEBIAN_PACKAGES) | ||
| 323 | |||
| 324 | ### source package generation specific variables | ||
| 325 | # source generator | ||
| 326 | set(CPACK_SOURCE_GENERATOR TGZ) | ||
| 327 | |||
| 328 | # source package name | ||
| 329 | set(CPACK_SOURCE_PACKAGE_FILE_NAME ${APP_NAME_LC}_${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}~git${PACKAGE_TIMESTAMP}-${RELEASE_IDENTIFIER}.orig) | ||
| 330 | unset(RELEASE_IDENTIFIER) | ||
| 331 | |||
| 332 | # ignore files for source package | ||
| 333 | set(CPACK_SOURCE_IGNORE_FILES | ||
| 334 | "/build/" | ||
| 335 | "/debian/" | ||
| 336 | "/.git/" | ||
| 337 | ".gitignore" | ||
| 338 | "yml$" | ||
| 339 | "~$") | ||
| 340 | |||
| 341 | # unset variables | ||
| 342 | unset(PACKAGE_TIMESTAMP) | ||
| 343 | unset(DISTRO_CODENAME) | ||
| 344 | |||
| 345 | # reference docs | ||
| 346 | # https://cmake.org/cmake/help/latest/module/CPack.html | ||
| 347 | # https://cmake.org/cmake/help/latest/module/CPackDeb.html | ||
| 348 | # https://cmake.org/cmake/help/latest/module/CPackComponent.html | ||
| 349 | include(CPack) | ||
