lintian: r1088 - in trunk: checks debian testset testset/libbaz/debian testset/non-us/debian
Author: rra
Date: 2008-01-03 03:56:27 +0100 (Thu, 03 Jan 2008)
New Revision: 1088
Added:
trunk/testset/libbaz/debian/lib.symbols
Modified:
trunk/checks/shared-libs
trunk/checks/shared-libs.desc
trunk/debian/changelog
trunk/testset/libbaz/debian/changelog
trunk/testset/libbaz/debian/lib.shlibs
trunk/testset/libbaz/debian/rules
trunk/testset/non-us/debian/rules
trunk/testset/tags.libbaz
trunk/testset/tags.non-us
Log:
* checks/shared-libs{.desc,}:
+ [RA] New check for version numbers in symbol files. Based on a
patch from Raphael Hertzog. (Closes: #457067)
Modified: trunk/checks/shared-libs
===================================================================
--- trunk/checks/shared-libs 2008-01-03 02:54:35 UTC (rev 1087)
+++ trunk/checks/shared-libs 2008-01-03 02:56:27 UTC (rev 1088)
@@ -291,6 +291,12 @@
}
# 4th step: check shlibs control file
+my $version;
+if (open (VERSION, '<', 'fields/version')) {
+ $version = <VERSION>;
+ close VERSION;
+ chomp $version;
+}
@shlibs = keys %SONAME;
if ($#shlibs == -1) {
# no shared libraries included in package, thus shlibs control file should
@@ -365,13 +371,7 @@
#
# Deduplicate the list of dependencies before warning so that we don't
# dupliate warnings.
- my $provides = $pkg;
- if (open (VERSION, '<', 'fields/version')) {
- my $version = <VERSION>;
- close VERSION;
- chomp $version;
- $provides .= " (= $version)";
- }
+ my $provides = $pkg . "( = $version)";
if (open (PROVIDES, '<', 'fields/provides')) {
my $line = <PROVIDES>;
close PROVIDES;
@@ -389,7 +389,47 @@
}
}
-# 5th step: check pre- and post- control files
+# 5th step: check symbols control file
+if (open(IN, '<', 'control/symbols')) {
+ 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);
+ 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--;
+ my $others = '';
+ if ($full_version_count > 0) {
+ $others = " and $full_version_count others";
+ }
+ tag "symbols-file-contains-current-version-with-debian-revision",
+ "on symbol $full_version_sym$others"
+ }
+ if ($debian_revision_count) {
+ $debian_revision_count--;
+ my $others = '';
+ if ($debian_revision_count > 0) {
+ $others = " and $debian_revision_count others";
+ }
+ tag "symbols-file-contains-debian-revision",
+ "on symbol $debian_revision_sym$others";
+ }
+}
+
+
+# 6th step: check pre- and post- control files
if (-f $preinst) {
local $_ = slurp_entire_file($preinst);
if (/^[^\#]*\bldconfig\b/m) {
@@ -464,4 +504,8 @@
1;
+# Local Variables:
+# indent-tabs-mode: t
+# cperl-indent-level: 4
+# End:
# vim: syntax=perl sw=4 ts=8
Modified: trunk/checks/shared-libs.desc
===================================================================
--- trunk/checks/shared-libs.desc 2008-01-03 02:54:35 UTC (rev 1087)
+++ trunk/checks/shared-libs.desc 2008-01-03 02:56:27 UTC (rev 1088)
@@ -207,3 +207,26 @@
from assembler files which don't define a proper .note.GNU-stack
section.
+Tag: symbols-file-contains-current-version-with-debian-revision
+Type: error
+Info: Debian revisions should be stripped from versions in symbols files.
+ Not doing so 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
+ Debian revisions, you should postfix the version with a single "~"
+ (example: 1.0-3~ if the symbol appeared in 1.0-3).
+ .
+ This problem normally means that the symbols were added automatically by
+ dpkg-gensymbols. dpkg-gensymbols uses the full version number for the
+ dependency associated to any new symbol that it detects. The maintainer
+ must update the <tt>debian/<package>.symbols</tt> file by adding
+ the new symbols with the corresponding upstream version.
+
+Tag: symbols-file-contains-debian-revision
+Type: warning
+Info: Debian revisions should be stripped from versions in symbols files.
+ Not doing so 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
+ Debian revisions, you should postfix the version with a single "~"
+ (example: 1.0-3~ if the symbol appeared in 1.0-3).
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2008-01-03 02:54:35 UTC (rev 1087)
+++ trunk/debian/changelog 2008-01-03 02:56:27 UTC (rev 1088)
@@ -9,6 +9,9 @@
Thanks, Joerg Jaspert. (Closes: #458074)
* checks/files.desc:
+ [RA] Remove a stray variable from the config-file-reserved tag.
+ * checks/shared-libs{.desc,}:
+ + [RA] New check for version numbers in symbol files. Based on a
+ patch from Raphael Hertzog. (Closes: #457067)
* debian/control:
+ [RA] Suggest libtext-template-perl, needed for HTML reporting.
Modified: trunk/testset/libbaz/debian/changelog
===================================================================
--- trunk/testset/libbaz/debian/changelog 2008-01-03 02:54:35 UTC (rev 1087)
+++ trunk/testset/libbaz/debian/changelog 2008-01-03 02:56:27 UTC (rev 1088)
@@ -1,4 +1,4 @@
-libbaz (1) unstable; urgency=low
+libbaz (1-1) unstable; urgency=low
* Initial setup
Modified: trunk/testset/libbaz/debian/lib.shlibs
===================================================================
--- trunk/testset/libbaz/debian/lib.shlibs 2008-01-03 02:54:35 UTC (rev 1087)
+++ trunk/testset/libbaz/debian/lib.shlibs 2008-01-03 02:56:27 UTC (rev 1088)
@@ -1,8 +1,8 @@
libdoesntexist2 1.0 libbaz1
libdoesntexist2 1.0 libbaz1
libbaz2 1.1 libbaz
-libbaz3 1 libbaz1 (>> 1)
-libbaz4 1 libbaz1 (= 1)
+libbaz3 1 libbaz1 (>> 1-1)
+libbaz4 1 libbaz1 (= 1-1)
libbaz5 1 libbaz2
udeb: libdoesntexist2 1.0 libbaz2
udeb: libdoesntexist2 1.0 libbaz2
Added: trunk/testset/libbaz/debian/lib.symbols
===================================================================
--- trunk/testset/libbaz/debian/lib.symbols (rev 0)
+++ trunk/testset/libbaz/debian/lib.symbols 2008-01-03 02:56:27 UTC (rev 1088)
@@ -0,0 +1,3 @@
+libbaz.so.2 libbaz1 #MINVER#
+ pw 1-1
+ foo 1.1-1
Modified: trunk/testset/libbaz/debian/rules
===================================================================
--- trunk/testset/libbaz/debian/rules 2008-01-03 02:54:35 UTC (rev 1087)
+++ trunk/testset/libbaz/debian/rules 2008-01-03 02:56:27 UTC (rev 1088)
@@ -20,12 +20,12 @@
install -d debian/libbaz2-dev/usr/lib
cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
# usually, I'd also include some .h files to /usr/include
-
+
# Now the correct libbaz2 package
install -d debian/libbaz2/usr/lib
cp -a libbaz2.so.* debian/libbaz2/usr/lib
chmod a-x debian/libbaz2/usr/lib/*
-
+
# General stuff that is tested in other testsets:
dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
@@ -61,8 +61,8 @@
cp -a *.a $(lib_tmp)/usr/lib
# And a wrong .so symlink (wrong, only in -dev, TODO)
ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
- # And a wrong .so.X symlink (wrong, should point to a real existing shlib,
- # TODO)
+ # And a wrong .so.X symlink (wrong, should point to a real existing
+ # shlib, TODO)
ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
# And a plain .so (wrong, TODO)
touch $(lib_tmp)/usr/lib/libbar2.so
@@ -77,6 +77,7 @@
touch $(lib_tmp)/usr/share/doc/README.Debian
#dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
+ install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
dpkg --build $(lib_tmp) ..
Modified: trunk/testset/non-us/debian/rules
===================================================================
--- trunk/testset/non-us/debian/rules 2008-01-03 02:54:35 UTC (rev 1087)
+++ trunk/testset/non-us/debian/rules 2008-01-03 02:56:27 UTC (rev 1088)
@@ -19,6 +19,8 @@
# crypto-app
install -d debian/$(CRYPTO)-tmp/DEBIAN
+ install -d debian/$(CRYPTO)-tmp/usr/share/doc/$(CRYPTO)
+ echo copyright > debian/$(CRYPTO)-tmp/usr/share/doc/$(CRYPTO)/copyright
dpkg-gencontrol -isp -p$(CRYPTO) -Pdebian/$(CRYPTO)-tmp
dpkg --build debian/$(CRYPTO)-tmp ..
Modified: trunk/testset/tags.libbaz
===================================================================
--- trunk/testset/tags.libbaz 2008-01-03 02:54:35 UTC (rev 1087)
+++ trunk/testset/tags.libbaz 2008-01-03 02:56:27 UTC (rev 1088)
@@ -1,5 +1,7 @@
E: libbaz source: not-binnmuable-any-depends-any libbaz1-dev -> libbaz1
E: libbaz1: control-file-has-bad-permissions shlibs 0755 != 0644
+E: libbaz1: control-file-has-bad-permissions symbols 0755 != 0644
+E: libbaz1: debian-changelog-file-missing-or-wrong-name
E: libbaz1: duplicate-entry-in-shlibs-control-file libdoesntexist2 1.0
E: libbaz1: duplicate-entry-in-shlibs-control-file udeb: libdoesntexist2 1.0
E: libbaz1: file-directly-in-usr-share-doc usr/share/doc/README.Debian
@@ -11,28 +13,34 @@
E: libbaz1: shlib-missing-in-control-file libbaz2 1.0 for usr/lib/libfoo2.so.1.0.3b
E: libbaz1: shlib-with-executable-bit usr/lib/libfoo2.so.1.0.3b 0755
E: libbaz1: shlib-with-non-pic-code usr/lib/libbaz3.so.1.0.3b
+E: libbaz1: symbols-file-contains-current-version-with-debian-revision on symbol pw
E: libbaz1: unstripped-binary-or-object ./usr/lib/libbaz1.so.1.0.3b
E: libbaz1: unstripped-binary-or-object ./usr/lib/libbaz3.so.1.0.3b
E: libbaz1: unstripped-binary-or-object ./usr/lib/libfoo2.so.1.0.3b
-E: libbaz2-dbg: changelog-file-missing-in-native-package
+E: libbaz2-dbg: debian-changelog-file-missing
+E: libbaz2-dev: debian-changelog-file-missing-or-wrong-name
+E: libbaz2: debian-changelog-file-missing-or-wrong-name
I: libbaz source: package-lacks-versioned-build-depends-on-debhelper 5
I: libbaz1: no-md5sums-control-file
I: libbaz1: several-sonames-in-same-package libbaz2.so.1.0 libbaz3.so.1
I: libbaz2-dbg: no-md5sums-control-file
I: libbaz2-dev: no-md5sums-control-file
I: libbaz2: no-md5sums-control-file
-N: libbaz_1.dsc overrode 4 warnings
+N: libbaz_1-1.dsc overrode 4 warnings
W: libbaz source: ancient-standards-version 3.2.1 (current is 3.7.3)
W: libbaz source: changelog-should-mention-nmu
-W: libbaz source: source-nmu-has-incorrect-version-number 1
+W: libbaz source: native-package-with-dash-version
+W: libbaz source: source-nmu-has-incorrect-version-number 1-1
W: libbaz source: substvar-source-version-is-deprecated libbaz2-dev
W: libbaz1-dev: dev-package-should-be-section-libdevel libbaz1-dev
W: libbaz1-dev: package-contains-empty-directory usr/include/
W: libbaz1: missing-depends-line
+W: libbaz1: new-package-should-close-itp-bug
W: libbaz1: package-name-doesnt-match-sonames libbaz2-1.0 libbaz3-1
W: libbaz1: postinst-should-not-set-usr-doc-link
-W: libbaz1: shlibs-declares-dependency-on-other-package libbaz1 (>> 1)
+W: libbaz1: shlibs-declares-dependency-on-other-package libbaz1 (>> 1-1)
W: libbaz1: shlibs-declares-dependency-on-other-package libbaz2
+W: libbaz1: symbols-file-contains-debian-revision on symbol pw and 1 others
W: libbaz1: unused-shlib-entry-in-control-file libbaz2 1.1
W: libbaz1: unused-shlib-entry-in-control-file libbaz4 1
W: libbaz1: unused-shlib-entry-in-control-file libbaz5 1
@@ -42,6 +50,7 @@
W: libbaz2-dbg: debug-package-should-be-priority-extra libbaz2-dbg
W: libbaz2-dev: changelog-file-not-compressed changelog
W: libbaz2-dev: dev-package-should-be-section-libdevel libbaz2-dev
+W: libbaz2-dev: new-package-should-close-itp-bug
W: libbaz2: debian-changelog-file-is-a-symlink
W: libbaz2: package-name-doesnt-match-sonames libbaz2-1.0
W: libbaz2: symlink-should-be-relative usr/share/doc/libbaz2/changelog.gz /usr/share/doc/lintian/changelog.gz
Modified: trunk/testset/tags.non-us
===================================================================
--- trunk/testset/tags.non-us 2008-01-03 02:54:35 UTC (rev 1087)
+++ trunk/testset/tags.non-us 2008-01-03 02:56:27 UTC (rev 1088)
@@ -1,9 +1,10 @@
E: broken-crypto: no-copyright-file
-E: crypto-app: no-copyright-file
+E: crypto-app: changelog-file-missing-in-native-package
E: non-us source: section-category-mismatch Package broken-crypto
E: non-us source: section-category-mismatch Package nonfree-crypto-app
E: nonfree-crypto-app: no-copyright-file
E: patented-app: no-copyright-file
+I: crypto-app: no-md5sums-control-file
I: patented-app: no-md5sums-control-file
I: patented-app: non-us-spelling
W: broken-crypto: unknown-section non-US/admin
Reply to: