summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/perl/files/determinism.patch
blob: ed4d06f5ec60c940d7b51bd872bb7b2d9159232f (plain)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Fixes to make the perl build reproducible:

a) Remove the \n from configure_attr.sh since it gets quoted differently depending on
   whether the shell is bash or dash which can cause the test result to be incorrect.
   Reported upstream: https://github.com/arsv/perl-cross/issues/87

b) Sort the order of the module lists from configure_mods.sh since otherwise
   the result isn't the same leading to makefile differences.
   Reported upstream: https://github.com/arsv/perl-cross/issues/88

c) Sort the Encode::Byte byte_t.fnm file output (and the makefile depends whilst 
   there for good measure)
   This needs to go to upstream perl (not done)

d) Use bash for perl-cross configure since otherwise trnl gets set to "\n" with bash
   and "" with dash
   Reported upstream: https://github.com/arsv/perl-cross/issues/87

RP 2020/2/7

Upstream-Status: Pending [75% submitted]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org

Index: perl-5.30.1/cnf/configure_attr.sh
===================================================================
--- perl-5.30.1.orig/cnf/configure_attr.sh
+++ perl-5.30.1/cnf/configure_attr.sh
@@ -131,7 +131,7 @@ if not hinted d_c99_variadic_macros 'sup
 	try_start
 	try_add '#include <stdio.h>'
 	try_add '#define foo(fmt, ...) printf(fmt, __VA_ARGS__)'
-	try_add 'int main(void) { foo("%i\n", 1234); return 0; }'
+	try_add 'int main(void) { foo("%i", 1234); return 0; }'
 	try_compile
 	resdef d_c99_variadic_macros 'supported' 'missing'
 fi
Index: perl-5.30.1/cnf/configure_mods.sh
===================================================================
--- perl-5.30.1.orig/cnf/configure_mods.sh
+++ perl-5.30.1/cnf/configure_mods.sh
@@ -82,7 +82,7 @@ extonlyif() {
 }
 
 definetrimspaces() {
-	v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//'`
+	v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//' | xargs -n1 | LANG=C sort | xargs`
 	define $1 "$v"
 }
 
Index: perl-5.30.1/cpan/Encode/Byte/Makefile.PL
===================================================================
--- perl-5.30.1.orig/cpan/Encode/Byte/Makefile.PL
+++ perl-5.30.1/cpan/Encode/Byte/Makefile.PL
@@ -171,7 +171,7 @@ sub postamble
     my $lengthsofar = length($str);
     my $continuator = '';
     $str .= "$table.c : $enc2xs Makefile.PL";
-    foreach my $file (@{$tables{$table}})
+    foreach my $file (sort (@{$tables{$table}}))
     {
         $str .= $continuator.' '.$self->catfile($dir,$file);
         if ( length($str)-$lengthsofar > 128*$numlines )
@@ -189,7 +189,7 @@ sub postamble
         qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
     open (FILELIST, ">$table.fnm")
         || die "Could not open $table.fnm: $!";
-    foreach my $file (@{$tables{$table}})
+    foreach my $file (sort (@{$tables{$table}}))
     {
         print FILELIST $self->catfile($dir,$file) . "\n";
     }
Index: perl-5.30.1/cnf/configure
===================================================================
--- perl-5.30.1.orig/cnf/configure
+++ perl-5.30.1/cnf/configure
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 base=${0%/*}; test -z "$base" && base=.