[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: