[arch-commits] Commit in open-vm-tools/repos (5 files)

Evangelos Foutras foutrelis at archlinux.org
Wed Mar 28 00:46:11 UTC 2018


    Date: Wednesday, March 28, 2018 @ 00:46:09
  Author: foutrelis
Revision: 313005

archrelease: copy trunk to community-staging-x86_64

Added:
  open-vm-tools/repos/community-staging-x86_64/
  open-vm-tools/repos/community-staging-x86_64/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch
    (from rev 313004, open-vm-tools/trunk/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch)
  open-vm-tools/repos/community-staging-x86_64/PKGBUILD
    (from rev 313004, open-vm-tools/trunk/PKGBUILD)
  open-vm-tools/repos/community-staging-x86_64/vmtoolsd.service
    (from rev 313004, open-vm-tools/trunk/vmtoolsd.service)
  open-vm-tools/repos/community-staging-x86_64/vmware-vmblock-fuse.service
    (from rev 313004, 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-staging-x86_64/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch (from rev 313004, open-vm-tools/trunk/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch)
===================================================================
--- community-staging-x86_64/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch	                        (rev 0)
+++ community-staging-x86_64/0001-Set-X11-as-the-backend-for-gtk3-of-open-vm-tools.patch	2018-03-28 00:46:09 UTC (rev 313005)
@@ -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-staging-x86_64/PKGBUILD (from rev 313004, open-vm-tools/trunk/PKGBUILD)
===================================================================
--- community-staging-x86_64/PKGBUILD	                        (rev 0)
+++ community-staging-x86_64/PKGBUILD	2018-03-28 00:46:09 UTC (rev 313005)
@@ -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=3
+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-staging-x86_64/vmtoolsd.service (from rev 313004, open-vm-tools/trunk/vmtoolsd.service)
===================================================================
--- community-staging-x86_64/vmtoolsd.service	                        (rev 0)
+++ community-staging-x86_64/vmtoolsd.service	2018-03-28 00:46:09 UTC (rev 313005)
@@ -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-staging-x86_64/vmware-vmblock-fuse.service (from rev 313004, open-vm-tools/trunk/vmware-vmblock-fuse.service)
===================================================================
--- community-staging-x86_64/vmware-vmblock-fuse.service	                        (rev 0)
+++ community-staging-x86_64/vmware-vmblock-fuse.service	2018-03-28 00:46:09 UTC (rev 313005)
@@ -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