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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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

