]> err.no Git - dpkg/commitdiff
dpkg-genchanges: use Package-Type control field to detect udebs
authorRaphael Hertzog <hertzog@debian.org>
Mon, 14 Apr 2008 19:31:52 +0000 (21:31 +0200)
committerRaphael Hertzog <hertzog@debian.org>
Tue, 15 Apr 2008 06:28:54 +0000 (08:28 +0200)
* scripts/Dpkg/Fields.pm (find_custom_field, get_custom_field):
New function to handle custom fields (X[SBC]*-*).
* scripts/dpkg-genchanges.pl: Use Package-Type control field to
decide if a package is an udeb instead of relying on the file
extension of a generated package since that doesn't work when
generating source-only uploads for example.

ChangeLog
debian/changelog
scripts/Dpkg/Fields.pm
scripts/dpkg-genchanges.pl

index 1ad0cafcacff3c37edd0cffd0fc6a0840f6303b0..08c89e7e1b363681b1e0aee41419573f592fc2a0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-04-14  Raphael Hertzog  <hertzog@debian.org>
+
+       * scripts/Dpkg/Fields.pm (find_custom_field, get_custom_field):
+       New function to handle custom fields (X[SBC]*-*).
+       * scripts/dpkg-genchanges.pl: Use Package-Type control field to
+       decide if a package is an udeb instead of relying on the file
+       extension of a generated package since that doesn't work when
+       generating source-only uploads for example.
+
 2008-04-14  Raphael Hertzog  <hertzog@debian.org>
 
        * scripts/Dpkg/Source/Patch.pm (_fail_not_same_type): Fix
index c9b72933870f24c5089afa08aa85d2673cbda52c..686c20e987e03805c6885d47951752191ebb7f6c 100644 (file)
@@ -11,6 +11,9 @@ dpkg (1.14.19) UNRELEASED; urgency=low
     original tarball in the current extraction directory. Closes: #475668
   * Fix the dpkg-source error message about unrepresentable changes to
     source because the type of a file changed (new and old were inverted).
+  * Fix dpkg-genchanges to detect udeb based on Package-Type control
+    header instead of file extension analysis on uploaded files.
+    Closes: #476113
 
   [ Updated dpkg translations ]
   * Galician (Jacobo Tarrio).
index a41fab7fe5c4f270da6c058822a0c35ef74af879..6504a1fa17c138ccbb3187ada5444c502ee793a2 100644 (file)
@@ -131,6 +131,33 @@ sub NEXTKEY {
     return undef;
 }
 
+=head2 tied(%hash)->find_custom_field($name)
+
+Scan the fields and look for a user specific field whose name matches the
+following regex: /X[SBC]+-$name/i. Return the name of the field found or
+undef if nothing has been found.
+
+=cut
+sub find_custom_field {
+    my ($self, $name) = @_;
+    foreach my $key (keys %{$self->[0]}) {
+        return $key if $key =~ /^X[SBC]*-\Q$name\E$/i;
+    }
+    return undef;
+}
+
+=head2 tied(%hash)->get_custom_field($name)
+
+Identify a user field and retrieve its value.
+
+=cut
+sub get_custom_field {
+    my ($self, $name) = @_;
+    my $key = $self->find_custom_field($name);
+    return $self->[0]->{$key} if defined $key;
+    return undef;
+}
+
 =head2 my $str = tied(%hash)->dump()
 =head2 tied(%hash)->dump($fh)
 
index c886cd3d0ccf9754394fe4e7e31be3dd9fedf9dc..a59918f55aa72b3e204aa21f0df1bbb516300768 100755 (executable)
@@ -276,13 +276,15 @@ foreach my $pkg ($control->get_packages()) {
     my $a = $pkg->{"Architecture"};
     my $d = $pkg->{"Description"} || "no description available";
     $d = $1 if $d =~ /^(.*)\n/;
+    my $pkg_type = $pkg->{"Package-Type"} ||
+                   tied(%$pkg)->get_custom_field("Package-Type") || "deb";
 
     my @f; # List of files for this binary package
     push @f, @{$p2f{$p}} if defined $p2f{$p};
 
     # Add description of all binary packages
     my $desc = sprintf("%-10s - %-.65s", $p, $d);
-    $desc .= " (udeb)" if (grep(/\.udeb$/, @f)); # XXX: Check Package-Type field instead
+    $desc .= " (udeb)" if $pkg_type eq "udeb";
     push @descriptions, $desc;
 
     if (not defined($p2f{$p})) {