Bug#467642: new check for unneeded control scripts

2008-03-02 Thread Russ Allbery
Bernhard R. Link [EMAIL PROTECTED] writes:

 Package: lintian
 Version: 1.23.45
 Severity: wishlist

 Attached patch should enable lintian to warn against unneeded control
 files. It adds a warning against (semantically) empty control files
 and against some ancient checks. (I don't think package need still check
 in preinst if the version of dpkg running is newer than from 1999).

Frank already added something very similar to this content check and I
just enhanced it to warn on scripts containing nothing but the dh-make
boilerplate.

I'm now also adding these checks for ancient dpkg assertions.  Thanks!

-- 
Russ Allbery ([EMAIL PROTECTED])   http://www.eyrie.org/~eagle/



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#467642: new check for unneeded control scripts

2008-02-26 Thread Bernhard R. Link
Package: lintian
Version: 1.23.45
Severity: wishlist

Attached patch should enable lintian to warn against unneeded control
files. It adds a warning against (semantically) empty control files
and against some ancient checks. (I don't think package need still check
in preinst if the version of dpkg running is newer than from 1999).

Hochachtungsvoll,
Bernhard R. Link
diff -rup lintian-1.23.45/checks/control-files lintian-1.23.45patched/checks/control-files
--- lintian-1.23.45/checks/control-files	2008-01-03 03:03:56.0 +0100
+++ lintian-1.23.45patched/checks/control-files	2008-02-26 17:45:18.0 +0100
@@ -103,12 +103,44 @@ while (IN) {
 	tag control-file-has-bad-owner, $file $owner != root/root;
 }
 
+# actual content?
+open(IN2, '', control/$file) or
+fail(cannot open maintainer script control/$file for reading: $!);
+my $has_content = 0;
+while (IN2) {
+next if m/^\#/;
+next if m/^[[:space:]]*$/;
+	$has_content = 1;
+
+if (m/dpkg[[:space:]]*--assert-support-predepends/) {
+tag ancient-predepends-check, $file;
+}
+if (m/dpkg[[:space:]]*--assert-working-epoch/) {
+tag ancient-epoch-check, $file;
+}
+if (m/dpkg[[:space:]]*--assert-long-filenames/) {
+tag ancient-long-filenames-check, $file;
+}
+if (m/dpkg[[:space:]]*--assert-multi-conrep/) {
+tag ancient-multi-conrep-check, $file;
+}
+}
+close(IN2);
+unless ($has_content) {
+tag empty-control-file, $file;
+}
+
 # for other maintainer scripts checks, see the scripts check
 }
 close IN;
 
 } # /run
 
+sub check_control_script {
+  my ($script) = @_;
+
+}
+
 1;
 
 # vim: syntax=perl sw=4 ts=8
diff -rup lintian-1.23.45/checks/control-files.desc lintian-1.23.45patched/checks/control-files.desc
--- lintian-1.23.45/checks/control-files.desc	2008-01-03 02:59:17.0 +0100
+++ lintian-1.23.45patched/checks/control-files.desc	2008-02-26 17:47:23.0 +0100
@@ -26,3 +26,28 @@ Info: The postinst, postrm, preinst, and
 Tag: control-file-has-bad-owner
 Type: error
 Info: All control files should be owned by root/root.
+
+Tag: empty-control-file
+Type: warning
+Info: The package contains a control file with only comments and empty
+ lines. This should be removed instead.
+
+Tag: ancient-predepends-check
+Type: warning
+Info: The package calls dpkg --assert-support-predepends in a control
+ file. This always returns true since dpkg 1.1.0 released Feb 1996.
+
+Tag: ancient-epoch-check
+Type: warning
+Info: The package calls dpkg --assert-working-epoch in a control
+ file. This always returns true since dpkg 1.4.0.7 released Jan 1997.
+
+Tag: ancient-long-filenames-check
+Type: warning
+Info: The package calls dpkg --assert-long-filenames in a control
+ file. This always return true since dpkg 1.4.1.17 released Oct 1999.
+
+Tag: ancient-multi-conrep-check
+Type: warning
+Info: The package calls dpkg --assert-multi-conrep in a control
+ file. This always returns true since dpkg 1.4.1.19 released Oct 1999.