Package: exaile
Version: 4.1.3+dfsg-1
Severity: normal
Tags: patch
User: pkg-gnome-maintain...@lists.alioth.debian.org
Usertags: girepository-2.0

exaile contains code that explicitly loads the GIRepository-2.0
typelib. This is currently part of gir1.2-glib-2.0, but it will need
to be moved to a separate binary package during the GNOME 46 cycle,
as a result of most of gir1.2-glib-2.0 moving to src:glib2.0 (which has
broken some of the API/ABI in the process, resulting in it shipping an
incompatible GIRepository-3.0 instead).

python3-gi will continue to pull in the GIRepository-2.0 from
src:gobject-introspection, at least for a while, but it will be easier to
keep track of which packages will be affected by a future transition from
GIRepository-2.0 to GIRepository-3.0 if we make the dependency explicit.
Please consider applying the attached patch 0001 to achieve this.

While checking this, I also noticed that the package imports lots of
typelibs without explicitly depending on them: they are currently pulled
in via indirect dependencies, but that could change. Please consider
applying the attached patches 0002 and 0003 to make these dependencies
explicit.

I've assumed that the non-plugin parts of the codebase are functionally
necessary, but the plugins would only be a Suggests if packaged separately;
please arrange the dependencies between Depends, Recommends and Suggests
in a more appropriate way if my assumptions were incorrect.

The patches are untested (I don't use exaile myself) but are simple enough
that I hope they're correct.

Thanks,
    smcv
>From 5e380e8e957b3dd1c7b25be1e60c2a20fb2caa15 Mon Sep 17 00:00:00 2001
From: Simon McVittie <s...@debian.org>
Date: Fri, 29 Dec 2023 00:26:47 +0000
Subject: [PATCH 1/3] d/control: Explicitly depend on gir1.2-girepository-2.0

This is currently a virtual package provided by gir1.2-glib-2.0, but it
will need to be split into a separate package during the
GNOME 46/GLib 2.79.x cycle.

Making this dependency explicit will also help to keep track of which
packages will need coordination when PyGI switches from GIRepository 2.0
to GIRepository 3.0.
---
 debian/control | 1 +
 1 file changed, 1 insertion(+)

diff --git a/debian/control b/debian/control
index 9d76d95..dd01fde 100644
--- a/debian/control
+++ b/debian/control
@@ -16,6 +16,7 @@ Depends:
  gstreamer1.0-plugins-good (>=1.14),
  python3-mutagen (>=1.38),
  python3-gi-cairo (>=3.26),
+ gir1.2-girepository-2.0,
  gir1.2-gtk-3.0 (>=3.22),
  gir1.2-gst-plugins-base-1.0 (>=1.14),
  gvfs-backends (>=1.36),
-- 
2.43.0

>From 59b0960f5be864f7c0648eba14569bd1bce70a5b Mon Sep 17 00:00:00 2001
From: Simon McVittie <s...@debian.org>
Date: Fri, 29 Dec 2023 00:28:01 +0000
Subject: [PATCH 2/3] d/control: Add explicit dependencies on directly-imported
 typelibs

These are all pulled in as indirect dependencies, but indirect
dependencies can change, so it's more robust if we directly depend on
everything imported by the Exaile codebase (other than plugins).
---
 debian/control | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/debian/control b/debian/control
index dd01fde..bdf0b60 100644
--- a/debian/control
+++ b/debian/control
@@ -16,9 +16,17 @@ Depends:
  gstreamer1.0-plugins-good (>=1.14),
  python3-mutagen (>=1.38),
  python3-gi-cairo (>=3.26),
+ gir1.2-atk-1.0,
+ gir1.2-gdk-3.0,
+ gir1.2-gdkpixbuf-2.0,
+ gir1.2-gio-2.0,
  gir1.2-girepository-2.0,
+ gir1.2-glib-2.0,
+ gir1.2-gobject-2.0,
  gir1.2-gtk-3.0 (>=3.22),
  gir1.2-gst-plugins-base-1.0 (>=1.14),
+ gir1.2-gstreamer-1.0,
+ gir1.2-pango-1.0,
  gvfs-backends (>=1.36),
  python3-libdiscid (>=2.0),
  python3-musicbrainzngs (>=0.7),
-- 
2.43.0

>From 715f1f61ad979bc597dcf23e27428a16d590ec45 Mon Sep 17 00:00:00 2001
From: Simon McVittie <s...@debian.org>
Date: Fri, 29 Dec 2023 00:28:46 +0000
Subject: [PATCH 3/3] d/control: Add Suggests on optional typelibs imported by
 plugins

Some plugins will not work without installing extra typelibs. Make
those a bit more discoverable.
---
 debian/control | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/debian/control b/debian/control
index bdf0b60..49a2d79 100644
--- a/debian/control
+++ b/debian/control
@@ -31,6 +31,11 @@ Depends:
  python3-libdiscid (>=2.0),
  python3-musicbrainzngs (>=0.7),
  ${misc:Depends}
+Suggests:
+ gir1.2-keybinder-3.0,
+ gir1.2-pangocairo-1.0,
+ gir1.2-notify-0.7,
+ gir1.2-webkit2-4.1 | gir1.2-webkit2-4.0,
 Description: Music player with a simple interface and powerful capabilities
  Exaile is a music player with a simple interface and powerful
  music management capabilities. Features include automatic fetching of album
-- 
2.43.0

Reply via email to