On 2014-02-22 17:40, Mathieu Parent wrote: > 2014-02-22 8:09 GMT+01:00 Niels Thykier <ni...@thykier.net>: >> > >> > Hi, > Hi Niels, > >> > The result is "unordered" because it is the result of a "keys %{...}" >> > operation and the order of hash keys are "undefined" in Perl (between >> > runs at least). It would be simple to get a "defined" order by simply >> > sorting the keys before returning, but I guess you want the order from >> > the d/control file? >> > >> > To do that you would need to patch _load_ctrl to store a reference to >> > @control_data on $self and then fetch/use that from from the "binaries" >> > sub. The return-statement would become something like: >> > return @{ self->{...} }; > Thanks for your pointer. I attached a patch following your advice. > > Regards > > -- Mathieu >
Hi, Thanks for working on it; find my comments below: > > 0001-Ensure-Lintian-Collect-Source-binaries-are-ordered.patch > > > From 77533593dd983ae85baa6874ec6be1d0f1f9a214 Mon Sep 17 00:00:00 2001 > From: Mathieu Parent <math.par...@gmail.com> > Date: Sat, 22 Feb 2014 17:39:04 +0100 > Subject: [PATCH] Ensure Lintian::Collect::Source::binaries are ordered > > This is needed by the phppear check to get the main (i.e. the first) package. > > Closes: #739671 > --- > lib/Lintian/Collect/Source.pm | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/lib/Lintian/Collect/Source.pm b/lib/Lintian/Collect/Source.pm > index e468a15..4d023ec 100644 > --- a/lib/Lintian/Collect/Source.pm > +++ b/lib/Lintian/Collect/Source.pm > [...] > > =item binary_package_type (BINARY) > @@ -369,6 +369,7 @@ sub _load_dctrl { > $ok = 1 if -e $dctrl; > } > > + $self->{binary_names} = (); I think you need to use "[]" instead of "()" here (to get a list ref) > unless ($ok) { > # Bad file, assume the package and field does not exist. > $self->{binary_field} = {}; > @@ -396,6 +397,7 @@ sub _load_dctrl { > my $pkg = $binary->{'package'}; > next unless defined($pkg) and $pkg =~ m{\A $PKGNAME_REGEX \Z}xsmo; > $packages{$pkg} = $binary; > + push $self->{binary_names}, $pkg; Likewise, you need "push(@{$self->{binary_names} }, $pkg);" here. Technically, I believe this one will work with "very recent" versions of Perl (possibly as an experimental feature), but I doubt it works with the version in stable. > } > $self->{binary_field} = \%packages; Alternatively, I believe you can replace those two lines with: $self->{binary_names} = \@control_data; > > -- 1.8.5.3 > ~Niels -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org