-
Notifications
You must be signed in to change notification settings - Fork 319
Expand file tree
/
Copy pathcpack_deb.cmake
More file actions
100 lines (82 loc) · 3.94 KB
/
cpack_deb.cmake
File metadata and controls
100 lines (82 loc) · 3.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# required for DEB-DEFAULT to work as intended
cmake_minimum_required(VERSION 3.6)
# Fix for https://github.com/TheAssassin/AppImageLauncher/issues/28
execute_process(
COMMAND lsb_release -c
OUTPUT_VARIABLE _lsb_release_output
)
if(_lsb_release_output MATCHES bionic)
message(STATUS "platform is bionic, enabling compatibility mode for CPack Debian packaging")
set(_compatibility_level bionic)
elseif(_lsb_release_output MATCHES cosmic)
message(STATUS "platform is cosmic, enabling compatibility mode for CPack Debian packaging")
set(_compatibility_level cosmic)
elseif(_lsb_release_output MATCHES disco)
message(STATUS "platform is disco, enabling compatibility mode for CPack Debian packaging")
set(_compatibility_level disco)
elseif(_lsb_release_output MATCHES eoan)
message(STATUS "platform is eoan, enabling compatibility mode for CPack Debian packaging")
set(_compatibility_level eoan)
else()
set(_compatibility_level "")
endif()
set(CPACK_DEBIAN_COMPATIBILITY_LEVEL ${_compatibility_level} CACHE STRING "Available values: bionic (Ubuntu 18.04 LTS), cosmic (Ubuntu 18.10), disco (Ubuntu 19.04), eoan (Ubuntu 19.10)")
unset(_lsb_release_output)
unset(_compatibility_level)
# allow building Debian packages on non-Debian systems
if(DEFINED ENV{ARCH})
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE $ENV{ARCH})
if(CPACK_DEBIAN_PACKAGE_ARCHITECTURE MATCHES "i686")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386")
elseif(CPACK_DEBIAN_PACKAGE_ARCHITECTURE MATCHES "x86_64")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
elseif(CPACK_DEBIAN_PACKAGE_ARCHITECTURE MATCHES "aarch64")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "arm64")
endif()
endif()
# make sure to package components separately
#set(CPACK_DEB_PACKAGE_COMPONENT ON)
set(CPACK_DEB_COMPONENT_INSTALL ON)
# override default package naming
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
# Debian packaging global options
set(CPACK_DEBIAN_COMPRESSION_TYPE xz)
# use git hash as package release
set(CPACK_DEBIAN_PACKAGE_RELEASE "${APPIMAGELAUNCHER_GIT_COMMIT}")
# append build ID, similar to AppImage naming
if(DEFINED ENV{GITHUB_RUN_NUMBER})
set(CPACK_DEBIAN_PACKAGE_RELEASE "gha$ENV{GITHUB_RUN_NUMBER}~${CPACK_DEBIAN_PACKAGE_RELEASE}")
else()
set(CPACK_DEBIAN_PACKAGE_RELEASE "local~${CPACK_DEBIAN_PACKAGE_RELEASE}")
endif()
if(CPACK_DEBIAN_COMPATIBILITY_LEVEL)
set(CPACK_DEBIAN_PACKAGE_RELEASE "${CPACK_DEBIAN_PACKAGE_RELEASE}+${CPACK_DEBIAN_COMPATIBILITY_LEVEL}")
endif()
# bash is required to run install hooks
set(CPACK_DEBIAN_APPIMAGELAUNCHER_PACKAGE_PREDEPENDS bash)
# package name
set(CPACK_DEBIAN_APPIMAGELAUNCHER_PACKAGE_NAME "appimagelauncher")
# TODO: packagers watch out: you should set this to depend on a libappimage package, and avoid installing the library
# to a custom location in install.cmake
if(CPACK_DEBIAN_COMPATIBILITY_LEVEL STREQUAL "bionic" OR CPACK_DEBIAN_COMPATIBILITY_LEVEL STREQUAL "cosmic" OR CPACK_DEBIAN_COMPATIBILITY_LEVEL STREQUAL "disco" OR CPACK_DEBIAN_COMPATIBILITY_LEVEL STREQUAL "eoan")
set(CPACK_DEBIAN_APPIMAGELAUNCHER_PACKAGE_DEPENDS "libqt5dbus5 (>= 5.9), libqt5widgets5 (>= 5.2.1), libqt5gui5 (>= 5.2.1), libqt5core5a (>= 5.2.1), binfmt-support (>= 2.0), systemd, libcurl4")
else()
set(CPACK_DEBIAN_APPIMAGELAUNCHER_PACKAGE_DEPENDS "libqt5dbus5 (>= 5.2.1), libqt5widgets5 (>= 5.2.1), libqt5gui5 (>= 5.2.1), libqt5core5a (>= 5.2.1), binfmt-support (>= 2.0), systemd, libcurl3")
endif()
# improve dependency list
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
# add postinst and prerm hooks to Debian package
configure_file(
${PROJECT_SOURCE_DIR}/resources/install-scripts/post-install.in
${PROJECT_BINARY_DIR}/cmake/debian/postinst
@ONLY
)
configure_file(
${PROJECT_SOURCE_DIR}/resources/install-scripts/post-uninstall.in
${PROJECT_BINARY_DIR}/cmake/debian/postrm
@ONLY
)
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
"${PROJECT_BINARY_DIR}/cmake/debian/postinst"
"${PROJECT_BINARY_DIR}/cmake/debian/postrm"
)