diff -Naur -x '*.sw*' dpkg-1.16.4.orig/scripts/Dpkg/Control/Fields.pm dpkg-1.16.4/scripts/Dpkg/Control/Fields.pm
--- dpkg-1.16.4.orig/scripts/Dpkg/Control/Fields.pm	2012-06-07 02:51:26.000000000 -0400
+++ dpkg-1.16.4/scripts/Dpkg/Control/Fields.pm	2012-06-13 20:34:50.160107513 -0400
@@ -88,6 +88,9 @@
         dependency => 'normal',
         dep_order => 3,
     },
+    'Build-Stage' => {
+        allowed => ALL_PKG,
+    },
     'Built-Using' => {
         allowed => ALL_PKG,
         dependency => 'union',
@@ -284,6 +287,19 @@
     },
 );
 
+our %FIELDS_RE = (
+    'Build-Depends-Stage\d' => {
+        allowed => ALL_SRC,
+        dependency => 'normal',
+        dep_order => 3,
+    },
+    'Build-Depends-Indep-Stage\d' => {
+        allowed => ALL_SRC,
+        dependency => 'normal',
+        dep_order => 4,
+    },
+);
+
 my @checksum_fields = map { &field_capitalize("Checksums-$_") } checksums_get_list();
 my @sum_fields = map { $_ eq "md5" ? "MD5sum" : &field_capitalize($_) }
                  checksums_get_list();
@@ -379,6 +395,27 @@
     return join '-', map { ucfirst } split /-/, $field;
 }
 
+# TODO: Decide if necessary and document.
+sub field_exists($) {
+    my ($field) = @_;
+    return 1 if exists $FIELDS{$field};
+    foreach my $key (keys %FIELDS_RE) {
+        return 1 if $field =~ m/^$key$/;
+    }
+    return 0;
+}
+
+# TODO: Document.
+sub field_get($) {
+    my ($field) = @_;
+    return $FIELDS{$field} if exists $FIELDS{$field};
+    return $FIELDS_RE{$field} if exists $FIELDS_RE{$field};
+    foreach my $key (keys %FIELDS_RE) {
+        return $FIELDS_RE{$key} if $field =~ m/^$key$/;
+    }
+    return undef;
+}
+
 =item field_is_official($fname)
 
 Returns true if the field is official and known.
@@ -386,7 +423,8 @@
 =cut
 
 sub field_is_official($) {
-    return exists $FIELDS{field_capitalize($_[0])};
+    return defined field_get(field_capitalize($_[0]));
+#   return field_exists(field_capitalize($_[0]));
 }
 
 =item field_is_allowed_in($fname, @types)
@@ -410,7 +448,7 @@
     return 0 if not scalar(@types);
     foreach my $type (@types) {
         next if $type == CTRL_UNKNOWN; # Always allowed
-        return 0 unless $FIELDS{$field}{'allowed'} & $type;
+        return 0 unless field_get($field)->{'allowed'} & $type;
     }
     return 1;
 }
@@ -510,11 +548,11 @@
 
 sub field_list_src_dep() {
     return sort {
-        $FIELDS{$a}{'dep_order'} <=> $FIELDS{$b}{'dep_order'}
+        field_get($a)->{'dep_order'} <=> field_get($b)->{'dep_order'}
     } grep {
         field_is_allowed_in($_, CTRL_PKG_SRC) and
-        exists $FIELDS{$_}{'dependency'}
-    } keys %FIELDS;
+        (exists $FIELDS{$_}{'dependency'} or exists $FIELDS_RE{$_}{'dependency'})
+    } (keys %FIELDS, keys %FIELDS_RE);
 }
 
 =item field_list_pkg_dep()
