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

Bug#673352: lintian: false positive for icon-size-and-directory-name-mismatch on symlinks



tags 673352 patch
thanks

Attaching a patch series that fixes this bug, bug #673862 and has
some other enhancements for icon-size-and-directory-name-mismatch.

>From fc75c5737d3ba4b068d4255b207dfae058cc106c Mon Sep 17 00:00:00 2001
From: Felix Geyer <debfx-pkg@fobos.de>
Date: Tue, 15 May 2012 12:13:43 +0200
Subject: [PATCH 1/4] Exclude animations from
 icon-size-and-directory-name-mismatch check.

They contain the icon for each frame so naturally are larger than
the directory name size.
---
 checks/files |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/checks/files b/checks/files
index e99fa41..70d62a1 100644
--- a/checks/files
+++ b/checks/files
@@ -918,7 +918,7 @@ foreach my $file (@{$info->sorted_index}) {
         tag 'python-module-in-wrong-location', @correction if (@correction);
     }
 
-    if ($file =~ m,/icons/[^/]+/(\d+x\d+)/.*\.png$,) {
+    if ($file =~ m,/icons/[^/]+/(\d+x\d+)/(?!animations/).*\.png$,) {
         my ($dsize, $fsize) = ($1);
         $info->file_info->{$file} =~ m/,\s*(\d+)\s*x\s*(\d+)\s*,/;
         $fsize = $1.'x'.$2;
-- 
1.7.9.5

>From 494c7017484eec690906ad341534d4c712c627f1 Mon Sep 17 00:00:00 2001
From: Felix Geyer <debfx-pkg@fobos.de>
Date: Wed, 23 May 2012 14:22:44 +0200
Subject: [PATCH 2/4] Don't emit invalid icon-size-and-directory-name-mismatch
 tags for symlinks.

Check if file_info exists for the file and matches the regular expression.
---
 checks/files |   12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/checks/files b/checks/files
index 70d62a1..3a340a7 100644
--- a/checks/files
+++ b/checks/files
@@ -919,11 +919,13 @@ foreach my $file (@{$info->sorted_index}) {
     }
 
     if ($file =~ m,/icons/[^/]+/(\d+x\d+)/(?!animations/).*\.png$,) {
-        my ($dsize, $fsize) = ($1);
-        $info->file_info->{$file} =~ m/,\s*(\d+)\s*x\s*(\d+)\s*,/;
-        $fsize = $1.'x'.$2;
-        tag 'icon-size-and-directory-name-mismatch', $file, $fsize
-            unless ($dsize eq $fsize);
+        my $dsize = $1;
+        my $fileinfo = $info->file_info->{$file};
+        if ($fileinfo && $fileinfo =~ m/,\s*(\d+)\s*x\s*(\d+)\s*,/) {
+            my $fsize = $1.'x'.$2;
+            tag 'icon-size-and-directory-name-mismatch', $file, $fsize
+                unless ($dsize eq $fsize);
+        }
     }
 
     if ($file =~ m,/icons/[^/]+/scalable/.*\.(?:png|xpm)$,) {
-- 
1.7.9.5

>From 0ef4aad048e7722a277e6e4a325ee636f75a7d87 Mon Sep 17 00:00:00 2001
From: Felix Geyer <debfx-pkg@fobos.de>
Date: Wed, 23 May 2012 14:41:00 +0200
Subject: [PATCH 3/4] Check icon-size-and-directory-name-mismatch for symlinks
 within a package.

---
 checks/files                              |   10 ++++++++--
 t/tests/files-general/debian/debian/links |    1 +
 t/tests/files-general/tags                |    1 +
 3 files changed, 10 insertions(+), 2 deletions(-)
 create mode 100644 t/tests/files-general/debian/debian/links

diff --git a/checks/files b/checks/files
index 3a340a7..71a4232 100644
--- a/checks/files
+++ b/checks/files
@@ -26,7 +26,7 @@ use File::Basename;
 
 use Lintian::Data;
 use Lintian::Tags qw(tag);
-use Lintian::Util qw(fail);
+use Lintian::Util qw(fail resolve_pkg_path);
 
 my $FONT_PACKAGES = Lintian::Data->new ('files/fonts', qr/\s++/);
 my $TRIPLETS = Lintian::Data->new ('files/triplets', qr/\s++/);
@@ -920,7 +920,13 @@ foreach my $file (@{$info->sorted_index}) {
 
     if ($file =~ m,/icons/[^/]+/(\d+x\d+)/(?!animations/).*\.png$,) {
         my $dsize = $1;
-        my $fileinfo = $info->file_info->{$file};
+        my $path;
+        if ($index_info->{type} =~ m/^l/) {
+            $path = resolve_pkg_path(dirname($file), $link);
+        } else {
+            $path = $file;
+        }
+        my $fileinfo = $info->file_info->{$path};
         if ($fileinfo && $fileinfo =~ m/,\s*(\d+)\s*x\s*(\d+)\s*,/) {
             my $fsize = $1.'x'.$2;
             tag 'icon-size-and-directory-name-mismatch', $file, $fsize
diff --git a/t/tests/files-general/debian/debian/links b/t/tests/files-general/debian/debian/links
new file mode 100644
index 0000000..f3e425d
--- /dev/null
+++ b/t/tests/files-general/debian/debian/links
@@ -0,0 +1 @@
+usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png
diff --git a/t/tests/files-general/tags b/t/tests/files-general/tags
index 329a24c..c49b862 100644
--- a/t/tests/files-general/tags
+++ b/t/tests/files-general/tags
@@ -19,6 +19,7 @@ W: files-general: executable-not-elf-or-script usr/share/man/man5/foo.5.gz
 W: files-general: file-in-unusual-dir new-top-level-dir/file-in-new-top-level-dir
 W: files-general: file-name-ends-in-whitespace usr/share/foo/ws 
 W: files-general: icon-size-and-directory-name-mismatch usr/share/apps/lintian/icons/hicolor/22x22/lintian-16x16.png 16x16
+W: files-general: icon-size-and-directory-name-mismatch usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png 22x22
 W: files-general: icon-size-and-directory-name-mismatch usr/share/icons/hicolor/22x22/apps/lintian-16x16.png 16x16
 W: files-general: obsolete-comments-style-in-php-ini etc/php5/conf.d/php-foo.ini
 W: files-general: raster-image-in-scalable-directory usr/share/icons/hicolor/scalable/apps/lintian-16x16.png
-- 
1.7.9.5

>From 1a14b7b10939bab814e61d887241fcaffa17beee Mon Sep 17 00:00:00 2001
From: Felix Geyer <debfx-pkg@fobos.de>
Date: Wed, 23 May 2012 14:57:18 +0200
Subject: [PATCH 4/4] Only emit icon-size-and-directory-name-mismatch if the
 size differs by more than 2px.

---
 checks/files                                |   12 +++++++-----
 t/tests/files-general/debian/debian/install |    1 +
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/checks/files b/checks/files
index 71a4232..a801adf 100644
--- a/checks/files
+++ b/checks/files
@@ -918,8 +918,8 @@ foreach my $file (@{$info->sorted_index}) {
         tag 'python-module-in-wrong-location', @correction if (@correction);
     }
 
-    if ($file =~ m,/icons/[^/]+/(\d+x\d+)/(?!animations/).*\.png$,) {
-        my $dsize = $1;
+    if ($file =~ m,/icons/[^/]+/(\d+)x(\d+)/(?!animations/).*\.png$,) {
+        my ($dwidth, $dheight) = ($1, $2);
         my $path;
         if ($index_info->{type} =~ m/^l/) {
             $path = resolve_pkg_path(dirname($file), $link);
@@ -928,9 +928,11 @@ foreach my $file (@{$info->sorted_index}) {
         }
         my $fileinfo = $info->file_info->{$path};
         if ($fileinfo && $fileinfo =~ m/,\s*(\d+)\s*x\s*(\d+)\s*,/) {
-            my $fsize = $1.'x'.$2;
-            tag 'icon-size-and-directory-name-mismatch', $file, $fsize
-                unless ($dsize eq $fsize);
+            my ($fwidth, $fheight) = ($1, $2);
+            my $width_delta = abs($dwidth - $fwidth);
+            my $height_delta = abs($dheight - $fheight);
+            tag 'icon-size-and-directory-name-mismatch', $file, $fwidth.'x'.$fheight
+                unless ($width_delta <= 2 && $height_delta <= 2);
         }
     }
 
diff --git a/t/tests/files-general/debian/debian/install b/t/tests/files-general/debian/debian/install
index 4ce9d68..4b2bbb1 100644
--- a/t/tests/files-general/debian/debian/install
+++ b/t/tests/files-general/debian/debian/install
@@ -1,6 +1,7 @@
 lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22
 lintian-16x16.png usr/share/icons/hicolor/22x22/apps
 lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22
+lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20
 lintian-16x16.png usr/share/doc/lintian/
 lintian-22x22.png usr/share/games/icons/hicolor/22x22
 lintian-16x16.png usr/share/icons/hicolor/scalable/apps
-- 
1.7.9.5


Reply to: