lintian: r416 - in trunk: checks collection debian testset testset/binary/debian testset/filenames/debian
Author: djpig
Date: 2005-06-17 02:19:29 +0200 (Fri, 17 Jun 2005)
New Revision: 416
Modified:
trunk/checks/menu-format
trunk/checks/menus
trunk/checks/menus.desc
trunk/collection/menu-files
trunk/debian/changelog
trunk/testset/binary/debian/rules
trunk/testset/filenames/debian/rules
trunk/testset/tags.binary
trunk/testset/tags.filenames
Log:
* checks/menus:
+ [FL] New check menu-file-in-usr-lib because /usr/lib/menu is
deprecated
+ [FL] Also find menu files in /usr/share/menu (Closes: #314187)
+ [FL] Rename executable-in-usr-lib-menu to executable-menu-file
* checks/menu-format:
+ [FL] Adapt to changes in collections/menu-files
* collections/menu-files:
+ [FL] Also collect files from /usr/share/menu
Modified: trunk/checks/menu-format
===================================================================
--- trunk/checks/menu-format 2005-04-12 23:21:38 UTC (rev 415)
+++ trunk/checks/menu-format 2005-06-17 00:19:29 UTC (rev 416)
@@ -22,6 +22,7 @@
use strict;
use Tags;
use Util;
+use File::Basename;
# This is a list of all tags that should be in every menu item.
my @req_tags=qw(needs section title command);
@@ -119,13 +120,25 @@
$sections_hash{$section}=1;
}
-opendir (MENUDIR, "menu/") or fail("cannot read menu file directory.");
-while (my $menufile = readdir(MENUDIR)) {
- next if -x "menu/$menufile"; # don't try to parse executables
- next if $menufile eq "README"; # README is a special case
+my @menufiles;
+opendir (MENUDIR, "menu/lib") or fail("cannot read menu/lib file directory.");
+push @menufiles, map { "menu/lib/$_" } readdir(MENUDIR);
+closedir MENUDIR;
+opendir (MENUDIR, "menu/share") or fail("cannot read menu/share file directory.");
+push @menufiles, map { "menu/share/$_" } readdir(MENUDIR);
+closedir MENUDIR;
+foreach my $menufile (@menufiles) {
+ next if -x $menufile; # don't try to parse executables
+
+ my $basename = basename $menufile;
+ my $fullname = "/usr/share/menu/$basename";
+ $fullname = "/usr/lib/menu/$basename" if $menufile =~ m,^menu/lib/,o;
+
+ next if $basename eq "README"; # README is a special case
+
my $menufile_line ="";
- open (IN,"menu/$menufile") or
+ open (IN, $menufile) or
fail("cannot open menu file $menufile for reading.");
# line below is commented out in favour of the while loop
# do { $_=<IN>; } while defined && (m/^\s* \#/ || m/^\s*$/);
@@ -140,7 +153,7 @@
# Check first line of file to see if it matches the old menu file format.
if ($menufile_line =~ m/^(?!\?package\(.*\)).* .* .* .* "?.*"? .*$/o) {
- tag "old-format-menu-file", "/usr/lib/menu/$menufile";
+ tag "old-format-menu-file", $fullname;
close IN;
next;
}
@@ -159,16 +172,16 @@
# Note that I allow whitespace after the continuation character.
# This is caught by VerifyLine().
if (! ($menufile_line =~ m/\\\s*?$/)) {
- VerifyLine($pkg,$type,$menufile,$line,$lc);
+ VerifyLine($pkg,$type,$menufile,$fullname,$line,$lc);
$line="";
}
} while ($menufile_line = <IN>);
- VerifyLine($pkg,$type,$menufile,$line,$lc);
+ VerifyLine($pkg,$type,$menufile,$fullname,$line,$lc);
close IN;
}
-closedir MENUDIR;
+
}
# -----------------------------------
@@ -176,11 +189,7 @@
# Pass this a line of a menu file, it sanitizes it and
# verifies that it is correct.
sub VerifyLine {
- my $pkg=shift;
- my $type=shift;
- my $menufile=shift;
- my $line=shift;
- my $linecount=shift;
+ my ( $pkg, $type, $menufile, $fullname, $line, $linecount ) = @_;
my %vals;
@@ -193,7 +202,7 @@
# This is in here to fix a common mistake: whitespace after a '\'
# character.
if ($line =~ s/\\\s+\n/ /mgo) {
- tag "whitespace-after-continuation-character", "/usr/lib/menu/$menufile:$linecount";
+ tag "whitespace-after-continuation-character", "$fullname:$linecount";
}
# Ignore lines that are all whitespace or empty.
@@ -204,14 +213,14 @@
# Start by testing the package check.
if (not $line =~ m/^\?package\((.*?)\):/o) {
- tag "bad-test-in-menu-item", "/usr/lib/menu/$menufile:$linecount";
+ tag "bad-test-in-menu-item", "$fullname:$linecount";
return;
}
my $pkg_test = $1;
my %tested_packages = map { $_ => 1 } split( /\s*,\s*/, $pkg_test);
my $tested_packages = scalar keys %tested_packages;
unless (exists $tested_packages{$pkg}) {
- tag "pkg-not-in-package-test", "$pkg_test /usr/lib/menu/$menufile";
+ tag "pkg-not-in-package-test", "$pkg_test $fullname";
}
$line =~ s/^\?package\(.*?\)://;
@@ -251,14 +260,14 @@
my $value = $2;
if (exists $vals{$tag}) {
- tag "duplicated-tag-in-menu-item", "/usr/lib/menu/$menufile $1:$linecount";
+ tag "duplicated-tag-in-menu-item", "$fullname $1:$linecount";
}
# If the value was quoted, remove those quotes.
if ($value =~ m/^\"(.*)\"$/) {
$value = $1;
} else {
- tag "unquoted-string-in-menu-item", "/usr/lib/menu/$menufile $1:$linecount";
+ tag "unquoted-string-in-menu-item", "$fullname $1:$linecount";
}
# If the value has escaped characters, remove the
@@ -280,7 +289,7 @@
# If that loop didn't match up to end of line, we have a
# problem..
if (pos($line) < length($line)) {
- tag "unparsable-menu-item", "/usr/lib/menu/$menufile:$linecount";
+ tag "unparsable-menu-item", "$fullname:$linecount";
# Give up now, before things just blow up in our face.
return;
}
@@ -290,7 +299,7 @@
# Test for important tags.
foreach my $tag (@req_tags) {
unless ( exists($vals{$tag}) && defined($vals{$tag}) ) {
- tag "menu-item-missing-required-tag", "$tag /usr/lib/menu/$menufile:$linecount";
+ tag "menu-item-missing-required-tag", "$tag $fullname:$linecount";
# Just give up right away, if such an essential tag is missing,
# chance is high the rest doesn't make sense either. And now all
# following checks can assume those tags to be there
@@ -301,7 +310,7 @@
# Make sure all tags are known.
foreach my $tag (keys %vals) {
if (! $known_tags_hash{$tag}) {
- tag "menu-item-contains-unknown-tag", "$tag /usr/lib/menu/$menufile:$linecount";
+ tag "menu-item-contains-unknown-tag", "$tag $fullname:$linecount";
}
}
@@ -320,9 +329,9 @@
my @com=split(' ',$vals{'command'});
if ($com[0] eq "su-to-root") {
- tag "su-to-root-without-usr-sbin", "/usr/lib/menu/$menufile:$linecount";
+ tag "su-to-root-without-usr-sbin", "$fullname:$linecount";
} elsif ($com[0] eq "/usr/bin/su-to-root") {
- tag "su-to-root-with-usr-bin", "/usr/lib/menu/$menufile:$linecount";
+ tag "su-to-root-with-usr-bin", "$fullname:$linecount";
} elsif ($com[0] eq "/usr/sbin/su-to-root") {
shift @com;
@@ -347,16 +356,16 @@
}
unless ($cmd) {
- tag "su-to-root-without--c", "/usr/lib/menu/$menufile:$linecount";
+ tag "su-to-root-without--c", "$fullname:$linecount";
} else {
- tag "menu-command-not-in-package", "/usr/lib/menu/$menufile:$linecount $cmd"
+ tag "menu-command-not-in-package", "$fullname:$linecount $cmd"
if (!($file_index{".$cmd"}
|| grep {$file_index{".".$_.$cmd}} qw(/usr/local/bin/ /usr/bin/ /bin/ /usr/bin/X11/ /usr/games/)) # Check for binary in PATH
&& ($tested_packages < 2)
&& ($section !~ m:^WindowManagers/Modules:));
}
} else {
- tag "menu-command-not-in-package", "/usr/lib/menu/$menufile:$linecount $com[0]"
+ tag "menu-command-not-in-package", "$fullname:$linecount $com[0]"
if ($com[0] && ! ($file_index{".$com[0]"}
|| grep {$file_index{".".$_.$com[0]}} qw(/usr/local/bin/ /usr/bin/ /bin/ /usr/bin/X11/ /usr/games/)) # Check for binary in PATH
&& ($tested_packages < 2)
@@ -364,13 +373,13 @@
}
if (exists($vals{'icon'})) {
- VerifyIcon($menufile, $linecount, $vals{'icon'}, 32);
+ VerifyIcon($menufile, $fullname, $linecount, $vals{'icon'}, 32);
}
if (exists($vals{'icon32x32'})) {
- VerifyIcon($menufile, $linecount, $vals{'icon32x32'}, 32);
+ VerifyIcon($menufile, $fullname, $linecount, $vals{'icon32x32'}, 32);
}
if (exists($vals{'icon16x16'})) {
- VerifyIcon($menufile, $linecount, $vals{'icon16x16'}, 16);
+ VerifyIcon($menufile, $fullname, $linecount, $vals{'icon16x16'}, 16);
}
# Check the needs tag.
@@ -379,26 +388,26 @@
if ($section =~ m:^WindowManagers/Modules:) {
# WM/Modules: needs must not be the regular ones nor wm
if ($needs_tag_vals_hash{$needs} or $needs eq "wm") {
- tag "non-wm-module-in-wm-modules-menu-section", "$needs /usr/lib/menu/$menufile:$linecount";
+ tag "non-wm-module-in-wm-modules-menu-section", "$needs $fullname:$linecount";
}
} elsif ($section =~ m:^WindowManagers:) {
# Other WM sections: needs must be wm
if ($needs ne 'wm') {
- tag "non-wm-in-windowmanager-menu-section", "$needs /usr/lib/menu/$menufile:$linecount";
+ tag "non-wm-in-windowmanager-menu-section", "$needs $fullname:$linecount";
}
} else {
# Any other section: just only the general ones
if ($needs eq "dwww") {
- tag "menu-item-needs-dwww", "/usr/lib/menu/$menufile:$linecount";
+ tag "menu-item-needs-dwww", "$fullname:$linecount";
} elsif (not $needs_tag_vals_hash{$needs}) {
- tag "menu-item-needs-tag-has-unknown-value", "$needs /usr/lib/menu/$menufile:$linecount";
+ tag "menu-item-needs-tag-has-unknown-value", "$needs $fullname:$linecount";
}
}
# Check the section tag
# Check for historical changes in the section tree.
if ($section =~ m:^Apps/Games:) {
- tag "menu-item-uses-apps-games-section", "/usr/lib/menu/$menufile:$linecount";
+ tag "menu-item-uses-apps-games-section", "$fullname:$linecount";
$section =~ s:^Apps/::;
}
@@ -406,7 +415,7 @@
my ($rootsection) = $section =~ m:([^/]*):;
if (not $root_sections_hash{$rootsection}) {
if (not $rootsection =~ m/$pkg/i) {
- tag "menu-item-creates-new-root-section", "$rootsection /usr/lib/menu/$menufile:$linecount";
+ tag "menu-item-creates-new-root-section", "$rootsection $fullname:$linecount";
}
} else {
# Check to see if the section is valid.
@@ -424,18 +433,18 @@
}
}
if (! $ok) {
- tag "menu-item-creates-new-section", "$vals{section} /usr/lib/menu/$menufile:$linecount";
+ tag "menu-item-creates-new-section", "$vals{section} $fullname:$linecount";
}
}
}
sub VerifyIcon {
- my ($menufile, $linecount, $icon, $size) = @_;
+ my ($menufile, $fullname, $linecount, $icon, $size) = @_;
local *IN;
if ($icon eq 'none') {
- tag "menu-item-uses-icon-none", "/usr/lib/menu/$menufile:$linecount";
+ tag "menu-item-uses-icon-none", "$fullname:$linecount";
return;
}
Modified: trunk/checks/menus
===================================================================
--- trunk/checks/menus 2005-04-12 23:21:38 UTC (rev 415)
+++ trunk/checks/menus 2005-06-17 00:19:29 UTC (rev 416)
@@ -80,16 +80,20 @@
if ($perm =~ m,^-,o) { # file checks
# menu file?
- if ($file =~ m,^usr/lib/menu/\S,o) { # correct permissions?
+ if ($file =~ m,^usr/(lib|share)/menu/\S,o) { # correct permissions?
if ($perm =~ m,x,o) {
- tag "executable-in-usr-lib-menu", sprintf("$file %04o",$operm);
+ tag "executable-menu-file", sprintf("$file %04o",$operm);
}
- next if $file eq 'usr/lib/menu/README';
+ next if $file =~ m,^usr/(lib|share)/menu/README$,;
+ if ($file =~ m,^usr/lib/,o) {
+ tag "menu-file-in-usr-lib", $file;
+ }
+
$menu_file = $file;
- if ($file eq 'usr/lib/menu/menu' and $pkg ne 'menu') {
+ if ($file =~ m,usr/(lib|share)/menu/menu$,o and $pkg ne 'menu') {
tag "bad-menu-file-name", $file;
}
}
Modified: trunk/checks/menus.desc
===================================================================
--- trunk/checks/menus.desc 2005-04-12 23:21:38 UTC (rev 415)
+++ trunk/checks/menus.desc 2005-06-17 00:19:29 UTC (rev 416)
@@ -67,12 +67,18 @@
Info: The postrm script calls the <tt>install-docs</tt> command. Usually,
this command should be called from the <tt>prerm</tt> maintainer script.
-Tag: executable-in-usr-lib-menu
+Tag: executable-menu-file
Type: warning
-Info: Files in <tt>/usr/lib/menu</tt> should normally not be marked as
- executables. You only need to do this if your package has to generate
- menu entries dynamically.
+Info: Menu files should normally not be marked as executables. You only
+ need to do this if your package has to generate menu entries dynamically.
+Tag: menu-file-in-usr-lib
+Type: warning
+Info: As of menu, version 2.1.25, /usr/lib/menu as location for menu
+ files is deprecated (but still works perfectly). Menu files should
+ now be placed in /usr/share/menu instead. Only menu files that are
+ actually binary executables still need to go to /usr/lib/menu.
+
Tag: executable-in-usr-share-docbase
Type: error
Info: Files in <tt>/usr/share/doc-base</tt> may not be marked as executables.
Modified: trunk/collection/menu-files
===================================================================
--- trunk/collection/menu-files 2005-04-12 23:21:38 UTC (rev 415)
+++ trunk/collection/menu-files 2005-06-17 00:19:29 UTC (rev 416)
@@ -35,14 +35,25 @@
or fail("cannot rm old menu directory");
}
-if (-d "unpacked/usr/lib/menu") {
- spawn('cp', '-a', 'unpacked/usr/lib/menu', 'menu') == 0
- or fail("cannot copy unpacked/usr/lib/menu directory");
+mkdir("menu", 0777) or fail("cannot mkdir menu: $!");
+
+if (-d "unpacked/usr/lib/menu") {
+ spawn('cp', '-a', 'unpacked/usr/lib/menu', 'menu/lib') == 0
+ or fail("cannot copy unpacked/usr/lib/menu/ directory");
} else {
# no menu directory
- mkdir("menu", 0777) or fail("cannot mkdir menu: $!");
+ mkdir("menu/lib", 0777) or fail("cannot mkdir menu/lib: $!");
}
+if (-d "unpacked/usr/share/menu") {
+ spawn('cp', '-a', 'unpacked/usr/share/menu', 'menu/share') == 0
+ or fail("cannot copy unpacked/usr/share/menu directory");
+} else {
+ # no menu directory
+ mkdir("menu/share", 0777) or fail("cannot mkdir menu/share: $!");
+}
+
+
exit 0;
# -----------------------------------
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2005-04-12 23:21:38 UTC (rev 415)
+++ trunk/debian/changelog 2005-06-17 00:19:29 UTC (rev 416)
@@ -2,8 +2,18 @@
* checks/conffiles:
+ [JvW] Warn on /var files being a conffile too (Closes: #293443)
+ * checks/menus:
+ + [FL] New check menu-file-in-usr-lib because /usr/lib/menu is
+ deprecated
+ + [FL] Also find menu files in /usr/share/menu (Closes: #314187)
+ + [FL] Rename executable-in-usr-lib-menu to executable-menu-file
+ * checks/menu-format:
+ + [FL] Adapt to changes in collections/menu-files
- -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Tue, 12 Apr 2005 23:12:36 +0200
+ * collections/menu-files:
+ + [FL] Also collect files from /usr/share/menu
+
+ -- Frank Lichtenheld <djpig@debian.org> Fri, 17 Jun 2005 02:17:52 +0200
lintian (1.23.8) unstable; urgency=low
Modified: trunk/testset/binary/debian/rules
===================================================================
--- trunk/testset/binary/debian/rules 2005-04-12 23:21:38 UTC (rev 415)
+++ trunk/testset/binary/debian/rules 2005-06-17 00:19:29 UTC (rev 416)
@@ -19,8 +19,10 @@
install -s -m 755 hello-static $(tmp)/usr/bin/static-hello
install -d $(tmp)/usr/share/doc/binary
install -m 644 INSTALL $(tmp)/usr/share/doc/binary
+ install -d $(tmp)/usr/share/menu
install -d $(tmp)/usr/lib/menu
install -d $(tmp)/usr/share/binary
+ install -m 644 debian/menu $(tmp)/usr/share/menu/binary
install -m 644 debian/menu $(tmp)/usr/lib/menu/binary
install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary
install -m 644 debian/copyright $(tmp)/usr/share/doc/binary
Modified: trunk/testset/filenames/debian/rules
===================================================================
--- trunk/testset/filenames/debian/rules 2005-04-12 23:21:38 UTC (rev 415)
+++ trunk/testset/filenames/debian/rules 2005-06-17 00:19:29 UTC (rev 416)
@@ -38,8 +38,11 @@
touch debian/tmp/usr/lib/filenames/readonly/test
install -d debian/tmp/usr/lib/menu
+ install -d debian/tmp/usr/share/menu
touch debian/tmp/usr/lib/menu/README
+ touch debian/tmp/usr/share/menu/README
touch debian/tmp/usr/lib/menu/menu
+ touch debian/tmp/usr/share/menu/menu
chmod 644 debian/tmp/usr/lib/menu/*
install -d debian/tmp/usr/lib/perl5/foo
Modified: trunk/testset/tags.binary
===================================================================
--- trunk/testset/tags.binary 2005-04-12 23:21:38 UTC (rev 415)
+++ trunk/testset/tags.binary 2005-06-17 00:19:29 UTC (rev 416)
@@ -2,14 +2,20 @@
E: binary: debian-changelog-file-missing
E: binary: file-directly-in-usr-share usr/share/baz
E: binary: menu-item-missing-required-tag section /usr/lib/menu/binary:1
+E: binary: menu-item-missing-required-tag section /usr/share/menu/binary:1
E: binary: non-wm-in-windowmanager-menu-section x11 /usr/lib/menu/binary:4
+E: binary: non-wm-in-windowmanager-menu-section x11 /usr/share/menu/binary:4
E: binary: postinst-does-not-call-updatemenus usr/lib/menu/binary
E: binary: postrm-does-not-call-updatemenus usr/lib/menu/binary
E: binary: statically-linked-binary ./usr/bin/static-hello
E: binary: su-to-root-with-usr-bin /usr/lib/menu/binary:5
+E: binary: su-to-root-with-usr-bin /usr/share/menu/binary:5
E: binary: su-to-root-without--c /usr/lib/menu/binary:2
E: binary: su-to-root-without--c /usr/lib/menu/binary:3
+E: binary: su-to-root-without--c /usr/share/menu/binary:2
+E: binary: su-to-root-without--c /usr/share/menu/binary:3
E: binary: su-to-root-without-usr-sbin /usr/lib/menu/binary:4
+E: binary: su-to-root-without-usr-sbin /usr/share/menu/binary:4
E: binary: suidregister-used-in-maintainer-script postinst
E: binary: unstripped-binary-or-object ./usr/bin/hello
I: binary: arch-dep-package-has-big-usr-share
@@ -25,8 +31,13 @@
W: binary: file-in-unusual-dir usr/bar
W: binary: invalid-date-in-changelog The, 15 Apr 2004 23:33:51 +0200
W: binary: menu-command-not-in-package /usr/lib/menu/binary:6 /imnothere
+W: binary: menu-command-not-in-package /usr/share/menu/binary:6 /imnothere
+W: binary: menu-file-in-usr-lib usr/lib/menu/binary
W: binary: menu-item-needs-tag-has-unknown-value wm /usr/lib/menu/binary:5
+W: binary: menu-item-needs-tag-has-unknown-value wm /usr/share/menu/binary:5
W: binary: package-contains-hardlink usr/bar2 -> usr/share/baz
W: binary: package-contains-upstream-install-documentation usr/share/doc/binary/INSTALL
W: binary: unquoted-string-in-menu-item /usr/lib/menu/binary needs:1
W: binary: unquoted-string-in-menu-item /usr/lib/menu/binary needs:2
+W: binary: unquoted-string-in-menu-item /usr/share/menu/binary needs:1
+W: binary: unquoted-string-in-menu-item /usr/share/menu/binary needs:2
Modified: trunk/testset/tags.filenames
===================================================================
--- trunk/testset/tags.filenames 2005-04-12 23:21:38 UTC (rev 415)
+++ trunk/testset/tags.filenames 2005-06-17 00:19:29 UTC (rev 416)
@@ -1,4 +1,5 @@
E: filenames: bad-menu-file-name usr/lib/menu/menu
+E: filenames: bad-menu-file-name usr/share/menu/menu
E: filenames: lengthy-symlink usr/lib/filenames/symlink4wrong ../filenames/symlink2
E: filenames: lengthy-symlink usr/share/doc/filenames/version.txt.gz ../filenames/doc/version6.txt.gz
E: filenames: no-copyright-file
@@ -7,8 +8,8 @@
E: filenames: package-installs-file-to-usr-something-x11 usr/bin/X11/
E: filenames: package-installs-file-to-usr-something-x11 usr/bin/X11/testxbin
E: filenames: package-installs-packlist usr/lib/perl5/foo/.packlist
-E: filenames: postinst-does-not-call-updatemenus usr/lib/menu/menu
-E: filenames: postrm-does-not-call-updatemenus usr/lib/menu/menu
+E: filenames: postinst-does-not-call-updatemenus usr/share/menu/menu
+E: filenames: postrm-does-not-call-updatemenus usr/share/menu/menu
E: filenames: symlink-contains-spurious-segments usr/lib/filenames/symlink5wrong ../menu/../somethingelse
E: filenames: symlink-contains-spurious-segments usr/lib/filenames/symlink6wrong ./file4
E: filenames: symlink-contains-spurious-segments usr/lib/filenames/symlink7wrong ../menu/./something
@@ -41,6 +42,7 @@
W: filenames: file-in-unusual-dir files/Maelstrom Sound
W: filenames: file-in-unusual-dir files/Maelstrom Sound.mine
W: filenames: file-in-unusual-dir files/svn-commit.tmp
+W: filenames: menu-file-in-usr-lib usr/lib/menu/menu
W: filenames: no-priority-field
W: filenames: no-section-field
W: filenames: non-standard-dir-perm usr/lib/filenames/readonly/ 0555 != 0755
Reply to: