[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#881491: marked as done (lintian: update gir checks for gobject-introspection/1.54.1-3 mini-policy)



Your message dated Sat, 07 Apr 2018 09:19:37 +0000
with message-id <E1f4k0X-0009RJ-D2@fasolo.debian.org>
and subject line Bug#881491: fixed in lintian 2.5.81
has caused the Debian Bug report #881491,
regarding lintian: update gir checks for gobject-introspection/1.54.1-3 mini-policy
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
881491: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=881491
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: lintian
Version: 2.5.59
Severity: wishlist
Tags: patch
X-Debbugs-Cc: debian-gtk-gnome@lists.debian.org

I've just uploaded gobject-introspection/1.54.1-3, with GIR mini-policy
updates aimed at reducing false positives from Lintian. The mini-policy
now recommends that when multiple GIR typelibs are bundled in a single
package (like gir1.2-gtk-3.0 containing Gtk-3.0, Gdk-3.0 and GdkX11-3.0),
that package should have Provides entries for those typelibs' canonical
package names (in this case gir1.2-gdk-3.0 and gir1.2-gdkx11-3.0).
This gives Lintian enough information to avoid some unnecessary warnings
when the attached patches are applied.

Additionally, patch 0001 silences a false-positive when packages ship
files other than GIR XML in /usr/share/gir-1.0 (gobject-introspection will
probably be the only package to do this, but it seemed more correct to
make this change rather than using an override).

Thanks,
    smcv
>From 72fa7ee6c470b1c6051eb4f36342ff97b3550f91 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@debian.org>
Date: Thu, 2 Nov 2017 14:50:04 +0000
Subject: [PATCH 1/4] gir: Only treat *.gir files in usr/share/gir-1.0 as GIR

gir-1.2.rnc, a RELAX NG schema, is in this directory but is not itself
a GIR file.

Signed-off-by: Simon McVittie <smcv@debian.org>
---
 checks/gir.pm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/checks/gir.pm b/checks/gir.pm
index 59d7e4099..b64d19577 100644
--- a/checks/gir.pm
+++ b/checks/gir.pm
@@ -69,7 +69,10 @@ sub _run_binary {
     $madir = '${DEB_HOST_MULTIARCH}' unless defined $madir;
 
     if (my $xmldir = $info->index_resolved_path('usr/share/gir-1.0/')) {
-        push @girs, $xmldir->children;
+        foreach my $child ($xmldir->children) {
+            next unless $child =~ m/\.gir$/;
+            push @girs, $child;
+        }
     }
 
     if (my $dir = $info->index_resolved_path('usr/lib/girepository-1.0/')) {
-- 
2.15.0

>From 4b5b78db2b0334d1e5f9baae9dca41bd10dbe403 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@debian.org>
Date: Sat, 11 Nov 2017 14:04:20 +0000
Subject: [PATCH 2/4] gir: Allow a Provides on the canonical name for typelib
 packages

It's OK for closely related typelibs to be grouped together, as was done
for packages like GLib, GTK+ and Tracker, as long as they are expected
to bump introspection ABI version at the same time. The new mini-policy
version in gobject-introspection/1.54.1-3 recommends that they have
a Provides on all the package names that would have been used if they
were separated (for example gir1.2-gtk-3.0 Provides gir1.2-gdk-3.0 and
gir1.2-gdkx11-3.0). If this is done, we can detect it and suppress the
typelib-package-name-does-not-match tag.

Signed-off-by: Simon McVittie <smcv@debian.org>
---
 checks/gir.desc | 15 ++++++++++-----
 checks/gir.pm   |  3 ++-
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/checks/gir.desc b/checks/gir.desc
index 611b4ac54..b154d6a88 100644
--- a/checks/gir.desc
+++ b/checks/gir.desc
@@ -48,11 +48,16 @@ Certainty: possible
 Info: GObject-Introspection binary typelibs (<tt>Foo-23.typelib</tt>)
  should normally be made available in a package named gir1.2-foo-23.
  .
- Please ignore and override this tag if the typelib is deliberately shipped
- in a package whose name does not match the typelib's machine-readable name.
- For example, <tt>gir1.2-glib-2.0</tt> is named for the <tt>GLib-2.0</tt>
- typelib, but also contains the <tt>GObject-2.0</tt> and <tt>Gio-2.0</tt>
- typelibs; this is unconventional, but is allowed.
+ If multiple typelibs are shipped in the same package, then that package
+ should have versioned <tt>Provides</tt> for the names that would have been
+ used for separate packages. This arrangement should only be used if the
+ included typelibs' versions are expected to remain the same at all times.
+ .
+ For example, <tt>gir1.2-gtk-3.0</tt> is named for the <tt>Gtk-3.0</tt>
+ typelib, but also contains the <tt>Gdk-3.0</tt> and <tt>GdkX11-3.0</tt>
+ typelibs. It should have versioned <tt>Provides</tt> entries for
+ <tt>gir1.2-gdk-3.0 (= ${binary:Version})</tt>
+ and <tt>gir1.2-gdkx11-3.0 (= ${binary:Version})</tt> to indicate this.
 Ref: /usr/share/doc/gobject-introspection/policy.txt
 
 Tag: typelib-section-not-introspection
diff --git a/checks/gir.pm b/checks/gir.pm
index b64d19577..5001ea0b8 100644
--- a/checks/gir.pm
+++ b/checks/gir.pm
@@ -121,7 +121,8 @@ sub _run_binary {
     foreach my $typelib (@typelibs) {
         my $expected = 'gir1.2-' . lc($typelib->basename);
         $expected =~ s/\.typelib$//;
-        if ($pkg ne $expected) {
+        if ($pkg ne $expected
+            and not $info->relation('provides')->implies($expected)) {
             tag('typelib-package-name-does-not-match', $typelib, $expected);
         }
     }
-- 
2.15.0

>From 965fa362140c573ff0184ee7aa93b92fde3b685f Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@debian.org>
Date: Sat, 11 Nov 2017 14:01:03 +0000
Subject: [PATCH 3/4] gir: -dev can Depend on a typelib that Provides the
 canonical name

If gir1.2-foo-1.0 bundles typelibs for both Foo-1.0 and FooBar-1.0
(as seen in gir1.2-glib-2.0 and gir1.2-gtk-3.0), and the -dev package
containing the GIR XML for Foo-1.0 and FooBar-1.0 depends on
gir1.2-foo-1.0, then it is unnecessary to depend on gir1.2-foobar-1.0
as well.

Signed-off-by: Simon McVittie <smcv@debian.org>
---
 checks/gir.desc | 21 +++++++++++++--------
 checks/gir.pm   | 12 +++++++++++-
 2 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/checks/gir.desc b/checks/gir.desc
index b154d6a88..2c5980af7 100644
--- a/checks/gir.desc
+++ b/checks/gir.desc
@@ -32,14 +32,19 @@ Info: Development packages that contain GObject-Introspection XML files
  (for example <tt>gir1.2-foo-23 (= ${binary:Version})</tt> when using
  debhelper).
  .
- Please ignore and override this tag if the typelib is shipped in a package
- whose name does not match the typelib's machine-readable name, and the
- development package correctly depends on that package instead. For example,
- <tt>gir1.2-glib-2.0</tt> is named for the <tt>GLib-2.0</tt> typelib, but
- also contains the <tt>GObject-2.0</tt> and <tt>Gio-2.0</tt> typelibs, so
- it is correct that <tt>libglib2.0-dev</tt> depends on
- <tt>gir1.2-glib-2.0</tt> but not on <tt>gir1.2-gobject-2.0</tt> or
- <tt>gir1.2-gio-2.0</tt>.
+ If multiple typelibs are shipped in the same package, then that package
+ should have versioned <tt>Provides</tt> for the names that would have been
+ used for separate packages. In this case, Lintian does not emit this tag
+ when a group of binary packages from the same source is checked together.
+ .
+ For example, <tt>libgtk-3-dev</tt> contains <tt>Gtk-3.0.gir</tt>,
+ <tt>Gdk-3.0.gir</tt> and <tt>GdkX11-3.0.gir</tt>.
+ <tt>gir1.2-gtk-3.0</tt> contains all three corresponding typelibs,
+ so it is sufficient for <tt>libgtk-3-dev</tt> to depend on
+ <tt>gir1.2-gtk-3.0</tt>. Giving <tt>gir1.2-gtk-3.0</tt> <tt>Provides</tt>
+ entries for <tt>gir1.2-gdk-3.0 (= ${binary:Version})</tt>
+ and <tt>gir1.2-gdkx11-3.0 (= ${binary:Version})</tt> signals this
+ situation to Lintian.
 Ref: /usr/share/doc/gobject-introspection/policy.txt
 
 Tag: typelib-package-name-does-not-match
diff --git a/checks/gir.pm b/checks/gir.pm
index 5001ea0b8..90d4ae134 100644
--- a/checks/gir.pm
+++ b/checks/gir.pm
@@ -109,10 +109,20 @@ sub _run_binary {
         }
     }
 
-    foreach my $gir (@girs) {
+  GIR: foreach my $gir (@girs) {
         my $expected = 'gir1.2-' . lc($gir->basename);
         $expected =~ s/\.gir$//;
         my $version = $info->field('version');
+
+        foreach my $bin ($group->get_binary_processables) {
+            next unless $bin->pkg_name =~ m/^gir1\.2-/;
+            my $other = $bin->pkg_name.' (= '.$bin->info->field('version').')';
+            if (    $bin->info->relation('provides')->implies($expected)
+                and $info->relation('strong')->implies($other)) {
+                next GIR;
+            }
+        }
+
         if (not $info->relation('strong')->implies("$expected (= $version)")) {
             tag('gir-missing-typelib-dependency', $gir, $expected);
         }
-- 
2.15.0

>From 7c12b7ea6526f5c412a599dafbd05bb00e1d70e9 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@debian.org>
Date: Sat, 11 Nov 2017 14:11:01 +0000
Subject: [PATCH 4/4] t/tests/gir: Add a test-case for bundling multiple
 related typelibs

Signed-off-by: Simon McVittie <smcv@debian.org>
---
 t/tests/gir/debian/debian/control.in                              | 1 +
 t/tests/gir/debian/debian/gir1.2-good-42.install                  | 1 +
 t/tests/gir/debian/debian/libgood-42-dev.install                  | 1 +
 t/tests/gir/debian/usr/lib/girepository-1.0/GoodExtras-42.typelib | 1 +
 t/tests/gir/debian/usr/share/gir-1.0/GoodExtras-42.gir            | 1 +
 t/tests/gir/tags                                                  | 1 +
 6 files changed, 6 insertions(+)
 create mode 100644 t/tests/gir/debian/usr/lib/girepository-1.0/GoodExtras-42.typelib
 create mode 100644 t/tests/gir/debian/usr/share/gir-1.0/GoodExtras-42.gir

diff --git a/t/tests/gir/debian/debian/control.in b/t/tests/gir/debian/debian/control.in
index 5e3b19237..4c1816727 100644
--- a/t/tests/gir/debian/debian/control.in
+++ b/t/tests/gir/debian/debian/control.in
@@ -20,6 +20,7 @@ Description: {$description}
 Package: gir1.2-good-42
 Section: introspection
 Architecture: any
+Provides: gir1.2-goodextras-42 (= $\{binary:Version\})
 Depends: $\{gir:Depends\}, $\{shlibs:Depends\}, $\{misc:Depends\}, libgood-42-0
 Description: {$description} - GIR
  This is a test package designed to exercise some feature or tag of
diff --git a/t/tests/gir/debian/debian/gir1.2-good-42.install b/t/tests/gir/debian/debian/gir1.2-good-42.install
index 5f80ac46e..5f1692f20 100644
--- a/t/tests/gir/debian/debian/gir1.2-good-42.install
+++ b/t/tests/gir/debian/debian/gir1.2-good-42.install
@@ -1 +1,2 @@
 usr/lib/girepository-1.0/Good-42.typelib
+usr/lib/girepository-1.0/GoodExtras-42.typelib
diff --git a/t/tests/gir/debian/debian/libgood-42-dev.install b/t/tests/gir/debian/debian/libgood-42-dev.install
index ae668960b..1bc5a2c48 100644
--- a/t/tests/gir/debian/debian/libgood-42-dev.install
+++ b/t/tests/gir/debian/debian/libgood-42-dev.install
@@ -1,2 +1,3 @@
 usr/share/gir-1.0/Good-42.gir
+usr/share/gir-1.0/GoodExtras-42.gir
 usr/lib/libgood-42-dev-dummy
diff --git a/t/tests/gir/debian/usr/lib/girepository-1.0/GoodExtras-42.typelib b/t/tests/gir/debian/usr/lib/girepository-1.0/GoodExtras-42.typelib
new file mode 100644
index 000000000..64fba428e
--- /dev/null
+++ b/t/tests/gir/debian/usr/lib/girepository-1.0/GoodExtras-42.typelib
@@ -0,0 +1 @@
+not really a typelib
diff --git a/t/tests/gir/debian/usr/share/gir-1.0/GoodExtras-42.gir b/t/tests/gir/debian/usr/share/gir-1.0/GoodExtras-42.gir
new file mode 100644
index 000000000..59e267dd4
--- /dev/null
+++ b/t/tests/gir/debian/usr/share/gir-1.0/GoodExtras-42.gir
@@ -0,0 +1 @@
+not really GIR
diff --git a/t/tests/gir/tags b/t/tests/gir/tags
index 4350bd613..d358220e9 100644
--- a/t/tests/gir/tags
+++ b/t/tests/gir/tags
@@ -1,6 +1,7 @@
 E: gir1.2-bad: typelib-in-arch-all-package usr/lib/girepository-1.0/Bad-23.typelib
 I: gir1.2-bad: typelib-not-in-multiarch-directory usr/lib/girepository-1.0/Bad-23.typelib usr/lib/${DEB_HOST_MULTIARCH}/girepository-1.0
 I: gir1.2-good-42: typelib-not-in-multiarch-directory usr/lib/girepository-1.0/Good-42.typelib usr/lib/MULTIARCH/girepository-1.0
+I: gir1.2-good-42: typelib-not-in-multiarch-directory usr/lib/girepository-1.0/GoodExtras-42.typelib usr/lib/MULTIARCH/girepository-1.0
 W: gir source: typelib-missing-gir-depends gir1.2-bad
 W: gir1.2-bad: gir-in-arch-all-package usr/share/gir-1.0/Bad-23.gir
 W: gir1.2-bad: gir-missing-typelib-dependency usr/share/gir-1.0/Bad-23.gir gir1.2-bad-23
-- 
2.15.0


--- End Message ---
--- Begin Message ---
Source: lintian
Source-Version: 2.5.81

We believe that the bug you reported is fixed in the latest version of
lintian, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 881491@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Chris Lamb <lamby@debian.org> (supplier of updated lintian package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Sat, 07 Apr 2018 08:17:26 +0000
Source: lintian
Binary: lintian
Architecture: source all
Version: 2.5.81
Distribution: unstable
Urgency: medium
Maintainer: Debian Lintian Maintainers <lintian-maint@debian.org>
Changed-By: Chris Lamb <lamby@debian.org>
Description:
 lintian    - Debian package checker
Closes: 881491 893480 894077 894139 894356 894368 894397 894690 894747 894817 894820 894834 895036
Changes:
 lintian (2.5.81) unstable; urgency=medium
 .
   The "Policy 4.1.4" release.
 .
   * Summary of tag changes:
     + Added:
       - debian-rules-contains-unnecessary-get-orig-source-target
       - source-contains-empty-directory
     + Removed:
       - debian-rules-missing-good-practice-target-dfsg
 .
   * checks/control-file.desc:
     + [CL] Correct location of "AutomaticDebugPackages" wiki page in the
       description of the debian-control-has-obsolete-dbg-package tag.
       Thanks to Antonio Ospite for the report.  (Closes: #893480)
   * checks/cruft.{desc,pm}:
     + [CL] Add a pedantic warning for upstream tarballs that contain empty
       directories as these can cause problems with git-buildpackage.
       Thanks to Balint Reczey for the idea!  (Closes: #894368)
   * checks/gir.{desc,pm}:
     + [CL] Apply a patch series from Simon McVittie to match the Gobject
       Introspection policy and fixing a series of false-positives. Thanks!
       (Closes: #881491)
   * checks/java.{desc,pm}:
     + [CL] Apply patch from Bas Couwenberg to bump the maximum permissible
       bytecode version number now that openjdk-9 is now the default-jdk.
       (Closes: #894397)
     + [CL] Apply patch from Bas Couwenberg to update the description of
       the unknown-java-class-version tag for openjdk-9.  (Closes: #894397)
   * checks/files.pm:
     + [CL] Add .ogg files to the list of non-license file extensions to
       avoid a false-positive in extra-license-file. Thanks to Innocent De
       Marchi for the report.  (Closes: #894139)
     + [CL] Avoid false-positives in Mallard XML files; <link href="...">
       tags are anchor element and not followed automatically. Thanks to
       Simon McVittie for the report.  (Closes: #894690)
   * checks/rules.{desc,pm}:
     + [CL] Stop recommending that packages with repacked tarballs specify a
       get-orig-source target; this was removed in Debian Policy 4.1.4 in
       favour of uscan(1) and debian/watch.
     + [CL] Warn about packages that have apparently unnecessary
       "get-orig-source" targets such as single-line calls to uscan(1).
       Thanks to Mattia Rizzolo for the idea.  (Closes: #895036)
   * checks/scripts.pm:
     + [CL] Also include the offending/unknown shebang in the output of
       missing (unversioned) interpreters.
   * checks/source-copyright.desc:
     + [CL] Change the severity from pedantic ("P:") to info ("I:") for the
       missing-explanation-for-repacked-upstream-tarball tag.
   * checks/testsuite.{desc,pm}:
     + [CL] Apply patch from Georg Faerber to add missing "needs-reboot" to
       the list of known autopkgtest restrictions.  (Closes: #894817)
     + [CL] Apply patch from Georg Faerber to adjust the autopkgtest
       URIs from Alioth to salsa.debian.org.  (Closes: #894820)
   * checks/udev.pm:
     + [CL] Apply patch from Thomas Dallmair to avoid false positives in the
       udev-rule-missing-subsystem tag when SUBSYSTEM GOTO is not the last
       "GOTO" statement.  Thanks!  (Closes: #894356)
   * checks/upstream-metadata.pm:
     + [CL] Re-enable YAML parsing of upstream metadata which was disabled
       in 2.5.51 (via #861958) to close CVE-2017-8829 as we can now use the
       $LoadBlessed option of YAML::XS if we have version 0.69 or above
       Thanks to Dylan Aïssi for the report.  (Closes: #894747)
 .
   * commands/lintian.pm, checks/{fields,patch-systems,python}, ...:
     + [CL] Apply patch from Ville Skyttä correcting many spelling mistakes
       in Lintian itself.  Thanks!  (Closes: #894834)
 .
   * data/standards-version/release-dates:
     + [CL] Add 4.1.4 as a known Standards-Version.
   * data/spelling/corrections:
     + [PW] Add a number of corrections.
 .
   * lib/Lintian/Check.pm:
     + [CL] Avoid false positives in spelling detection by allowing "(s)"
       suffixes instead of universally stripping all parenthesis.  This
       prevents, for example, "directory(s)" from triggering false-positive
       whilst still warning about "directorys".  Thanks to Patrick Matthäi
       for the report.  (Closes: #894077)
   * lib/Lintian/Util.pm:
     + [NT] Fix a bug in do_fork that could cause lintian to fork bomb.
       (See #890873)
Checksums-Sha1:
 c50a144ebbc72004fe5b02cc39df27e69ac3a3f9 3505 lintian_2.5.81.dsc
 3efab7653b8b39b2bb0f5eda693b5b235296fa3f 1551488 lintian_2.5.81.tar.xz
 dcaeb461b9478bb6221907594e559141507daaa7 1113096 lintian_2.5.81_all.deb
 bf46001fbac0a719b7a77c0bedf5f6531209dd60 16017 lintian_2.5.81_amd64.buildinfo
Checksums-Sha256:
 1232f6539becdc5e29a2e2de3b3dbe183dfb1389497ca3371f42e7e4e2b90606 3505 lintian_2.5.81.dsc
 0f00b40103a0b871f49e2856caa104b5acfa6d23a45ece32b2e66037b8d3eca1 1551488 lintian_2.5.81.tar.xz
 49e442dce3e21a61d3b593019136ecec693cbf05f52ef5d702f703932372a72c 1113096 lintian_2.5.81_all.deb
 b115658b222b23d5192e9d1da3f054cedf3258da323cc3a438ce0fe51fb28621 16017 lintian_2.5.81_amd64.buildinfo
Files:
 1e727b2fd7dd9e611ce7b9e6dfdcd104 3505 devel optional lintian_2.5.81.dsc
 861c8f1270994ccd298f028b3ca79e10 1551488 devel optional lintian_2.5.81.tar.xz
 6983c114182b3a7af8184ded952a16bb 1113096 devel optional lintian_2.5.81_all.deb
 c5a84e5a18a4837cbcbe11b3b3296810 16017 devel optional lintian_2.5.81_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEwv5L0nHBObhsUz5GHpU+J9QxHlgFAlrIi9cACgkQHpU+J9Qx
HligExAAj3uI+5MUWfUNghpP+LxvFWhQtYNs6LknDkO215GIYoNmVYwrdQbU3MFB
YSqq5ravdes1TjO81IGxSM+wzwBDRjFUXwmOESiuWfusSpVN6K4j9wd49s36w7VJ
CEM19xHUNz9T29XNPLF5PgRyIFIiKEp4rRCGrE5qhdjwsycTBxN4Zjrmi/bcmtiu
NTtWQIHtVdre/GDYPw2fAZQdovL7XbhkXjgp8HDYtk6zY+rzAQ/k4akBjY5W9vra
faf48KS7qzPz8Z4VwOzliPtO5+EH1bE/iuGhOX2DlR7T4/s/VidgmidlGJsvi3ah
VM8r3JZuY+5Z1oRvMilExy7g283nbc5zXlYhj4Wf/oPq5jhl9+wA2XO1Mk+qiBEz
j7gO8ASgl8IUAr+BsJXgjGNawNbs0ubIGRRcF0uAhm1WUuiyeNyhWNO2LjRv0pgy
rzE7ijusgLZd4Scd1H7B4RdycjUVOCrQxGSBXG6pOSTpP8/3P6gL7M5whNtqgRPl
zfgkEsqKQH+Q87QL6wOTvCR2eVWCF/JWahmBPvP9OJnk+qhcxmrpg07kaPoi9Qmp
u5K7U4JBr0PsQXDPzopPnAH42ClYPrADJ3HVn4o++GrUUMjSthDBXTIv6iO7giTw
qPunoFmBYV4rSSHFnz+QA6bbnFoj1kIMBbwA3IiltpdvLUSNWug=
=kliA
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: