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

Bug#695345: Please add a check for gobject-introspection packages



After getting this wrong in Flatpak, I have attached a proposed patch
for a new "gir" family of checks.

On Fri, 07 Dec 2012 at 12:10:54 +0100, Michael Biebl wrote:
> 1/ Warn if the gir1.2-foo-X.Y package is not in section "introspection".

W: gir1.2-bad: typelib-section-not-introspection usr/lib/girepository-1.0/Bad-23.typelib misc

(This is done for any package that contains a public typelib)

> 2/ Warn if a package installs a .typelib file in the system path without
> using a separate gir1.2 package.

W: gir1.2-bad: typelib-package-name-does-not-match usr/lib/girepository-1.0/Bad-23.typelib gir1.2-bad-23

> 3/ Warn if the gir1.2-foo-X.Y package has no ${gir:Depends}

W: gir source: typelib-missing-gir-depends gir1.2-bad

> 4/ Warn if the -dev package has no
> Depends: gir1.2-foo-X.Y (= ${binary:Version}). This one is probably
> tricky for src packages which build multiple -dev packages.

W: gir1.2-bad: gir-missing-typelib-dependency usr/share/gir-1.0/Bad-23.gir gir1.2-bad-23

I made this check assume that the correct dependency is based on the
standard naming convention, rather than inspecting the other packages
from the same source and looking for the one that contains the typelib.
Packages that don't follow the standard naming convention (mostly those
that combine multiple typelibs into one package, like GLib) can override
the check, unless someone particularly wants to rewrite this logic.

The new checks also assert that GIR XML and typelibs are both in
architecture-dependent packages and GIR XML is in Section: libdevel,
and emit an "info"-level tag for typelibs that are in the pre-multiarch
directory.

    S
>From 0353c27e0eafa9eabca8d8a0e7e356d21e6efa6a Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@debian.org>
Date: Wed, 21 Sep 2016 18:35:21 +0100
Subject: [PATCH] Add checks for GObject-Introspection

---
 checks/gir.desc                                    |  89 ++++++++++++++
 checks/gir.pm                                      | 135 +++++++++++++++++++++
 profiles/debian/main.profile                       |   2 +-
 t/tests/gir/debian/Makefile                        |   7 ++
 t/tests/gir/debian/debian/control.in               |  81 +++++++++++++
 t/tests/gir/debian/debian/gir1.2-bad.install       |   2 +
 t/tests/gir/debian/debian/gir1.2-good-42.install   |   1 +
 .../gir/debian/debian/gir1.2-perfect-42.install    |   1 +
 t/tests/gir/debian/debian/libgood-42-0.install     |   1 +
 t/tests/gir/debian/debian/libgood-42-dev.install   |   2 +
 t/tests/gir/debian/debian/libperfect-42-0.install  |   1 +
 .../gir/debian/debian/libperfect-42-dev.install    |   2 +
 .../debian/usr/lib/girepository-1.0/Bad-23.typelib |   1 +
 .../usr/lib/girepository-1.0/Good-42.typelib       |   1 +
 t/tests/gir/debian/usr/lib/libgood-42-0-dummy      |   0
 t/tests/gir/debian/usr/lib/libgood-42-dev-dummy    |   0
 t/tests/gir/debian/usr/share/gir-1.0/Bad-23.gir    |   1 +
 t/tests/gir/debian/usr/share/gir-1.0/Good-42.gir   |   1 +
 .../gir/debian/usr/share/gir-1.0/Perfect-42.gir    |   1 +
 t/tests/gir/desc                                   |  12 ++
 t/tests/gir/post_test                              |   1 +
 t/tests/gir/tags                                   |   9 ++
 22 files changed, 350 insertions(+), 1 deletion(-)
 create mode 100644 checks/gir.desc
 create mode 100644 checks/gir.pm
 create mode 100644 t/tests/gir/debian/Makefile
 create mode 100644 t/tests/gir/debian/debian/control.in
 create mode 100644 t/tests/gir/debian/debian/gir1.2-bad.install
 create mode 100644 t/tests/gir/debian/debian/gir1.2-good-42.install
 create mode 100644 t/tests/gir/debian/debian/gir1.2-perfect-42.install
 create mode 100644 t/tests/gir/debian/debian/libgood-42-0.install
 create mode 100644 t/tests/gir/debian/debian/libgood-42-dev.install
 create mode 100644 t/tests/gir/debian/debian/libperfect-42-0.install
 create mode 100644 t/tests/gir/debian/debian/libperfect-42-dev.install
 create mode 100644 t/tests/gir/debian/usr/lib/girepository-1.0/Bad-23.typelib
 create mode 100644 t/tests/gir/debian/usr/lib/girepository-1.0/Good-42.typelib
 create mode 100644 t/tests/gir/debian/usr/lib/libgood-42-0-dummy
 create mode 100644 t/tests/gir/debian/usr/lib/libgood-42-dev-dummy
 create mode 100644 t/tests/gir/debian/usr/share/gir-1.0/Bad-23.gir
 create mode 100644 t/tests/gir/debian/usr/share/gir-1.0/Good-42.gir
 create mode 100644 t/tests/gir/debian/usr/share/gir-1.0/Perfect-42.gir
 create mode 100644 t/tests/gir/desc
 create mode 100644 t/tests/gir/post_test
 create mode 100644 t/tests/gir/tags

