Package: perl
Version: 5.22.0-4
Severity: wishlist
Tags: patch
Usertags: fileordering

As seen at

the compiled file 

varies with file system ordering, because PPPort_xs.PL uses readdir()
to generate the list of files to process.

This breaks build reproducibility, as readdir() ordering can vary
between file systems. It's easy to test with the disorderfs package,
recently added to the setup.

The attached patch fixes the issue. The logs
have a size cutoff so we can't know if this was the only issue of its
kind. I was expecting more of them, but my test didn't turn up any.
Niko Tyni
>From c01f602d1926b0671fd2c8d91f7e52c4e4c9fb24 Mon Sep 17 00:00:00 2001
From: Niko Tyni <>
Date: Sun, 11 Oct 2015 19:27:56 +0300
Subject: [PATCH] Sort the list of XS code files when generating RealPPPort.xs

all_files_in_dir() uses readdir() ordering to make the list of
input files. This can vary between build systems, breaking build
 cpan/Devel-PPPort/PPPort_xs.PL | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cpan/Devel-PPPort/PPPort_xs.PL b/cpan/Devel-PPPort/PPPort_xs.PL
index 5f18940..149f2fe 100644
--- a/cpan/Devel-PPPort/PPPort_xs.PL
+++ b/cpan/Devel-PPPort/PPPort_xs.PL
@@ -38,7 +38,7 @@ END
 my $file;
 my $sec;
-for $file (all_files_in_dir('parts/inc')) {
+for $file (sort(all_files_in_dir('parts/inc'))) {
   my $spec = parse_partspec($file);
   my $msg = 0;

Reproducible-builds mailing list

Reply via email to