Source: libparse-recdescent-perl
Version: 1.967009+dfsg-2
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: randomness
X-Debbugs-Cc: reproducible-bui...@lists.alioth.debian.org

Hi,

While working on the "reproducible builds" effort [1], we have noticed
that libparse-recdescent-perl generates non-reproducible output.

The attached patch removes this randomness. Once applied, (some)
packages that use libparse-recdescent-perl can be built in our
reproducible toolchain (for example, libmodule-extractuse-perl).

 [1]: https://wiki.debian.org/ReproducibleBuilds


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      la...@debian.org / chris-lamb.co.uk
       `-
diff --git a/lib/Parse/RecDescent.pm b/lib/Parse/RecDescent.pm
index 28149d7..2d22e71 100644
--- a/lib/Parse/RecDescent.pm
+++ b/lib/Parse/RecDescent.pm
@@ -144,6 +144,7 @@ sub Precompile
     print OUT "my ";
 
     require Data::Dumper;
+    $Data::Dumper::Sortkeys = 1;
     $code = Data::Dumper->Dump([$self], [qw(self)]);
     if ($opt{-standalone}) {
         $code =~ s/Parse::RecDescent/$runtime_package/gs;
@@ -3082,7 +3083,7 @@ local \$SIG{__WARN__} = sub {0};
     $self->{"startcode"} = '';
 
     my $rule;
-    foreach $rule ( values %{$self->{"rules"}} )
+    foreach $rule ( sort {$a->{'name'} cmp $b->{'name'}} values 
%{$self->{"rules"}} )
     {
         if ($rule->{"changed"})
         {

Reply via email to