[PATCH 0/2] Potential fix for the latest xdg-desktop-portal

  • Open
  • quality assurance status badge
Details
3 participants
  • John Kehayias
  • Maxim Cournoyer
  • Rodion Goritskov
Owner
unassigned
Submitted by
Rodion Goritskov
Severity
normal
R
R
Rodion Goritskov wrote on 27 Sep 2024 21:17
(address . guix-patches@gnu.org)(name . Rodion Goritskov)(address . rodion.goritskov@gmail.com)
cover.1727461684.git.rodion.goritskov@gmail.com
Hello!

The problem with the xdg-desktop-portal is due to the configuration changes introduced in this commit [1].
Now it relies on using the configuration file to decide which xdg-desktop-portal implementation to use. However, as Guix uses XDG_DESKTOP_PORTAL_DIR to specify the portal (not the xdg-portal-configuration) directory, the newest xdg-desktop-portal skip configuration search at all [2].
If we patch the process of configuration search a little bit - just to continue searching in case the XDG_DESKTOP_PORTAL_DIR is specified, but doesn't contain any {*}-portals.conf files (our case), we will have the right configuration files (at least for KDE I have tested this changes on) to be read by xdg-desktop-portal according to priorities (XDG_DATA_DIRS in our case) [3] (so they could be even overridden in users' home directory).

It's a bit hacky, but works fine.


Rodion Goritskov (2):
gnu: xdg-desktop-portal-next: Fix configuration file search.
gnu: xdg-desktop-portal: Update to 1.18.4.

gnu/local.mk | 1 +
gnu/packages/freedesktop.scm | 77 ++++++-------------
...al-disable-configuration-search-exit.patch | 28 +++++++
gnu/packages/telegram.scm | 2 +-
4 files changed, 55 insertions(+), 53 deletions(-)
create mode 100644 gnu/packages/patches/xdg-desktop-portal-disable-configuration-search-exit.patch


base-commit: 9a141b5bd633227ea31776b9ce7ca40928de2442
--
2.46.0
R
R
Rodion Goritskov wrote on 28 Sep 2024 09:41
[PATCH 1/2] gnu: xdg-desktop-portal-next: Fix configuration file search.
(address . 73520@debbugs.gnu.org)(name . Rodion Goritskov)(address . rodion.goritskov@gmail.com)
6c0a8919ba4ccd7dea35b27b9f6ed9a22c57882a.1727461684.git.rodion.goritskov@gmail.com
* gnu/local.mk: Add patch.
* gnu/packages/freedesktop.scm (xdg-desktop-portal-next): Add patch.
* gnu/packages/patches/xdg-desktop-portal-disable-configuration-search-exit.patch: New file

Change-Id: Idd637f5613e7d1403fc3a0feeff53a7931e68fc6
---
gnu/local.mk | 1 +
gnu/packages/freedesktop.scm | 5 ++--
...al-disable-configuration-search-exit.patch | 28 +++++++++++++++++++
3 files changed, 32 insertions(+), 2 deletions(-)
create mode 100644 gnu/packages/patches/xdg-desktop-portal-disable-configuration-search-exit.patch

