commit:     c551c46f7f8ce26730d6424552e83fb4d74a63e2
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 14 02:20:56 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Oct 14 02:21:41 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c551c46f

sys-apps/xdg-desktop-portal: provide default portal config

Install a default to avoid breakage: >=1.18.0 assumes that DEs/WMs
will install their own, but we want some fallback in case they don't
(so will probably keep this forever). DEs need time to catch up even
if they will eventually provide one anyway. See bug #915356.

TODO: Add some docs on wiki for users to add their own preference
for minimalist WMs etc.

Thanks to abby from Void for pointing me to 
https://github.com/void-linux/void-packages/commit/b4c404aac0af3ced08671a8840cd261198689cef
and psykose as well.

Bug: https://github.com/flatpak/xdg-desktop-portal/issues/1017
Bug: https://github.com/flatpak/xdg-desktop-portal/issues/1077
Bug: https://github.com/flatpak/xdg-desktop-portal/issues/1102
Closes: https://bugs.gentoo.org/915356
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../xdg-desktop-portal/files/default-portals.conf  |   2 +
 .../xdg-desktop-portal-1.18.0-r2.ebuild            | 121 +++++++++++++++++++++
 2 files changed, 123 insertions(+)

diff --git a/sys-apps/xdg-desktop-portal/files/default-portals.conf 
b/sys-apps/xdg-desktop-portal/files/default-portals.conf
new file mode 100644
index 000000000000..028e24d2bbee
--- /dev/null
+++ b/sys-apps/xdg-desktop-portal/files/default-portals.conf
@@ -0,0 +1,2 @@
+[preferred]
+default=*

diff --git a/sys-apps/xdg-desktop-portal/xdg-desktop-portal-1.18.0-r2.ebuild 
b/sys-apps/xdg-desktop-portal/xdg-desktop-portal-1.18.0-r2.ebuild
new file mode 100644
index 000000000000..a5c4f5c61cce
--- /dev/null
+++ b/sys-apps/xdg-desktop-portal/xdg-desktop-portal-1.18.0-r2.ebuild
@@ -0,0 +1,121 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit meson python-any-r1 systemd
+
+DESCRIPTION="Desktop integration portal"
+HOMEPAGE="https://flatpak.org/ https://github.com/flatpak/xdg-desktop-portal";
+SRC_URI="https://github.com/flatpak/${PN}/releases/download/${PV}/${P}.tar.xz";
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="geolocation flatpak seccomp systemd test"
+RESTRICT="!test? ( test )"
+# Upstream expect flatpak to be used w/ seccomp and flatpak needs bwrap anyway
+REQUIRED_USE="flatpak? ( seccomp )"
+
+DEPEND="
+       >=dev-libs/glib-2.66:2
+       dev-libs/json-glib
+       dev-python/docutils
+       >=media-video/pipewire-0.3:=
+       >=sys-fs/fuse-3.10.0:3[suid]
+       x11-libs/gdk-pixbuf
+       geolocation? ( >=app-misc/geoclue-2.5.3:2.0 )
+       flatpak? ( sys-apps/flatpak )
+       seccomp? ( sys-apps/bubblewrap )
+       systemd? ( sys-apps/systemd )
+"
+RDEPEND="
+       ${DEPEND}
+       sys-apps/dbus
+"
+BDEPEND="
+       dev-util/gdbus-codegen
+       sys-devel/gettext
+       virtual/pkgconfig
+       test? (
+               ${PYTHON_DEPS}
+               dev-libs/libportal
+               $(python_gen_any_dep '
+                       dev-python/pytest[${PYTHON_USEDEP}]
+                       dev-python/pytest-xdist[${PYTHON_USEDEP}]
+                       dev-python/python-dbusmock[${PYTHON_USEDEP}]
+               ')
+       )
+"
+
+PATCHES=(
+       # These tests require connections to pipewire, internet, /dev/fuse
+       "${FILESDIR}/${P}-sandbox-disable-failing-tests.patch"
+
+       # https://github.com/flatpak/xdg-desktop-portal/pull/1100
+       
"${FILESDIR}/0001-meson.build-allow-linux-to-build-without-flatpak-ins.patch"
+       
"${FILESDIR}/0002-meson.build-allow-linux-to-build-without-bubblewrap.patch"
+       "${FILESDIR}/0003-Make-flatpak-bwrap-optional.patch"
+)
+
+pkg_setup() {
+       use test && python-any-r1_pkg_setup
+}
+
+python_check_deps() {
+       python_has_version "dev-python/pytest[${PYTHON_USEDEP}]" &&
+       python_has_version "dev-python/pytest-xdist[${PYTHON_USEDEP}]" &&
+       python_has_version "dev-python/python-dbusmock[${PYTHON_USEDEP}]"
+}
+
+src_configure() {
+       local emesonargs=(
+               -Ddbus-service-dir="${EPREFIX}/usr/share/dbus-1/services"
+               -Dsystemd-user-unit-dir="$(systemd_get_userunitdir)"
+               $(meson_feature flatpak)
+               # Only used for tests
+               $(meson_feature test libportal)
+               $(meson_feature geolocation geoclue)
+               $(meson_feature seccomp bwrap)
+               $(meson_feature systemd)
+               # Requires flatpak
+               -Ddocbook-docs=disabled
+               # -Dxmlto-flags=
+               -Ddatarootdir="${EPREFIX}/usr/share"
+               -Dman-pages=enabled
+               -Dinstalled-tests=false
+               $(meson_feature test pytest)
+       )
+
+       meson_src_configure
+}
+
+src_install() {
+       meson_src_install
+
+       # Install a default to avoid breakage: >=1.18.0 assumes that DEs/WMs
+       # will install their own, but we want some fallback in case they don't
+       # (so will probably keep this forever). DEs need time to catch up even
+       # if they will eventually provide one anyway. See bug #915356.
+       #
+       # TODO: Add some docs on wiki for users to add their own preference
+       # for minimalist WMs etc.
+       insinto /usr/share/xdg-desktop-portal
+       newins "${FILESDIR}"/default-portals.conf portals.conf
+}
+
+pkg_postinst() {
+       if ! has_version gui-libs/xdg-desktop-portal-lxqt && ! has_version 
gui-libs/xdg-desktop-portal-wlr && \
+               ! has_version kde-plasma/xdg-desktop-portal-kde && ! 
has_version sys-apps/xdg-desktop-portal-gnome && \
+               ! has_version sys-apps/xdg-desktop-portal-gtk; then
+               elog "${PN} is not usable without any of the following XDP"
+               elog "implementations installed:"
+               elog "  gui-libs/xdg-desktop-portal-lxqt"
+               elog "  gui-libs/xdg-desktop-portal-wlr"
+               elog "  kde-plasma/xdg-desktop-portal-kde"
+               elog "  sys-apps/xdg-desktop-portal-gnome"
+               elog "  sys-apps/xdg-desktop-portal-gtk"
+       fi
+}

Reply via email to