Bug#457067: Patch for symbols support
tags 457067 + patch
thanks
Hi,
Attached is a patch adding support for the checks that I requested. I'd
appreciate if it could be integrated quickly. Some review is welcome. It
worked quite well on the test package that I used:
http://ftp.debian.org/debian/pool/main/t/tokyocabinet/libtokyocabinet1_1.1.4-1_i386.deb
$ lintian libtokyocabinet1_1.1.4-1_i386.deb
E: libtokyocabinet1: symbols-file-contains-current-version-with-debian-revision on symbol tcdrand@Base and 3 others
W: libtokyocabinet1: symbols-file-contains-debian-revision on symbol _tc_deflate@Base and 321 others
Cheers,
--
Raphaël Hertzog
Le best-seller français mis à jour pour Debian Etch :
http://www.ouaza.com/livre/admin-debian/
diff -Nru /tmp/Yq0Lbe3ntH/lintian-1.23.41/checks/control-files /tmp/3p28KrBmDX/lintian-1.23.41/checks/control-files
--- /tmp/Yq0Lbe3ntH/lintian-1.23.41/checks/control-files 2007-11-21 00:12:21.000000000 +0100
+++ /tmp/3p28KrBmDX/lintian-1.23.41/checks/control-files 2007-12-27 19:21:22.000000000 +0100
@@ -107,8 +107,48 @@
}
close IN;
+if (-e "control/symbols") {
+ my $version = getfield("version");
+ my $version_wo_rev = $version;
+ $version_wo_rev =~ s/(.+)-(.+)/$1/;
+ my ($full_version_count, $full_version_sym) = (0, undef);
+ my ($debian_revision_count, $debian_revision_sym) = (0, undef);
+ open(IN, "<", "control/symbols");
+ while (<IN>) {
+ next if not /^\s+(\S+)\s(\S+)(?:\s(\d+))?/;
+ my ($sym, $v, $dep_order) = ($1, $2, $3);
+ if (($v eq $version) and ($version =~ /-/)) {
+ $full_version_sym ||= $sym;
+ $full_version_count++;
+ }
+ if (($v =~ /-/) and (not $v =~ /~$/) and ($v ne $version_wo_rev)) {
+ $debian_revision_sym ||= $sym;
+ $debian_revision_count++;
+ }
+ }
+ close IN;
+ if ($full_version_count) {
+ $full_version_count--;
+ tag "symbols-file-contains-current-version-with-debian-revision",
+ "on symbol $full_version_sym and $full_version_count others";
+ }
+ if ($debian_revision_count) {
+ $debian_revision_count--;
+ tag "symbols-file-contains-debian-revision",
+ "on symbol $debian_revision_sym and $debian_revision_count others";
+ }
+}
+
} # </run>
+sub getfield {
+ return undef if not open (FIELD, '<', "fields/" . shift);
+ my $field = <FIELD>;
+ close FIELD;
+ $field =~ s/\n$//;
+ return $field;
+}
+
1;
# vim: syntax=perl sw=4 ts=8
diff -Nru /tmp/Yq0Lbe3ntH/lintian-1.23.41/checks/control-files.desc /tmp/3p28KrBmDX/lintian-1.23.41/checks/control-files.desc
--- /tmp/Yq0Lbe3ntH/lintian-1.23.41/checks/control-files.desc 2007-12-07 05:39:02.000000000 +0100
+++ /tmp/3p28KrBmDX/lintian-1.23.41/checks/control-files.desc 2007-12-27 19:32:16.000000000 +0100
@@ -26,3 +26,28 @@
Tag: control-file-has-bad-owner
Type: error
Info: All control files should be owned by root/root.
+
+Tag: symbols-file-contains-current-version-with-debian-revision
+Type: error
+Info: By default, dpkg-gensymbols uses the full version number for the
+ dependency associated to any new symbol that it detects. But this
+ shouldn't happen as the maintainer should have updated before-hand the
+ debian/<package>.symbols file by adding the new symbols with the
+ corresponding upstream version.
+ .
+ Debian revisions should be stripped from symbols files because not doing
+ it leads to dependencies unsatisfiable by backports (1.0-1~bpo << 1.0-1
+ while 1.0-1~bpo >= 1.0). If the debian revision can't be stripped because
+ the symbol really appearead between two specific revisions, then you
+ should postfix the version with a single "~" (example: 1.0-3~ if the
+ symbol appeared in 1.0-3).
+
+Tag: symbols-file-contains-debian-revision
+Type: warning
+Info: Debian revisions should be stripped from symbols files because not doing
+ it leads to dependencies unsatisfiable by backports (1.0-1~bpo << 1.0-1
+ while 1.0-1~bpo >= 1.0). If the debian revision can't be stripped because
+ the symbol really appearead between two specific revisions, then you
+ should postfix the version with a single "~" (example: 1.0-3~ if the
+ symbol appeared in 1.0-3).
+
diff -Nru /tmp/Yq0Lbe3ntH/lintian-1.23.41/debian/changelog /tmp/3p28KrBmDX/lintian-1.23.41/debian/changelog
--- /tmp/Yq0Lbe3ntH/lintian-1.23.41/debian/changelog 2007-12-10 05:03:03.000000000 +0100
+++ /tmp/3p28KrBmDX/lintian-1.23.41/debian/changelog 2007-12-27 19:36:29.000000000 +0100
@@ -1,3 +1,10 @@
+lintian (1.23.41-0.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Add checks on symbols files. Closes: #457067
+
+ -- Raphael Hertzog <hertzog@debian.org> Mon, 24 Dec 2007 10:31:34 +0100
+
lintian (1.23.41) unstable; urgency=low
The "it would be lovely if there were an actual desktop file standard"
Reply to: