diff --git a/.cockpit-appstream.metadata b/.cockpit-appstream.metadata
index 7e2e2e5..1fa6933 100644
--- a/.cockpit-appstream.metadata
+++ b/.cockpit-appstream.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-appstream.spec b/SPECS/cockpit-appstream.spec
index d77f6f7..6f64c54 100644
--- a/SPECS/cockpit-appstream.spec
+++ b/SPECS/cockpit-appstream.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 0
-# build optional extensions like cockpit-docker
-%define build_optional 1
-
%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,72 @@ via PackageKit.
# The changelog is automatically generated and merged
%changelog
+* Mon Feb 22 2021 Martin Pitt - 238.1-1
+- Several UI alignment fixes
+- Updates: Show PackageKit errors properly
+
+* Thu Feb 19 2021 Katerina Koukiou - 238-1
+- machines: VM disk creation supports a custom path
+- Updates: List outdated software that needs a restart
+
+* Thu Feb 04 2021 Katerina Koukiou - 237-1
+- machines: Fix virt-viewer file download on chromium based Edge (rhbz#1730666)
+- machines: Fix crash when a target is pasted in the VM creation dialog (rhbz#1872660)
+- machines: Fix alert about pending changes in NIC edit dialog (rhbz#1911657)
+- machines: Fix alert about pending changes in overview card related to boot order (rhbz#1915765)
+- machines: Fix file autocomplete select not closing on enter (rhbz#1874392)
+- machines: Fix white screen when deleting a VM in an environment without storage pools (rhbz#1912384)
+
+* Fri Jan 22 2021 Martin Pitt - 236-1
+- machines: Fix unstable VNC console (rhbz#1750642)
+- machines: Fix alert close property in the VM details (rhbz#1918147)
+- machines: Fix crash when volumes disappear before starting installation (rhbz#1918156)
+- machines: Fix crash when undefining created VM before starting installation (rhbz#1916597)
+- machines: Fix shutting down transient VM (rhbz#1916595)
+- machines: Fix VM detail page's "Install" button (rhbz#1916120)
+
+* Fri Jan 08 2021 Matej Marusak - 235-1
+- machines: Fix check of cpu configuration between active/inactive XML (rhbz#1913205)
+- machines: Fix rounding of memory when switching from MB to GB (rhbz#1908683)
+
+* Mon Dec 14 2020 Katerina Koukiou - 234-1
+- machines: Allow editing VM's CPU mode and model (rhbz#1683301)
+- machines: Add support for cloning VMs (rhbz#1683391)
+- dashboard: Drop cockpit-dashboard package, replaced with shell host switcher
+
+* Fri Nov 27 2020 Katerina Koukiou - 233.1-1
+- machines: Inline error messages (rhbz#1666829)
+- machines: Reimplement the design of the main VMs list (rhbz#1780537, rhbz#1847712, rhbz#1858716, rhbz#1862406, rhbz#1873931)
+- storage: List entries from /etc/crypttab that are still locked
+- machines: Add support for reverting and deleting VM snapshots
+- machines: Add support for VM snapshots (rhbz#1668870, rhbz#1673158)
+- machines: Virtual machine list filtering
+- storage: Better support for "noauto" LUKS devices
+- machines: Fix 'PXE' installed VMs having network first in the boot order even after the installation finishded (rhbz#1859008)
+- machines: Fix Desktop Viewer Console tab CSS issues (rhbz#1868584)
+- tools: Fix duplicated -debuginfo files (rhbz#1870521)
+- machines: Show cdrom details in bootorder dialog (rhbz#1880175)
+
+* 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
+- machines: add padding to storage pools list cells (rhbz#1857500)
+- machines: Fix OS autodetection in create VM dialog (rhbz#1862333)
+- machines: Fix TypeError for OSRow in VM creation dialog (rhbz#1862106)
+
+* Thu Jul 23 2020 Martin Pitt - 224-1
+- Translation updates
+- Machines: Remove creation of user account (rhbz#1853918)
+- Machines: Fix reboot after PXE installation (rhbz#1853408, rhbz#1859045)
+- Machines: Fix notification for transient VMs (rhbz#1853649)
+- Machines: Make Storage/Network lists consistent with VM list (rhbz#1854257)
+- Machines: Fix close button on NIC Edit modal dialog header (rhbz#1857044)
+
+* Thu Jul 09 2020 Martin Pitt - 223-1
+- Translation updates
+
* Fri Jun 26 2020 Matej Marusak - 222.1-1
- Some integration test fixes for dist-git gating