Source: ifupdown
Version: 0.7.48.2
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: randomness

Hi!

As part of the “reproducible builds” effort, we have detected that
`ifupdown` did not build reproducibly.

This is caused by the fact that Perl orders its hashes randomly by
default. This, in turn, results in a random order in which the methods
are written when generating C code. Resulting in different binaries for
each builds.

The attached patch will sort the methods to produce a stable order.
`ifupdown` can then build reproducibly. :)

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

-- 
Lunar                                .''`. 
lu...@debian.org                    : :Ⓐ  :  # apt-get install anarchism
                                    `. `'` 
                                      `-   
diff -Nru ifupdown-0.7.48.1/debian/changelog ifupdown-0.7.48.2~reproducible1/debian/changelog
--- ifupdown-0.7.48.1/debian/changelog	2014-03-23 17:50:11.000000000 +0000
+++ ifupdown-0.7.48.2~reproducible1/debian/changelog	2014-09-21 18:20:37.000000000 +0000
@@ -1,3 +1,10 @@
+ifupdown (0.7.48.2~reproducible1) UNRELEASED; urgency=low
+
+  * Output methods in stable order when generating C code to make
+    builds reproducible.
+
+ -- Jérémy Bobbio <lu...@debian.org>  Sun, 21 Sep 2014 18:19:56 +0000
+
 ifupdown (0.7.48.1) unstable; urgency=low
 
   * Add --ignore-errors option.
diff -Nru ifupdown-0.7.48.1/defn2c.pl ifupdown-0.7.48.2~reproducible1/defn2c.pl
--- ifupdown-0.7.48.1/defn2c.pl	2014-03-23 17:27:30.000000000 +0000
+++ ifupdown-0.7.48.2~reproducible1/defn2c.pl	2014-09-21 18:18:00.000000000 +0000
@@ -211,7 +211,7 @@
 print "static method methods[] = {\n";
 %ourmethods = %methods if (our_arch());
 my $method;
-foreach $method (keys %ourmethods) {
+foreach $method (sort keys %ourmethods) {
         print <<EOF;
         {
                 "$method",

Attachment: signature.asc
Description: Digital signature

Reply via email to