xref: /OK3568_Linux_fs/yocto/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/cockpit_220.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1SUMMARY = "Admin interface for Linux machines"
2DESCRIPTION = "Cockpit makes it easy to administer your GNU/Linux servers via a web browser"
3
4LICENSE = "LGPL-2.1-only"
5LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
6
7SRC_URI += " \
8    https://github.com/cockpit-project/cockpit/releases/download/${PV}/cockpit-${PV}.tar.xz \
9    file://0001-remove-tests-dep-on-gobject-intro.patch \
10    file://0002-fix-makefile-use-copy-rule-for-unmodified-files.patch \
11    file://cockpit.pam \
12    "
13SRC_URI[md5sum] = "beb88d8e70ee1da6ebd917c956217803"
14SRC_URI[sha256sum] = "afc82acc8ef9d51e0f34265a07a2f059f5b71a1df721b299e657a40a098cbb7f"
15
16inherit gettext pkgconfig autotools systemd features_check
17
18DEPENDS += "glib-2.0-native intltool-native gnutls virtual/gettext json-glib krb5 libpam systemd"
19
20COMPATIBLE_HOST:libc-musl = "null"
21
22RDEPENDS:${PN} += "glib-networking"
23
24REQUIRED_DISTRO_FEATURES = "systemd pam"
25
26COCKPIT_USER_GROUP ?= "root"
27COCKPIT_WS_USER_GROUP ?= "${COCKPIT_USER_GROUP}"
28
29EXTRA_AUTORECONF = "-I tools"
30EXTRA_OECONF = " \
31    --with-cockpit-user=${COCKPIT_USER_GROUP} \
32    --with-cockpit-group=${COCKPIT_USER_GROUP} \
33    --with-cockpit-ws-instance-user=${COCKPIT_WS_USER_GROUP} \
34    --with-cockpit-ws-instance-group=${COCKPIT_WS_USER_GROUP} \
35    --disable-doc \
36    --with-systemdunitdir=${systemd_system_unitdir} \
37"
38
39PACKAGECONFIG ??= " \
40    ${@bb.utils.filter('DISTRO_FEATURES', 'polkit', d)} \
41"
42
43PACKAGECONFIG[pcp] = "--enable-pcp,--disable-pcp,pcp"
44PACKAGECONFIG[dashboard] = "--enable-ssh,--disable-ssh,libssh"
45PACKAGECONFIG[storaged] = ",,,udisks2"
46PACKAGECONFIG[polkit] = "--enable-polkit,--disable-polkit,polkit"
47
48PACKAGES =+ " \
49    ${PN}-pcp \
50    ${PN}-realmd \
51    ${PN}-tuned \
52    ${PN}-shell \
53    ${PN}-systemd \
54    ${PN}-users \
55    ${PN}-kdump \
56    ${PN}-sosreport \
57    ${PN}-storaged \
58    ${PN}-networkmanager \
59    ${PN}-machines \
60    ${PN}-selinux \
61    ${PN}-playground \
62    ${PN}-docker \
63    ${PN}-dashboard \
64    ${PN}-bridge \
65    ${PN}-ws \
66    ${PN}-desktop \
67"
68SYSTEMD_PACKAGES = "${PN}-ws"
69
70FILES:${PN}-pcp = " \
71    ${libexecdir}/cockpit-pcp \
72    ${datadir}/cockpit/pcp \
73    ${localstatedir}/lib/pcp/config/pmlogconf/tools/cockpit \
74"
75FILES:${PN}-realmd = "${datadir}/cockpit/realmd"
76FILES:${PN}-tuned = "${datadir}/cockpit/tuned"
77FILES:${PN}-shell = "${datadir}/cockpit/shell"
78FILES:${PN}-systemd = "${datadir}/cockpit/systemd"
79FILES:${PN}-users = "${datadir}/cockpit/users"
80FILES:${PN}-kdump = " \
81    ${datadir}/cockpit/kdump \
82    ${datadir}/metainfo/org.cockpit-project.cockpit-kdump.metainfo.xml \
83"
84FILES:${PN}-sosreport = " \
85    ${datadir}/cockpit/sosreport \
86    ${datadir}/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml \
87    ${datadir}/pixmaps/cockpit-sosreport.png \
88"
89FILES:${PN}-storaged = " \
90    ${datadir}/cockpit/storaged \
91    ${datadir}/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml \
92"
93
94FILES:${PN}-networkmanager = "${datadir}/cockpit/networkmanager"
95RDEPENDS:${PN}-networkmanager = "networkmanager"
96
97FILES:${PN}-machines = " \
98    ${datadir}/cockpit/machines \
99    ${datadir}/metainfo/org.cockpit-project.cockpit-machines.metainfo.xml \
100"
101FILES:${PN}-selinux = " \
102    ${datadir}/cockpit/selinux \
103    ${datadir}/metainfo/org.cockpit-project.cockpit-selinux.metainfo.xml \
104"
105FILES:${PN}-playground = "${datadir}/cockpit/playground"
106FILES:${PN}-docker = " \
107    ${datadir}/cockpit/docker \
108    ${datadir}/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml \
109"
110FILES:${PN}-dashboard = "${datadir}/cockpit/dashboard"
111ALLOW_EMPTY:${PN}-dashboard = "1"
112
113FILES:${PN}-bridge = " \
114    ${bindir}/cockpit-bridge \
115    ${libexec}/cockpit-askpass \
116"
117RDEPENDS:${PN}-bridge = ""
118
119FILES:${PN}-desktop = "${libexecdir}/cockpit-desktop"
120RDEPENDS:${PN}-desktop += "bash"
121
122FILES:${PN}-ws = " \
123    ${sysconfdir}/cockpit/ws-certs.d \
124    ${sysconfdir}/pam.d/cockpit \
125    ${sysconfdir}/issue.d/cockpit.issue \
126    ${sysconfdir}/motd.d/cockpit \
127    ${datadir}/cockpit/motd/update-motd \
128    ${datadir}/cockpit/motd/inactive.motd \
129    ${systemd_system_unitdir}/cockpit.service \
130    ${systemd_system_unitdir}/cockpit-motd.service \
131    ${systemd_system_unitdir}/cockpit.socket \
132    ${systemd_system_unitdir}/cockpit-wsinstance-http.socket \
133    ${systemd_system_unitdir}/cockpit-wsinstance-http.service \
134    ${systemd_system_unitdir}/cockpit-wsinstance-http-redirect.socket \
135    ${systemd_system_unitdir}/cockpit-wsinstance-http-redirect.service \
136    ${systemd_system_unitdir}/cockpit-wsinstance-https-factory.socket \
137    ${systemd_system_unitdir}/cockpit-wsinstance-https-factory@.service \
138    ${systemd_system_unitdir}/cockpit-wsinstance-https@.socket \
139    ${systemd_system_unitdir}/cockpit-wsinstance-https@.service \
140    ${systemd_system_unitdir}/system-cockpithttps.slice \
141    ${libdir}/tmpfiles.d/cockpit-tempfiles.conf \
142    ${sbindir}/remotectl \
143    ${libdir}/security/pam_ssh_add.so \
144    ${libdir}/security/pam_cockpit_cert.so \
145    ${libexecdir}/cockpit-ws \
146    ${libexecdir}/cockpit-wsinstance-factory \
147    ${libexecdir}/cockpit-tls \
148    ${libexecdir}/cockpit-session \
149    ${localstatedir}/lib/cockpit \
150    ${datadir}/cockpit/static \
151    ${datadir}/cockpit/branding \
152"
153CONFFILES:${PN}-ws += " \
154    ${sysconfdir}/issue.d/cockpit.issue \
155    ${sysconfdir}/motd.d/cockpit \
156"
157RDEPENDS:${PN}-ws += "openssl-bin"
158SYSTEMD_SERVICE:${PN}-ws = "cockpit.socket"
159
160FILES:${PN} += " \
161    ${datadir}/cockpit/base1 \
162    ${sysconfdir}/cockpit/machines.d \
163    ${datadir}/polkit-1/actions/org.cockpit-project.cockpit-bridge.policy \
164    ${datadir}/cockpit/ssh \
165    ${libexecdir}/cockpit-ssh \
166    ${datadir}/cockpit \
167    ${datadir}/metainfo/cockpit.appdata.xml \
168    ${datadir}/pixmaps/cockpit.png \
169    ${nonarch_libdir}/tmpfiles.d \
170    ${nonarch_libdir}/firewalld \
171"
172RDEPENDS:${PN} += "${PN}-bridge"
173
174do_install:append() {
175    pkgdatadir=${datadir}/cockpit
176
177    chmod 4750 ${D}${libexecdir}/cockpit-session
178
179    install -d "${D}${sysconfdir}/pam.d"
180    install -p -m 0644 ${WORKDIR}/cockpit.pam ${D}${sysconfdir}/pam.d/cockpit
181
182    # provided by firewalld
183    rm -rf ${D}${libdir}/firewalld
184
185    if ! ${@bb.utils.contains('PACKAGECONFIG', 'storaged', 'true', 'false', d)}; then
186        for filename in ${FILES:${PN}-storaged}
187        do
188            rm -rf ${D}$filename
189        done
190    fi
191}
192