Toggle diff (64 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index c2027f9eeb..dc08ff2b82 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2311,6 +2311,7 @@ dist_patch_DATA = \
%D%/packages/patches/wpa-supplicant-dbus-group-policy.patch \
%D%/packages/patches/x265-arm-flags.patch \
%D%/packages/patches/xdg-desktop-portal-disable-portal-tests.patch\
+ %D%/packages/patches/xdg-desktop-portal-disable-configuration-search-exit.patch\
%D%/packages/patches/xdg-desktop-portal-wlr-harcoded-length.patch\
%D%/packages/patches/xen-docs-use-predictable-ordering.patch \
%D%/packages/patches/xen-remove-config.gz-timestamp.patch \
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 23ed788689..73bd5c8a3d 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -3086,8 +3086,9 @@ (define-public xdg-desktop-portal-next
(sha256
(base32
"0r8y8qmzcfj7b7brqcxr9lg8pavfds815ffvj0kqc378fhgaln5q"))
- ;; Disable portal tests since they try to use fuse.
- (patches (search-patches "xdg-desktop-portal-disable-portal-tests.patch"))))
+ (patches (search-patches
+ "xdg-desktop-portal-disable-portal-tests.patch"
+ "xdg-desktop-portal-disable-configuration-search-exit.patch"))))
(build-system meson-build-system)
(arguments
(substitute-keyword-arguments (package-arguments xdg-desktop-portal)
diff --git a/gnu/packages/patches/xdg-desktop-portal-disable-configuration-search-exit.patch b/gnu/packages/patches/xdg-desktop-portal-disable-configuration-search-exit.patch
new file mode 100644
index 0000000000..4cb77de806
--- /dev/null
+++ b/gnu/packages/patches/xdg-desktop-portal-disable-configuration-search-exit.patch
@@ -0,0 +1,28 @@
+From 37003d1f99246c88cbe7cf2f83616642e0fdf3fb Mon Sep 17 00:00:00 2001
+From: Rodion Goritskov <rodion.goritskov@gmail.com>
+Date: Fri, 27 Sep 2024 00:44:07 +0400
+Subject: [PATCH] portal-impl: Check if there are any configuration files in XDG_DESKTOP_PORTAL_DIR before exiting configuration search
+
+---
+ src/portal-impl.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/portal-impl.c b/src/portal-impl.c
+index 8c1fd53..8708409 100644
+--- a/src/portal-impl.c
++++ b/src/portal-impl.c
+@@ -438,9 +438,8 @@ load_portal_configuration (gboolean opt_verbose)
+
+ if (portal_dir != NULL)
+ {
+- load_config_directory (portal_dir, desktops, opt_verbose);
+- /* All other config directories are ignored when this is set */
+- return;
++ if (load_config_directory (portal_dir, desktops, opt_verbose))
++ return;
+ }
+
+ /* $XDG_CONFIG_HOME/xdg-desktop-portal/(DESKTOP-)portals.conf */
+--
+2.46.0
+
--
2.46.0
R
R
Rodion Goritskov wrote on 28 Sep 2024 09:41
[PATCH 2/2] gnu: xdg-desktop-portal: Update to 1.18.4.
(address . 73520@debbugs.gnu.org)(name . Rodion Goritskov)(address . rodion.goritskov@gmail.com)
4d6858377ab01fff649eb70b92e01cafe4b42ab0.1727461684.git.rodion.goritskov@gmail.com
* gnu/packages/freedesktop.scm (xdg-desktop-portal): Update to 1.18.4.
* gnu/packages/telegram.scm (telegram-desktop): Change native-input to xdg-desktop-portal.

Change-Id: I25ac64ce62f994e1e2cffbdbd8e8a7779a6b9658
---
gnu/packages/freedesktop.scm | 78 ++++++++++++------------------------
gnu/packages/telegram.scm | 2 +-
2 files changed, 26 insertions(+), 54 deletions(-)

Toggle diff (122 lines)
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 73bd5c8a3d..f86c611c57 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -3012,7 +3012,7 @@ (define-public libportal
(define-public xdg-desktop-portal
(package
(name "xdg-desktop-portal")
- (version "1.16.0")
+ (version "1.18.4")
(source
(origin
(method url-fetch)
@@ -3021,30 +3021,34 @@ (define-public xdg-desktop-portal
version "/xdg-desktop-portal-" version ".tar.xz"))
(sha256
(base32
- "06cczlh39kc41rvav06v37sad827y61rffy3v29i918ibj8sahav"))))
- (build-system gnu-build-system)
+ "0r8y8qmzcfj7b7brqcxr9lg8pavfds815ffvj0kqc378fhgaln5q"))
+ (patches (search-patches
+ "xdg-desktop-portal-disable-portal-tests.patch"
+ "xdg-desktop-portal-disable-configuration-search-exit.patch"))))
+ (build-system meson-build-system)
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("autoconf" ,autoconf)
- ("automake" ,automake)
- ("libtool" ,libtool)
- ("glib:bin" ,glib "bin")
- ("which" ,which)
- ("gettext" ,gettext-minimal)))
+ (list pkg-config
+ `(,glib "bin")
+ gettext-minimal
+ python
+ python-dbusmock
+ python-pytest
+ python-pytest-xdist))
(inputs
- `(("gdk-pixbuf" ,gdk-pixbuf)
- ("glib" ,glib)
- ("flatpak" ,flatpak)
- ("fontconfig" ,fontconfig)
- ("json-glib" ,json-glib)
- ("libportal" ,libportal)
- ("dbus" ,dbus)
- ("geoclue" ,geoclue)
- ("pipewire" ,pipewire)
- ("fuse" ,fuse)))
+ (list bubblewrap
+ gdk-pixbuf
+ glib
+ flatpak
+ fontconfig
+ json-glib
+ libportal
+ dbus
+ geoclue
+ pipewire
+ fuse))
(arguments
`(#:configure-flags
- (list "--with-systemd=no")
+ (list "-Dsystemd=disabled")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'po-chmod
@@ -3073,38 +3077,6 @@ (define-public xdg-desktop-portal
and others.")
(license license:lgpl2.1+)))
-(define-public xdg-desktop-portal-next
- (package
- (inherit xdg-desktop-portal)
- (version "1.18.4")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/flatpak/xdg-desktop-portal/releases/download/"
- version "/xdg-desktop-portal-" version ".tar.xz"))
- (sha256
- (base32
- "0r8y8qmzcfj7b7brqcxr9lg8pavfds815ffvj0kqc378fhgaln5q"))
- (patches (search-patches
- "xdg-desktop-portal-disable-portal-tests.patch"
- "xdg-desktop-portal-disable-configuration-search-exit.patch"))))
- (build-system meson-build-system)
- (arguments
- (substitute-keyword-arguments (package-arguments xdg-desktop-portal)
- ((#:configure-flags _ ''())
- #~(list "-Dsystemd=disabled"))))
- (native-inputs
- (list pkg-config
- `(,glib "bin")
- gettext-minimal
- python
- python-dbusmock
- python-pytest
- python-pytest-xdist))
- (inputs (modify-inputs (package-inputs xdg-desktop-portal)
- (prepend bubblewrap)))))
-
(define-public xdg-desktop-portal-gtk
(package
(name "xdg-desktop-portal-gtk")
diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm
index cfcd92fcbc..c0b2122bf5 100644
--- a/gnu/packages/telegram.scm
+++ b/gnu/packages/telegram.scm
@@ -537,7 +537,7 @@ (define-public telegram-desktop
`(,gtk+ "bin")
pkg-config
python-wrapper
- xdg-desktop-portal-next))
+ xdg-desktop-portal))
(inputs
(list abseil-cpp-cxxstd17
alsa-lib
--
2.46.0
J
J
John Kehayias wrote on 17 Jan 07:42 +0100
Re: [bug#73520] [PATCH 0/2] Potential fix for the latest xdg-desktop-portal
(name . Rodion Goritskov)(address . rodion.goritskov@gmail.com)
87ikqe3pqv.fsf@protonmail.com
Hi,

CC'ing Maxim from 73403 though maybe we should include some Gnome-team
people? Though the actual xdg-desktop-portal stuff is pretty general and
doesn't fall under any particular team.

On Fri, Sep 27, 2024 at 11:17 PM, Rodion Goritskov wrote:

Toggle quote (5 lines)
> Hello!
>
> The problem with the xdg-desktop-portal is due to the configuration
> changes introduced in this commit [1].

By problem, do you mean (or also mean) what was reported as breaking in
Gnome in https://issues.guix.gnu.org/73403#2? Have been able to test
that this patch fixes that issue?

Toggle quote (4 lines)
> Now it relies on using the configuration file to decide which xdg-desktop-portal implementation to use. However, as Guix uses XDG_DESKTOP_PORTAL_DIR to specify the portal (not the xdg-portal-configuration) directory, the newest xdg-desktop-portal skip configuration search at all [2].
> If we patch the process of configuration search a little bit - just to continue searching in case the XDG_DESKTOP_PORTAL_DIR is specified, but doesn't contain any {*}-portals.conf files (our case), we will have the right configuration files (at least for KDE I have tested this changes on) to be read by xdg-desktop-portal according to priorities (XDG_DATA_DIRS in our case) [3] (so they could be even overridden in users' home directory).
>

Thanks for the details! I haven't had a chance to look at this carefully
yet. Has this been reported upstream? Is this something that should be
fixed there or is this too particular to a Guix system?

Toggle quote (3 lines)
> It's a bit hacky, but works fine.
>

Works is the important part to start :)

Toggle quote (18 lines)
> [2]: https://github.com/flatpak/xdg-desktop-portal/blob/1b5a16932493324fa0f21cfb1c3f9c1d16cb6a19/src/portal-impl.c#L441
> [3]: https://github.com/flatpak/xdg-desktop-portal/blob/main/doc/portals.conf.rst.in
>
> Rodion Goritskov (2):
> gnu: xdg-desktop-portal-next: Fix configuration file search.
> gnu: xdg-desktop-portal: Update to 1.18.4.
>
> gnu/local.mk | 1 +
> gnu/packages/freedesktop.scm | 77 ++++++-------------
> ...al-disable-configuration-search-exit.patch | 28 +++++++
> gnu/packages/telegram.scm | 2 +-
> 4 files changed, 55 insertions(+), 53 deletions(-)
> create mode 100644 gnu/packages/patches/xdg-desktop-portal-disable-configuration-search-exit.patch
>
>
> base-commit: 9a141b5bd633227ea31776b9ce7ca40928de2442

Thanks!
John
M
M
Maxim Cournoyer wrote on 19 Jan 13:27 +0100
(name . John Kehayias)(address . john.kehayias@protonmail.com)
87v7ub6las.fsf@gmail.com
Hi Rodion (and John!),

John Kehayias <john.kehayias@protonmail.com> writes:

[...]

Toggle quote (9 lines)
>> Hello!
>>
>> The problem with the xdg-desktop-portal is due to the configuration
>> changes introduced in this commit [1].
>
> By problem, do you mean (or also mean) what was reported as breaking in
> Gnome in <https://issues.guix.gnu.org/73403#2>? Have been able to test
> that this patch fixes that issue?

I'm not Rodion, but I assume that's what they meant!

Toggle quote (18 lines)
>> Now it relies on using the configuration file to decide which
>> xdg-desktop-portal implementation to use. However, as Guix uses
>> XDG_DESKTOP_PORTAL_DIR to specify the portal (not the
>> xdg-portal-configuration) directory, the newest xdg-desktop-portal
>> skip configuration search at all [2].
>> If we patch the process of configuration search a little bit - just
>> to continue searching in case the XDG_DESKTOP_PORTAL_DIR is
>> specified, but doesn't contain any {*}-portals.conf files (our
>> case), we will have the right configuration files (at least for KDE
>> I have tested this changes on) to be read by xdg-desktop-portal
>> according to priorities (XDG_DATA_DIRS in our case) [3] (so they
>> could be even overridden in users' home directory).
>>
>
> Thanks for the details! I haven't had a chance to look at this carefully
> yet. Has this been reported upstream? Is this something that should be
> fixed there or is this too particular to a Guix system?

Is it expected that XDG_DESKTOP_PORTAL_DIR as set by Guix can lack a
any *-portals.conf files? That seems odd.

If there's a good reason for that to happen (a valid use case), then an
issue should be opened upstream to start some conversation about this
change of behavior and the best way it should be addressed.

--
Thanks,
Maxim
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 73520@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 73520
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch