Source: gstreamer1.0
Version: 1.24.8-1
Severity: normal
Tags: patch

Current versions of dh_girepository generate systematic virtual package
names for any package containing GObject-Introspection XML or typelibs.

For GIR XML, a module name like Gst-1.0.gir generates a Provides like
gir1.2-gst-1.0-dev via ${gir:Provides}. This helps other packages to set
the correct Build-Depends for what they require, even if the package
might get split up later, and is also useful if you want to enable
cross-compilation of GObject-Introspection and/or implement the "nogir"
build-profile in the future.

Similarly, for typelibs, a module name like Gst-1.0.typelib generates a
Provides like gir1.2-gst-1.0 (if it doesn't match the name of the binary
package, which it intentionally doesn't in the case of gstreamer1.0,
because the upstream provides more than one typelib but the Debian
packaging combines them into a single binary package).

As a minimal change to resolve this bug report, please add ${gir:Provides}
to the Provides of every binary package that contains GIR XML or
typelibs. For gstreamer1.0, I believe this means libgstreamer1.0-dev
and gir1.2-gstreamer-1.0 should gain ${gir:Provides}.

It would also be easy and helpful to add ${gir:Depends} to the packages
where it is generated (I believe this is only libgstreamer1.0-dev),
and add Build-Depends on the systematic names of the GIR XML that the
package depends on (according to the warnings in buildd logs, this means
gir1.2-gmodule-2.0-dev, gir1.2-gobject-2.0-dev and gir1.2-gio-2.0-dev).

I attach patches for this (untested, but should be right).

There are other changes that could be made in order to enable
cross-compiling, but those are out-of-scope for this bug report. Please
see file:///usr/share/doc/gobject-introspection/README.Debian.gz for
future directions.

Thanks,
    smcv
>From 812859a39912a30d60ace8fb1858cfbe6e02e1c9 Mon Sep 17 00:00:00 2001
From: Simon McVittie <s...@debian.org>
Date: Wed, 23 Oct 2024 16:42:39 +0100
Subject: [PATCH 1/3] d/control: Add ${gir:Provides} to packages with GIR XML
 or typelibs

This allows dependent packages to (build-)depend on GStreamer
introspection data via systematic names constructed from the namespace
and version that they import, without needing to know precisely how
GStreamer has been packaged.

It also silences build-time warnings from dh_girepository.

Closes: #-1
---
 debian/control | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/debian/control b/debian/control
index 9aed3c7050..b488a92971 100644
--- a/debian/control
+++ b/debian/control
@@ -63,6 +63,7 @@ Depends: libgstreamer1.0-0 (= ${binary:Version}),
          ${shlibs:Depends},
          ${misc:Depends},
          gir1.2-gstreamer-1.0 (= ${binary:Version})
+Provides: ${gir:Provides}
 Suggests: gstreamer1.0-doc
 Description: GStreamer core development files
  GStreamer is a streaming media framework, based on graphs of filters
@@ -99,6 +100,7 @@ Multi-Arch: same
 Depends: ${gir:Depends},
          ${shlibs:Depends},
          ${misc:Depends}
+Provides: ${gir:Provides}
 Description: GObject introspection data for the GStreamer library
  This package contains introspection data for the GStreamer streaming media
  framework.
-- 
2.45.2

>From 7ad308d5f294f6e727f8005de1e60207568404c4 Mon Sep 17 00:00:00 2001
From: Simon McVittie <s...@debian.org>
Date: Wed, 23 Oct 2024 16:43:42 +0100
Subject: [PATCH 2/3] d/control: Make the -dev package depend on the GIR XML
 that it needs

Recent versions of dh_girepository can generate this dependency
automatically.

This also silences a build warning.
---
 debian/control | 1 +
 1 file changed, 1 insertion(+)

diff --git a/debian/control b/debian/control
index b488a92971..5d715e21df 100644
--- a/debian/control
+++ b/debian/control
@@ -60,6 +60,7 @@ Depends: libgstreamer1.0-0 (= ${binary:Version}),
          libglib2.0-dev,
          libunwind-dev [i386 amd64 armel armhf arm64 powerpc ppc64 ppc64el mipsel mips64el riscv64],
          libdw-dev [i386 amd64 armel armhf arm64 powerpc ppc64 ppc64el mipsel mips64el riscv64],
+         ${gir:Depends},
          ${shlibs:Depends},
          ${misc:Depends},
          gir1.2-gstreamer-1.0 (= ${binary:Version})
-- 
2.45.2

>From 8a0c68bd50593b8433733dd6b5c3007c65ee9b95 Mon Sep 17 00:00:00 2001
From: Simon McVittie <s...@debian.org>
Date: Wed, 23 Oct 2024 16:45:10 +0100
Subject: [PATCH 3/3] d/control: Explicitly build-depend on the GIR XML that is
 needed

In practice these are pulled in by libgirepository1.0-dev, but it's
safer to name them explicitly.

This silences warnings from dh_girepository, and is a prerequisite for
potentially enabling cross-compiling in a future version.
---
 debian/control | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/debian/control b/debian/control
index 5d715e21df..629bb5fc3e 100644
--- a/debian/control
+++ b/debian/control
@@ -8,6 +8,9 @@ Uploaders: Sebastian Dröge <sl...@debian.org>,
 Build-Depends: debhelper-compat (= 13),
                dh-exec,
                dh-sequence-gir,
+               gir1.2-gio-2.0-dev,
+               gir1.2-gmodule-2.0-dev,
+               gir1.2-gobject-2.0-dev,
                meson (>= 0.62),
                pkgconf,
                perl-doc,
-- 
2.45.2

Reply via email to