[arch-commits] Commit in open-vm-tools/repos (5 files)
Christian Hesse
eworm at archlinux.org
Fri Feb 9 06:48:36 UTC 2018
Date: Friday, February 9, 2018 @ 06:48:36
Author: eworm
Revision: 290429
archrelease: copy trunk to community-testing-x86_64
Added:
open-vm-tools/repos/community-testing-x86_64/
open-vm-tools/repos/community-testing-x86_64/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch
(from rev 290428, open-vm-tools/trunk/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch)
open-vm-tools/repos/community-testing-x86_64/PKGBUILD
(from rev 290428, open-vm-tools/trunk/PKGBUILD)
open-vm-tools/repos/community-testing-x86_64/vmtoolsd.service
(from rev 290428, open-vm-tools/trunk/vmtoolsd.service)
open-vm-tools/repos/community-testing-x86_64/vmware-vmblock-fuse.service
(from rev 290428, open-vm-tools/trunk/vmware-vmblock-fuse.service)
-------------------------------------------------------------+
0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch | 83 ++++++++++
PKGBUILD | 66 +++++++
vmtoolsd.service | 9 +
vmware-vmblock-fuse.service | 12 +
4 files changed, 170 insertions(+)
Copied: open-vm-tools/repos/community-testing-x86_64/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch (from rev 290428, open-vm-tools/trunk/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch)
===================================================================
--- community-testing-x86_64/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch (rev 0)
+++ community-testing-x86_64/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch 2018-02-09 06:48:36 UTC (rev 290429)
@@ -0,0 +1,83 @@
+From c5bc784da611ee929e0da7c20a410e03e6540613 Mon Sep 17 00:00:00 2001
+From: Oliver Kurth <okurth at vmware.com>
+Date: Fri, 26 Jan 2018 15:04:36 -0800
+Subject: [PATCH] Set X11 as the backend for gtk3 of open-vm-tools
+
+Open-vm-tools defaults to gtk3. For distros like Fedora 27, Wayland is
+the default display server. With no restriction on the backend, plugins
+will try to use Wayland as the backend of Gtk+3. As a result,
+gdk_display_get_default() returns a Wayland display;
+gdk_display_get_default_group() also returns a Wayland window. Applying
+GDK_WINDOW_XID() on the Wayland window will result in the crash reported
+on recent Linux releases that default to a Wayland display server.
+
+As X11-specific code is widely used in tools plugins, a migratation to
+Wayland in the short term is not possible. So, as a compromised solution,
+plugins can be forced to run on XWayland, which is the compatible mode
+of Wayland for legacy X11 clients.
+
+gdk_set_allowed_backends() only applies when flag GTK3 is defined, and Gtk
+version cwgreater than 3.10.
+---
+ open-vm-tools/services/plugins/desktopEvents/x11Lock.c | 12 +++++++++++-
+ open-vm-tools/services/plugins/dndcp/copyPasteDnDX11.cpp | 14 +++++++++++++-
+ 2 files changed, 24 insertions(+), 2 deletions(-)
+
+diff --git a/open-vm-tools/services/plugins/desktopEvents/x11Lock.c b/open-vm-tools/services/plugins/desktopEvents/x11Lock.c
+index 572234ac..613b6946 100644
+--- a/open-vm-tools/services/plugins/desktopEvents/x11Lock.c
++++ b/open-vm-tools/services/plugins/desktopEvents/x11Lock.c
+@@ -1,5 +1,5 @@
+ /*********************************************************
+- * Copyright (C) 2010-2016 VMware, Inc. All rights reserved.
++ * Copyright (C) 2010-2018 VMware, Inc. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+@@ -364,6 +364,16 @@ X11Lock_Init(ToolsAppCtx *ctx,
+ g_set_prgname(VMUSER_TITLE);
+ argv[0] = VMUSER_TITLE;
+
++#if GTK_MAJOR_VERSION > 3 || (GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION >= 10)
++ /*
++ * On recent distros, Wayland is the default display server. If the obtained
++ * display or window is a wayland one, applying X11 specific functions on them
++ * will result in crashes. Before migrating the X11 specific code to Wayland,
++ * force using X11 as the backend of Gtk+3. gdk_set_allowed_backends() is
++ * introduced since Gtk+3.10 and Wayland is supported from Gtk+3.10.
++ */
++ gdk_set_allowed_backends("x11");
++#endif
+ /* XXX: is calling gtk_init() multiple times safe? */
+ gtk_init(&argc, (char ***) &argv);
+
+diff --git a/open-vm-tools/services/plugins/dndcp/copyPasteDnDX11.cpp b/open-vm-tools/services/plugins/dndcp/copyPasteDnDX11.cpp
+index fffdc402..4c2f3d8d 100644
+--- a/open-vm-tools/services/plugins/dndcp/copyPasteDnDX11.cpp
++++ b/open-vm-tools/services/plugins/dndcp/copyPasteDnDX11.cpp
+@@ -1,5 +1,5 @@
+ /*********************************************************
+- * Copyright (C) 2010-2016 VMware, Inc. All rights reserved.
++ * Copyright (C) 2010-2018 VMware, Inc. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+@@ -211,6 +211,18 @@ gboolean
+ CopyPasteDnDX11::Init(ToolsAppCtx *ctx)
+ {
+ TRACE_CALL();
++
++#if GTK_MAJOR_VERSION > 3 || (GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION >= 10)
++ /*
++ * On recent distros, Wayland is the default display server. If the obtained
++ * display or window is a wayland one, applying X11 specific functions on them
++ * will result in crashes. Before migrating the X11 specific code to Wayland,
++ * force using X11 as the backend of Gtk+3. gdk_set_allowed_backends() is
++ * introduced since Gtk+3.10 and Wayland is supported from Gtk+3.10.
++ */
++ gdk_set_allowed_backends("x11");
++#endif
++
+ CopyPasteDnDWrapper *wrapper = CopyPasteDnDWrapper::GetInstance();
+
+ ASSERT(ctx);
Copied: open-vm-tools/repos/community-testing-x86_64/PKGBUILD (from rev 290428, open-vm-tools/trunk/PKGBUILD)
===================================================================
--- community-testing-x86_64/PKGBUILD (rev 0)
+++ community-testing-x86_64/PKGBUILD 2018-02-09 06:48:36 UTC (rev 290429)
@@ -0,0 +1,66 @@
+# $Id$
+# Maintainer: Sergej Pupykin <pupykin.s+arch at gmail.com>
+# Contributor: Krzysztof Raczkowski <raczkow at gmail.com>
+
+pkgname=open-vm-tools
+epoch=6
+pkgver=10.2.0
+pkgrel=2
+pkgdesc='The Open Virtual Machine Tools (open-vm-tools) are the open source implementation of VMware Tools'
+arch=('x86_64')
+url='https://github.com/vmware/open-vm-tools'
+license=('LGPL')
+depends=('libdnet' 'icu' 'procps-ng' 'uriparser' 'libsigc++' 'libxss'
+ 'iproute2' 'fuse2' 'lsb-release' 'libmspack')
+makedepends=('chrpath' 'doxygen' 'gtkmm3' 'libxtst' 'python')
+optdepends=('gtkmm3: DnD/CP plugin'
+ 'libxtst: DnD/CP, resolution set plugins'
+ 'netctl: suspend-resume network state'
+ 'networkmanager: suspend-resume network state')
+backup=('etc/xdg/autostart/vmware-user.desktop')
+options=('docs')
+source=("$pkgname-$pkgver.tar.gz::https://github.com/vmware/open-vm-tools/archive/stable-${pkgver/_/-}.tar.gz"
+ '0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch'
+ 'vmtoolsd.service'
+ 'vmware-vmblock-fuse.service')
+sha256sums=('40dccff0630034b4985ac7a0d3bfcf89025e9a57f518e561db8c6fd7322bf029'
+ '0adad94c3cdd748e8b809456972f9248412265cd4c2edec9391d977232330b32'
+ '5a9403f78356873258521644068f2c9639b994d5954e5ad953934136822b2689'
+ '99e3cc1da20a751049144cc02dec77174a55109b5b5960e1facd78709da7724f')
+
+prepare() {
+ cd "$srcdir/$pkgname-"*"/open-vm-tools"
+
+ patch -Np2 < "${srcdir}"/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch
+}
+
+build() {
+ cd "$srcdir/$pkgname-"*"/open-vm-tools"
+
+ autoreconf -vi
+ sh ./configure --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc \
+ --with-udev-rules-dir=/usr/lib/udev/rules.d \
+ --without-xmlsecurity \
+ --without-kernel-modules
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-"*"/open-vm-tools"
+
+ make install DESTDIR="$pkgdir"
+ chmod 7755 "$pkgdir"/usr/bin/vmware-user-suid-wrapper
+
+ # install vmware-xdg-detect-de
+ install -D -m 0755 scripts/common/vmware-xdg-detect-de "$pkgdir"/usr/bin/vmware-xdg-detect-de
+
+ # We don't want a symlink in /sbin
+ rm "$pkgdir"/sbin/mount.vmhgfs
+ rmdir "$pkgdir"/sbin
+
+ # install systemd files
+ install -Dm644 "$srcdir"/vmtoolsd.service "$pkgdir"/usr/lib/systemd/system/vmtoolsd.service
+ install -Dm644 "$srcdir"/vmware-vmblock-fuse.service "$pkgdir"/usr/lib/systemd/system/vmware-vmblock-fuse.service
+}
Copied: open-vm-tools/repos/community-testing-x86_64/vmtoolsd.service (from rev 290428, open-vm-tools/trunk/vmtoolsd.service)
===================================================================
--- community-testing-x86_64/vmtoolsd.service (rev 0)
+++ community-testing-x86_64/vmtoolsd.service 2018-02-09 06:48:36 UTC (rev 290429)
@@ -0,0 +1,9 @@
+[Unit]
+Description=Open Virtual Machine Tools (VMware Tools)
+ConditionVirtualization=vmware
+
+[Service]
+ExecStart=/usr/bin/vmtoolsd
+
+[Install]
+WantedBy=multi-user.target
Copied: open-vm-tools/repos/community-testing-x86_64/vmware-vmblock-fuse.service (from rev 290428, open-vm-tools/trunk/vmware-vmblock-fuse.service)
===================================================================
--- community-testing-x86_64/vmware-vmblock-fuse.service (rev 0)
+++ community-testing-x86_64/vmware-vmblock-fuse.service 2018-02-09 06:48:36 UTC (rev 290429)
@@ -0,0 +1,12 @@
+[Unit]
+Description=Open Virtual Machine Tools (vmware-vmblock-fuse)
+ConditionVirtualization=vmware
+
+[Service]
+Type=simple
+RuntimeDirectory=vmblock-fuse
+RuntimeDirectoryMode=755
+ExecStart=/usr/bin/vmware-vmblock-fuse -d -f -o subtype=vmware-vmblock,default_permissions,allow_other /run/vmblock-fuse
+
+[Install]
+WantedBy=multi-user.target
More information about the arch-commits
mailing list