The following commit has been merged in the master branch:
commit 47919c5e51f198646beb4d823d5d93a8b5aca972
Author: Raphaël Hertzog <[email protected]>
Date:   Thu Sep 17 22:13:40 2009 +0200

    Drop Dpkg::Fields and convert everything to Dpkg::Control::Fields

diff --git a/scripts/Dpkg/Fields.pm b/scripts/Dpkg/Fields.pm
deleted file mode 100644
index 8aa5cc3..0000000
--- a/scripts/Dpkg/Fields.pm
+++ /dev/null
@@ -1,46 +0,0 @@
-package Dpkg::Fields;
-
-use strict;
-use warnings;
-
-use base qw(Exporter);
-use Dpkg::Gettext;
-use Dpkg::ErrorHandling;
-use Dpkg::Control::Fields;
-
-our @EXPORT_OK = qw(capit unknown %control_src_fields %control_pkg_fields
-    $control_src_field_regex $control_pkg_field_regex);
-our %EXPORT_TAGS = ('list' => [qw(%control_src_fields %control_pkg_fields
-                       $control_src_field_regex $control_pkg_field_regex)]);
-
-# Some variables (list of fields)
-our %control_src_fields;
-our %control_pkg_fields;
-$control_src_fields{$_} = 1 foreach (qw(Bugs Dm-Upload-Allowed
-    Homepage Origin Maintainer Priority Section Source Standards-Version
-    Uploaders Vcs-Browser Vcs-Arch Vcs-Bzr Vcs-Cvs Vcs-Darcs Vcs-Git Vcs-Hg
-    Vcs-Mtn Vcs-Svn));
-$control_src_fields{$_} = 1 foreach (field_list_src_dep());
-$control_pkg_fields{$_} = 1 foreach (qw(Architecture Bugs Description Essential
-    Homepage Installer-Menu-Item Kernel-Version Package Package-Type
-    Priority Section Subarchitecture Tag Multi-Arch));
-$control_pkg_fields{$_} = 1 foreach (field_list_pkg_dep());
-
-our $control_src_field_regex = "(?:" . join("|", keys %control_src_fields) . 
")";
-our $control_pkg_field_regex = "(?:" . join("|", keys %control_pkg_fields) . 
")";
-
-# Some functions
-sub capit {
-    my @pieces = map { ucfirst(lc) } split /-/, $_[0];
-    return join '-', @pieces;
-}
-
-sub unknown($$)
-{
-    my ($field, $desc) = @_;
-
-    warning(_g("unknown information field '%s' in input data in %s"),
-            $field, $desc);
-}
-
-1;
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 630fdff..a1150aa 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -103,7 +103,6 @@ nobase_dist_perllib_DATA = \
        Dpkg/Deps.pm \
        Dpkg/ErrorHandling.pm \
        Dpkg/Exit.pm \
-       Dpkg/Fields.pm \
        Dpkg/Gettext.pm \
        Dpkg/IPC.pm \
        Dpkg/Path.pm \
diff --git a/scripts/dpkg-genchanges.pl b/scripts/dpkg-genchanges.pl
index f3b4c68..1761f18 100755
--- a/scripts/dpkg-genchanges.pl
+++ b/scripts/dpkg-genchanges.pl
@@ -11,9 +11,9 @@ use Dpkg::Gettext;
 use Dpkg::Checksums;
 use Dpkg::ErrorHandling;
 use Dpkg::Arch qw(get_host_arch debarch_eq debarch_is);
-use Dpkg::Fields qw(:list unknown);
 use Dpkg::Compression;
 use Dpkg::Control::Info;
+use Dpkg::Control::Fields;
 use Dpkg::Control;
 use Dpkg::Substvars;
 use Dpkg::Vars;
@@ -258,14 +258,8 @@ foreach $_ (keys %{$src_fields}) {
        set_source_package($v);
     } elsif (m/^Section$|^Priority$/i) {
        $sourcedefault{$_} = $v;
-    } elsif (m/^Maintainer$/i) {
-       $fields->{$_} = $v;
-    } elsif (s/^X[BS]*C[BS]*-//i) { # Include XC-* fields
-       $fields->{$_} = $v;
-    } elsif (m/^X[BS]+-/i || m/^$control_src_field_regex$/i) {
-       # Silently ignore valid fields
     } else {
-       unknown($_, _g('general section of control info file'));
+        field_transfer_single($src_fields, $fields);
     }
 }
 
