File: 0001-Sort-the-list-of-source-files-when-generating-XS-cod.patch

package info (click to toggle)
libkinosearch1-perl 1.01-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,580 kB
  • sloc: perl: 6,805; java: 168; makefile: 3
file content (46 lines) | stat: -rw-r--r-- 1,447 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
From efa36d64ab5be55a03deebf2fa91a4938de57fef Mon Sep 17 00:00:00 2001
From: Niko Tyni <ntyni@debian.org>
Date: Fri, 28 Aug 2015 22:49:22 +0300
Subject: [PATCH] Sort the list of source files when generating XS code

The order of the file list affects generated code, so nondeterminism
there renders the build unreproducible.

The $first trick is a tad inelegant, but a custom sort() function
that would put Kinosearch1.pm first would probably be more confusing.

Bug-Debian: https://bugs.debian.org/797711
Forwarded: https://rt.cpan.org/Public/Bug/Display.html?id=107019
---
 Build.PL | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Build.PL b/Build.PL
index 50a466a..31fbd4f 100644
--- a/Build.PL
+++ b/Build.PL
@@ -37,10 +37,11 @@ my %source_pm = ();
 
 # grab all .pm filepaths, making sure that KinoSearch1.pm is first
 my @pm_filepaths;
+my $first;
 find(
     {   wanted => sub {
             if ( $File::Find::name =~ /KinoSearch1\.pm$/ ) {
-                unshift @pm_filepaths, $File::Find::name;
+                $first = $File::Find::name;
             }
             elsif ( $File::Find::name =~ /\.pm$/ ) {
                 push @pm_filepaths, $File::Find::name;
@@ -51,6 +52,8 @@ find(
     'lib',
 );
 
+@pm_filepaths = ( $first, sort @pm_filepaths );
+
 for my $pm_filepath (@pm_filepaths) {
     open( my $module_fh, '<', $pm_filepath )
         or die "couldn't open file '$pm_filepath': $!";
-- 
2.1.4