[arch-commits] Commit in spice-vdagent/repos/community-x86_64 (3 files)

Balló György bgyorgy at archlinux.org
Thu Oct 3 21:51:45 UTC 2019


    Date: Thursday, October 3, 2019 @ 21:51:45
  Author: bgyorgy
Revision: 512577

archrelease: copy trunk to community-x86_64

Added:
  spice-vdagent/repos/community-x86_64/PKGBUILD
    (from rev 512576, spice-vdagent/trunk/PKGBUILD)
  spice-vdagent/repos/community-x86_64/gnome-3.34.patch
    (from rev 512576, spice-vdagent/trunk/gnome-3.34.patch)
Deleted:
  spice-vdagent/repos/community-x86_64/PKGBUILD

------------------+
 PKGBUILD         |   80 +++++++++++++++++++++++---------------------
 gnome-3.34.patch |   95 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 138 insertions(+), 37 deletions(-)

Deleted: PKGBUILD
===================================================================
--- PKGBUILD	2019-10-03 21:51:41 UTC (rev 512576)
+++ PKGBUILD	2019-10-03 21:51:45 UTC (rev 512577)
@@ -1,37 +0,0 @@
-# Maintainer: Balló György <ballogyor+arch at gmail dot com>
-# Contributor: mutantmonkey <aur at mutantmonkey.in>
-
-pkgname=spice-vdagent
-pkgver=0.19.0
-pkgrel=1
-pkgdesc="Spice agent for Linux guests"
-arch=('x86_64')
-url="https://www.spice-space.org/"
-license=('GPL')
-depends=('alsa-lib' 'dbus' 'glib2' 'gtk3' 'libdrm' 'libpciaccess' 'libxfixes' 'libxinerama' 'libxrandr' 'systemd')
-makedepends=('spice-protocol')
-backup=('etc/conf.d/spice-vdagentd')
-source=("https://www.spice-space.org/download/releases/$pkgname-$pkgver.tar.bz2")
-sha256sums=('63a77c611c84f8120519a78a30256e43e159085831ac82de71643db643972f65')
-
-prepare() {
-	cd $pkgname-$pkgver
-	sed -i 's|/etc/sysconfig/spice-vdagentd|/etc/conf.d/spice-vdagentd|
-	        s|/usr/sbin/spice-vdagentd|/usr/bin/spice-vdagentd|' data/spice-vdagentd.service
-	sed -i 's|/etc/sysconfig/spice-vdagentd|/etc/conf.d/spice-vdagentd|' data/spice-vdagentd.1.in
-}
-
-build() {
-	cd $pkgname-$pkgver
-	./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --sbindir=/usr/bin \
-	            --with-session-info=systemd --with-init-script=systemd
-	make
-}
-
-package() {
-	cd $pkgname-$pkgver
-	make DESTDIR="$pkgdir" install
-	rm -r "$pkgdir/var"
-	install -dm755 "$pkgdir/etc/conf.d/"
-	echo 'SPICE_VDAGENTD_EXTRA_ARGS=""' > "$pkgdir/etc/conf.d/spice-vdagentd"
-}

Copied: spice-vdagent/repos/community-x86_64/PKGBUILD (from rev 512576, spice-vdagent/trunk/PKGBUILD)
===================================================================
--- PKGBUILD	                        (rev 0)
+++ PKGBUILD	2019-10-03 21:51:45 UTC (rev 512577)
@@ -0,0 +1,43 @@
+# Maintainer: Balló György <ballogyor+arch at gmail dot com>
+# Contributor: mutantmonkey <aur at mutantmonkey.in>
+
+pkgname=spice-vdagent
+pkgver=0.19.0
+pkgrel=2
+pkgdesc="Spice agent for Linux guests"
+arch=('x86_64')
+url="https://www.spice-space.org/"
+license=('GPL')
+depends=('alsa-lib' 'dbus' 'glib2' 'gtk3' 'libdrm' 'libpciaccess' 'libxfixes' 'libxinerama' 'libxrandr' 'systemd')
+makedepends=('spice-protocol')
+backup=('etc/conf.d/spice-vdagentd')
+source=("https://www.spice-space.org/download/releases/$pkgname-$pkgver.tar.bz2"
+        "gnome-3.34.patch")
+sha256sums=('63a77c611c84f8120519a78a30256e43e159085831ac82de71643db643972f65'
+            'cde285aba68b2949bc2ae4b5351691a3fd0b6d5a618623ea6d1a420c7ec56c7d')
+
+prepare() {
+	cd $pkgname-$pkgver
+
+	# Fix session lookup for new GNOME versions
+	patch -Np1 -i ../gnome-3.34.patch
+
+	sed -i 's|/etc/sysconfig/spice-vdagentd|/etc/conf.d/spice-vdagentd|
+	        s|/usr/sbin/spice-vdagentd|/usr/bin/spice-vdagentd|' data/spice-vdagentd.service
+	sed -i 's|/etc/sysconfig/spice-vdagentd|/etc/conf.d/spice-vdagentd|' data/spice-vdagentd.1.in
+}
+
+build() {
+	cd $pkgname-$pkgver
+	./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --sbindir=/usr/bin \
+	            --with-session-info=systemd --with-init-script=systemd
+	make
+}
+
+package() {
+	cd $pkgname-$pkgver
+	make DESTDIR="$pkgdir" install
+	rm -r "$pkgdir/var"
+	install -dm755 "$pkgdir/etc/conf.d/"
+	echo 'SPICE_VDAGENTD_EXTRA_ARGS=""' > "$pkgdir/etc/conf.d/spice-vdagentd"
+}

