From: Raphael Hertzog Date: Mon, 19 Nov 2007 22:17:40 +0000 (+0100) Subject: Dpkg::Deps::parse(): handle empty fields properly instead of returning undef X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8959140e24a056f5be53eb1563345c84baa8e0ef;p=dpkg Dpkg::Deps::parse(): handle empty fields properly instead of returning undef And revert previous changes made to dpkg-gencontrol to skip empty fields. --- diff --git a/ChangeLog b/ChangeLog index 3620978f..dd384c2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,7 +7,8 @@ problem (when a RPATH contains $ORIGIN and when the value of this variable can't be determined because we don't know what is the root directory of the temporary tree). - * scripts/dpkg-gencontrol.pl: Don't try to parse empty fields. + * scripts/Dpkg/Deps.pm: Fix parse() to handle empty fields instead + of returning undef. 2007-11-19 Guillem Jover diff --git a/debian/changelog b/debian/changelog index fd36dc4c..9d6dd581 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,8 +2,8 @@ dpkg (1.14.9) UNRELEASED; urgency=low [ Raphael Hertzog ] * Fix bad behaviour of Dpkg::Path::get_pkg_root_dir() and adjust - dpkg-shlibdeps accordingly. - * Fix dpkg-gencontrol to not try to parse and simplify empty fields. + dpkg-shlibdeps accordingly. Closes: #452012 + * Fix Dpkg::Deps to accept empty fields. Closes: #452013 [ Updated man pages translations ] * German (Helge Kreutzmann). diff --git a/scripts/Dpkg/Deps.pm b/scripts/Dpkg/Deps.pm index 673f9df5..3b5ca3af 100644 --- a/scripts/Dpkg/Deps.pm +++ b/scripts/Dpkg/Deps.pm @@ -321,7 +321,6 @@ sub parse { push @dep_list, $dep_or; } } - return undef if not @dep_list; my $dep_and; if ($options{union}) { $dep_and = Dpkg::Deps::Union->new(); diff --git a/scripts/dpkg-gencontrol.pl b/scripts/dpkg-gencontrol.pl index f34660b9..623809fc 100755 --- a/scripts/dpkg-gencontrol.pl +++ b/scripts/dpkg-gencontrol.pl @@ -249,19 +249,20 @@ if (exists $fi{"C$myindex Provides"}) { my (@seen_deps); foreach my $field (@pkg_dep_fields) { my $key = "C$myindex $field"; - if (exists $fi{$key} and $fi{$key}) { + if (exists $fi{$key}) { my $dep; + my $field_value = substvars($fi{$key}); if ($dep_field_type{$field} eq 'normal') { - $dep = Dpkg::Deps::parse(substvars($fi{$key}), use_arch => 1, + $dep = Dpkg::Deps::parse($field_value, use_arch => 1, reduce_arch => 1); - error(_g("error occurred while parsing %s"), $_) unless defined $dep; + error(_g("error occurred while parsing %s"), $field_value) unless defined $dep; $dep->simplify_deps($facts, @seen_deps); # Remember normal deps to simplify even further weaker deps push @seen_deps, $dep if $dep_field_type{$field} eq 'normal'; } else { - $dep = Dpkg::Deps::parse(substvars($fi{$key}), use_arch => 1, + $dep = Dpkg::Deps::parse($field_value, use_arch => 1, reduce_arch => 1, union => 1); - error(_g("error occurred while parsing %s"), $_) unless defined $dep; + error(_g("error occurred while parsing %s"), $field_value) unless defined $dep; $dep->simplify_deps($facts); } $dep->sort();