diff --git a/checks/gir.desc b/checks/gir.desc
new file mode 100644
index 0000000..64e70e7
--- /dev/null
+++ b/checks/gir.desc
@@ -0,0 +1,89 @@
+Check-Script: gir
+Author: Simon McVittie <smcv@debian.org>
+Type: binary, source
+Info: Checks for GObject-Introspection mini-policy compliance
+Needs-Info: unpacked, bin-pkg-control
+
+Tag: gir-section-not-libdevel
+Severity: normal
+Certainty: certain
+Info: GObject-Introspection XML files
+ (<tt>/usr/share/gir-1.0/Foo-23.gir</tt>) must be made available in
+ a development package in the <tt>libdevel</tt> section of the archive.
+ This is normally the same <tt>libfoo-dev</tt> package that contains
+ other development files.
+Reference: file:///usr/share/doc/gobject-introspection/policy.txt
+
+Tag: gir-in-arch-all-package
+Severity: normal
+Certainty: certain
+Info: GObject-Introspection XML files
+ (<tt>/usr/share/gir-1.0/Foo-23.gir</tt>) must be made available in
+ an architecture-dependent package of the same source.
+Reference: file:///usr/share/doc/gobject-introspection/policy.txt
+
+Tag: gir-missing-typelib-dependency
+Severity: normal
+Certainty: possible
+Info: Development packages that contain GObject-Introspection XML files
+ (<tt>/usr/share/gir-1.0/Foo-23.gir</tt>) must depend on the package
+ containing the corresponding binary typelib, which is conventionally named
+ <tt>gir1.2-foo-23</tt>. The dependency must be strictly versioned
+ (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>.
+Reference: file:///usr/share/doc/gobject-introspection/policy.txt
+
+Tag: typelib-package-name-does-not-match
+Severity: normal
+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.
+Reference: file:///usr/share/doc/gobject-introspection/policy.txt
+
+Tag: typelib-section-not-introspection
+Severity: normal
+Certainty: certain
+Info: GObject-Introspection binary typelibs (<tt>Foo-23.typelib</tt>)
+ should be made available in a GObject-Introspection package
+ in the <tt>introspection</tt> section of the archive,
+ normally named <tt>gir1.2-foo-23</tt>.
+Reference: file:///usr/share/doc/gobject-introspection/policy.txt
+
+Tag: typelib-in-arch-all-package
+Severity: serious
+Certainty: certain
+Info: GObject-Introspection binary typelibs
+ (<tt>Foo-23.typelib</tt>) are architecture-dependent, therefore
+ they must appear in architecture-dependent packages.
+Reference: file:///usr/share/doc/gobject-introspection/policy.txt
+
+Tag: typelib-not-in-multiarch-directory
+Severity: wishlist
+Certainty: certain
+Info: Public GObject-Introspection binary typelibs
+ (<tt>Foo-23.typelib</tt>) should be installed in the multi-arch
+ directory <tt>/usr/lib/MULTIARCH-TUPLE/girepository-1.0</tt>.
+
+Tag: typelib-missing-gir-depends
+Severity: normal
+Certainty: certain
+Info: GObject-Introspection binary typelibs
+ (<tt>Foo-23.typelib</tt>) can depend on other typelibs. To generate
+ appropriate dependencies in the binary package, they must have
+ <tt>Depends: ${gir:Depends}</tt> in the control file.
+Reference: file:///usr/share/doc/gobject-introspection/policy.txt
diff --git a/checks/gir.pm b/checks/gir.pm
new file mode 100644
index 0000000..bcfe1d1
--- /dev/null
+++ b/checks/gir.pm
@@ -0,0 +1,135 @@
+# gir -- lintian check script for GObject-Introspection -*- perl -*-
+#
+# Copyright © 2012 Arno Töll
+# Copyright © 2014 Collabora Ltd.
+# Copyright © 2016 Simon McVittie
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, you can find it on the World Wide
+# Web at http://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+package Lintian::gir;
+
+use strict;
+use warnings;
+use autodie;
+
+use Lintian::Tags qw(tag);
+
+my $MA_DIRS = Lintian::Data->new('common/multiarch-dirs', qr/\s++/);
+
+sub run {
+    my ($pkg, $type, $info, $proc, $group) = @_;
+
+    if ($type eq 'source') {
+        _run_source($pkg, $type, $info, $proc, $group);
+    } else {
+        _run_binary($pkg, $type, $info, $proc, $group);
+    }
+
+    return;
+}
+
+sub _run_source {
+    my (undef, undef, $info) = @_;
+
+    foreach my $bin ($info->binaries) {
+        if ($bin =~ m/^gir1\.2-/) {
+            if (
+                not $info->binary_relation($bin, 'strong')
+                ->implies('${gir:Depends}')) {
+                tag('typelib-missing-gir-depends', $bin);
+            }
+        }
+    }
+
+    return;
+}
+
+sub _run_binary {
+    my ($pkg, undef, $info, $proc, $group) = @_;
+    my @girs;
+    my @typelibs;
+    my $section = $info->field('section', 'NONE');
+    my $madir = $MA_DIRS->value($proc->pkg_arch);
+    # Slightly contrived, but it might be Architecture: all, in which
+    # case this is the best we can do
+    $madir = '${DEB_HOST_MULTIARCH}' unless defined $madir;
+
+    if (my $xmldir = $info->index_resolved_path('usr/share/gir-1.0')) {
+        push @girs, $xmldir->children;
+    }
+
+    if (my $dir = $info->index_resolved_path('usr/lib/girepository-1.0')) {
+        push @typelibs, $dir->children;
+        foreach my $typelib ($dir->children) {
+            tag('typelib-not-in-multiarch-directory',
+                $typelib,"usr/lib/$madir/girepository-1.0");
+        }
+    }
+
+    if (my $dir= $info->index_resolved_path("usr/lib/$madir/girepository-1.0"))
+    {
+        push @typelibs, $dir->children;
+    }
+
+    if ($section ne 'libdevel') {
+        foreach my $gir (@girs) {
+            tag('gir-section-not-libdevel', $gir, $section);
+        }
+    }
+
+    if ($section ne 'introspection') {
+        foreach my $typelib (@typelibs) {
+            tag('typelib-section-not-introspection', $typelib, $section);
+        }
+    }
+
+    if ($info->field('architecture') eq 'all') {
+        foreach my $gir (@girs) {
+            tag('gir-in-arch-all-package', $gir);
+        }
+        foreach my $typelib (@typelibs) {
+            tag('typelib-in-arch-all-package', $typelib);
+        }
+    }
+
+    foreach my $gir (@girs) {
+        my $expected = 'gir1.2-' . lc($gir->basename);
+        $expected =~ s/\.gir$//;
+        my $version = $info->field('version');
+        if (not $info->relation('strong')->implies("$expected (= $version)")) {
+            tag('gir-missing-typelib-dependency', $gir, $expected);
+        }
+    }
+
+    foreach my $typelib (@typelibs) {
+        my $expected = 'gir1.2-' . lc($typelib->basename);
+        $expected =~ s/\.typelib$//;
+        if ($pkg ne $expected) {
+            tag('typelib-package-name-does-not-match', $typelib, $expected);
+        }
+    }
+
+    return;
+}
+
+1;
+
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 sts=4 sr et
diff --git a/profiles/debian/main.profile b/profiles/debian/main.profile
index 8cc7ce9..15b435d 100644
--- a/profiles/debian/main.profile
+++ b/profiles/debian/main.profile
@@ -5,7 +5,7 @@ Enable-Tags-From-Check: apache2, application-not-library, automake, binaries,
  changelog-file, changes-file, conffiles, control-file, control-files,
  copyright-file, cruft, dbus, deb-format, debconf, debhelper, debian-readme,
  debian-source-dir, description, duplicate-files, fields, filename-length, files,
- group-checks, huge-usr-share, infofiles, init.d, java, lintian, manpages,
+ gir, group-checks, huge-usr-share, infofiles, init.d, java, lintian, manpages,
  md5sums, menu-format, menus, nmu, obsolete-sites, ocaml, patch-systems, phppear,
  po-debconf, rules, scripts, shared-libs, source-copyright, standards-version,
  symlinks, systemd, testsuite, upstream-metadata, usrmerge, version-substvars,
diff --git a/t/tests/gir/debian/Makefile b/t/tests/gir/debian/Makefile
new file mode 100644
index 0000000..a91332d
--- /dev/null
+++ b/t/tests/gir/debian/Makefile
@@ -0,0 +1,7 @@
+multiarch := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+all:
+	install -d usr/lib/$(multiarch)/girepository-1.0
+	cp usr/lib/libgood-42-dev-dummy usr/lib/$(multiarch)/libperfect-42-dev-dummy
+	cp usr/lib/libgood-42-0-dummy usr/lib/$(multiarch)/libperfect-42-0-dummy
+	cp usr/lib/girepository-1.0/Good-42.typelib usr/lib/$(multiarch)/girepository-1.0/Perfect-42.typelib
diff --git a/t/tests/gir/debian/debian/control.in b/t/tests/gir/debian/debian/control.in
new file mode 100644
index 0000000..71ed548
--- /dev/null
+++ b/t/tests/gir/debian/debian/control.in
@@ -0,0 +1,81 @@
+Source: {$source}
+Priority: extra
+Section: libs
+Maintainer: {$author}
+Standards-Version: {$standards_version}
+Build-Depends: {$build_depends}
+
+Package: gir1.2-bad
+Section: misc
+Architecture: all
+Depends: $\{shlibs:Depends\}, $\{misc:Depends\}
+Description: {$description}
+ This is a test package designed to exercise some feature or tag of
+ Lintian.  It is part of the Lintian test suite and may do very odd
+ things.  It should not be installed like a regular package.
+ .
+ This package gets GObject-Introspection wrong in various ways.
+
+Package: gir1.2-good-42
+Section: introspection
+Architecture: any
+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
+ Lintian.  It is part of the Lintian test suite and may do very odd
+ things.  It should not be installed like a regular package.
+ .
+ This contains the GObject-Introspection typelib.
+
+Package: libgood-42-dev
+Section: libdevel
+Architecture: any
+Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, gir1.2-good-42 (= $\{binary:Version\}), libgood-42-0 (= $\{binary:Version\})
+Description: {$description} - development
+ This is a test package designed to exercise some feature or tag of
+ Lintian.  It is part of the Lintian test suite and may do very odd
+ things.  It should not be installed like a regular package.
+ .
+ This contains the development files.
+
+Package: libgood-42-0
+Architecture: any
+Depends: $\{shlibs:Depends\}, $\{misc:Depends\}
+Description: {$description} - shared library
+ This is a test package designed to exercise some feature or tag of
+ Lintian.  It is part of the Lintian test suite and may do very odd
+ things.  It should not be installed like a regular package.
+ .
+ This is the shared library.
+
+Package: gir1.2-perfect-42
+Section: introspection
+Architecture: any
+Depends: $\{gir:Depends\}, $\{shlibs:Depends\}, $\{misc:Depends\}, libperfect-42-0
+Description: {$description} - GIR with multiarch
+ This is a test package designed to exercise some feature or tag of
+ Lintian.  It is part of the Lintian test suite and may do very odd
+ things.  It should not be installed like a regular package.
+ .
+ This contains the GObject-Introspection typelib, with multiarch.
+
+Package: libperfect-42-dev
+Section: libdevel
+Architecture: any
+Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, gir1.2-perfect-42 (= $\{binary:Version\}), libperfect-42-0 (= $\{binary:Version\})
+Description: {$description} - development with multiarch
+ This is a test package designed to exercise some feature or tag of
+ Lintian.  It is part of the Lintian test suite and may do very odd
+ things.  It should not be installed like a regular package.
+ .
+ This contains the development files, with multiarch.
+
+Package: libperfect-42-0
+Architecture: any
+Depends: $\{shlibs:Depends\}, $\{misc:Depends\}
+Description: {$description} - shared library with multiarch
+ This is a test package designed to exercise some feature or tag of
+ Lintian.  It is part of the Lintian test suite and may do very odd
+ things.  It should not be installed like a regular package.
+ .
+ This is the shared library, with multiarch.
diff --git a/t/tests/gir/debian/debian/gir1.2-bad.install b/t/tests/gir/debian/debian/gir1.2-bad.install
new file mode 100644
index 0000000..c83626e
--- /dev/null
+++ b/t/tests/gir/debian/debian/gir1.2-bad.install
@@ -0,0 +1,2 @@
+usr/lib/girepository-1.0/Bad-23.typelib
+usr/share/gir-1.0/Bad-23.gir
diff --git a/t/tests/gir/debian/debian/gir1.2-good-42.install b/t/tests/gir/debian/debian/gir1.2-good-42.install
new file mode 100644
index 0000000..5f80ac4
--- /dev/null
+++ b/t/tests/gir/debian/debian/gir1.2-good-42.install
@@ -0,0 +1 @@
+usr/lib/girepository-1.0/Good-42.typelib
diff --git a/t/tests/gir/debian/debian/gir1.2-perfect-42.install b/t/tests/gir/debian/debian/gir1.2-perfect-42.install
new file mode 100644
index 0000000..195f200
--- /dev/null
+++ b/t/tests/gir/debian/debian/gir1.2-perfect-42.install
@@ -0,0 +1 @@
+usr/lib/*/girepository-1.0/Perfect-42.typelib
diff --git a/t/tests/gir/debian/debian/libgood-42-0.install b/t/tests/gir/debian/debian/libgood-42-0.install
new file mode 100644
index 0000000..5bff9aa
--- /dev/null
+++ b/t/tests/gir/debian/debian/libgood-42-0.install
@@ -0,0 +1 @@
+usr/lib/libgood-42-0-dummy
diff --git a/t/tests/gir/debian/debian/libgood-42-dev.install b/t/tests/gir/debian/debian/libgood-42-dev.install
new file mode 100644
index 0000000..ae66896
--- /dev/null
+++ b/t/tests/gir/debian/debian/libgood-42-dev.install
@@ -0,0 +1,2 @@
+usr/share/gir-1.0/Good-42.gir
+usr/lib/libgood-42-dev-dummy
diff --git a/t/tests/gir/debian/debian/libperfect-42-0.install b/t/tests/gir/debian/debian/libperfect-42-0.install
new file mode 100644
index 0000000..75b60a2
--- /dev/null
+++ b/t/tests/gir/debian/debian/libperfect-42-0.install
@@ -0,0 +1 @@
+usr/lib/*/libperfect-42-0-dummy
diff --git a/t/tests/gir/debian/debian/libperfect-42-dev.install b/t/tests/gir/debian/debian/libperfect-42-dev.install
new file mode 100644
index 0000000..7d0a75b
--- /dev/null
+++ b/t/tests/gir/debian/debian/libperfect-42-dev.install
@@ -0,0 +1,2 @@
+usr/share/gir-1.0/Perfect-42.gir
+usr/lib/*/libperfect-42-dev-dummy
diff --git a/t/tests/gir/debian/usr/lib/girepository-1.0/Bad-23.typelib b/t/tests/gir/debian/usr/lib/girepository-1.0/Bad-23.typelib
new file mode 100644
index 0000000..64fba42
--- /dev/null
+++ b/t/tests/gir/debian/usr/lib/girepository-1.0/Bad-23.typelib
@@ -0,0 +1 @@
+not really a typelib
diff --git a/t/tests/gir/debian/usr/lib/girepository-1.0/Good-42.typelib b/t/tests/gir/debian/usr/lib/girepository-1.0/Good-42.typelib
new file mode 100644
index 0000000..64fba42
--- /dev/null
+++ b/t/tests/gir/debian/usr/lib/girepository-1.0/Good-42.typelib
@@ -0,0 +1 @@
+not really a typelib
diff --git a/t/tests/gir/debian/usr/lib/libgood-42-0-dummy b/t/tests/gir/debian/usr/lib/libgood-42-0-dummy
new file mode 100644
index 0000000..e69de29
diff --git a/t/tests/gir/debian/usr/lib/libgood-42-dev-dummy b/t/tests/gir/debian/usr/lib/libgood-42-dev-dummy
new file mode 100644
index 0000000..e69de29
diff --git a/t/tests/gir/debian/usr/share/gir-1.0/Bad-23.gir b/t/tests/gir/debian/usr/share/gir-1.0/Bad-23.gir
new file mode 100644
index 0000000..59e267d
--- /dev/null
+++ b/t/tests/gir/debian/usr/share/gir-1.0/Bad-23.gir
@@ -0,0 +1 @@
+not really GIR
diff --git a/t/tests/gir/debian/usr/share/gir-1.0/Good-42.gir b/t/tests/gir/debian/usr/share/gir-1.0/Good-42.gir
new file mode 100644
index 0000000..59e267d
--- /dev/null
+++ b/t/tests/gir/debian/usr/share/gir-1.0/Good-42.gir
@@ -0,0 +1 @@
+not really GIR
diff --git a/t/tests/gir/debian/usr/share/gir-1.0/Perfect-42.gir b/t/tests/gir/debian/usr/share/gir-1.0/Perfect-42.gir
new file mode 100644
index 0000000..59e267d
--- /dev/null
+++ b/t/tests/gir/debian/usr/share/gir-1.0/Perfect-42.gir
@@ -0,0 +1 @@
+not really GIR
diff --git a/t/tests/gir/desc b/t/tests/gir/desc
new file mode 100644
index 0000000..c340b8a
--- /dev/null
+++ b/t/tests/gir/desc
@@ -0,0 +1,12 @@
+Testname: gir
+Version: 1.0
+Description: test GObject-Introspection
+Test-For:
+ gir-section-not-libdevel
+ gir-in-arch-all-package
+ gir-missing-typelib-dependency
+ typelib-package-name-does-not-match
+ typelib-section-not-introspection
+ typelib-in-arch-all-package
+ typelib-not-in-multiarch-directory
+ typelib-missing-gir-depends
diff --git a/t/tests/gir/post_test b/t/tests/gir/post_test
new file mode 100644
index 0000000..56d219b
--- /dev/null
+++ b/t/tests/gir/post_test
@@ -0,0 +1 @@
+s, usr/lib/[^/${}]+/girepository-1.0$, usr/lib/MULTIARCH/girepository-1.0,
diff --git a/t/tests/gir/tags b/t/tests/gir/tags
new file mode 100644
index 0000000..4350bd6
--- /dev/null
+++ b/t/tests/gir/tags
@@ -0,0 +1,9 @@
+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
+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
+W: gir1.2-bad: gir-section-not-libdevel usr/share/gir-1.0/Bad-23.gir misc
+W: gir1.2-bad: typelib-package-name-does-not-match usr/lib/girepository-1.0/Bad-23.typelib gir1.2-bad-23
+W: gir1.2-bad: typelib-section-not-introspection usr/lib/girepository-1.0/Bad-23.typelib misc
-- 
2.9.3


Reply to: