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

Bug#740607: marked as done (lintian: Please support build-profiles)



Your message dated Tue, 25 Mar 2014 21:50:24 +0000
with message-id <E1WSZEm-0004f3-Cf@franck.debian.org>
and subject line Bug#740607: fixed in lintian 2.5.22
has caused the Debian Bug report #740607,
regarding lintian: Please support build-profiles
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.)


-- 
740607: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=740607
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: lintian
Version: 2.5.22
Severity: wishlist
Tags: patch

Hi,

I implemented a preliminary patch for lintian to understand and check
the restriction syntax described in this document:
https://wiki.debian.org/BuildProfileSpec

Please tell me what needs to be changed so that I can get this patch
into an acceptable shape and excuse my weak perl-foo :)

Depending on the outcome of this thread [1] an amendment might be
necessary in the future to allow a new field in DEBIAN/control.

cheers, josch

[1] http://lists.debian.org/20140221113013.18244.3579@hoothoot
>From 33a76313fc1ecb5d7fd970c5ed41b9da12e85269 Mon Sep 17 00:00:00 2001
From: josch <j.schauer@email.de>
Date: Mon, 3 Mar 2014 15:58:28 +0100
Subject: [PATCH] Build-profiles support

 - added 3 new tags to detect errors in restriction list syntax
     * invalid-restriction-term-in-source-relation
     * invalid-restriction-namespace-in-source-relation
     * invalid-restriction-label-in-source-relation
 - added 4 new tags to ensure that if restrictions lists are used, a
   versioned build dependency on dpkg-dev and (if applicable) debhelper
   is added and no conflicts with them exist
     * restriction-list-without-versioned-dpkg-dev-dependency
     * restriction-list-with-versioned-dpkg-dev-conflict
     * restriction-list-with-debhelper-without-debhelper-version
     * restriction-list-with-debhelper-with-conflicting-debhelper-version
---
 checks/fields.desc                                 | 50 +++++++++++++++++
 checks/fields.pm                                   | 64 ++++++++++++++++++----
 lib/Lintian/Relation.pm                            | 18 +++++-
 .../debian/debian/control.in                       |  6 +-
 t/tests/fields-build-depends-general/tags          |  7 +++
 5 files changed, 131 insertions(+), 14 deletions(-)

diff --git a/checks/fields.desc b/checks/fields.desc
index d55c11a..6061b95 100644
--- a/checks/fields.desc
+++ b/checks/fields.desc
@@ -637,6 +637,56 @@ Info: The architecture string in this source relation has some
  negated.  This is not permitted by Policy.  Either all architectures must
  be negated or none of them may be.
 
+Tag: invalid-restriction-term-in-source-relation
+Severity: important
+Certainty: certain
+Info: The restriction list in the source relation includes a term which
+ does not contain exactly one dot separating restriction namespace and label.
+ A term in a restriction list is of the form "namespace.label" (without the
+ quotes).
+
+Tag: invalid-restriction-namespace-in-source-relation
+Severity: important
+Certainty: possible
+Info: The restriction list in the source relation includes a term with
+ an unknown namespace. The only allowed namespace is "profile" (without the
+ quotes).
+
+Tag: invalid-restriction-label-in-source-relation
+Severity: important
+Certainty: possible
+Info: The restriction list in the source relation includes a term with
+ an unknown label. The only allowed labels are "stage1", "stage2", "notest"
+ and "cross".
+
+Tag: restriction-list-without-versioned-dpkg-dev-dependency
+Severity: normal
+Certainty: certain
+Info: If a restriction list appears in the build dependencies, then the
+ source package has to build depend on dpkg-dev (>= 1.17.2) for minimal
+ restriction list support.
+
+Tag: restriction-list-with-versioned-dpkg-dev-conflict
+Severity: normal
+Certainty: certain
+Info: If a restriction list appears in the build dependencies, then the
+ source package has to build depend on dpkg-dev (>= 1.17.2) for minimal
+ restriction list support. It must not conflict with version 1.17.2.
+
+Tag: restriction-list-with-debhelper-without-debhelper-version
+Severity: normal
+Certainty: certain
+Info: If a restriction list appears in the build dependencies and the
+ package uses debhelper, then the source package has to depend on at least
+ debhelper 9.20140227.
+
+Tag: restriction-list-with-debhelper-with-conflicting-debhelper-version
+Severity: normal
+Certainty: certain
+Info: If a restriction list appears in the build dependencies and the
+ package uses debhelper, then the source package has to depend on at least
+ debhelper 9.20140227. It must not conflict with version 9.20140227.
+
 Tag: depends-on-build-essential-package-without-using-version
 Severity: important
 Certainty: certain
