Date: Sunday, March 15, 2020 @ 20:20:48 Author: bgyorgy Revision: 598512
upgpkg: spice-vdagent 0.20.0-1: Update to new version Modified: spice-vdagent/trunk/PKGBUILD Deleted: spice-vdagent/trunk/gnome-3.34.patch ------------------+ PKGBUILD | 14 ++----- gnome-3.34.patch | 95 ----------------------------------------------------- 2 files changed, 4 insertions(+), 105 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2020-03-15 20:20:42 UTC (rev 598511) +++ PKGBUILD 2020-03-15 20:20:48 UTC (rev 598512) @@ -2,8 +2,8 @@ # Contributor: mutantmonkey <[email protected]> pkgname=spice-vdagent -pkgver=0.19.0 -pkgrel=2 +pkgver=0.20.0 +pkgrel=1 pkgdesc="Spice agent for Linux guests" arch=('x86_64') url="https://www.spice-space.org/" @@ -11,17 +11,11 @@ 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') +source=("https://www.spice-space.org/download/releases/$pkgname-$pkgver.tar.bz2") +sha256sums=('2e6b7222675ee19ea38c52165abe4d836c2ac5d5bf902d4dfca13da1ec143359') 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 Deleted: gnome-3.34.patch =================================================================== --- gnome-3.34.patch 2020-03-15 20:20:42 UTC (rev 598511) +++ gnome-3.34.patch 2020-03-15 20:20:48 UTC (rev 598512) @@ -1,95 +0,0 @@ -From a494b8e799715ddf934ff4bd92a358a66204eb83 Mon Sep 17 00:00:00 2001 -From: Benjamin Berg <[email protected]> -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 -
