Skip Menu |

This queue is for tickets about the Encode-HanExtra CPAN distribution.

Report information
The Basics
Id: 104964
Status: new
Priority: 0/
Queue: Encode-HanExtra

People
Owner: Nobody in particular
Requestors: ntyni [...] iki.fi
Cc:
AdminCc:

Bug Information
Severity: Wishlist
Broken in: 0.23
Fixed in: (no value)



Subject: Reproducible build
While working on Debian's “reproducible builds” effort [1], we have noticed that this module doesn't build reproducibly because Makefile.PL is using hash keys in a random order. Please consider the attached patch, which fixes this. [1]: https://wiki.debian.org/ReproducibleBuilds This is also https://bugs.debian.org/787754 Thanks for your work on free software, -- Niko Tyni ntyni@debian.org
Subject: 0001-Make-the-build-reproducible-by-sorting-hash-keys-in-.patch
From ffaee9c0e01aa0e66a8284948eb98efe4420549f Mon Sep 17 00:00:00 2001 From: Niko Tyni <ntyni@debian.org> Date: Thu, 4 Jun 2015 20:35:36 +0300 Subject: [PATCH] Make the build reproducible by sorting hash keys in Makefile.PL --- Makefile.PL | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index 9e6cf51..28b8489 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -79,7 +79,7 @@ sub post_initialize { my $x = $self->{'OBJ_EXT'}; # Add the table O_FILES - foreach my $e (keys %tables) { + foreach my $e (sort keys %tables) { $o{ $e . $x } = 1; } $o{"$name$x"} = 1; @@ -93,7 +93,7 @@ sub post_initialize { # $self->{'H'} = [$self->catfile($self->updir,'encode.h')]; my %xs; - foreach my $table (keys %tables) { + foreach my $table (sort keys %tables) { push(@{ $self->{'C'} }, "$table.c"); # Do NOT add $table.h etc. to H_FILES unless we own up as to how they @@ -112,7 +112,7 @@ sub post_initialize { #define U8 U8 #include "encode.h" END - foreach my $table (keys %tables) { + foreach my $table (sort keys %tables) { print XS qq[#include "${table}.h"\n]; } print XS <<"END"; @@ -141,7 +141,7 @@ PROTOTYPES: DISABLE BOOT: { END - foreach my $table (keys %tables) { + foreach my $table (sort keys %tables) { print XS qq[#include "${table}.exh"\n]; } print XS "}\n"; @@ -155,13 +155,13 @@ sub postamble { my $str = "# $name\$(OBJ_EXT) depends on .h and .exh files not .c files - but all written by enc2xs\n"; $str .= "$name.c : $name.xs "; - foreach my $table (keys %tables) { + foreach my $table (sort keys %tables) { $str .= " $table.c"; } $str .= "\n\n"; $str .= "$name\$(OBJ_EXT) : $name.c\n\n"; - foreach my $table (keys %tables) { + foreach my $table (sort keys %tables) { my $numlines = 1; my $lengthsofar = length($str); my $continuator = ''; -- 2.1.4