From 55b44b2d8a204a270f800dc318360d57737ea8590ca9bbbebfcb76a3b544ae18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= Date: Wed, 15 Apr 2020 08:21:19 +0000 Subject: [PATCH] Accepting request 791691 from home:lnussel:branches:systemsmanagement:cockpit - new version 215 Note even though the diff might look wild it's actually synced up with upstream. I sent most changes there and they were accepted. License string and libpwquality change are still pending approval, the test has been merged. What's left is this: https://github.com/lnussel/cockpit/commit/ae413cf9cf8c3620e2bd1f1a05802f0e72736c2b OBS-URL: https://build.opensuse.org/request/show/791691 OBS-URL: https://build.opensuse.org/package/show/systemsmanagement:cockpit/cockpit?expand=0&rev=26 --- 0001-openSUSE-Tumbleweed-branding.patch | 79 ++++ 0001-test-handle-XDG_CONFIG_DIRS.patch | 41 ++ cockpit-195.tar.xz | 3 - cockpit-215.tar.xz | 3 + cockpit.changes | 10 + cockpit.spec | 499 ++++++++---------------- 6 files changed, 293 insertions(+), 342 deletions(-) create mode 100644 0001-openSUSE-Tumbleweed-branding.patch create mode 100644 0001-test-handle-XDG_CONFIG_DIRS.patch delete mode 100644 cockpit-195.tar.xz create mode 100644 cockpit-215.tar.xz diff --git a/0001-openSUSE-Tumbleweed-branding.patch b/0001-openSUSE-Tumbleweed-branding.patch new file mode 100644 index 0000000..2c986bb --- /dev/null +++ b/0001-openSUSE-Tumbleweed-branding.patch @@ -0,0 +1,79 @@ +From 43541b196f8816b743f83e38a4e33367610dbde8 Mon Sep 17 00:00:00 2001 +From: Ludwig Nussel +Date: Tue, 31 Mar 2020 13:12:18 +0200 +Subject: [PATCH] openSUSE Tumbleweed branding + +--- + Makefile.am | 1 + + src/branding/opensuse-tumbleweed/Makefile.am | 11 ++++++++++ + src/branding/opensuse-tumbleweed/branding.css | 30 +++++++++++++++++++++++++++ + tools/cockpit.spec | 2 +- + 4 files changed, 43 insertions(+), 1 deletion(-) + create mode 100644 src/branding/opensuse-tumbleweed/Makefile.am + create mode 100644 src/branding/opensuse-tumbleweed/branding.css + +diff --git a/Makefile.am b/Makefile.am +index bee855890..f76b4a349 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -444,6 +444,7 @@ include src/branding/debian/Makefile.am + include src/branding/default/Makefile.am + include src/branding/fedora/Makefile.am + include src/branding/kubernetes/Makefile.am ++include src/branding/opensuse-tumbleweed/Makefile.am + include src/branding/registry/Makefile.am + include src/branding/rhel/Makefile.am + include src/branding/scientific/Makefile.am +diff --git a/src/branding/opensuse-tumbleweed/Makefile.am b/src/branding/opensuse-tumbleweed/Makefile.am +new file mode 100644 +index 000000000..f45234ccb +--- /dev/null ++++ b/src/branding/opensuse-tumbleweed/Makefile.am +@@ -0,0 +1,11 @@ ++tumbleweedbrandingdir = $(datadir)/cockpit/branding/opensuse-tumbleweed ++ ++tumbleweedbranding_DATA = \ ++ src/branding/opensuse-tumbleweed/branding.css \ ++ $(NULL) ++ ++EXTRA_DIST += $(tumbleweedbranding_DATA) ++ ++install-data-hook:: ++ $(LN_S) -f /usr/share/wallpapers/default-1920x1200.jpg $(DESTDIR)$(tumbleweedbrandingdir)/default-1920x1200.jpg ++ $(LN_S) -f /usr/share/pixmaps/distribution-logos/square-hicolor.svg $(DESTDIR)$(tumbleweedbrandingdir)/square-hicolor.svg +diff --git a/src/branding/opensuse-tumbleweed/branding.css b/src/branding/opensuse-tumbleweed/branding.css +new file mode 100644 +index 000000000..e9191d4ef +--- /dev/null ++++ b/src/branding/opensuse-tumbleweed/branding.css +@@ -0,0 +1,30 @@ ++.navbar-pf { ++ border-color: #73ba25 !important; ++} ++ ++body.login-pf { ++ background: url("default-1920x1200.jpg") no-repeat 50% 0; ++ background-size: cover; ++ background-color: #42474c; ++} ++ ++#badge { ++ width: 5em; ++ height: 5em; ++ background-image: url("square-hicolor.svg"); ++ background-size: contain; ++ background-repeat: no-repeat; ++} ++ ++#brand { ++ font-size: 18pt; ++ text-transform: uppercase; ++} ++ ++#brand:before { ++ content: "${NAME}"; ++} ++ ++#index-brand:before { ++ content: "${NAME}"; ++} diff --git a/0001-test-handle-XDG_CONFIG_DIRS.patch b/0001-test-handle-XDG_CONFIG_DIRS.patch new file mode 100644 index 0000000..93ebbc1 --- /dev/null +++ b/0001-test-handle-XDG_CONFIG_DIRS.patch @@ -0,0 +1,41 @@ +From 0f38a3a889b71351dae831d017958bec955daaaa Mon Sep 17 00:00:00 2001 +From: Ludwig Nussel +Date: Thu, 26 Mar 2020 18:12:07 +0100 +Subject: [PATCH] test: handle XDG_CONFIG_DIRS + +Previously the test would fail in an environment where XDG_CONFIG_DIRS +was set as it takes precedence over the built in defaults. So let's just +set XDG_CONFIG_DIRS and test that feature instead. +--- + src/common/test-config.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/common/test-config.c b/src/common/test-config.c +index cf5b8746b..4b5153153 100644 +--- a/src/common/test-config.c ++++ b/src/common/test-config.c +@@ -27,7 +27,6 @@ + + /* Mock override cockpitconf.c */ + extern const gchar *cockpit_config_file; +-extern const gchar *cockpit_config_dirs[]; + + static void + test_get_strings (void) +@@ -134,11 +133,11 @@ test_get_strvs (void) + static void + test_load_dir (void) + { +- cockpit_config_dirs[0] = SRCDIR "/src/ws/mock-config"; ++ g_setenv("XDG_CONFIG_DIRS", "/does-not-exist:" SRCDIR "/src/ws/mock-config", 1); + cockpit_config_file = "cockpit.conf"; + + g_assert_cmpstr (cockpit_conf_string ("Section2", "value1"), ==, "string"); +- g_assert_cmpstr (cockpit_conf_get_dirs ()[0], ==, SRCDIR "/src/ws/mock-config"); ++ g_assert_cmpstr (cockpit_conf_get_dirs ()[1], ==, SRCDIR "/src/ws/mock-config"); + cockpit_conf_cleanup (); + } + +-- +2.16.4 + diff --git a/cockpit-195.tar.xz b/cockpit-195.tar.xz deleted file mode 100644 index 070fc40..0000000 --- a/cockpit-195.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eaf55c9abe36b310e9d34094f9481021b6013bb5679e4e531020bc4c45d603b9 -size 12864016 diff --git a/cockpit-215.tar.xz b/cockpit-215.tar.xz new file mode 100644 index 0000000..577adbe --- /dev/null +++ b/cockpit-215.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d62c42ddbcfd03c28d7929258d25b57e823a7e2fd9c25cb74d4dd92b55c580d +size 13253380 diff --git a/cockpit.changes b/cockpit.changes index 7e5747b..3422317 100644 --- a/cockpit.changes +++ b/cockpit.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Fri Mar 27 10:50:51 UTC 2020 - Ludwig Nussel + +- new version 215 + +------------------------------------------------------------------- +Thu Aug 22 09:50:14 UTC 2019 - Ludwig Nussel + +- new version 200 + ------------------------------------------------------------------- Fri Jun 21 13:44:05 UTC 2019 - Boris Manojlovic diff --git a/cockpit.spec b/cockpit.spec index e47a9c5..758a8ec 100644 --- a/cockpit.spec +++ b/cockpit.spec @@ -41,58 +41,36 @@ # build optional extensions like cockpit-docker %define build_optional 1 -# cockpit's firewall service definition moved to firewalld -%if 0%{?fedora} >= 29 || 0%{?rhel} >= 8 -%define firewalld_service 0 -%else -%define firewalld_service 1 -%endif - %define __lib lib -# on RHEL 7.x we build subscriptions; superseded later by -# external subscription-manager-cockpit -%if (0%{?rhel} >= 7 && 0%{?rhel} < 8) && 0%{?centos} == 0 -%define build_subscriptions 1 -%endif - -# cockpit-kubernetes is RHEL 7 and Fedora < 30 only, and 64 bit arches only -%if (0%{?fedora} && 0%{?fedora} < 30) || (0%{?rhel} >= 7 && 0%{?rhel} < 8) -%ifarch aarch64 x86_64 ppc64le s390x -%define build_kubernetes 1 -%endif -%endif - -# cockpit-machines-ovirt is RHEL 7 and Fedora < 30 only -%if (0%{?fedora} && 0%{?fedora} < 30) || (0%{?rhel} >= 7 && 0%{?rhel} < 8) -%define build_ovirt 1 -%endif - -%if 0%{?rhel} >= 8 -%global go_scl_prefix go-toolset-7- -%else -%global go_scl_prefix %{nil} -%endif - -%if 0%{?rhel} >= 7 +%if 0%{?rhel} %define vdo_on_demand 1 %endif +%if 0%{?suse_version} +%define pamdir /%{_lib}/security +%else +%define pamdir %{_libdir}/security +%endif + Name: cockpit Summary: Web Console for Linux servers -License: LGPLv2+ +License: LGPL-2.1-or-later URL: https://cockpit-project.org/ -Version: 195 +Version: 215 %if %{defined wip} Release: 1.%{wip}%{?dist} Source0: cockpit-%{version}.tar.gz %else -Release: 1%{?dist} +Release: 0 Source0: https://github.com/cockpit-project/cockpit/releases/download/%{version}/cockpit-%{version}.tar.xz %endif -Source1: cockpit.pam +Source1: cockpit.pam +# merged upstream after 215 +Patch: 0001-test-handle-XDG_CONFIG_DIRS.patch +Patch1: 0001-openSUSE-Tumbleweed-branding.patch BuildRequires: gcc BuildRequires: pkgconfig(gio-unix-2.0) @@ -101,46 +79,39 @@ BuildRequires: pkgconfig(polkit-agent-1) >= 0.105 BuildRequires: pam-devel BuildRequires: autoconf automake -%if 0%{?fedora} || 0%{?rhel} >= 8 || 0%{?suse_version} > 1315 BuildRequires: /usr/bin/python3 -%else - %if 0%{?suse_version} -BuildRequires: python-base - %else -BuildRequires: /usr/bin/python2 - %endif -%endif -BuildRequires: intltool +BuildRequires: gettext >= 0.19.7 %if %{defined build_dashboard} -BuildRequires: libssh-devel >= 0.7.1 +BuildRequires: libssh-devel >= 0.8 %endif BuildRequires: openssl-devel +BuildRequires: gnutls-devel >= 3.4.3 BuildRequires: zlib-devel -BuildRequires: krb5-devel +BuildRequires: krb5-devel >= 1.11 BuildRequires: libxslt-devel -%if 0%{?fedora} || 0%{?rhel} -BuildRequires: docbook-style-xsl -%endif BuildRequires: glib-networking BuildRequires: sed BuildRequires: glib2-devel >= 2.37.4 -BuildRequires: systemd-devel -%if 0%{?fedora} || 0%{?rhel} -BuildRequires: pcp-libs-devel -%else - %if 0%{?suse_version} +# this is for runtimedir in the tls proxy ace21c8879 +BuildRequires: systemd-devel >= 235 +%if 0%{?suse_version} +BuildRequires: distribution-release BuildRequires: libpcp-devel BuildRequires: pcp-devel BuildRequires: libpcp3 BuildRequires: libpcp_import1 - %endif +BuildRequires: openssh +BuildRequires: distribution-logos +BuildRequires: wallpaper-branding +%else +BuildRequires: pcp-libs-devel +BuildRequires: openssh-clients +BuildRequires: docbook-style-xsl %endif BuildRequires: krb5-server BuildRequires: gdb -%if 0%{?fedora} || 0%{?rhel} -BuildRequires: openssh-clients -%endif + # For documentation BuildRequires: xmlto @@ -152,80 +123,70 @@ Requires: cockpit-ws Requires: cockpit-system # Optional components -%if 0%{?fedora} || 0%{?rhel} >= 8 -%if 0%{?rhel} == 0 -Recommends: cockpit-dashboard +Recommends: (cockpit-storaged if udisks2) +Recommends: cockpit-packagekit +Suggests: cockpit-pcp + %ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x +%if 0%{?fedora} == 31 && 0%{?build_optional} +%define build_docker 1 Recommends: (cockpit-docker if /usr/bin/docker) %endif %endif + +%if 0%{?rhel} == 0 +Recommends: cockpit-dashboard Recommends: (cockpit-networkmanager if NetworkManager) -Recommends: (cockpit-storaged if udisks2) -Recommends: cockpit-packagekit -%if 0%{?rhel} >= 8 && 0%{?centos} == 0 -Recommends: subscription-manager-cockpit -%endif -Suggests: cockpit-pcp -%if 0%{?build_kubernetes} -Suggests: cockpit-kubernetes -%endif Suggests: cockpit-selinux %endif +%if 0%{?rhel} && 0%{?centos} == 0 +Recommends: subscription-manager-cockpit +%endif %prep %setup -q -n cockpit-%{version} +%autopatch -p1 +cp %SOURCE1 tools/cockpit.pam %build exec 2>&1 %configure \ --disable-silent-rules \ --with-cockpit-user=cockpit-ws \ + --with-cockpit-ws-instance-user=cockpit-wsinstance \ --with-selinux-config-type=etc_t \ -%if 0%{?rhel} >= 7 && 0%{?rhel} < 8 - --without-storaged-iscsi-sessions \ -%endif -%if 0%{?suse_version} - --docdir=%_defaultdocdir/%{name} \ - --with-pamdir='/%{_lib}/security' \ -%endif --with-appstream-data-packages='[ "appstream-data" ]' \ --with-nfs-client-package='"nfs-utils"' \ +%if 0%{?suse_version} + --docdir=%_defaultdocdir/%{name} \ +%endif + --with-pamdir='%{pamdir}' \ %{?vdo_on_demand:--with-vdo-package='"vdo"'} make -j4 %{?extra_flags} all %check exec 2>&1 -%if ! 0%{?opensuse_bs} make -j4 check -%else -echo "we are in Build service most test fail as no network" -%endif %install make install DESTDIR=%{buildroot} make install-tests DESTDIR=%{buildroot} mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d -install -p -m 644 %{S:1} $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/cockpit +install -p -m 644 tools/cockpit.pam $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/cockpit rm -f %{buildroot}/%{_libdir}/cockpit/*.so -%if 0%{?firewalld_service} == 0 +# shipped in firewalld since 0.6, everywhere in Fedora/RHEL 8 rm -f %{buildroot}/%{_prefix}/%{__lib}/firewalld/services/cockpit.xml -%endif -mkdir -p $RPM_BUILD_ROOT%{_docdir}/cockpit/ -install -p -m 644 AUTHORS COPYING README.md %{buildroot}%{_docdir}/cockpit/ +install -D -p -m 644 AUTHORS COPYING README.md %{buildroot}%{_docdir}/cockpit/ # Build the package lists for resource packages echo '%dir %{_datadir}/cockpit/base1' > base.list +echo '%dir %{_datadir}/cockpit/base1/fonts' >> base.list find %{buildroot}%{_datadir}/cockpit/base1 -type f >> base.list echo '%{_sysconfdir}/cockpit/machines.d' >> base.list echo %{buildroot}%{_datadir}/polkit-1/actions/org.cockpit-project.cockpit-bridge.policy >> base.list -# RHEL 7 needs to keep cockpit-ssh in dashboard for backwards compat -%if 0%{?rhel} == 7 -find %{buildroot}%{_datadir}/cockpit/ssh -type f >> dashboard.list -echo '%{_libexecdir}/cockpit-ssh' >> dashboard.list -%else +echo '%dir %{_datadir}/cockpit/ssh' >> base.list find %{buildroot}%{_datadir}/cockpit/ssh -type f >> base.list echo '%{_libexecdir}/cockpit-ssh' >> base.list -%endif %if %{defined build_dashboard} echo '%dir %{_datadir}/cockpit/dashboard' >> dashboard.list @@ -238,9 +199,6 @@ touch dashboard.list echo '%dir %{_datadir}/cockpit/pcp' >> pcp.list find %{buildroot}%{_datadir}/cockpit/pcp -type f >> pcp.list -echo '%dir %{_datadir}/cockpit/realmd' >> system.list -find %{buildroot}%{_datadir}/cockpit/realmd -type f >> system.list - echo '%dir %{_datadir}/cockpit/tuned' >> system.list find %{buildroot}%{_datadir}/cockpit/tuned -type f >> system.list @@ -259,13 +217,6 @@ find %{buildroot}%{_datadir}/cockpit/kdump -type f >> kdump.list echo '%dir %{_datadir}/cockpit/sosreport' > sosreport.list find %{buildroot}%{_datadir}/cockpit/sosreport -type f >> sosreport.list -%if %{defined build_subscriptions} -echo '%dir %{_datadir}/cockpit/subscriptions' >> system.list -find %{buildroot}%{_datadir}/cockpit/subscriptions -type f >> system.list -%else -rm -rf %{buildroot}/%{_datadir}/cockpit/subscriptions -%endif - echo '%dir %{_datadir}/cockpit/storaged' > storaged.list find %{buildroot}%{_datadir}/cockpit/storaged -type f >> storaged.list @@ -281,51 +232,24 @@ find %{buildroot}%{_datadir}/cockpit/apps -type f >> packagekit.list echo '%dir %{_datadir}/cockpit/machines' > machines.list find %{buildroot}%{_datadir}/cockpit/machines -type f >> machines.list -%if 0%{?build_ovirt} -echo '%dir %{_datadir}/cockpit/ovirt' > ovirt.list -find %{buildroot}%{_datadir}/cockpit/ovirt -type f >> ovirt.list -%else -rm -rf %{buildroot}/%{_datadir}/cockpit/ovirt -touch ovirt.list -%endif - echo '%dir %{_datadir}/cockpit/selinux' > selinux.list find %{buildroot}%{_datadir}/cockpit/selinux -type f >> selinux.list echo '%dir %{_datadir}/cockpit/playground' > tests.list find %{buildroot}%{_datadir}/cockpit/playground -type f >> tests.list -%ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x -%if 0%{?fedora} || 0%{?rhel} < 8 +%if 0%{?build_docker} echo '%dir %{_datadir}/cockpit/docker' > docker.list find %{buildroot}%{_datadir}/cockpit/docker -type f >> docker.list %else rm -rf %{buildroot}/%{_datadir}/cockpit/docker +rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml touch docker.list %endif -%else -rm -rf %{buildroot}/%{_datadir}/cockpit/docker -touch docker.list -%endif - -%if 0%{?build_kubernetes} -%if %{defined wip} -%else -rm %{buildroot}/%{_datadir}/cockpit/kubernetes/override.json -%endif -echo '%dir %{_datadir}/cockpit/kubernetes' > kubernetes.list -find %{buildroot}%{_datadir}/cockpit/kubernetes -type f >> kubernetes.list -%else -rm -rf %{buildroot}/%{_datadir}/cockpit/kubernetes -rm -f %{buildroot}/%{_libexecdir}/cockpit-kube-auth -rm -f %{buildroot}/%{_libexecdir}/cockpit-kube-launch -rm %{buildroot}/%{_libexecdir}/cockpit-stub -touch kubernetes.list -%endif # when not building basic packages, remove their files %if 0%{?build_basic} == 0 -for pkg in base1 branding motd kdump networkmanager realmd selinux shell sosreport ssh static systemd tuned users; do +for pkg in base1 branding motd kdump networkmanager selinux shell sosreport ssh static systemd tuned users; do rm -r %{buildroot}/%{_datadir}/cockpit/$pkg rm -f %{buildroot}/%{_datadir}/metainfo/org.cockpit-project.cockpit-${pkg}.metainfo.xml done @@ -335,7 +259,7 @@ done for lib in systemd tmpfiles.d firewalld; do rm -r %{buildroot}/%{_prefix}/%{__lib}/$lib done -for libexec in cockpit-askpass cockpit-session cockpit-ws cockpit-desktop; do +for libexec in cockpit-askpass cockpit-session cockpit-ws cockpit-tls cockpit-wsinstance-factory cockpit-desktop; do rm %{buildroot}/%{_libexecdir}/$libexec done rm -r %{buildroot}/%{_libdir}/security %{buildroot}/%{_sysconfdir}/pam.d %{buildroot}/%{_sysconfdir}/motd.d %{buildroot}/%{_sysconfdir}/issue.d @@ -346,65 +270,34 @@ rm -f %{buildroot}%{_datadir}/metainfo/cockpit.appdata.xml # when not building optional packages, remove their files %if 0%{?build_optional} == 0 -for pkg in apps dashboard docker kubernetes machines ovirt packagekit pcp playground storaged; do +for pkg in apps dashboard docker machines packagekit pcp playground storaged; do rm -rf %{buildroot}/%{_datadir}/cockpit/$pkg done # files from -tests rm -r %{buildroot}/%{_prefix}/%{__lib}/cockpit-test-assets %{buildroot}/%{_sysconfdir}/cockpit/cockpit.conf # files from -pcp rm -r %{buildroot}/%{_libexecdir}/cockpit-pcp %{buildroot}/%{_localstatedir}/lib/pcp/ -# files from -kubernetes -rm -f %{buildroot}/%{_libexecdir}/cockpit-kube-auth %{buildroot}/%{_libexecdir}/cockpit-kube-launch %{buildroot}/%{_libexecdir}/cockpit-stub # files from -machines rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-machines.metainfo.xml # files from -storaged rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml +# files from -docker +rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml %endif -%if 0%{?suse_version} -rm -rf %{buildroot}/%{_datadir}/cockpit/branding/fedora -rm -rf %{buildroot}/%{_datadir}/cockpit/branding/scientific -rm -rf %{buildroot}/%{_datadir}/cockpit/branding/rhel -rm -rf %{buildroot}/%{_datadir}/cockpit/branding/debian -rm -rf %{buildroot}/%{_datadir}/cockpit/branding/ubuntu -rm -rf %{buildroot}/%{_datadir}/cockpit/branding/centos -mkdir -p %{buildroot}/%{_rundir}/cockpit/ -touch %{buildroot}/%{_rundir}/cockpit/motd -%endif sed -i "s|%{buildroot}||" *.list -# Build the package lists for debug package, and move debug files to installed locations -find %{buildroot}/usr/src/debug%{_datadir}/cockpit -type f -o -type l > debug.partial -sed -i "s|%{buildroot}/usr/src/debug||" debug.partial -sed -n 's/\.map\(\.gz\)\?$/\0/p' *.list >> debug.partial -sed -i '/\.map\(\.gz\)\?$/d' *.list -tar -C %{buildroot}/usr/src/debug -cf - . | tar -C %{buildroot} -xf - -rm -rf %{buildroot}/usr/src/debug - -# On RHEL kdump, networkmanager, selinux, and sosreport are part of the system package -%if 0%{?rhel} -cat kdump.list sosreport.list networkmanager.list selinux.list >> system.list -rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml -rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-kdump.metainfo.xml -rm -f %{buildroot}%{_datadir}/pixmaps/cockpit-sosreport.png -%endif - -find %{buildroot} -name "*.map" -exec rm -v {} \; -%if 0%{?rhel} -rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-selinux.metainfo.xml -%endif - -%if 0%{?build_basic} -%find_lang cockpit -%endif - -# dwz has trouble with the go binaries -# https://fedoraproject.org/wiki/PackagingDrafts/Go -%global _dwz_low_mem_die_limit 0 -%if 0%{?fedora} || 0%{?rhel} >= 8 +%if 0%{?suse_version} +# remove brandings that don't match the distro as they may contain +# stale symlinks +pushd %{buildroot}/%{_datadir}/cockpit/branding +ls -1 | (. /etc/os-release; grep -v "default\|$ID") | xargs rm -vr +popd +# need this in SUSE as post build checks dislike stale symlinks +install -m 644 -D /dev/null %{buildroot}/run/cockpit/motd +%else %global _debugsource_packages 1 %global _debuginfo_subpackages 0 -%endif %define find_debug_info %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_include_minidebuginfo:-m} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} %{?_debugsource_packages:-S debugsourcefiles.list} "%{_builddir}/%{?buildsubdir}" @@ -414,6 +307,29 @@ rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-selinux.metai cat debug.partial >> %{_builddir}/%{?buildsubdir}/debugfiles.list \ %{nil} +# Build the package lists for debug package, and move debug files to installed locations +find %{buildroot}/usr/src/debug%{_datadir}/cockpit -type f -o -type l > debug.partial +sed -i "s|%{buildroot}/usr/src/debug||" debug.partial +sed -n 's/\.map\(\.gz\)\?$/\0/p' *.list >> debug.partial +sed -i '/\.map\(\.gz\)\?$/d' *.list +tar -C %{buildroot}/usr/src/debug -cf - . | tar -C %{buildroot} -xf - +%endif +# /suse_version +rm -rf %{buildroot}/usr/src/debug + +# On RHEL kdump, networkmanager, selinux, and sosreport are part of the system package +%if 0%{?rhel} +cat kdump.list sosreport.list networkmanager.list selinux.list >> system.list +rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml +rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-kdump.metainfo.xml +rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-selinux.metainfo.xml +rm -f %{buildroot}%{_datadir}/pixmaps/cockpit-sosreport.png +%endif + +%if 0%{?build_basic} +%find_lang cockpit +%endif + # ------------------------------------------------------------------------------- # Basic Sub-packages @@ -434,20 +350,16 @@ troubleshooting, interactive command-line sessions, and more. %{_datadir}/metainfo/cockpit.appdata.xml %{_datadir}/pixmaps/cockpit.png %doc %{_mandir}/man1/cockpit.1.gz -%dir %{_rundir}/cockpit -%dir %{_datadir}/metainfo -%ghost %{_rundir}/cockpit/motd + %package bridge Summary: Cockpit bridge server-side component Requires: glib-networking -%if 0%{?rhel} != 7 Provides: cockpit-ssh = %{version}-%{release} # cockpit-ssh moved from dashboard to bridge in 171 Conflicts: cockpit-dashboard < 170.x # PR #10430 dropped workaround for ws' inability to understand x-host-key challenge Conflicts: cockpit-ws < 181.x -%endif %description bridge The Cockpit bridge component installed server side and runs commands on the @@ -457,9 +369,6 @@ system on behalf of the web based user interface. %doc %{_mandir}/man1/cockpit-bridge.1.gz %{_bindir}/cockpit-bridge %{_libexecdir}/cockpit-askpass -%dir %{_sysconfdir}/cockpit -%dir %{_datadir}/cockpit/base1/fonts -%dir %{_datadir}/cockpit/ssh %package doc Summary: Cockpit deployment and developer guide @@ -484,9 +393,8 @@ Requires: cockpit-bridge >= %{version}-%{release} Requires: shadow-utils %endif Requires: grep -Requires: libpwquality +Requires: /usr/bin/pwscore Requires: /usr/bin/date -Provides: cockpit-realmd = %{version}-%{release} Provides: cockpit-shell = %{version}-%{release} Provides: cockpit-systemd = %{version}-%{release} Provides: cockpit-tuned = %{version}-%{release} @@ -494,31 +402,27 @@ Provides: cockpit-users = %{version}-%{release} %if 0%{?rhel} Provides: cockpit-networkmanager = %{version}-%{release} Obsoletes: cockpit-networkmanager -Requires: NetworkManager +Requires: NetworkManager >= 1.6 Provides: cockpit-kdump = %{version}-%{release} Requires: kexec-tools -# Optional components (only when soft deps are supported) -%if 0%{?fedora} || 0%{?rhel} >= 8 Recommends: polkit -%endif -%if 0%{?rhel} >= 8 +Recommends: PackageKit Recommends: NetworkManager-team Recommends: setroubleshoot-server >= 3.3.3 -%endif Provides: cockpit-selinux = %{version}-%{release} Provides: cockpit-sosreport = %{version}-%{release} %endif -%if %{defined build_subscriptions} -Provides: cockpit-subscriptions = %{version}-%{release} -Requires: subscription-manager >= 1.13 +%if 0%{?fedora} >= 29 +# 0.7.0 (actually) supports task cancellation. +# 0.7.1 fixes tasks never announcing completion. +Recommends: (reportd >= 0.7.1 if abrt) %endif # NPM modules which are also available as packages -Provides: bundled(js-jquery) = 3.4.0 +Provides: bundled(js-jquery) = 3.4.1 Provides: bundled(js-moment) = 2.24.0 Provides: bundled(nodejs-flot) = 0.8.3 -Provides: bundled(nodejs-promise) = 8.0.3 -Provides: bundled(xstatic-bootstrap-datepicker-common) = 1.8.0 -Provides: bundled(xstatic-patternfly-common) = 3.58.0 +Provides: bundled(xstatic-bootstrap-datepicker-common) = 1.9.0 +Provides: bundled(xstatic-patternfly-common) = 3.59.4 %description system This package contains the Cockpit shell and system configuration interfaces. @@ -531,18 +435,11 @@ Summary: Cockpit Web Service Requires: glib-networking Requires: openssl Requires: glib2 >= 2.37.4 -# RHEL/CentOS 7 has firewalld 0.6.x, but does not ship cockpit service -%if 0%{?rhel} != 7 -%if 0%{?firewalld_service} -Conflicts: firewalld >= 0.6.0-1 -%else Conflicts: firewalld < 0.6.0-1 -%endif -%endif -%if 0%{?fedora} || 0%{?rhel} >= 8 Recommends: sscg >= 2.3 Recommends: system-logos -%endif +Requires: systemd >= 235 +Suggests: sssd-dbus Requires(post): systemd Requires(preun): systemd Requires(postun): systemd @@ -550,47 +447,59 @@ Requires(postun): systemd %description ws The Cockpit Web Service listens on the network, and authenticates users. +If sssd-dbus is installed, you can enable client certificate/smart card +authentication via sssd/FreeIPA. + %files ws -f cockpit.lang %doc %{_mandir}/man1/cockpit-desktop.1.gz %doc %{_mandir}/man5/cockpit.conf.5.gz %doc %{_mandir}/man8/cockpit-ws.8.gz +%doc %{_mandir}/man8/cockpit-tls.8.gz %doc %{_mandir}/man8/remotectl.8.gz +%doc %{_mandir}/man8/pam_cockpit_cert.8.gz %doc %{_mandir}/man8/pam_ssh_add.8.gz +%dir %{_sysconfdir}/cockpit %config(noreplace) %{_sysconfdir}/cockpit/ws-certs.d %config(noreplace) %{_sysconfdir}/pam.d/cockpit -%dir %{_sysconfdir}/issue.d %config %{_sysconfdir}/issue.d/cockpit.issue +# dir is not owned by pam in openSUSE +%dir %{_sysconfdir}/motd.d %config %{_sysconfdir}/motd.d/cockpit +%ghost /run/cockpit/motd +%ghost %dir /run/cockpit +%dir %{_datadir}/cockpit/motd %{_datadir}/cockpit/motd/update-motd %{_datadir}/cockpit/motd/inactive.motd %{_unitdir}/cockpit.service %{_unitdir}/cockpit-motd.service %{_unitdir}/cockpit.socket -%if 0%{?firewalld_service} -%{_prefix}/%{__lib}/firewalld/services/cockpit.xml -%endif +%{_unitdir}/cockpit-wsinstance-http.socket +%{_unitdir}/cockpit-wsinstance-http.service +%{_unitdir}/cockpit-wsinstance-http-redirect.socket +%{_unitdir}/cockpit-wsinstance-http-redirect.service +%{_unitdir}/cockpit-wsinstance-https-factory.socket +%{_unitdir}/cockpit-wsinstance-https-factory@.service +%{_unitdir}/cockpit-wsinstance-https@.socket +%{_unitdir}/cockpit-wsinstance-https@.service +%{_unitdir}/system-cockpithttps.slice %{_prefix}/%{__lib}/tmpfiles.d/cockpit-tempfiles.conf %{_sbindir}/remotectl -%if 0%{?suse_version} -/%{_lib}/security/pam_ssh_add.so -%else -%{_libdir}/security/pam_ssh_add.so -%endif +%{pamdir}/pam_ssh_add.so +%{pamdir}/pam_cockpit_cert.so %{_libexecdir}/cockpit-ws +%{_libexecdir}/cockpit-wsinstance-factory +%{_libexecdir}/cockpit-tls %{_libexecdir}/cockpit-desktop -%attr(4750, root, cockpit-ws) %{_libexecdir}/cockpit-session +%attr(4750, root, cockpit-wsinstance) %{_libexecdir}/cockpit-session %attr(775, -, wheel) %{_localstatedir}/lib/cockpit %{_datadir}/cockpit/static %{_datadir}/cockpit/branding -%dir %{_sysconfdir}/cockpit -%dir %{_sysconfdir}/motd.d -%{_libexecdir}/firewalld -%{_libexecdir}/firewalld/services -%{_datadir}/cockpit/motd %pre ws getent group cockpit-ws >/dev/null || groupadd -r cockpit-ws -getent passwd cockpit-ws >/dev/null || useradd -r -g cockpit-ws -d /nonexisting -s /sbin/nologin -c "User for cockpit-ws" cockpit-ws +getent passwd cockpit-ws >/dev/null || useradd -r -g cockpit-ws -d /nonexisting -s /sbin/nologin -c "User for cockpit web service" cockpit-ws +getent group cockpit-wsinstance >/dev/null || groupadd -r cockpit-wsinstance +getent passwd cockpit-wsinstance >/dev/null || useradd -r -g cockpit-wsinstance -d /nonexisting -s /sbin/nologin -c "User for cockpit-ws instances" cockpit-wsinstance %post ws %systemd_post cockpit.socket @@ -634,19 +543,16 @@ The Cockpit component for creating diagnostic reports with the sosreport tool. %files sosreport -f sosreport.list -%dir %{_datadir}/metainfo %{_datadir}/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml %{_datadir}/pixmaps/cockpit-sosreport.png %package networkmanager Summary: Cockpit user interface for networking, using NetworkManager -Requires: cockpit-bridge >= 122 -Requires: cockpit-shell >= 122 -Requires: NetworkManager -# Optional components (only when soft deps are supported) -%if 0%{?fedora} || 0%{?rhel} >= 8 +Requires: cockpit-bridge >= 186 +Requires: cockpit-shell >= 186 +Requires: NetworkManager >= 1.6 +# Optional components Recommends: NetworkManager-team -%endif BuildArch: noarch %description networkmanager @@ -662,9 +568,7 @@ The Cockpit component for managing networking. This package uses NetworkManager Summary: Cockpit SELinux package Requires: cockpit-bridge >= 122 Requires: cockpit-shell >= 122 -%if 0%{?fedora} || 0%{?rhel} >= 8 Requires: setroubleshoot-server >= 3.3.3 -%endif BuildArch: noarch %description selinux @@ -672,18 +576,19 @@ This package contains the Cockpit user interface integration with the utility setroubleshoot to diagnose and resolve SELinux issues. %files selinux -f selinux.list -%dir %{_datadir}/metainfo %{_datadir}/metainfo/org.cockpit-project.cockpit-selinux.metainfo.xml %endif -%else # build basic packages +#/ build basic packages +%else # RPM requires this %description Dummy package from building optional packages only; never install or publish me. -%endif # build basic packages +#/ build basic packages +%endif # ------------------------------------------------------------------------------- # Sub-packages that are optional extensions @@ -692,30 +597,17 @@ Dummy package from building optional packages only; never install or publish me. %package -n cockpit-storaged Summary: Cockpit user interface for storage, using udisks -Requires: cockpit-shell >= 122 +Requires: cockpit-shell >= 186 Requires: udisks2 >= 2.6 -%if 0%{?rhel} == 7 -# Recommends: not supported in RHEL <= 7 -Requires: udisks2-lvm2 >= 2.6 -Requires: udisks2-iscsi >= 2.6 -Requires: device-mapper-multipath -Requires: python -Requires: python-dbus -%else Recommends: udisks2-lvm2 >= 2.6 Recommends: udisks2-iscsi >= 2.6 Recommends: device-mapper-multipath Recommends: clevis-luks Requires: %{__python3} - %if !0%{?suse_version} -Requires: python3-dbus - %else - %if 0%{?suse_version} == 1315 -Requires: dbus-1-python - %else +%if 0%{?suse_version} Requires: python3-dbus-python - %endif - %endif +%else +Requires: python3-dbus %endif BuildArch: noarch @@ -723,7 +615,6 @@ BuildArch: noarch The Cockpit component for managing storage. This package uses udisks. %files -n cockpit-storaged -f storaged.list -%dir %{_datadir}/metainfo %dir %{_datadir}/cockpit/storaged/images %{_datadir}/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml @@ -745,21 +636,19 @@ These files are not required for running Cockpit. %package -n cockpit-machines BuildArch: noarch Summary: Cockpit user interface for virtual machines -Requires: cockpit-bridge >= 122 -Requires: cockpit-system >= 122 -%if 0%{?rhel} == 7 || 0%{?suse_version} -Requires: libvirt +Requires: cockpit-bridge >= 186 +Requires: cockpit-system >= 186 +%if 0%{?suse_version} +Requires: libvirt-daemon-qemu %else -Requires: (libvirt-daemon-kvm or libvirt) +Requires: libvirt-daemon-kvm %endif Requires: libvirt-client -%if 0%{?fedora} || 0%{?rhel} >= 8 Requires: libvirt-dbus >= 1.2.0 # Optional components Recommends: virt-install Recommends: libosinfo Recommends: python3-gobject-base -%endif %description -n cockpit-machines The Cockpit components for managing virtual machines. @@ -767,66 +656,32 @@ The Cockpit components for managing virtual machines. If "virt-install" is installed, you can also create new virtual machines. %files -n cockpit-machines -f machines.list -%dir %{_datadir}/metainfo %{_datadir}/metainfo/org.cockpit-project.cockpit-machines.metainfo.xml -%if 0%{?build_ovirt} - -%package -n cockpit-machines-ovirt -BuildArch: noarch -Summary: Cockpit user interface for oVirt virtual machines -Requires: cockpit-bridge >= 122 -Requires: cockpit-system >= 122 -%if 0%{?rhel} == 7 -Requires: libvirt -%else -Requires: (libvirt-daemon-kvm or libvirt) -%endif -Requires: libvirt-client - -%description -n cockpit-machines-ovirt -The Cockpit components for managing oVirt virtual machines. - -%files -n cockpit-machines-ovirt -f ovirt.list - -%endif - %package -n cockpit-pcp Summary: Cockpit PCP integration Requires: cockpit-bridge >= 134.x -Requires: pcp +Requires(post): pcp %description -n cockpit-pcp Cockpit support for reading PCP metrics and loading PCP archives. %files -n cockpit-pcp -f pcp.list %{_libexecdir}/cockpit-pcp -%dir %{_localstatedir}/lib/pcp -%dir %{_localstatedir}/lib/pcp -%dir %{_localstatedir}/lib/pcp/config -%dir %{_localstatedir}/lib/pcp/config/pmlogconf -%dir %{_localstatedir}/lib/pcp/config/pmlogconf/tools %{_localstatedir}/lib/pcp/config/pmlogconf/tools/cockpit + %post -n cockpit-pcp # HACK - https://bugzilla.redhat.com/show_bug.cgi?id=1185764 # We can't use "systemctl reload-or-try-restart" since systemctl might # be out of sync with reality. -/usr/share/pcp/lib/pmlogger condrestart || true +/usr/share/pcp/lib/pmlogger condrestart %if %{defined build_dashboard} %package -n cockpit-dashboard Summary: Cockpit remote servers and dashboard -%if 0%{?rhel} == 7 -Provides: cockpit-ssh = %{version}-%{release} -# nothing depends on the dashboard, but we can't use it with older versions of the bridge -Conflicts: cockpit-bridge < 135 -# PR #10430 dropped workaround for ws' inability to understand x-host-key challenge -Conflicts: cockpit-ws < 173.1 -%else BuildArch: noarch Requires: cockpit-ssh >= 135 Conflicts: cockpit-ws < 135 -%endif %description -n cockpit-dashboard Cockpit support for connecting to remote servers (through ssh), @@ -836,61 +691,26 @@ bastion hosts, and a basic dashboard. %endif -%ifarch x86_64 %{arm} aarch64 ppc64le i686 s390x - -%if 0%{?fedora} || 0%{?rhel} < 8 +%if 0%{?build_docker} %package -n cockpit-docker Summary: Cockpit user interface for Docker containers Requires: cockpit-bridge >= 122 Requires: cockpit-shell >= 122 -Requires: /usr/bin/docker -Requires: /usr/lib/systemd/system/docker.service -%if 0%{?fedora} || 0%{?suse_version} +Requires: (docker or moby-engine or docker-ce) Requires: %{__python3} -%else -Requires: python2 -%endif %description -n cockpit-docker The Cockpit components for interacting with Docker and user interface. This package is not yet complete. %files -n cockpit-docker -f docker.list -%dir %{_datadir}/cockpit/docker/images - -%endif -%endif - -%if 0%{?build_kubernetes} - -%package -n cockpit-kubernetes -Summary: Cockpit user interface for Kubernetes cluster -Requires: /usr/bin/kubectl -# Requires: Needs newer localization support -Requires: cockpit-bridge >= 137.x -Requires: cockpit-shell >= 137.x -BuildRequires: %{go_scl_prefix}golang-bin -BuildRequires: %{go_scl_prefix}golang-src -Provides: cockpit-stub = %{version}-%{release} - -%description -n cockpit-kubernetes -The Cockpit components for visualizing and configuring a Kubernetes -cluster. Installed on the Kubernetes master. This package is not yet complete. - -%if 0%{?rhel} >= 8 -%enable_gotoolset7 -%endif - -%files -n cockpit-kubernetes -f kubernetes.list -%{_libexecdir}/cockpit-kube-auth -%{_libexecdir}/cockpit-kube-launch -%{_libexecdir}/cockpit-stub +%{_datadir}/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml %endif %package -n cockpit-packagekit Summary: Cockpit user interface for packages BuildArch: noarch -Requires: cockpit-bridge >= 138 +Requires: cockpit-bridge >= 186 Requires: PackageKit %description -n cockpit-packagekit @@ -899,7 +719,8 @@ via PackageKit. %files -n cockpit-packagekit -f packagekit.list -%endif # build optional extension packages +#/ build optional extension packages +%endif # The changelog is automatically generated and merged %changelog