diff --git a/.gitignore b/.gitignore index b903811..a72de3d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ *.rpm x86_64 i386 -virt-viewer-*.tar.gz +virt-viewer-*.tar.xz diff --git a/0001-Read-oVirt-CA-and-pass-it-to-gtk-vnc.patch b/0001-Read-oVirt-CA-and-pass-it-to-gtk-vnc.patch new file mode 100644 index 0000000..9b45db3 --- /dev/null +++ b/0001-Read-oVirt-CA-and-pass-it-to-gtk-vnc.patch @@ -0,0 +1,89 @@ +From de864c14146c120b46d435949b1d8d0b11e57b85 Mon Sep 17 00:00:00 2001 +From: Jean-Louis Dupond +Date: Thu, 25 May 2023 16:22:14 +0200 +Subject: [PATCH] Read oVirt CA and pass it to gtk-vnc + +The connection file created by oVirt contains the trusted CA. +When https://gitlab.gnome.org/GNOME/gtk-vnc/-/merge_requests/24 is +merged, we can pass this CA certificate to gtk-vnc to have it trusted. +This can replace manually putting the cacert.pem into ~/.pki/CA/ + +Signed-off-by: Jean-Louis Dupond +--- + src/virt-viewer-session-vnc.c | 25 +++++++++++++++++++++++-- + 1 file changed, 23 insertions(+), 2 deletions(-) + +diff --git a/src/virt-viewer-session-vnc.c b/src/virt-viewer-session-vnc.c +index 6281bd0..1635c1b 100644 +--- a/src/virt-viewer-session-vnc.c ++++ b/src/virt-viewer-session-vnc.c +@@ -42,6 +42,9 @@ + #if VNC_CHECK_VERSION(1, 2, 0) + # define HAVE_VNC_POWER_CONTROL + #endif ++#if VNC_CHECK_VERSION(1, 3, 2) ++# define HAVE_VNC_DISPLAY_CREDENTIAL_CA_CERT_DATA ++#endif + + struct _VirtViewerSessionVnc { + VirtViewerSession parent; +@@ -343,8 +346,8 @@ virt_viewer_session_vnc_auth_credential(GtkWidget *src G_GNUC_UNUSED, + VirtViewerSession *session) + { + VirtViewerSessionVnc *self = VIRT_VIEWER_SESSION_VNC(session); +- char *username = NULL, *password = NULL; +- gboolean wantPassword = FALSE, wantUsername = FALSE; ++ char *username = NULL, *password = NULL, *ca = NULL; ++ gboolean wantPassword = FALSE, wantUsername = FALSE, wantCA = FALSE; + VirtViewerFile *file = NULL; + int i; + +@@ -360,6 +363,9 @@ virt_viewer_session_vnc_auth_credential(GtkWidget *src G_GNUC_UNUSED, + wantPassword = TRUE; + break; + case VNC_DISPLAY_CREDENTIAL_CLIENTNAME: ++#ifdef HAVE_VNC_DISPLAY_CREDENTIAL_CA_CERT_DATA ++ case VNC_DISPLAY_CREDENTIAL_CA_CERT_DATA: ++#endif + break; + default: + g_debug("Unsupported credential type %d", g_value_get_enum(cred)); +@@ -382,6 +388,10 @@ virt_viewer_session_vnc_auth_credential(GtkWidget *src G_GNUC_UNUSED, + password = virt_viewer_file_get_password(file); + wantPassword = FALSE; + } ++ ca = virt_viewer_file_get_ovirt_ca(file); ++ if (wantCA && ca) { ++ wantCA = FALSE; ++ } + } + + if (wantUsername || wantPassword) { +@@ -427,6 +437,16 @@ virt_viewer_session_vnc_auth_credential(GtkWidget *src G_GNUC_UNUSED, + vnc_display_close(self->vnc); + } + break; ++#ifdef HAVE_VNC_DISPLAY_CREDENTIAL_CA_CERT_DATA ++ case VNC_DISPLAY_CREDENTIAL_CA_CERT_DATA: ++ if (vnc_display_set_credential(self->vnc, ++ g_value_get_enum(cred), ++ ca)) { ++ g_debug("Failed to set credential type %d", g_value_get_enum(cred)); ++ vnc_display_close(self->vnc); ++ } ++ break; ++#endif + default: + g_debug("Unsupported credential type %d", g_value_get_enum(cred)); + vnc_display_close(self->vnc); +@@ -436,6 +456,7 @@ virt_viewer_session_vnc_auth_credential(GtkWidget *src G_GNUC_UNUSED, + cleanup: + g_free(username); + g_free(password); ++ g_free(ca); + } + + +-- +2.47.1 + diff --git a/0001-data-remove-bogus-param-for-meson-i18n.merge_file.patch b/0001-data-remove-bogus-param-for-meson-i18n.merge_file.patch new file mode 100644 index 0000000..c9ceb9e --- /dev/null +++ b/0001-data-remove-bogus-param-for-meson-i18n.merge_file.patch @@ -0,0 +1,50 @@ +From 98d9f202ef768f22ae21b5c43a080a1aa64a7107 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= +Date: Tue, 26 Apr 2022 17:36:54 +0100 +Subject: [PATCH] data: remove bogus param for meson i18n.merge_file +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The positional parameter used to be treated as 'input', but since we +already set 'input' explicitly it is redundant. With latest meson +versions it now generates an error + +data/meson.build:4:7: ERROR: Function does not take positional arguments. + +Signed-off-by: Daniel P. Berrangé +--- + data/meson.build | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/data/meson.build b/data/meson.build +index d718491..4325108 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -2,7 +2,6 @@ if host_machine.system() != 'windows' + desktop = 'remote-viewer.desktop' + + i18n.merge_file ( +- desktop, + type: 'desktop', + input: desktop + '.in', + output: desktop, +@@ -14,7 +13,6 @@ if host_machine.system() != 'windows' + mimetypes = 'virt-viewer-mime.xml' + + i18n.merge_file ( +- mimetypes, + type: 'xml', + input: mimetypes + '.in', + output: mimetypes, +@@ -27,7 +25,6 @@ if host_machine.system() != 'windows' + metainfo = 'remote-viewer.appdata.xml' + + i18n.merge_file ( +- metainfo, + type: 'xml', + input: metainfo + '.in', + output: metainfo, +-- +2.37.1 + diff --git a/changelog b/changelog new file mode 100644 index 0000000..9953d04 --- /dev/null +++ b/changelog @@ -0,0 +1,64 @@ +* Sun Jan 19 2025 Fedora Release Engineering - 11.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sat Jul 20 2024 Fedora Release Engineering - 11.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Tue Jul 9 2024 Daniel P. Berrangé - 11.0-9 +- Tweak pod2man dep to suit flatpak builds better + +* Sat Jan 27 2024 Fedora Release Engineering - 11.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jul 22 2023 Fedora Release Engineering - 11.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sat Jan 21 2023 Fedora Release Engineering - 11.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Aug 22 2022 Daniel P. Berrangé - 11.0-5 +- Disable govirt since it is still stuck on soup2 (rhbz#2119727) + +* Tue Aug 2 2022 Daniel P. Berrangé - 11.0-4 +- Fix meson parameter error (rhbz #2113755) + +* Sat Jul 23 2022 Fedora Release Engineering - 11.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sat Jan 22 2022 Fedora Release Engineering - 11.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Nov 30 2021 Daniel P. Berrangé - 11.0-1 +- Rebase to 11.0 release +- Fixes often disabled send-key menu (rhbz#2020872) + +* Thu Nov 25 2021 Daniel P. Berrangé - 10.0-6 +- Add missing dep on libvirt-clients for bash completion +- Refactor setting build-id opt + +* Tue Nov 16 2021 Tom Stellard - 10.0-5 +- Backport fix for uninitialized variable + +* Wed Aug 11 2021 Daniel P. Berrangé - 10.0-4 +- Fix build with newer glib (rhbz#1988037) + +* Fri Jul 23 2021 Fedora Release Engineering - 10.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Apr 26 2021 Daniel P. Berrangé - 10.0-2 +- Explicitly disable spice/ovirt + +* Tue Apr 20 2021 Daniel P. Berrangé - 10.0-1 +- Update to 10.0 release + +* Wed Jan 27 2021 Fedora Release Engineering - 9.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 9.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri May 1 2020 Daniel P. Berrangé - 9.0-1 +- Update to 9.0 release + +* Fri Jan 31 2020 Fedora Release Engineering - 8.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild diff --git a/sources b/sources index 5f117d8..76e5b8e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -69a7c6d5cbd23d478396da4883567261 virt-viewer-0.5.3.tar.gz +SHA512 (virt-viewer-11.0.tar.xz) = 738034e15e40a7aaadd2646bf289c12409cbf2d06925d43baa50fa7bc8438188480d6b97687e9816427ac0a9dae84d205351715cb2f38afdbefa2dd1d134904a diff --git a/virt-viewer.spec b/virt-viewer.spec index 7d44ad8..d39882c 100644 --- a/virt-viewer.spec +++ b/virt-viewer.spec @@ -1,267 +1,102 @@ # -*- rpm-spec -*- -# Plugin isn't ready for real world use yet - it needs -# a security audit at very least -%define _with_plugin %{?with_plugin:1}%{!?with_plugin:0} - -%define with_gtk3 0 -%if 0%{?fedora} >= 15 -%define with_gtk3 1 -%endif - -%define with_spice 0 -%if 0%{?fedora} >= 17 -%define with_spice 1 -%endif - -%if 0%{?rhel} >= 6 -%define with_spice 1 -%endif - -# spice-gtk is x86 x86_64 only currently: -%ifnarch %{ix86} x86_64 -%define with_spice 0 +%if 0%{?rhel} >= 9 +%global with_govirt 0 +%global with_spice 0 +%else +# Disabled since it is still stuck on soup2 +%global with_govirt 0 +%global with_spice 1 %endif Name: virt-viewer -Version: 0.5.3 -Release: 1%{?dist}%{?extra_release} +Version: 11.0 +Release: %autorelease Summary: Virtual Machine Viewer -Group: Applications/System -License: GPLv2+ -URL: http://virt-manager.org/ -Source0: http://virt-manager.org/download/sources/%{name}/%{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +License: GPL-2.0-or-later +URL: https://gitlab.com/virt-viewer/virt-viewer +Source0: https://virt-manager.org/download/sources/%{name}/%{name}-%{version}.tar.xz +Patch: 0001-data-remove-bogus-param-for-meson-i18n.merge_file.patch +Patch: 0001-Read-oVirt-CA-and-pass-it-to-gtk-vnc.patch Requires: openssh-clients -Requires(post): %{_sbindir}/update-alternatives -Requires(postun): %{_sbindir}/update-alternatives -Requires(post): desktop-file-utils -Requires(postun): desktop-file-utils -%if %{with_gtk3} -BuildRequires: gtk3-devel >= 3.0.0 -%else -BuildRequires: gtk2-devel >= 2.12.0 -%endif -BuildRequires: libvirt-devel >= 0.9.7 -BuildRequires: libxml2-devel -%if %{with_gtk3} -BuildRequires: gtk-vnc2-devel >= 0.4.0 -%else -BuildRequires: gtk-vnc-devel >= 0.3.8 -%endif +# Our bash completion script uses virsh to list domains +Requires: libvirt-client + +BuildRequires: gcc +BuildRequires: meson +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(libvirt) +BuildRequires: pkgconfig(libvirt-glib-1.0) +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: pkgconfig(gtk-vnc-2.0) >= 1.5.0 +BuildRequires: pkgconfig(vte-2.91) %if %{with_spice} -%if %{with_gtk3} -BuildRequires: spice-gtk3-devel >= 0.11 -%else -BuildRequires: spice-gtk-devel >= 0.11 -%endif -BuildRequires: spice-protocol >= 0.10.1 -%endif -BuildRequires: /usr/bin/pod2man -BuildRequires: intltool -%if %{_with_plugin} -%if 0%{?fedora} > 8 -BuildRequires: xulrunner-devel -%else -BuildRequires: firefox-devel +BuildRequires: pkgconfig(spice-client-gtk-3.0) +BuildRequires: pkgconfig(spice-protocol) %endif +BuildRequires: perl-podlators +BuildRequires: gettext +%if %{with_govirt} +BuildRequires: pkgconfig(govirt-1.0) +BuildRequires: pkgconfig(rest-0.7) %endif +BuildRequires: pkgconfig(bash-completion) + %description Virtual Machine Viewer provides a graphical console client for connecting to virtual machines. It uses the GTK-VNC or SPICE-GTK widgets to provide the display, and libvirt for looking up VNC/SPICE server details. -%if %{_with_plugin} -%package plugin -Summary: Mozilla plugin for the gtk-vnc library -Group: Development/Libraries -Requires: %{name} = %{version} - -%description plugin -Virtual Machine Viewer provides a graphical console client for connecting -to virtual machines. It uses the GTK-VNC or SPICE-GTK widgets to provide -the display, and libvirt for looking up VNC/SPICE server details. - -This package provides a web browser plugin for Mozilla compatible -browsers. -%endif - %prep -%setup -q +%autosetup -p1 %build -%if %{_with_plugin} -%define plugin_arg --enable-plugin +%define buildid_opt -Dbuild-id=%{release} + +# Enable -Werror on RHEL which has stable GCC toolchain, and +# disable on Fedora/ELN which frequently sees new warnings +# from updated GCC versions +%if 0%{?rhel} && !0%{?eln} +%define werror_opt -Dwerror=true %else -%define plugin_arg --disable-plugin +%define werror_opt -Dwerror=false -Dgit_werror=disabled %endif -%if %{with_spice} -%define spice_arg --with-spice-gtk -%else -%define spice_arg --without-spice-gtk +%if !%{with_govirt} +%define ovirt_opt -Dovirt=disabled %endif -%if %{with_gtk3} -%define gtk_arg --with-gtk=3.0 -%else -%define gtk_arg --with-gtk=2.0 +%if !%{with_spice} +%define spice_opt -Dspice=disabled %endif -%configure %{spice_arg} %{plugin_arg} %{gtk_arg} -%__make %{?_smp_mflags} +%if 0%{?rhel} > 0 +%define osid_opt -Dos-id=rhel%{?rhel} +%endif +%meson %{buildid_opt} %{werror_opt} %{?ovirt_opt} %{?spice_opt} %{?osid_opt} +%meson_build %install -rm -rf $RPM_BUILD_ROOT -%__make install DESTDIR=$RPM_BUILD_ROOT -mkdir -p %{buildroot}%{_libexecdir} -touch %{buildroot}%{_libexecdir}/spice-xpi-client -install -m 0755 data/spice-xpi-client-remote-viewer %{buildroot}%{_libexecdir}/ -%if %{_with_plugin} -rm -f %{buildroot}%{_libdir}/mozilla/plugins/%{name}-plugin.a -rm -f %{buildroot}%{_libdir}/mozilla/plugins/%{name}-plugin.la -%endif +%meson_install + %find_lang %{name} -%clean -rm -rf $RPM_BUILD_ROOT - -%post -/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : -%{_sbindir}/update-alternatives --install %{_libexecdir}/spice-xpi-client \ - spice-xpi-client %{_libexecdir}/spice-xpi-client-remote-viewer 25 -update-desktop-database -q %{_datadir}/applications - -%postun -if [ $1 -eq 0 ] ; then - /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null - /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : - %{_sbindir}/update-alternatives --remove spice-xpi-client %{_libexecdir}/spice-xpi-client-remote-viewer -fi -update-desktop-database -q %{_datadir}/applications - -%posttrans -/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : - %files -f %{name}.lang -%defattr(-,root,root,-) -%doc README COPYING AUTHORS ChangeLog NEWS +%doc README.md COPYING AUTHORS NEWS %{_bindir}/%{name} %{_bindir}/remote-viewer -%dir %{_datadir}/%{name} -%dir %{_datadir}/%{name}/ui/ -%{_datadir}/%{name}/ui/virt-viewer.xml -%{_datadir}/%{name}/ui/virt-viewer-auth.xml -%{_datadir}/%{name}/ui/virt-viewer-about.xml %{_datadir}/icons/hicolor/*/apps/* %{_datadir}/applications/remote-viewer.desktop -%ghost %{_libexecdir}/spice-xpi-client -%{_libexecdir}/spice-xpi-client-remote-viewer +%{_datadir}/metainfo/remote-viewer.appdata.xml +%{_datadir}/mime/packages/virt-viewer-mime.xml %{_mandir}/man1/virt-viewer.1* %{_mandir}/man1/remote-viewer.1* - -%if %{_with_plugin} -%files plugin -%defattr(-, root, root) -%{_libdir}/mozilla/plugins/%{name}-plugin.so -%endif +%{_datadir}/bash-completion/completions/virt-viewer %changelog -* Wed May 16 2012 Daniel P. Berrange - 0.5.3-1 -- Update to 0.5.3 release - -* Fri Mar 9 2012 Daniel P. Berrange - 0.5.2-1 -- Update to 0.5.2 release - -* Thu Feb 17 2012 Daniel P. Berrange - 0.5.1-1 -- Update to 0.5.1 release - -* Tue Feb 14 2012 Daniel P. Berrange - 0.5.0-1 -- Update to 0.5.0 release - -* Sat Jan 14 2012 Fedora Release Engineering - 0.4.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Wed Nov 9 2011 Daniel P. Berrange - 0.4.2-1 -- Update to 0.4.2 release - -* Sun Aug 14 2011 Daniel P. Berrange - 0.4.1-3 -- More ssh tunnelling port fixes - -* Fri Aug 12 2011 Daniel P. Berrange - 0.4.1-2 -- Fix ssh tunnelling - -* Thu Aug 4 2011 Daniel P. Berrange - 0.4.1-1 -- Update to 0.4.1 release - -* Tue Aug 2 2011 Daniel P. Berrange - 0.4.0-2 -- Rebuild for accidental spice-glib soname change - -* Tue Jul 12 2011 Daniel P. Berrange - 0.4.0-1 -- Update to 0.4.0 release -- Switch build to GTK3 instead of GTK2 - -* Tue May 31 2011 Daniel P. Berrange - 0.3.1-2 -- Rebuild for spice-glib ABI breakage - -* Wed May 11 2011 Karsten Hopp 0.3.1-1.1 -- spice-gtk is x86 x86_64 only, don't require it on other archs - -* Mon Feb 21 2011 Daniel P. Berrange - 0.3.1-1 -- Update to 0.3.1 release - -* Mon Feb 21 2011 Daniel P. Berrange - 0.3.0-1 -- Update to 0.3.0 and enable SPICE - -* Mon Feb 07 2011 Fedora Release Engineering - 0.2.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Fri Jan 15 2010 Daniel P. Berrange - 0.2.1-1 -- Update to 0.2.1 release - -* Wed Jul 29 2009 Daniel P. Berrange - 0.2.0-1.fc12 -- Update to 0.2.0 release - -* Sun Jul 26 2009 Fedora Release Engineering - 0.0.3-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Thu May 7 2009 Daniel P. Berrange - 0.0.3-5.fc12 -- Fix auth against libvirt (rhbz #499594) -- Fix confusion of VNC credentials (rhbz #499595) -- Correct keyboard grab handling (rhbz #499362) - -* Wed Feb 25 2009 Fedora Release Engineering - 0.0.3-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Mon Jul 7 2008 Tom "spot" Callaway - 0.0.3-3.fc10 -- fix conditional comparison -- remove file dep - -* Wed Jun 25 2008 Daniel P. Berrange - 0.0.3-2.fc10 -- Rebuild for GNU TLS ABI bump - -* Mon Mar 10 2008 Daniel P. Berrange - 0.0.3-1.fc9 -- Updated to 0.0.3 release - -* Mon Feb 18 2008 Fedora Release Engineering - 0.0.2-4 -- Autorebuild for GCC 4.3 - -* Fri Jan 11 2008 Daniel P. Berrange - 0.0.2-3.fc9 -- Set domain name as window title -- Hide input for passwd fields during auth - -* Mon Oct 15 2007 Daniel P. Berrange - 0.0.2-2.fc8 -- Change TLS x509 credential name to sync with libvirt - -* Tue Aug 28 2007 Daniel P. Berrange - 0.0.2-1.fc8 -- Added support for remote console access - -* Fri Aug 17 2007 Daniel P. Berrange - 0.0.1-2.fc8 -- Restrict built to x86 & ia64 because libvirt is only on those arches - -* Wed Aug 15 2007 Daniel P. Berrange - 0.0.1-1.fc8 -- First release +%autochangelog