@@ -306,8 +300,6 @@ foreach my $pkg ($control->get_packages()) {
            $f2seccf{$_} = $v foreach (@f);
        } elsif (m/^Priority$/) {
            $f2pricf{$_} = $v foreach (@f);
-       } elsif (s/^X[BS]*C[BS]*-//i) { # Include XC-* fields
-           $fields->{$_} = $v;
        } elsif (m/^Architecture$/) {
            if (grep(debarch_is($host_arch, $_), split(/\s+/, $v))
                and ($include & ARCH_DEP)) {
@@ -316,10 +308,10 @@ foreach my $pkg ($control->get_packages()) {
                $v = '';
            }
            push(@archvalues,$v) unless !$v || $archadded{$v}++;
-       } elsif (m/^$control_pkg_field_regex$/ || m/^X[BS]+-/i) {
-           # Silently ignore valid fields
+        } elsif (m/^Description$/) {
+            # Description in changes is computed, do not copy this field
        } else {
-           unknown($_, _g("package's section of control info file"));
+            field_transfer_single($pkg, $fields);
        }
     }
 }
@@ -331,12 +323,8 @@ foreach $_ (keys %{$changelog}) {
        set_source_package($v);
     } elsif (m/^Maintainer$/i) {
        $fields->{"Changed-By"} = $v;
-    } elsif (m/^(Version|Changes|Urgency|Distribution|Date|Closes)$/i) {
-       $fields->{$_} = $v;
-    } elsif (s/^X[BS]*C[BS]*-//i) {
-       $fields->{$_} = $v;
-    } elsif (!m/^X[BS]+-/i) {
-       unknown($_, _g("parsed version of changelog"));
+    } else {
+        field_transfer_single($changelog, $fields);
     }
 }
 
diff --git a/scripts/dpkg-gencontrol.pl b/scripts/dpkg-gencontrol.pl
index bc3edc9..814fb78 100755
--- a/scripts/dpkg-gencontrol.pl
+++ b/scripts/dpkg-gencontrol.pl
@@ -19,7 +19,6 @@ use Dpkg::Changelog qw(parse_changelog);
 
 textdomain("dpkg-dev");
 
-my @pkg_dep_fields = field_list_pkg_dep();
 
 my $controlfile = 'debian/control';
 my $changelogfile = 'debian/changelog';
@@ -142,29 +141,20 @@ if (defined($oppackage)) {
     $pkg = $control->get_pkg_by_idx(1);
 }
 
-my %pkg_dep_fields = map { $_ => 1 } @pkg_dep_fields;
-
 # Scan source package
 my $src_fields = $control->get_source();
 foreach $_ (keys %{$src_fields}) {
-    my $v = $src_fields->{$_};
-    if (m/^(Origin|Bugs|Maintainer|Section|Priority|Homepage)$/) {
-       $fields->{$_} = $v;
-    } elsif (m/^Source$/) {
-       set_source_package($v);
-    } elsif (s/^X[CS]*B[CS]*-//i) { # Include XB-* fields
-       $fields->{$_} = $v;
-    } elsif (m/^X[CS]+-/i || m/^$control_src_field_regex$/i) {
-       # Silently ignore valid fields
+    if (m/^Source$/) {
+       set_source_package($src_fields->{$_});
     } else {
-       unknown($_, _g('general section of control info file'));
+        field_transfer_single($src_fields, $fields);
     }
 }
 
 # Scan binary package
 foreach $_ (keys %{$pkg}) {
     my $v = $pkg->{$_};
-    if (exists($pkg_dep_fields{$_})) {
+    if (field_get_dep_type($_)) {
        # Delay the parsing until later
     } elsif (m/^Architecture$/) {
        my $host_arch = get_host_arch();
@@ -185,12 +175,8 @@ foreach $_ (keys %{$pkg}) {
                      $host_arch, "@archlist");
            $fields->{$_} = $host_arch;
        }
-    } elsif (m/^$control_pkg_field_regex$/) {
-       $fields->{$_} = $v;
-    } elsif (s/^X[CS]*B[CS]*-//i) { # Include XB-* fields
-       $fields->{$_} = $v;
-    } elsif (!m/^X[CS]+-/i) {
-       unknown($_, _g("package's section of control info file"));
+    } else {
+        field_transfer_single($pkg, $fields);
     }
 }
 
@@ -203,11 +189,11 @@ foreach $_ (keys %{$changelog}) {
     } elsif (m/^Version$/) {
        $sourceversion = $v;
        $fields->{$_} = $v unless defined($forceversion);
-    } elsif (m/^(Maintainer|Changes|Urgency|Distribution|Date|Closes)$/) {
-    } elsif (s/^X[CS]*B[CS]*-//i) {
-       $fields->{$_} = $v;
-    } elsif (!m/^X[CS]+-/i) {
-       unknown($_, _g("parsed version of changelog"));
+    } elsif (m/^Maintainer$/) {
+        # That field must not be copied from changelog even if it's
+        # allowed in the binary package control information
+    } else {
+        field_transfer_single($changelog, $fields);
     }
 }
 