Copied: spice-vdagent/repos/community-x86_64/gnome-3.34.patch (from rev 512576, spice-vdagent/trunk/gnome-3.34.patch)
===================================================================
--- gnome-3.34.patch	                        (rev 0)
+++ gnome-3.34.patch	2019-10-03 21:51:45 UTC (rev 512577)
@@ -0,0 +1,95 @@
+From a494b8e799715ddf934ff4bd92a358a66204eb83 Mon Sep 17 00:00:00 2001
+From: Benjamin Berg <bberg at redhat.com>
+Date: Fri, 13 Sep 2019 17:00:27 +0200
+Subject: [PATCH] vdagentd: Fix session lookup for new GNOME versions
+
+New GNOME versions have started to manage the session using the systemd
+user instance. The effect of this is that the spice-vdagent running in
+the user session is forked off (indirectly) from the systemd user
+instance and does technically not belong to any session.
+
+The correct way of handling this situation is to simply assume that the
+process belongs to the users graphical session. Add a heuristic to find
+the graphical session based on the UID, fixing spice-vdagent running on
+GNOME 3.34 with systemd integration.
+---
+ src/vdagentd/systemd-login.c | 58 +++++++++++++++++++++++++++++++++---
+ 1 file changed, 54 insertions(+), 4 deletions(-)
+
+diff --git a/src/vdagentd/systemd-login.c b/src/vdagentd/systemd-login.c
+index a11b66d..2e237ae 100644
+--- a/src/vdagentd/systemd-login.c
++++ b/src/vdagentd/systemd-login.c
+@@ -286,15 +286,65 @@ const char *session_info_get_active_session(struct session_info *si)
+ 
+ char *session_info_session_for_pid(struct session_info *si, uint32_t pid)
+ {
++    int i;
+     int r;
++    GStrv sessions = NULL;
+     char *session = NULL;
++    uid_t uid;
+ 
+     r = sd_pid_get_session(pid, &session);
+-    if (r < 0)
+-        syslog(LOG_ERR, "Error getting session for pid %u: %s",
+-                pid, strerror(-r));
+-    else if (si->verbose)
++    if (r >= 0)
++        goto out;
++
++    /* If we could not get a session for the pid then the agent is probably
++     * running in a systemd managed session. In that case we simply assume
++     * it is actually part of the newest graphical session we can find. */
++    r = sd_pid_get_owner_uid(pid, &uid);
++    if (r < 0) {
++        syslog(LOG_ERR, "Error getting owner UID for pid %u: %s",
++               pid, strerror(-r));
++        goto out;
++    }
++
++    r = sd_uid_get_sessions(uid, 0, &sessions);
++    if (r < 0) {
++        syslog(LOG_ERR, "Error getting sessions for UID %d: %s",
++               (int) uid, strerror(-r));
++        goto out;
++    }
++
++    for (i = 0; sessions[i] != NULL; i++) {
++        char *session_type = NULL;
++
++        r = sd_session_get_type(sessions[i], &session_type);
++
++        if (r < 0) {
++            syslog(LOG_ERR, "Error getting session type for session %s: %s",
++                   sessions[i], strerror(-r));
++            continue;
++        }
++
++        if (g_strcmp0(session_type, "wayland") == 0 ||
++            g_strcmp0(session_type, "x11") == 0 ||
++            g_strcmp0(session_type, "mir") == 0) {
++
++            /* We prefer the newest session (i.e. last entry) from the
++             * user, assuming that any old session that still exist has
++             * just not yet died properly. */
++            if (session != NULL)
++                free (session);
++            session = g_strdup(sessions[i]);
++        }
++
++        free(session_type);
++    }
++
++    g_strfreev(sessions);
++
++out:
++    if (session != NULL && si->verbose) {
+         syslog(LOG_INFO, "Session for pid %u: %s", pid, session);
++    }
+ 
+     return session;
+ }
+-- 
+2.22.0
+



More information about the arch-commits mailing list