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

[SCM] Debian package checker branch, master, updated. 2.4.3-78-gbdf93c8



The following commit has been merged in the master branch:
commit 0c69de90bb8f37774e9c35a418b76080804d0157
Author: Niels Thykier <niels@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 of metapackage in tag descriptions.
+    + [NT] Added needless-dependency-on-jre tag.
   * checks/files{,.desc}:
     + [NT] Fixed false-positive extra-license-file for license.ui files.
       Thanks to Jeremy Sanders for the report.  (Closes: #595941)
diff --git a/t/tests/fields-java/debian/debian/control.in b/t/tests/fields-java/debian/debian/control.in
index d03c194..7962716 100644
--- a/t/tests/fields-java/debian/debian/control.in
+++ b/t/tests/fields-java/debian/debian/control.in
@@ -5,16 +5,30 @@ Maintainer: {$author}
 Standards-Version: {$standards_version}
 Build-Depends: debhelper (>= 7.0.50~), openjdk-6-doc
 
+Package: lib{$srcpkg}-java
+Architecture: all
+Depends: $\{misc:Depends\},
+         default-jre-headless | java-runtime-headless |
+         java2-runtime-headless | kaffe | gcj-jdk |
+         openjdk-6-jre | gcj-4.5-jre
+Description: {$description}
+ This is a test package designed to exercise some feature or tag of
+ Lintian.  It is part of the Lintian test suite and may do very odd
+ things.  It should not be installed like a regular package.  It may
+ be an empty package.
+
 Package: lib{$srcpkg}-java-doc
-Architecture: {$architecture}
+Architecture: all
 Section: doc
-Depends: $\{shlibs:Depends\}, $\{misc:Depends\}
+Depends: $\{misc:Depends\}
 Recommends: openjdk-6-doc
 # Negative testing as well, this should not be triggered.
 Replaces: openjdk-6-doc
-Description: {$description}
+Description: {$description} - API
  This is a test package designed to exercise some feature or tag of
  Lintian.  It is part of the Lintian test suite and may do very odd
  things.  It should not be installed like a regular package.  It may
  be an empty package.
+ .
+ Doc package.
 
diff --git a/t/tests/fields-java/desc b/t/tests/fields-java/desc
index 52b570a..314f031 100644
--- a/t/tests/fields-java/desc
+++ b/t/tests/fields-java/desc
@@ -5,3 +5,4 @@ Description: General tests for java package (build) dependencies
 Test-For:
  build-depends-on-specific-java-doc-package
  depends-on-specific-java-doc-package
+ needless-dependency-on-jre
diff --git a/t/tests/fields-java/tags b/t/tests/fields-java/tags
index 19f1802..545a3aa 100644
--- a/t/tests/fields-java/tags
+++ b/t/tests/fields-java/tags
@@ -1,2 +1,3 @@
 W: fields-java source: build-depends-on-specific-java-doc-package openjdk-6-doc
 W: libfields-java-java-doc: depends-on-specific-java-doc-package recommends
+W: libfields-java-java: needless-dependency-on-jre

-- 
Debian package checker


Reply to: