diff --git a/.cockpit.metadata b/.cockpit.metadata
index 7e2e2e5..1fa6933 100644
--- a/.cockpit.metadata
+++ b/.cockpit.metadata
@@ -1 +1 @@
-dfb45151b16145a9b9fae12fb30dc2cd4370852e SOURCES/cockpit-222.1.tar.xz
+e96e3ae84e9873afa290d6e4dd861021d93bc341 SOURCES/cockpit-238.1.tar.xz
diff --git a/.gitignore b/.gitignore
index 9551321..b693518 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/cockpit-222.1.tar.xz
+SOURCES/cockpit-238.1.tar.xz
diff --git a/SPECS/cockpit.spec b/SPECS/cockpit.spec
index 060ee66..478726c 100644
--- a/SPECS/cockpit.spec
+++ b/SPECS/cockpit.spec
@@ -1,7 +1,23 @@
# This spec file has been automatically updated
-Version: 222.1
+Version: 238.1
Release: 1%{?dist}
#
+# Copyright (C) 2014-2020 Red Hat, Inc.
+#
+# Cockpit is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+#
+# Cockpit is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with Cockpit; If not, see .
+#
+
# This file is maintained at the following location:
# https://github.com/cockpit-project/cockpit/blob/master/tools/cockpit.spec
#
@@ -24,26 +40,8 @@ Release: 1%{?dist}
%define rhel %{centos}
%endif
-%if "%{!?__python3:1}"
-%define __python3 /usr/bin/python3
-%endif
-
-# for testing this already gets set in fedora.install, as we want the target
-# VERSION_ID, not the mock chroot's one
-%if "%{!?os_version_id:1}"
-%define os_version_id %(. /etc/os-release; echo $VERSION_ID)
-%endif
-
%define _hardened_build 1
-# define to build the dashboard
-%define build_dashboard 1
-
-# build basic packages like cockpit-bridge
-%define build_basic 1
-# build optional extensions like cockpit-docker
-%define build_optional 0
-
%define __lib lib
%if 0%{?rhel}
@@ -63,11 +61,30 @@ License: LGPLv2+
URL: https://cockpit-project.org/
%if %{defined wip}
-Source0: cockpit-%{version}.tar.gz
+Source0: cockpit-%{version}.tar.xz
%else
Source0: https://github.com/cockpit-project/cockpit/releases/download/%{version}/cockpit-%{version}.tar.xz
%endif
+# in RHEL 8 the source package is duplicated: cockpit (building basic packages like cockpit-{bridge,system})
+# and cockpit-appstream (building optional packages like cockpit-{machines,pcp})
+# This split does not apply to EPEL/COPR.
+# In Fedora ELN/RHEL 9+ there is just one source package, which ships rpms in both BaseOS and AppStream
+%if 0%{?rhel} == 8 && 0%{?epel} == 0
+
+%if "%{name}" == "cockpit"
+%define build_basic 1
+%define build_optional 0
+%else
+%define build_basic 0
+%define build_optional 1
+%endif
+
+%else
+%define build_basic 1
+%define build_optional 1
+%endif
+
BuildRequires: gcc
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: pkgconfig(json-glib-1.0)
@@ -75,9 +92,10 @@ BuildRequires: pkgconfig(polkit-agent-1) >= 0.105
BuildRequires: pam-devel
BuildRequires: autoconf automake
+BuildRequires: make
BuildRequires: /usr/bin/python3
BuildRequires: gettext >= 0.19.7
-%if %{defined build_dashboard}
+%if 0%{?build_basic}
BuildRequires: libssh-devel >= 0.8.5
%endif
BuildRequires: openssl-devel
@@ -88,7 +106,7 @@ BuildRequires: libxslt-devel
BuildRequires: glib-networking
BuildRequires: sed
-BuildRequires: glib2-devel >= 2.37.4
+BuildRequires: glib2-devel >= 2.50.0
# this is for runtimedir in the tls proxy ace21c8879
BuildRequires: systemd-devel >= 235
%if 0%{?suse_version}
@@ -123,13 +141,6 @@ 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-networkmanager if NetworkManager)
Suggests: cockpit-selinux
@@ -154,6 +165,9 @@ exec 2>&1
--docdir=%_defaultdocdir/%{name} \
%endif
--with-pamdir='%{pamdir}' \
+%if 0%{?build_basic} == 0
+ --disable-ssh \
+%endif
%{?vdo_on_demand:--with-vdo-package='"vdo"'}
make -j4 %{?extra_flags} all
@@ -174,33 +188,28 @@ exec 2>&1
%{?testsuite_skip} make -j4 check %{?testsuite_fail}
%install
-make install DESTDIR=%{buildroot}
+%make_install
make install-tests DESTDIR=%{buildroot}
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d
install -p -m 644 tools/cockpit.pam $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/cockpit
rm -f %{buildroot}/%{_libdir}/cockpit/*.so
-# shipped in firewalld since 0.6, everywhere in Fedora/RHEL 8
-rm -f %{buildroot}/%{_prefix}/%{__lib}/firewalld/services/cockpit.xml
install -D -p -m 644 AUTHORS COPYING README.md %{buildroot}%{_docdir}/cockpit/
+# only ship deprecated PatternFly API for stable releases
+%if 0%{?fedora} <= 33 || 0%{?rhel} <= 8
+ ln -s cockpit.css.gz %{buildroot}/%{_datadir}/cockpit/base1/patternfly.css.gz
+%endif
+
# 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
+find %{buildroot}%{_datadir}/cockpit/base1 -type f -o -type l >> base.list
echo '%{_sysconfdir}/cockpit/machines.d' >> base.list
echo %{buildroot}%{_datadir}/polkit-1/actions/org.cockpit-project.cockpit-bridge.policy >> base.list
echo '%dir %{_datadir}/cockpit/ssh' >> base.list
find %{buildroot}%{_datadir}/cockpit/ssh -type f >> base.list
echo '%{_libexecdir}/cockpit-ssh' >> base.list
-%if %{defined build_dashboard}
-echo '%dir %{_datadir}/cockpit/dashboard' >> dashboard.list
-find %{buildroot}%{_datadir}/cockpit/dashboard -type f >> dashboard.list
-%else
-rm -rf %{buildroot}/%{_datadir}/cockpit/dashboard
-touch dashboard.list
-%endif
-
echo '%dir %{_datadir}/cockpit/pcp' >> pcp.list
find %{buildroot}%{_datadir}/cockpit/pcp -type f >> pcp.list
@@ -216,6 +225,9 @@ find %{buildroot}%{_datadir}/cockpit/systemd -type f >> system.list
echo '%dir %{_datadir}/cockpit/users' >> system.list
find %{buildroot}%{_datadir}/cockpit/users -type f >> system.list
+echo '%dir %{_datadir}/cockpit/metrics' >> system.list
+find %{buildroot}%{_datadir}/cockpit/metrics -type f >> system.list
+
echo '%dir %{_datadir}/cockpit/kdump' >> kdump.list
find %{buildroot}%{_datadir}/cockpit/kdump -type f >> kdump.list
@@ -243,25 +255,19 @@ 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
-%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
+echo '%dir %{_datadir}/cockpit/static' > static.list
+find %{buildroot}%{_datadir}/cockpit/static -type f >> static.list
# when not building basic packages, remove their files
%if 0%{?build_basic} == 0
-for pkg in base1 branding motd kdump networkmanager 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 metrics; do
rm -r %{buildroot}/%{_datadir}/cockpit/$pkg
rm -f %{buildroot}/%{_datadir}/metainfo/org.cockpit-project.cockpit-${pkg}.metainfo.xml
done
for data in doc locale man pixmaps polkit-1; do
rm -r %{buildroot}/%{_datadir}/$data
done
-for lib in systemd tmpfiles.d firewalld; do
+for lib in systemd tmpfiles.d; do
rm -r %{buildroot}/%{_prefix}/%{__lib}/$lib
done
for libexec in cockpit-askpass cockpit-session cockpit-ws cockpit-tls cockpit-wsinstance-factory cockpit-desktop; do
@@ -275,7 +281,7 @@ 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 machines packagekit pcp playground storaged; do
+for pkg in apps machines packagekit pcp playground storaged; do
rm -rf %{buildroot}/%{_datadir}/cockpit/$pkg
done
# files from -tests
@@ -286,17 +292,15 @@ rm -r %{buildroot}/%{_libexecdir}/cockpit-pcp %{buildroot}/%{_localstatedir}/lib
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
sed -i "s|%{buildroot}||" *.list
%if 0%{?suse_version}
-# remove brandings that don't match the distro as they may contain
-# stale symlinks
+# remove brandings with stale symlinks. Means they don't match
+# the distro.
pushd %{buildroot}/%{_datadir}/cockpit/branding
-ls -1 | (. /etc/os-release; grep -v "default\|$ID") | xargs rm -vr
+find -L * -type l -printf "%H\n" | sort -u | xargs rm -rv
popd
# need this in SUSE as post build checks dislike stale symlinks
install -m 644 -D /dev/null %{buildroot}/run/cockpit/motd
@@ -306,18 +310,6 @@ install -m 644 -D /dev/null %{buildroot}/run/cockpit/motd
%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}"
-# Redefine how debug info is built to slip in our extra debug files
-%define __debug_install_post \
- %{find_debug_info} \
- 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
@@ -361,10 +353,15 @@ troubleshooting, interactive command-line sessions, and more.
Summary: Cockpit bridge server-side component
Requires: glib-networking
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
+# 233 dropped jquery.js, pages started to bundle it (commit 049e8b8dce)
+Conflicts: cockpit-dashboard < 233
+Conflicts: cockpit-networkmanager < 233
+Conflicts: cockpit-storaged < 233
+Conflicts: cockpit-system < 233
+Conflicts: cockpit-tests < 233
+Conflicts: cockpit-docker < 233
%description bridge
The Cockpit bridge component installed server side and runs commands on the
@@ -404,13 +401,14 @@ Provides: cockpit-shell = %{version}-%{release}
Provides: cockpit-systemd = %{version}-%{release}
Provides: cockpit-tuned = %{version}-%{release}
Provides: cockpit-users = %{version}-%{release}
+Obsoletes: cockpit-dashboard
%if 0%{?rhel}
Provides: cockpit-networkmanager = %{version}-%{release}
Obsoletes: cockpit-networkmanager
Requires: NetworkManager >= 1.6
Provides: cockpit-kdump = %{version}-%{release}
Requires: kexec-tools
-Recommends: polkit
+Recommends: (sudo or polkit)
Recommends: PackageKit
Recommends: NetworkManager-team
Recommends: setroubleshoot-server >= 3.3.3
@@ -425,10 +423,9 @@ Recommends: (reportd >= 0.7.1 if abrt)
%endif
# NPM modules which are also available as packages
Provides: bundled(js-jquery) = 3.5.1
-Provides: bundled(js-moment) = 2.25.3
-Provides: bundled(nodejs-flot) = 0.8.3
+Provides: bundled(js-moment) = 2.29.1
Provides: bundled(xstatic-bootstrap-datepicker-common) = 1.9.0
-Provides: bundled(xstatic-patternfly-common) = 3.59.4
+Provides: bundled(xstatic-patternfly-common) = 3.59.5
%description system
This package contains the Cockpit shell and system configuration interfaces.
@@ -440,15 +437,11 @@ This package contains the Cockpit shell and system configuration interfaces.
Summary: Cockpit Web Service
Requires: glib-networking
Requires: openssl
-Requires: glib2 >= 2.37.4
+Requires: glib2 >= 2.50.0
Conflicts: firewalld < 0.6.0-1
Recommends: sscg >= 2.3
Recommends: system-logos
-Requires: systemd >= 235
Suggests: sssd-dbus
-Requires(post): systemd
-Requires(preun): systemd
-Requires(postun): systemd
%description ws
The Cockpit Web Service listens on the network, and authenticates users.
@@ -456,7 +449,7 @@ 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
+%files ws -f cockpit.lang -f static.list
%doc %{_mandir}/man1/cockpit-desktop.1.gz
%doc %{_mandir}/man5/cockpit.conf.5.gz
%doc %{_mandir}/man8/cockpit-ws.8.gz
@@ -495,8 +488,6 @@ authentication via sssd/FreeIPA.
%{_libexecdir}/cockpit-tls
%{_libexecdir}/cockpit-desktop
%attr(4750, root, cockpit-wsinstance) %{_libexecdir}/cockpit-session
-%attr(775, -, wheel) %{_localstatedir}/lib/cockpit
-%{_datadir}/cockpit/static
%{_datadir}/cockpit/branding
%pre ws
@@ -506,6 +497,7 @@ 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
+%tmpfiles_create cockpit-tempfiles.conf
%systemd_post cockpit.socket
# firewalld only partially picks up changes to its services files without this
test -f %{_bindir}/firewall-cmd && firewall-cmd --reload --quiet || true
@@ -674,46 +666,14 @@ Cockpit support for reading PCP metrics and loading PCP archives.
%{_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
-
-%if %{defined build_dashboard}
-%package -n cockpit-dashboard
-Summary: Cockpit remote server dashboard
-BuildArch: noarch
-Requires: cockpit-ssh >= 135
-Conflicts: cockpit-ws < 135
-
-%description -n cockpit-dashboard
-Cockpit page for showing performance graphs for up to 20 remote servers.
-
-%files -n cockpit-dashboard -f dashboard.list
-
-%endif
-
-%if 0%{?build_docker}
-%package -n cockpit-docker
-Summary: Cockpit user interface for Docker containers
-Requires: cockpit-bridge >= 122
-Requires: cockpit-shell >= 122
-Requires: (docker or moby-engine or docker-ce)
-Requires: %{__python3}
-
-%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
-%{_datadir}/metainfo/org.cockpit-project.cockpit-docker.metainfo.xml
-%endif
+systemctl reload-or-try-restart pmlogger
%package -n cockpit-packagekit
Summary: Cockpit user interface for packages
BuildArch: noarch
Requires: cockpit-bridge >= 186
Requires: PackageKit
+Recommends: python3-tracer
%description -n cockpit-packagekit
The Cockpit components for installing OS updates and Cockpit add-ons,
@@ -726,6 +686,58 @@ via PackageKit.
# The changelog is automatically generated and merged
%changelog
+* Mon Feb 22 2021 Martin Pitt - 238.1-1
+- Several UI alignment fixes
+- Re-drop unit tests from built packages
+- Metrics: Don't show swap column when no swap is present
+- Metrics: Don't show duplicate events
+
+* Wed Feb 17 2021 Martin Pitt - 238-1
+- Web server: Preserve permissions of administrator-provided certificates
+- System: Performance page shows busiest CPU cores
+
+* Fri Feb 05 2021 Martin Pitt - 237-1
+- SSH connections to remote machines are only opened when necessary
+
+* Fri Jan 22 2021 Matej Marusak - 236-1
+- fslist channels: Include properties of changed files
+- Internal stabilization work
+
+* Fri Jan 08 2021 Martin Pitt - 235-1
+- Login: Improved handling of SSH host keys
+- Overview: Editable motd
+- Adjust tests for sos 4.x to fix gating tests (rhbz#1895912)
+
+* Mon Dec 14 2020 Katerina Koukiou - 234-1
+- Improved login page
+- Improved bridge code after feedback from recent coverity scanning
+
+* Fri Nov 27 2020 Katerina Koukiou - 233.1-1
+- Non-admin users no longer see Cockpit in motd (rhbz#1872562)
+- Improved host editing
+- Replace system's graph page with a completely new USE method page
+- Logging of remote IP addresses
+- shell: Any page can be the shell
+- Accounts: Allow setting weak passwords (rhbz#1652390)
+- Terminal: Fix issue with prompt not returning when clicking reset button in disoconnected session (rhbz#1897430)
+
+* Wed Aug 19 2020 Matej Marusak - 224.2-1
+- lib: Include current directory in FileAutoComplete option listing (rhbz#1866995)
+- lib: Make sure that the expandable part of table rows has unique key (rhbz#1865821)
+
+* Wed Aug 05 2020 Matej Marusak - 224.1-1
+- ws: Add key usage and constraints to self-signed server certificate (rhbz#1859812)
+
+* Thu Jul 23 2020 Martin Pitt - 224-1
+- More translation updates (rhbz#1820538)
+- Some bug fixes on Services page
+
+* Thu Jul 09 2020 Martin Pitt - 223-1
+- Webserver: Standard-conformant lifetime of web server Certificate
+- Support certificate authentication against Active Directory
+- Fix cockpit-desktop privileges (rhbz#1841104)
+- Translation updates (rhbz#1820538)
+
* Fri Jun 26 2020 Martin Pitt - 222.1-1
- Some integration test fixes for dist-git gating