@@ -233,7 +219,7 @@ if (exists $pkg->{"Provides"}) {
 }
 
 my (@seen_deps);
-foreach my $field (@pkg_dep_fields) {
+foreach my $field (field_list_pkg_dep()) {
     if (exists $pkg->{$field}) {
        my $dep;
        my $field_value = $substvars->substvars($pkg->{$field});
diff --git a/scripts/dpkg-source.pl b/scripts/dpkg-source.pl
index b4af220..7459550 100755
--- a/scripts/dpkg-source.pl
+++ b/scripts/dpkg-source.pl
@@ -9,7 +9,6 @@ use Dpkg::Gettext;
 use Dpkg::ErrorHandling;
 use Dpkg::Arch qw(debarch_eq);
 use Dpkg::Deps;
-use Dpkg::Fields qw(:list unknown);
 use Dpkg::Compression;
 use Dpkg::Control::Info;
 use Dpkg::Control::Fields;
@@ -163,10 +162,6 @@ if ($options{'opmode'} eq 'build') {
        if (m/^Source$/i) {
            set_source_package($v);
            $fields->{$_} = $v;
-       } elsif (m/^(Standards-Version|Origin|Maintainer|Homepage)$/i ||
-                m/^Dm-Upload-Allowed$/i ||
-                m/^Vcs-(Browser|Arch|Bzr|Cvs|Darcs|Git|Hg|Mtn|Svn)$/i) {
-           $fields->{$_} = $v;
        } elsif (m/^Uploaders$/i) {
            ($fields->{$_} = $v) =~ s/[\r\n]//g; # Merge in a single-line
        } elsif (m/^Build-(Depends|Conflicts)(-Indep)?$/i) {
@@ -178,12 +173,8 @@ if ($options{'opmode'} eq 'build') {
            $dep->simplify_deps($facts);
            $dep->sort() if $type eq 'union';
            $fields->{$_} = $dep->dump();
-       } elsif (s/^X[BC]*S[BC]*-//i) { # Include XS-* fields
-           $fields->{$_} = $v;
-       } elsif (m/^$control_src_field_regex$/i || m/^X[BC]+-/i) {
-           # Silently ignore valid fields
        } else {
-           unknown($_, _g('general section of control info file'));
+            field_transfer_single($src_fields, $fields);
        }
     }
 
@@ -211,12 +202,10 @@ if ($options{'opmode'} eq 'build') {
                         push(@sourcearch, $a) unless $archadded{$a}++;
                     }
                 }
-            } elsif (s/^X[BC]*S[BC]*-//i) { # Include XS-* fields
-                $fields->{$_} = $v;
-            } elsif (m/^$control_pkg_field_regex$/ ||
-                     m/^X[BC]+-/i) { # Silently ignore valid fields
+            } elsif (m/^Homepage$/) {
+                # Do not overwrite the same field from the source entry
             } else {
-                unknown($_, _g("package's section of control info file"));
+                field_transfer_single($pkg, $fields);
             }
        }
     }
@@ -236,12 +225,10 @@ if ($options{'opmode'} eq 'build') {
        } elsif (m/^Version$/) {
            check_version($v, 1);
            $fields->{$_} = $v;
-       } elsif (s/^X[BS]*C[BS]*-//i) {
-           $fields->{$_} = $v;
-       } elsif (m/^(Maintainer|Changes|Urgency|Distribution|Date|Closes)$/i ||
-                m/^X[BS]+-/i) {
+       } elsif (m/^Maintainer$/i) {
+            # Do not replace the field coming from the source entry
        } else {
-           unknown($_, _g("parsed version of changelog"));
+            field_transfer_single($changelog, $fields);
        }
     }
     
diff --git a/scripts/po/POTFILES.in b/scripts/po/POTFILES.in
index 85de51e..db9eecf 100644
--- a/scripts/po/POTFILES.in
+++ b/scripts/po/POTFILES.in
@@ -25,7 +25,6 @@ scripts/Dpkg/Control/Hash.pm
 scripts/Dpkg/Control/Types.pm
 scripts/Dpkg/Deps.pm
 scripts/Dpkg/ErrorHandling.pm
-scripts/Dpkg/Fields.pm
 scripts/Dpkg/IPC.pm
 scripts/Dpkg/Shlibs.pm
 scripts/Dpkg/Shlibs/Objdump.pm

-- 
dpkg's main repository


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to