xref: /openbmc/openbmc/meta-openembedded/meta-webserver/recipes-webadmin/cockpit/cockpit_337.bb (revision eaae0b339f806200d8722cb09e5e3b83c15a5956)
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-Warn-not-error-if-xsltproc-is-not-found.patch \
10    file://0001-Makefile-common.am-Create-src-common-directory-befor.patch \
11    file://cockpit.pam \
12    "
13SRC_URI[sha256sum] = "df51ef5920fae69e1b435f657376aa93772c0c1720b954a3bac10ebba26bfedf"
14
15inherit gettext pkgconfig autotools systemd features_check
16inherit ${@bb.utils.contains('PACKAGECONFIG', 'old-bridge', '', 'python3targetconfig', d)}
17
18DEPENDS += "glib-2.0-native intltool-native gnutls virtual/gettext json-glib krb5 libpam systemd python3-setuptools-native"
19DEPENDS += "${@bb.utils.contains('PACKAGECONFIG', 'old-bridge', '', 'python3-pip-native', d)}"
20
21COMPATIBLE_HOST:libc-musl = "null"
22
23RDEPENDS:${PN} += "glib-networking"
24
25REQUIRED_DISTRO_FEATURES = "systemd pam"
26
27COCKPIT_USER_GROUP ?= "root"
28
29EXTRA_AUTORECONF = "-I tools"
30EXTRA_OECONF = " \
31    --with-admin-group=${COCKPIT_USER_GROUP} \
32    --disable-doc \
33    --with-systemdunitdir=${systemd_system_unitdir} \
34    --with-pamdir=${base_libdir}/security \
35"
36
37PACKAGECONFIG ??= " \
38    ${@bb.utils.filter('DISTRO_FEATURES', 'polkit', d)} \
39"
40
41PACKAGECONFIG[pcp] = ",,pcp"
42PACKAGECONFIG[dashboard] = ",,libssh"
43PACKAGECONFIG[storaged] = ",,udisks2"
44PACKAGECONFIG[polkit] = ",,polkit"
45
46PACKAGES =+ " \
47    ${PN}-pcp \
48    ${PN}-realmd \
49    ${PN}-tuned \
50    ${PN}-shell \
51    ${PN}-systemd \
52    ${PN}-users \
53    ${PN}-kdump \
54    ${PN}-sosreport \
55    ${PN}-storaged \
56    ${PN}-networkmanager \
57    ${PN}-selinux \
58    ${PN}-playground \
59    ${PN}-dashboard \
60    ${PN}-packagekit \
61    ${PN}-apps \
62    ${PN}-bridge \
63    ${PN}-ws \
64    ${PN}-desktop \
65"
66SYSTEMD_PACKAGES = "${PN}-ws"
67
68FILES:${PN}-pcp = " \
69    ${libexecdir}/cockpit-pcp \
70    ${datadir}/cockpit/pcp \
71    ${localstatedir}/lib/pcp/config/pmlogconf/tools/cockpit \
72"
73FILES:${PN}-realmd = "${datadir}/cockpit/realmd"
74FILES:${PN}-tuned = "${datadir}/cockpit/tuned"
75FILES:${PN}-shell = "${datadir}/cockpit/shell"
76FILES:${PN}-systemd = "${datadir}/cockpit/systemd"
77FILES:${PN}-users = "${datadir}/cockpit/users"
78FILES:${PN}-kdump = " \
79    ${datadir}/cockpit/kdump \
80    ${datadir}/metainfo/org.cockpit_project.cockpit_kdump.metainfo.xml \
81"
82FILES:${PN}-sosreport = " \
83    ${datadir}/cockpit/sosreport \
84    ${datadir}/metainfo/org.cockpit_project.cockpit_sosreport.metainfo.xml \
85    ${datadir}/pixmaps/cockpit-sosreport.png \
86    ${datadir}/icons/hicolor/64x64/apps/cockpit-sosreport.png \
87"
88FILES:${PN}-storaged = " \
89    ${datadir}/cockpit/storaged \
90    ${datadir}/metainfo/org.cockpit_project.cockpit_storaged.metainfo.xml \
91"
92
93FILES:${PN}-networkmanager = " \
94    ${datadir}/cockpit/networkmanager \
95    ${datadir}/metainfo/org.cockpit_project.cockpit_networkmanager.metainfo.xml \
96"
97RDEPENDS:${PN}-networkmanager = "networkmanager"
98
99FILES:${PN}-selinux = " \
100    ${datadir}/cockpit/selinux \
101    ${datadir}/metainfo/org.cockpit_project.cockpit_selinux.metainfo.xml \
102"
103FILES:${PN}-playground = "${datadir}/cockpit/playground"
104FILES:${PN}-dashboard = "${datadir}/cockpit/dashboard"
105ALLOW_EMPTY:${PN}-dashboard = "1"
106
107FILES:${PN}-packagekit = "${datadir}/cockpit/packagekit"
108FILES:${PN}-apps = "${datadir}/cockpit/apps"
109
110FILES:${PN}-bridge = " \
111    ${bindir}/cockpit-bridge \
112    ${libexecdir}/cockpit-askpass \
113    ${PYTHON_SITEPACKAGES_DIR} \
114"
115RDEPENDS:${PN}-bridge = "${@bb.utils.contains('PACKAGECONFIG', 'old-bridge', '', 'python3', d)}"
116
117FILES:${PN}-desktop = "${libexecdir}/cockpit-desktop"
118RDEPENDS:${PN}-desktop += "bash"
119
120FILES:${PN}-ws = " \
121    ${sysconfdir}/cockpit/ws-certs.d \
122    ${sysconfdir}/pam.d/cockpit \
123    ${sysconfdir}/issue.d/cockpit.issue \
124    ${sysconfdir}/motd.d/cockpit \
125    ${datadir}/cockpit/motd/update-motd \
126    ${datadir}/cockpit/motd/inactive.motd \
127    ${systemd_system_unitdir}/cockpit.service \
128    ${systemd_system_unitdir}/cockpit-motd.service \
129    ${systemd_system_unitdir}/cockpit.socket \
130    ${systemd_system_unitdir}/cockpit-session.socket \
131    ${systemd_system_unitdir}/cockpit-session@.service \
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    ${systemd_system_unitdir}/cockpit-session-socket-user.service \
142    ${systemd_system_unitdir}/cockpit-wsinstance-socket-user.service \
143    ${systemd_system_unitdir}/cockpit-issue.service \
144    ${libdir}/tmpfiles.d/cockpit-tempfiles.conf \
145    ${sbindir}/remotectl \
146    ${base_libdir}/security/pam_ssh_add.so \
147    ${base_libdir}/security/pam_cockpit_cert.so \
148    ${libexecdir}/cockpit-ws \
149    ${libexecdir}/cockpit-wsinstance-factory \
150    ${libexecdir}/cockpit-tls \
151    ${libexecdir}/cockpit-session \
152    ${localstatedir}/lib/cockpit \
153    ${datadir}/cockpit/static \
154    ${datadir}/cockpit/branding \
155"
156CONFFILES:${PN}-ws += " \
157    ${sysconfdir}/issue.d/cockpit.issue \
158    ${sysconfdir}/motd.d/cockpit \
159"
160RDEPENDS:${PN}-ws += "openssl-bin"
161SYSTEMD_SERVICE:${PN}-ws = "cockpit.socket"
162
163FILES:${PN} += " \
164    ${datadir}/cockpit/base1 \
165    ${sysconfdir}/cockpit/machines.d \
166    ${datadir}/polkit-1/actions/org.cockpit-project.cockpit-bridge.policy \
167    ${datadir}/cockpit/ssh \
168    ${libexecdir}/cockpit-ssh \
169    ${datadir}/cockpit \
170    ${datadir}/icons/hicolor/128x128/apps/cockpit.png \
171    ${datadir}/metainfo/org.cockpit_project.cockpit.appdata.xml \
172    ${datadir}/pixmaps/cockpit.png \
173    ${nonarch_libdir}/tmpfiles.d \
174    ${nonarch_libdir}/firewalld \
175"
176RDEPENDS:${PN} += "${PN}-bridge"
177# Needs bash for /usr/libexec/cockpit-certificate-helper
178RDEPENDS:${PN} += "bash"
179
180do_install:append() {
181    pkgdatadir=${datadir}/cockpit
182
183    chmod 4750 ${D}${libexecdir}/cockpit-session
184
185    install -d "${D}${sysconfdir}/pam.d"
186    install -p -m 0644 ${UNPACKDIR}/cockpit.pam ${D}${sysconfdir}/pam.d/cockpit
187
188    # provided by firewalld
189    rm -rf ${D}${libdir}/firewalld \
190    ${D}${PYTHON_SITEPACKAGES_DIR}/*/__pycache__ \
191    ${D}${PYTHON_SITEPACKAGES_DIR}/*/*/__pycache__ \
192    ${D}${PYTHON_SITEPACKAGES_DIR}/*/*/*/__pycache__ \
193    ${D}${PYTHON_SITEPACKAGES_DIR}/*/*/*/*/__pycache__ \
194    ${D}${PYTHON_SITEPACKAGES_DIR}/${BP}.dist-info/direct_url.json
195
196    if ! ${@bb.utils.contains('PACKAGECONFIG', 'storaged', 'true', 'false', d)}; then
197        for filename in ${FILES:${PN}-storaged}
198        do
199            rm -rf ${D}$filename
200        done
201    fi
202}
203