diff --git a/checks/fields.pm b/checks/fields.pm
index aeee252..2cae275 100644
--- a/checks/fields.pm
+++ b/checks/fields.pm
@@ -730,7 +730,7 @@ sub run {
                     && $known_obsolete_emacs{$alternatives[0]->[0]});
 
                 for my $part_d (@alternatives) {
-                    my ($d_pkg, $d_march, $d_version, $d_arch, $rest,
+                    my ($d_pkg, $d_march, $d_version, $d_arch, $d_restr, $rest,
                         $part_d_orig)
                       = @$part_d;
 
@@ -935,6 +935,7 @@ sub run {
             any { $_ eq $_[0] } qw(build-depends build-depends-indep);
         };
 
+        my $restrictions_used = 0;
         my %depend;
         for my $field (
             qw(build-depends build-depends-indep build-conflicts build-conflicts-indep)
@@ -956,7 +957,7 @@ sub run {
                         && &$is_dep_field($field));
 
                     for my $part_d (@alternatives) {
-                        my ($d_pkg, $d_march, $d_version, $d_arch, $rest,
+                        my ($d_pkg, $d_march, $d_version, $d_arch, $d_restr, $rest,
                             $part_d_orig)
                           = @$part_d;
 
@@ -968,6 +969,27 @@ sub run {
                             }
                         }
 
+                        if (scalar @{$d_restr} >= 1) {
+                            $restrictions_used = 1;
+                        }
+
+                        for my $restr (@{$d_restr}) {
+                            my $dotcount = () = $restr =~ /\./g;
+                            if ($dotcount != 1) {
+                                tag 'invalid-restriction-term-in-source-relation',
+                                  "$restr [$field: $part_d_orig]";
+                                next;
+                            }
+                            $restr =~ s/^!//;
+                            my ($ns, $label) = split(/\./, $restr, 2);
+                            tag 'invalid-restriction-namespace-in-source-relation',
+                              "$ns [$field: $part_d_orig]"
+                              unless $ns eq "profile";
+                            tag 'invalid-restriction-label-in-source-relation',
+                              "$label [$field: $part_d_orig]"
+                              unless any { $_ eq $label } ("stage1", "notest");
+                        }
+
                         if (   $d_pkg =~ m/^openjdk-\d+-doc$/o
                             or $d_pkg eq 'classpath-doc'){
                             tag 'build-depends-on-specific-java-doc-package',
@@ -1077,6 +1099,24 @@ sub run {
             }
         }
 
+        # if restrictions are found in the build-depends/conflicts, then 
+        # package must build-depend on dpkg (>= 1.17.2)
+        if ($restrictions_used) {
+            my $build_conflicts_all = $info->relation('build-conflicts-all');
+            tag 'restriction-list-without-versioned-dpkg-dev-dependency'
+              unless ($build_all->implies('dpkg-dev (>= 1.17.2)'));
+            tag 'restriction-list-with-versioned-dpkg-dev-conflict'
+              if ($build_conflicts_all->implies_inverse('dpkg-dev (<< 1.17.2)'));
+            # if the package uses debhelper then it must require and not
+            # conflict with version >= 9.20140227
+            if ($build_all->implies('debhelper')) {
+                tag 'restriction-list-with-debhelper-without-debhelper-version'
+                  unless ($build_all->implies('debhelper (>= 9.20140227)'));
+                tag 'restriction-list-with-debhelper-with-conflicting-debhelper-version'
+                  if ($build_conflicts_all->implies_inverse('debhelper (<< 9.20140227)'));
+            }
+        }
+
         my (@arch_dep_pkgs, @dbg_pkgs);
         foreach my $gproc ($group->get_binary_processables) {
             my $binpkg = $gproc->pkg_name;
@@ -1238,16 +1278,16 @@ sub run {
     return;
 }
 
-# splits "foo:bar (>= 1.2.3) [!i386 ia64]" into
-# ( "foo", "bar", [ ">=", "1.2.3" ], [ [ "i386", "ia64" ], 1 ], "" )
-#                                                         ^^^   ^^
-#                     count of negated arches, if ! was given   ||
-#                  rest (should always be "" for valid dependencies)
+# splits "foo:bar (>= 1.2.3) [!i386 ia64] <!profile.stage1 !profile.notest>" into
+# ( "foo", "bar", [ ">=", "1.2.3" ], [ [ "i386", "ia64" ], 1 ], [ "!profile.stage1" "!profile.notest" ], "" )
+#                                                         ^^^                                            ^^
+#                     count of negated arches, if ! was given                                            ||
+#                                                           rest (should always be "" for valid dependencies)
 sub _split_dep {
     my $dep = shift;
-    my ($pkg, $dmarch, $version, $darch) = ('', '', ['',''], [[], 0]);
+    my ($pkg, $dmarch, $version, $darch, $restr) = ('', '', ['',''], [[], 0], []);
 
-    my $pkgname = $1 if $dep =~ s/^\s*([^\s\[\(]+)\s*//;
+    my $pkgname = $1 if $dep =~ s/^\s*([^<\s\[\(]+)\s*//;
     if (defined $pkgname) {
         ($pkg, $dmarch) = split /:/, $pkgname, 2;
         $dmarch //= '';  # Ensure it is defined (in case there is no ":")
@@ -1267,9 +1307,13 @@ sub _split_dep {
             }
             $darch->[1] = $negated;
         }
+        if ($dep && $dep =~ s/\s*<([^>]+)>\s*//) {
+            my $t = $1;
+            $restr = [split /\s+/, $t];
+        }
     }
 
-    return ($pkg, $dmarch, $version, $darch, $dep);
+    return ($pkg, $dmarch, $version, $darch, $restr, $dep);
 }
 
 sub perl_core_has_version {
diff --git a/lib/Lintian/Relation.pm b/lib/Lintian/Relation.pm
index 1ba783c..4ec8238 100644
--- a/lib/Lintian/Relation.pm
+++ b/lib/Lintian/Relation.pm
@@ -115,21 +115,26 @@ sub parse_element {
          \s* (.*?)                      # architectures (5)
          \s* \]                         # closing bracket
         )?                              # end of optional architecture
+        (?:                             # start of optional restriction
+          \s* <                         # open bracket for restriction
+          \s* (.*?)                     # don't parse restrictions now
+          \s* >                         # closing bracket
+        )?                              # end of optional restriction
     /x;
 
-    my ($pkgname, $march, $relop, $relver, $bdarch) = ($1, $2, $3, $4, $5);
+    my ($pkgname, $march, $relop, $relver, $bdarch, $restr) = ($1, $2, $3, $4, $5, $6);
     my @array;
     if (not defined($relop)) {
         # If there's no version, we don't need to do any further processing.
         # Otherwise, convert the legacy < and > relations to the current ones.
-        @array = ('PRED', $pkgname, undef, undef, $bdarch, $march);
+        @array = ('PRED', $pkgname, undef, undef, $bdarch, $march, $restr);
     } else {
         if ($relop eq '<') {
             $relop = '<<';
         } elsif ($relop eq '>') {
             $relop = '>>';
         }
-        @array = ('PRED', $pkgname, $relop, $relver, $bdarch, $march);
+        @array = ('PRED', $pkgname, $relop, $relver, $bdarch, $march, $restr);
     }
 
     # Optimise the memory usage of the array.  Understanding this
@@ -351,6 +356,13 @@ sub implies_element {
     $$q[1] = '' unless defined $$q[1];
     return if $$p[1] ne $$q[1];
 
+    # Since the restriction list is not a set (as the architecture list) there
+    # is no way to calculate a superset or subset of one another. Furthermore,
+    # the evaluation depends on which build profiles are currently activated.
+    # With n being the number of possible build profiles, 2^n checks would
+    # have to be done. We decide not to do that (yet).
+    return if defined $$p[6] or defined $$q[6];
+
     # If the names match, then the only difference is in the architecture or
     # version clauses.  First, check architecture.  The architectures for p
     # must be a superset of the architectures for q.
diff --git a/t/tests/fields-build-depends-general/debian/debian/control.in b/t/tests/fields-build-depends-general/debian/debian/control.in
index f6546b9..12acd64 100644
--- a/t/tests/fields-build-depends-general/debian/debian/control.in
+++ b/t/tests/fields-build-depends-general/debian/debian/control.in
@@ -8,8 +8,12 @@ Build-Depends: debhelper (>= 9), bd-conflict, revision-1 (>= 1.0-1),
  xorg-dev, java-propose-classpath, python3.2-dev, foo [all],
  bar [i386 any], baz [source i3!86], baz [i386 !amd64],
  other-pkg [kfreebsd-any], yet-another [any-powerpc],
+ big <profile.stage1>, bpfail1 <foobar>, bpfail2 <foo.bar>,
  packaging-dev, libdb5.1++-dev, libdb5.1-java-dev
-Build-Conflicts: bd-conflict
+Build-Conflicts:
+ bd-conflict,
+ dpkg-dev (>= 1.17.2),
+ debhelper (>= 9.20140227)
 
 Package: {$source}
 Architecture: {$architecture}
diff --git a/t/tests/fields-build-depends-general/tags b/t/tests/fields-build-depends-general/tags
index 0c0222f..c5413f0 100644
--- a/t/tests/fields-build-depends-general/tags
+++ b/t/tests/fields-build-depends-general/tags
@@ -9,9 +9,16 @@ E: fields-build-depends-general source: depends-on-build-essential-package-witho
 E: fields-build-depends-general source: invalid-arch-string-in-source-relation all [build-depends: foo [all]]
 E: fields-build-depends-general source: invalid-arch-string-in-source-relation i3!86 [build-depends: baz [source i3!86]]
 E: fields-build-depends-general source: invalid-arch-string-in-source-relation source [build-depends: baz [source i3!86]]
+E: fields-build-depends-general source: invalid-restriction-label-in-source-relation bar [build-depends: bpfail2 <foo.bar>]
+E: fields-build-depends-general source: invalid-restriction-namespace-in-source-relation foo [build-depends: bpfail2 <foo.bar>]
+E: fields-build-depends-general source: invalid-restriction-term-in-source-relation foobar [build-depends: bpfail1 <foobar>]
 I: fields-build-depends-general source: build-depends-on-python-dev-with-no-arch-any
 I: fields-build-depends-general source: ored-build-depends-on-obsolete-package build-depends: xlibmesa-gl-dev
 W: fields-build-depends-general source: build-depends-on-1-revision build-depends: revision-1 (>= 1.0-1)
 W: fields-build-depends-general source: build-depends-on-versioned-berkeley-db build-depends:libdb5.1++-dev
 W: fields-build-depends-general source: build-depends-on-versioned-berkeley-db build-depends:libdb5.1-java-dev
 W: fields-build-depends-general source: depends-on-packaging-dev build-depends
+W: fields-build-depends-general source: restriction-list-with-debhelper-with-conflicting-debhelper-version
+W: fields-build-depends-general source: restriction-list-with-debhelper-without-debhelper-version
+W: fields-build-depends-general source: restriction-list-with-versioned-dpkg-dev-conflict
+W: fields-build-depends-general source: restriction-list-without-versioned-dpkg-dev-dependency
-- 
1.8.5.3


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

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 740607@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Bastien Roucariès <roucaries.bastien+debian@gmail.com> (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: Tue, 25 Mar 2014 22:02:50 +0100
Source: lintian
Binary: lintian
Architecture: source all
Version: 2.5.22
Distribution: unstable
Urgency: medium
Maintainer: Debian Lintian Maintainers <lintian-maint@debian.org>
Changed-By: Bastien Roucariès <roucaries.bastien+debian@gmail.com>
Description: 
 lintian    - Debian package checker
Closes: 639974 699083 717916 733318 735266 735348 736203 736711 738174 738175 738176 738342 738349 738454 738597 739109 739247 739347 739366 739671 739744 740183 740339 740607 741212 742260
Changes: 
 lintian (2.5.22) unstable; urgency=medium
 .
   * Summary of tag changes:
     + Added:
       - invalid-restriction-label-in-source-relation
       - invalid-restriction-namespace-in-source-relation
       - invalid-restriction-term-in-source-relation
       - license-problem-gfdl-non-official-text
       - license-problem-non-free-RFC-BCP78
       - privacy-breach-google-plus
       - privacy-breach-twitter
       - restriction-list-with-debhelper-with-conflicting-debhelper-version
       - restriction-list-with-debhelper-without-debhelper-version
       - restriction-list-with-versioned-dpkg-dev-conflict
       - restriction-list-without-versioned-dpkg-dev-dependency
       - source-is-missing
       - stageX-profile-used-but-no-binary-package-dropped
 .
   * checks/*:
     + [NT] Avoid using "I" or "we" in tag descriptions.
     + [NT] When looping over the names of binary packages,
       prefer the order they are listed in the control file.
       Previously they were either sorted by name or ordered
       by Perl's hash iterator.
   * checks/control-file.{desc,pm}:
     + [NT] Apply patch from Johannes Schauer to validate
       build-profile usage.
   * checks/control-files.pm:
     + [NT] Remove special case for udebs on empty control
       files.  Thanks to Cyril Brulebois for testing it.
   * checks/cruft.pm:
     + [BR,NT] Optimise the GFDL check considerably in some
       cases (e.g. the linux source).  (Closes: #738342)
     + [BR] Factorize GFDL detection. Detect non official
       wordings of GFDL invariant section.  (Closes: #717916).
       Fix some old false positives.
       (Closes: #742260, #741212).
     + [BR] Add opentoken non official wording for GFDL
       invariant section, thanks to Nicolas Boulenguez.
       (Closes: #740183).
     + [BR] Detect minified js based on line length.
       (Closes: #735348).
     + [BR] Detect missing sources for minified javascript, flash project,
       flash files, and elf binary.
   * checks/fields.{desc,pm}:
     + [NT] Apply patch from Johannes Schauer to validate
       build-profile usage.  (Closes: #740607)
   * checks/files.desc:
     + [BR] Raise file-name-in-PATH-is-not-ASCII and
       file-name-in-PATH-is-not-ASCII to error
       (see policy 10.10), thanks to Helmut Grohne.
       (Closes: #739347)
     + [BR] Improve privacy-breach tags wording, thanks to Paul Wise.
       (Closes: #738176)
   * checks/menu-format.desc:
     + [NT] Apply patch from Charles Plessy to correct an URL
       in a tag reference.  (Closes: #738454)
   * checks/symlinks.pm:
     + [BR] Use Lintian::Data for safe symlinks list. Add
       /dev/null to this list.  (Closes: #740339).
   * checks/systemd.pm:
     + [BR] Allow spaces arround = in service files.
       (Closes: #739366).
   * checks/watch-file.{desc,pm}:
     + [BR] Allow debian/upstream-signing-key.asc,
       thanks to Nicolas Boulenguez (Closes: #736711).
     + [NT] Apply patch from Daniel Kahn Gillmor to check for
       the upstream signing key in debian/upstream.  Thanks to
       Hideki Yamane for the bug report.  (Closes: #738597)
 .
   * collection/java-info:
     + [NT] Update the conditional using file(1) to cope with
       the new output for JAR files.
 .
   * data:
     + [NT] Refresh several architecture data files against
       dpkg 1.17.5.  Thanks to James Hunt for the reminder.
       (Closes: #735266)
     + [NT] Refresh several data files with data from sid.
   * data/binary/embedded-libs:
     + [RG] Detect embedded copies of liblivemedia, libgadu, libssh,
       libssh2, freetype, nss, and nspr.
     + [RG] Adjust the detection of embedded copies of libmagic.
     + [RG] Detect embedded copies of an ancient tinyxml.  Thanks to
       Andreas Rönnquist for the report.  (Closes: #733318)
   * data/cruft/non-free-files:
     + [BR] "id3v22-tda.mp3 considered non-free", thanks to Charlie
       Smotherman (Closes: #736203).
   * data/files/privacy*:
     + [BR] Improve detection of privacy-breach-google-cse, thanks to
       Paul Wise (Closes: #739247).
     + [BR] Detect google+, thanks to Paul Wise.
       (Closes: #738175).
     + [BR] Detect twitter, thanks to Paul Wise.
       (Closes: #738174).
   * data/scripts/maintainer-script-bad-command:
     + [BR] Fix false positive
       maintainer-script-should-not-use-adduser-system-without-home
       due to quoting, thanks to Andreas Beckmann <anbe@debian.org>
       (Closes: #739109).
 .
   * debian/source/lintian-overrides:
     + [NT] Override false-positive for license checks.
   * debian/tests/control:
     + [NT] Use the new @builddeps@ from autopkgtest/2.5.5
       instead of duplicating the values.
 .
   * frontend/lintian:
     + [NT] Fix a regression in argument handling after the first
       non-option.  This problem was introduced in 2.5.18.
     + [NT] Let --color default to "auto".
     + [NT] Discard STDERR when running git describe to guess the
       version of Lintian.  Avoids a warning from git tags are
       absent from the repository.
 .
   * lib/Lintian/Collect/Source.pm:
     + [NT] Apply patch from Mathieu Parent to make "binaries" return
       the package name in the same order as they are listed in the
       control file.  (Closes: #739671)
   * lib/Lintian/Reporting/ResourceManager.pm:
     + [NT] New file.
   * lib/Lintian/Util.pm:
     + [NT] Extend the "Continuation line outside a paragraph" parse
       error on Deb822 files with a possible suggestion for fixing
       the problem.
   * lib/Test/Lintian/Harness.pm:
     + [NT] New file - mostly for internal use during testing.
 .
   * profiles/debian/ftp-master-auto-reject.profile:
     + [BR] Refresh with new tags.
 .
   * reporting/config:
     + [NT] Fix typo of HARNESS_STATE_DIR config variable.
   * reporting/harness:
     + [NT] Avoid writing state-cache during dry-run.
     + [NT] Add timestamps to the log output.
   * reporting/{html_reports,templates/*.tmpl}:
     + [NT] Show the same statistics on the tag page as shown
       on the tag index pages.  Thanks to Guillem Jover for
       the suggestion.  (Closes: #738349)
     + [NT] Remove the second argument to the "head" sub in
       the templates.  Its value is now computed automatically
       by html_reports based on the name of the output file.
     + [NT] Install "lintian.css" and all files in
       "reporting/images" and "reporting/resources" into
       "HTML_DIR/resources".  These will be named after their
       content to allow more aggressive public caching.
   * reporting/html_reports:
     + [NT] Link to the library API docs from the index page.
       (Closes: #639974)
     + [NT] Optimise the graph generation by only calling
       gnuplot twice (rather than once plus once per tag).
     + [NT] Show the number of package groups and the size
       of the harness backlog on the index page.
   * reporting/{lintian.css => templates/lintian.css.tmpl}:
     + [NT] Rename file and make it a template.
 .
   * t/runtests:
     + [NT] Cache test artifacts and reuse them in subsequent
       runs.  This removes the majority of the runtime
       overhead of running the test suite on subsequent runs.
       (Closes: #699083)
     + [NT,BR] Fix test suite issues caused by a regression
       in tar 1.27.  (Closes: #739744)
Checksums-Sha1: 
 ec2f3fc6e56e35c36b1ef81634bb2916f3dbe2ef 2679 lintian_2.5.22.dsc
 19aad9a3b03c825ee58fe011e713a9fe377e9ab6 935496 lintian_2.5.22.tar.xz
 886cdaf0fc1f96044c1c75b5fbfb19545ea44e9c 750104 lintian_2.5.22_all.deb
Checksums-Sha256: 
 166c9a33563b7a7cba1fbe30df38a78c22334cff67e27ec27f06b1d16fde07fe 2679 lintian_2.5.22.dsc
 b6c89382381b134de1f0af4d494e47bc6cbfc7d8e2e0fd30baa31f8340bc1cf6 935496 lintian_2.5.22.tar.xz
 887214910ba057d32649c441b26399120303d79d4110cfe434841326a3871e14 750104 lintian_2.5.22_all.deb
Files: 
 71c235813f3c05aade6cb67c245403ec 2679 devel optional lintian_2.5.22.dsc
 3a73a83a275cca491cfc0cddd1705a89 935496 devel optional lintian_2.5.22.tar.xz
 61a285fdeca69bc0899ed10d9a03893b 750104 devel optional lintian_2.5.22_all.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBCAAGBQJTMfOfAAoJEAVLu599gGRCeacP/2i7moaXESvBUcz2IOFZTcqe
kDU37Ptb6gg2GtLXJnYNNxRNCmQqo7n3qMCfehw5k1Dxxacvxn+wGwqgsEneoMoB
uZSFdKFu01gJZ3D6ujigVUBrFOWF9GGpmMy/kDPJblslHV8qDNWCltrK56z8a/+f
0LbhumUrqq6rKSAXc7OerK5TdbICOMYRV/oNTNaBBPZ31XNW5DXQcCdIRH3KICO1
nDZM7PUxpLN+U4BXeY4rftj6ZxYya+F+405RRaoG2TM2POYIBKU3dNuiRdC55X60
cTZIBpO++expKdiDLsC6QAyqI9qL/GBjLFaYVwKCLpvTlOhe9YejTcyHVj8gQSl2
aLE56X5J5LrjAQlIKcxFHZkzz73j9rRVDbE5igO5IQweyVtOlczFuuP6naQKkR62
/EbFzt8h3wlZeSTq/seq+4mBUwuSJkLloUU9gaugz8KTjICMPpPd22k8rSyHbU/2
TQJh8jxM41HSWEhOaiJE+Yi93UKZVbrJQ8dv+5tRcedUDPYI93HhSjtnePqCvhXm
Q7upZwR2QEz209zZ6T+QnHdIaSQuVKRbLrcyjYh2LuZYoO6Ta0ZCiqZJ2HBi12jT
aal4g/Yc3R7VUZrfrijgUbcDLfHQcUfrXn5gyMyXsvk4bwYoU+/JXk05TXL99tFg
A5Xo84o1qla3NNO9xbpY
=j5kg
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: