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

[SCM] Debian package checker branch, master, updated. 2.5.1-61-gbf9196b



The following commit has been merged in the master branch:
commit e9b2df2133a4fae9d20107bd386dce75891de1a2
Author: Niels Thykier <niels@thykier.net>
Date:   Sat Jul 9 16:32:13 2011 +0200

    Use ProcessableGroup to determine if a package is foreign
    
    With this copyright-file no longer needs the "source" symlink.

diff --git a/checks/copyright-file b/checks/copyright-file
index 53c2af8..7d90d26 100644
--- a/checks/copyright-file
+++ b/checks/copyright-file
@@ -39,6 +39,8 @@ sub run {
 my $pkg = shift;
 my $type = shift;
 my $info = shift;
+my $proc = shift;
+my $group = shift;
 
 my $ppkg = quotemeta($pkg);
 
@@ -105,23 +107,8 @@ foreach (@{$info->sorted_index}) {
 	    tag 'usr-share-doc-symlink-without-dependency', $link;
 	    last;
     	}
-
-    	# We can only check if both packages come from the same source
-    	# if our source package is currently unpacked in the lab, too!
-	if (-d 'source') { 	# yes, it's unpacked
-
-	    # $link from the same source pkg?
-	    if (-l "source/binary/$link") {
-		# yes, everything is ok.
-	    } else {
-		# no, it is not.
-		tag 'usr-share-doc-symlink-to-foreign-package', $link;
-	    }
-    	} else {		# no, source is not available
-	    tag 'cannot-check-whether-usr-share-doc-symlink-points-to-foreign-package';
-    	}
-
-    	# everything is ok.
+	# Check if the link points to a package from the same source.
+	check_cross_link($group, $link);
     	last;
     } elsif (m,usr/doc/copyright/$ppkg$,) {
 	tag 'old-style-copyright-file';
@@ -343,6 +330,28 @@ sub depends_on {
     return 0;
 }
 
+# Checks cross pkg links for /usr/share/doc/$pkg links
+sub check_cross_link {
+    my ($group, $fpkg) = @_;
+    my $src = $group->get_source_processable();
+    if ( $src ) {
+	# source package is available; check it's list of binary
+	my $bin = $src->info->binaries;
+	return if $bin->{$fpkg};
+	tag 'usr-share-doc-symlink-to-foreign-package', $fpkg;
+    } else {
+	# The source package is not available, but the binary could
+	# be present anyway;  If they are in the same group, they claim
+	# to have the same source (and source version)
+	foreach my $proc ($group->get_processables('binary')){
+	    return if($proc->pkg_name eq $fpkg);
+	}
+	# It was not, but since the source package was not present, we cannot
+	# tell if it is foreign or not at this point.
+	tag 'cannot-check-whether-usr-share-doc-symlink-points-to-foreign-package';
+    }
+}
+
 1;
 
 # Local Variables:
diff --git a/debian/changelog b/debian/changelog
index f44971e..95e2f32 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -30,6 +30,10 @@ lintian (2.5.2) UNRELEASED; urgency=low
       helper templates.  This should prevent false-positives for
       some license texts.  Thanks to Charles Plessy for the
       report.  (Closes: #631674)
+    + [NT] Use group data to determine if a package is foreign
+      or not for symlinked /usr/share/doc/<pkg> dirs.  This
+      avoids the need for symlinks between packages in the
+      lab.
   * checks/deb-format{,.desc}:
     + [NT] Allow data.tar.xz as the third member.  Thanks to
       Ansgar Burchardt for the report and patch.

-- 
Debian package checker


Reply to: