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

[SCM] Debian package checker branch, master, updated. 2.5.6-81-g3595915



The following commit has been merged in the master branch:
commit 35959150ba6509ba16eb89dc686fcf95efdac7a9
Author: Niels Thykier <niels@thykier.net>
Date:   Mon Apr 9 22:31:18 2012 +0200

    c/menu-format: Move section list to a data file
    
    Signed-off-by: Niels Thykier <niels@thykier.net>

diff --git a/checks/menu-format b/checks/menu-format
index c52a3ff..57970b1 100644
--- a/checks/menu-format
+++ b/checks/menu-format
@@ -65,73 +65,17 @@ my @known_tags=qw(
 # in other words).  It's case insensitive, use lower case here.
 my @needs_tag_vals=qw(x11 text vc);
 
-# Authorative source of menu sections:
-# http://www.debian.org/doc/packaging-manuals/menu-policy/ch2#s2.1
-
-# This is a list of all valid section on the root menu.
-my @root_sections = ('Applications', 'Games', 'Help', 'Screen',
-                     'Window Managers', 'FVWM Modules', 'Window Maker');
-
-# This is a list of all valid sections a menu item or submenu can go in.
-my @sections = ('Applications/Accessibility',
-                'Applications/Amateur Radio',
-                'Applications/Data Management',
-                'Applications/Editors',
-                'Applications/Education',
-                'Applications/Emulators',
-                'Applications/File Management',
-                'Applications/Graphics',
-                'Applications/Mobile Devices',
-                'Applications/Network/Communication',
-                'Applications/Network/File Transfer',
-                'Applications/Network/Monitoring',
-                'Applications/Network/Web Browsing',
-                'Applications/Network/Web News',
-                'Applications/Office',
-                'Applications/Programming',
-                'Applications/Project Management',
-                'Applications/Science/Astronomy',
-                'Applications/Science/Biology',
-                'Applications/Science/Chemistry',
-                'Applications/Science/Data Analysis',
-                'Applications/Science/Electronics',
-                'Applications/Science/Engineering',
-                'Applications/Science/Geoscience',
-                'Applications/Science/Mathematics',
-                'Applications/Science/Medicine',
-                'Applications/Science/Physics',
-                'Applications/Science/Social',
-                'Applications/Shells',
-                'Applications/Sound',
-                'Applications/System/Administration',
-                'Applications/System/Hardware',
-                'Applications/System/Language Environment',
-                'Applications/System/Monitoring',
-                'Applications/System/Package Management',
-                'Applications/System/Security',
-                'Applications/Terminal Emulators',
-                'Applications/Text',
-                'Applications/TV and Radio',
-                'Applications/Video',
-                'Applications/Viewers',
-                'Applications/Web Development',
-                'Games/Action',
-                'Games/Adventure',
-                'Games/Blocks',
-                'Games/Board',
-                'Games/Card',
-                'Games/Puzzles',
-                'Games/Simulation',
-                'Games/Strategy',
-                'Games/Tools',
-                'Games/Toys',
-                'Help',
-                'Screen/Saving',
-                'Screen/Locking',
-                'Window Managers',
-                'FVWM Modules',
-                'Window Maker'
-               );
+sub _menu_sections {
+    my ($key, $val, $cur) = @_;
+    my $ret = undef;
+    $ret = $cur = {} unless defined $cur;
+    # $val is empty if this is just a root section
+    $cur->{$val} = 1 if $val;
+    return $ret;
+}
+
+my $MENU_SECTIONS = Lintian::Data->new ('menu-format/menu-sections',
+                                        qr|/|, \&_menu_sections);
 
 # Authorative source of desktop keys:
 # http://standards.freedesktop.org/desktop-entry-spec/1.0/
@@ -376,8 +320,6 @@ my @path = qw(usr/local/bin/ usr/bin/ bin/ usr/X11R6/bin/ usr/games/);
 
 my %known_tags_hash = map { $_ => 1 } @known_tags;
 my %needs_tag_vals_hash = map { $_ => 1 } @needs_tag_vals;
-my %root_sections_hash = map { $_ => 1 } @root_sections;
-my %sections_hash = map { $_ => 1 } @sections;
 
 # -----------------------------------
 
@@ -672,13 +614,22 @@ sub VerifyLine {
     }
 
     # Check for Evil new root sections.
-    my ($rootsection) = $section =~ m:([^/]*):;
-    if (not $root_sections_hash{$rootsection}) {
-        if (not $rootsection =~ m/$pkg/i) {
-            tag 'menu-item-creates-new-root-section', "$rootsection $fullname:$linecount";
+    my ($rootsec, $sect) = split m:/:, $section, 2;
+    my $root_data = $MENU_SECTIONS->value ($rootsec);
+    if (not defined $root_data) {
+        if (not $rootsec =~ m/$pkg/i) {
+            tag 'menu-item-creates-new-root-section', "$rootsec $fullname:$linecount";
         }
     } else {
-        if (not $sections_hash{$section}) {
+        my $ok = 1;
+        if ($sect) {
+            # Using unknown subsection of $rootsec?
+            $ok = 0 if not exists $root_data->{$sect};
+        } else {
+            # Using root menu when a subsection exists?
+            $ok = 0 if %$root_data;
+        }
+        unless ($ok) {
             tag 'menu-item-creates-new-section', "$vals{section} $fullname:$linecount";
         }
     }
diff --git a/debian/changelog b/debian/changelog
index 76d28ba..8fd61c8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -65,6 +65,8 @@ lintian (2.5.7) UNRELEASED; urgency=low
   * checks/manpages{,.desc}:
     + [RA] Detect hyphen used as minus sign following a groff \f[C] font
       change.  Thanks, Iustin Pop.  (Closes: #664471)
+  * checks/menu-format:
+    + [NT] Move menu section lists into a data file.
   * checks/menus{,.desc}:
     + [NT] Remove "manual" lazy load of data file.
   * checks/nmu:
@@ -110,6 +112,8 @@ lintian (2.5.7) UNRELEASED; urgency=low
     + [NT] New file.
   * data/changes-file/{debian-dists -> known-dists}:
     + [NT] Renamed file.
+  * data/menu-format/menu-sections:
+    + [NT] New file.
 
   * frontend/lintian:
     + [JW] Fix typo in error message.
diff --git a/t/tests/menu-format-general/debian/debian/menu-section.menu b/t/tests/menu-format-general/debian/debian/menu-section.menu
index 31ac76c..f6d6893 100644
--- a/t/tests/menu-format-general/debian/debian/menu-section.menu
+++ b/t/tests/menu-format-general/debian/debian/menu-section.menu
@@ -1,9 +1,12 @@
 ?package(menu-section):needs="X11" section="Root"\
   title="pargs (new root)" command="/usr/bin/pargs-section"\
   longtitle="Argument printer"
-?package(menu-section):needs="X11" section="Apps/Games"\
+?package(menu-section):needs="X11" section="Apps/Games/Toys"\
   title="pargs (apps/games)" command="/usr/bin/pargs-section"\
   longtitle="Argument printer"
+?package(menu-section):needs="X11" section="Games"\
+  title="pargs (games)" command="/usr/bin/pargs-section"\
+  longtitle="Argument printer"
 ?package(menu-section):needs="X11" section="Apps/Programming"\
   title="pargs (apps/prog)" command="/usr/bin/pargs-section"\
   longtitle="Argument printer"
diff --git a/t/tests/menu-format-general/tags b/t/tests/menu-format-general/tags
index e52aac1..6ca7d24 100644
--- a/t/tests/menu-format-general/tags
+++ b/t/tests/menu-format-general/tags
@@ -1,7 +1,7 @@
 E: menu-broken: bad-test-in-menu-item usr/share/menu/menu-broken:4
 E: menu-broken: unparsable-menu-item usr/share/menu/menu-broken:12
 E: menu-section: menu-item-creates-new-root-section Root usr/share/menu/menu-section:3
-E: menu-section: non-wm-in-windowmanager-menu-section x11 usr/share/menu/menu-section:12
+E: menu-section: non-wm-in-windowmanager-menu-section x11 usr/share/menu/menu-section:15
 W: menu-broken: duplicated-tag-in-menu-item usr/share/menu/menu-broken longtitle:12
 W: menu-broken: pkg-not-in-package-test wrong-package usr/share/menu/menu-broken
 W: menu-cmd: menu-command-not-in-package usr/share/menu/menu-cmd:3 usr/bin/not-here
@@ -9,8 +9,8 @@ W: menu-none: menu-icon-missing non-existent.xpm
 W: menu-none: menu-icon-missing usr/share/menu-none/non-existent16.xpm
 W: menu-none: menu-icon-missing usr/share/menu-none/non-existent32.xpm
 W: menu-none: menu-item-uses-icon-none usr/share/menu/menu-none:4
-W: menu-section: menu-item-creates-new-section Apps/Games usr/share/menu/menu-section:6
-W: menu-section: menu-item-creates-new-section WindowManagers/Programming usr/share/menu/menu-section:12
+W: menu-section: menu-item-creates-new-section Games usr/share/menu/menu-section:9
+W: menu-section: menu-item-creates-new-section WindowManagers/Programming usr/share/menu/menu-section:15
 W: menu-section: menu-item-uses-apps-games-section usr/share/menu/menu-section:6
-W: menu-section: menu-item-uses-apps-section usr/share/menu/menu-section:9
-W: menu-section: menu-item-uses-windowmanagers-section usr/share/menu/menu-section:12
+W: menu-section: menu-item-uses-apps-section usr/share/menu/menu-section:12
+W: menu-section: menu-item-uses-windowmanagers-section usr/share/menu/menu-section:15
diff --git a/vendors/debian/ftp-master-auto-reject/data/menu-format/menu-sections b/vendors/debian/ftp-master-auto-reject/data/menu-format/menu-sections
new file mode 100644
index 0000000..74c5a95
--- /dev/null
+++ b/vendors/debian/ftp-master-auto-reject/data/menu-format/menu-sections
@@ -0,0 +1,71 @@
+# Data file of all the valid sections a menu item (or submenu) can go in.
+#
+# Authorative source of menu sections:
+# http://www.debian.org/doc/packaging-manuals/menu-policy/ch2#s2.1
+#
+# This file maps "root sections" to the valid sections in each root
+# sections.
+#
+# Format:
+#   root-section[/section]
+#
+# Please keep it sorted.
+
+Applications/Accessibility
+Applications/Amateur Radio
+Applications/Data Management
+Applications/Editors
+Applications/Education
+Applications/Emulators
+Applications/File Management
+Applications/Graphics
+Applications/Mobile Devices
+Applications/Network/Communication
+Applications/Network/File Transfer
+Applications/Network/Monitoring
+Applications/Network/Web Browsing
+Applications/Network/Web News
+Applications/Office
+Applications/Programming
+Applications/Project Management
+Applications/Science/Astronomy
+Applications/Science/Biology
+Applications/Science/Chemistry
+Applications/Science/Data Analysis
+Applications/Science/Electronics
+Applications/Science/Engineering
+Applications/Science/Geoscience
+Applications/Science/Mathematics
+Applications/Science/Medicine
+Applications/Science/Physics
+Applications/Science/Social
+Applications/Shells
+Applications/Sound
+Applications/System/Administration
+Applications/System/Hardware
+Applications/System/Language Environment
+Applications/System/Monitoring
+Applications/System/Package Management
+Applications/System/Security
+Applications/Terminal Emulators
+Applications/Text
+Applications/TV and Radio
+Applications/Video
+Applications/Viewers
+Applications/Web Development
+Games/Action
+Games/Adventure
+Games/Blocks
+Games/Board
+Games/Card
+Games/Puzzles
+Games/Simulation
+Games/Strategy
+Games/Tools
+Games/Toys
+Help
+Screen/Saving
+Screen/Locking
+Window Managers
+FVWM Modules
+Window Maker

-- 
Debian package checker


Reply to: