The following commit has been merged in the master branch:
commit 0c69de90bb8f37774e9c35a418b76080804d0157
Author: Niels Thykier ni...@thykier.net
Date: Wed Dec 29 19:08:10 2010 +0100
Add check for needless dependency on JRE/JDK for java libraries.
* Summary of tag changes:
+ Added:
- needless-dependency-on-jre
* checks/fields{,.desc}:
+ [NT] Added needless-dependency-on-jre tag.
diff --git a/checks/fields b/checks/fields
index 09d8a6f..0730725 100644
--- a/checks/fields
+++ b/checks/fields
@@ -123,6 +123,15 @@ our %known_tkxs = map { $_ = 1 }
our %known_libpngs = map { $_ = 1 }
( 'libpng12-0', 'libpng2', 'libpng3', );
+our @known_java_pkg = map { qr/$_/ }
+('default-jre(?:-headless)?', 'default-jdk', # default java
+ 'java\d*-runtime(?:-headless)?', # java-runtime and javaX-runtime
alternatives (virtual)
+ '(openjdk-|sun-java)\d+-jre(?:-headless)?', '(openjdk-|sun-java)\d+-jdk',
# openjdk-X and sun-javaX
+ 'gcj-(?:\d+\.\d+-)?jre(?:-headless)?', 'gcj-(?:\d+\.\d+-)?jdk', # gcj
+ 'gij', 'java-compat(?:-dev|-headless)?', # deprecated/transitional
packages
+ 'kaffe', 'cacao', 'jamvm', 'classpath', # deprecated packages (removed in
Squeeze)
+);
+
# Mapping of package names to section names
my @NAME_SECTION_MAPPINGS = (
[ qr/-docs?$/ = 'doc' ],
@@ -518,10 +527,13 @@ if ($type eq 'binary') {
}
if (($type eq binary) || ($type eq 'udeb')) {
my (%deps, %fields, %parsed);
+ my $javalib = 0;
+ $javalib = 1 if($pkg =~ m/^lib.*-(?:java|gcj)$/o);
for my $field (qw(depends pre-depends recommends suggests conflicts
provides enhances replaces breaks)) {
next unless defined $info-field($field);
#Get data and clean it
my $data = $info-field($field);;
+ my $javadep = 0;
unfold($field, \$data);
$fields{$field} = $data;
@@ -645,6 +657,17 @@ if (($type eq binary) || ($type eq 'udeb')) {
tag depends-on-specific-java-doc-package,
$field
if($is_dep_field($field) $pkg ne
'default-jdk-doc'
($d_pkg eq 'classpath-doc' || $d_pkg
=~ m/openjdk-\d+-doc/o));
+
+
+ if($javalib $field eq 'depends'){
+ foreach my $reg (@known_java_pkg){
+ if($d_pkg =~ m/$reg/){
+ $javadep++;
+ last;
+ }
+
+ }
+ }
}
for my $pkg (@seen_obsolete_packages) {
@@ -655,6 +678,11 @@ if (($type eq binary) || ($type eq 'udeb')) {
tag ored-depends-on-obsolete-package,
$field: $pkg;
}
}
+
+ # Only emit the tag if all the alternatives are
JVM/JRE/JDKs
+ # - assume that some-lib | openjdk-6-jre-headless
makes sense for now.
+ tag needless-dependency-on-jre
+ if (scalar(@alternatives) == $javadep);
}
tag package-depends-on-multiple-libstdc-versions,
@seen_libstdcs
if (scalar @seen_libstdcs 1);
diff --git a/checks/fields.desc b/checks/fields.desc
index 672b9d2..ce6b9b3 100644
--- a/checks/fields.desc
+++ b/checks/fields.desc
@@ -1007,3 +1007,15 @@ Info: The package should use default-jdk-doc instead of
classpath-doc
or openjdk-X-doc to ease transitions when the providing doc package
is replaced (e.g. openjdk-6-doc being replaced by openjdk-7-doc).
+Tag: needless-dependency-on-jre
+Severity: normal
+Certainty: possible
+Info: The package appear to be a Java library and depending on one
+ or more JRE/JDK packages. As of 05 Apr 2010, the Java Policy no
+ longer mandates that Java libraries depend on Java Runtimes.
+ .
+ If there is a valid reason for this dependency, please override
+ the tag.
+Ref: http://packages.qa.debian.org/j/java-common/news/20100405T221415Z.html,
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=227587
+
diff --git a/debian/changelog b/debian/changelog
index 3bfd7b6..c73136d 100755
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,7 @@ lintian (2.4.4) UNRELEASED; urgency=low
- depends-on-specific-java-doc-package
- unneeded-build-dep-on-quilt
- description-synopsis-starts-with-article
+ - needless-dependency-on-jre
* checks/*:
+ [NT] Use the new pre-sorted file {index,info} when iterating over files.
@@ -30,6 +31,7 @@ lintian (2.4.4) UNRELEASED; urgency=low
classpath-doc instead of the default-jdk-doc metapackage.
(Closes: #593837)
+ [NT] Fixed spelling