Skip Menu |

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

Report information
The Basics
Id: 104967
Status: resolved
Priority: 0/
Queue: Encode-JIS2K

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

Bug Information
Severity: Wishlist
Broken in: 0.02
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 Thanks for your work on free software, -- Niko Tyni ntyni@debian.org
Subject: 0001-Make-the-XS-code-reproducible-by-sorting-hash-keys.patch
From 490886f85f22c84268702fad88163e7e6392fe6f Mon Sep 17 00:00:00 2001 From: Niko Tyni <ntyni@debian.org> Date: Mon, 1 Jun 2015 20:32:04 +0300 Subject: [PATCH] Make the XS code reproducible by sorting hash keys. --- Makefile.PL | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index bd7e649..3f494d8 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -74,7 +74,7 @@ sub post_initialize $self->{'C'} = ["$name.c"]; # $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 # get built. @@ -92,7 +92,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"; @@ -121,7 +121,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"; @@ -135,14 +135,14 @@ sub postamble my $dir = "."; # $self->catdir('Encode'); 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); -- 2.1.4
Thank you. fixed in: https://github.com/dankogai/p5-encode-jis2k/commit/c4b2a46b193fce9d3db0823cef91e8ebf6937918 Dan the Maintainer Thereof On Thu Jun 04 15:01:33 2015, ntyni@iki.fi wrote: Show quoted text
> 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 > > Thanks for your work on free software,