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

[lintian] 01/07: Check for .jar files that do not match the Debian Java policy. (Closes: #791552)



This is an automated email from the git hooks/post-receive script.

lamby pushed a commit to branch master
in repository lintian.

commit d14ed8a3ae8fadcfec771d3d2befc2da6585667b
Author: Chris Lamb <lamby@debian.org>
Date:   Mon Jan 29 01:43:24 2018 +0000

    Check for .jar files that do not match the Debian Java policy. (Closes: #791552)
---
 checks/java.desc                                      | 8 ++++++++
 checks/java.pm                                        | 5 ++++-
 debian/changelog                                      | 3 +++
 t/tests/java-class-format/desc                        | 1 +
 t/tests/java-classpath/desc                           | 1 +
 t/tests/java-jars/debian/debian/libtesta-java.install | 1 +
 t/tests/java-jars/debian/debian/rules                 | 1 +
 t/tests/java-jars/desc                                | 2 ++
 t/tests/java-jars/tags                                | 1 +
 9 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/checks/java.desc b/checks/java.desc
index fd31dad..269975b 100644
--- a/checks/java.desc
+++ b/checks/java.desc
@@ -98,3 +98,11 @@ Severity: normal
 Certainty: certain
 Info: The package contains a Jar file, but Lintian is unable to parse it.
  It is possible that the Jar file is corrupt.
+
+Tag: bad-jar-name
+Severity: normal
+Certainty: certain
+Info: The package contains a specified Jar file, but the name does not
+ correspond to Java policy guidelines. This can cause tools in the Debian
+ Java toolchain to fail.
+Ref: java-policy 2.4
diff --git a/checks/java.pm b/checks/java.pm
index 8157d64..98a0a6b 100644
--- a/checks/java.pm
+++ b/checks/java.pm
@@ -23,11 +23,12 @@ use strict;
 use warnings;
 use autodie;
 
+use File::Basename;
 use List::MoreUtils qw(any none);
 use Lintian::Data ();
 
 use Lintian::Tags qw(tag);
-use Lintian::Util qw(normalize_pkg_path);
+use Lintian::Util qw(normalize_pkg_path $PKGNAME_REGEX);
 
 our $MAX_BYTECODE = Lintian::Data->new('java/constants', qr/\s*=\s*/o);
 
@@ -75,6 +76,8 @@ sub run {
         if($jar_file =~ m#^usr/share/java/[^/]+\.jar$#o) {
             $has_public_jars = 1;
         }
+        tag 'bad-jar-name', $jar_file
+          unless basename($jar_file) =~ /^$PKGNAME_REGEX\.jar$/;
         # check for common code files like .class or .clj (Clojure files)
         foreach
           my $class (grep { m/\.(?:class|cljc?)$/oi } sort keys %{$files}){
diff --git a/debian/changelog b/debian/changelog
index 00a99f5..781beea 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -14,6 +14,9 @@ lintian (2.5.73) UNRELEASED; urgency=medium
     + [CL] Warn about Multi-Arch: same packages that ship
       architecture-specific Lintian overrides. Thanks to Sebastian
       Ramacher for the report.  (Closes: #787469)
+  * checks/java.{desc,pm}:
+    + [CL] Check for .jar files that do not match the Debian Java policy.
+      (Closes: #791552)
   * checks/patch-systems.{desc,pm}:
     + [CL] Emit a pedantic warning for packages that are using the dpatch
       patch system.  (Closes: #884500)
diff --git a/t/tests/java-class-format/desc b/t/tests/java-class-format/desc
index c406c31..dd044da 100644
--- a/t/tests/java-class-format/desc
+++ b/t/tests/java-class-format/desc
@@ -3,6 +3,7 @@ Type: non-native
 Version: 1.0-1
 Description: Various checks for Java Class format
 Section: java
+Test-Depends: javahelper
 Test-For:
  incompatible-java-bytecode-format
  unknown-java-class-version
diff --git a/t/tests/java-classpath/desc b/t/tests/java-classpath/desc
index a78980d..1b378dc 100644
--- a/t/tests/java-classpath/desc
+++ b/t/tests/java-classpath/desc
@@ -4,5 +4,6 @@ Version: 1.0-1
 Description: Various checks about JAR files
 Author: Vincent Fourmond <fourmond@debian.org>
 Section: java
+Test-Depends: javahelper
 Test-For:
  classpath-contains-relative-path
diff --git a/t/tests/java-jars/debian/debian/libtesta-java.install b/t/tests/java-jars/debian/debian/libtesta-java.install
index da83d4a..a6483d5 100644
--- a/t/tests/java-jars/debian/debian/libtesta-java.install
+++ b/t/tests/java-jars/debian/debian/libtesta-java.install
@@ -1,2 +1,3 @@
+0.jar usr/share/java/
 testb.jar usr/lib/
 testc.jar usr/bin
diff --git a/t/tests/java-jars/debian/debian/rules b/t/tests/java-jars/debian/debian/rules
index 4811f4b..fd11dcc 100755
--- a/t/tests/java-jars/debian/debian/rules
+++ b/t/tests/java-jars/debian/debian/rules
@@ -5,6 +5,7 @@
 override_jh_build:
 	jh_build --javacopts='-target 1.7' --javacopts='-source 1.7'
 	cp testa.jar testb.jar
+	cp testa.jar 0.jar
 	unzip testa.jar
 	zip -r codeless.jar META-INF/
 	zip -r manifestless.jar org/
diff --git a/t/tests/java-jars/desc b/t/tests/java-jars/desc
index 77b8cb7..21123a8 100644
--- a/t/tests/java-jars/desc
+++ b/t/tests/java-jars/desc
@@ -4,7 +4,9 @@ Version: 1.0-1
 Description: Various checks about JAR files
 Author: Vincent Fourmond <fourmond@debian.org>
 Section: java
+Test-Depends: javahelper
 Test-For:
+ bad-jar-name
  codeless-jar
  executable-jar-without-main-class
  jar-not-in-usr-share
diff --git a/t/tests/java-jars/tags b/t/tests/java-jars/tags
index 5149b35..670c04e 100644
--- a/t/tests/java-jars/tags
+++ b/t/tests/java-jars/tags
@@ -4,6 +4,7 @@ I: libmanifestless-java: missing-manifest usr/share/java/manifestless-1.0.jar
 I: libtestc-java: javalib-but-no-public-jars
 W: libcodeless-java: codeless-jar usr/share/java/codeless-1.0.jar
 W: libtest-maven-plugin-java: maven-plugin-in-usr-share-java usr/share/java/testb.jar
+W: libtesta-java: bad-jar-name usr/share/java/0.jar
 W: libtesta-java: binary-without-manpage usr/bin/testc.jar
 W: libtesta-java: jar-not-in-usr-share usr/lib/testb.jar
 W: unparsable: zip-parse-error usr/share/unparsable/unparsable.jar: format error: can't find EOCD signature

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git


Reply to: