Skip to content

Commit

Permalink
perl: Fix various reproducibile build issues
Browse files Browse the repository at this point in the history
Source: poky
MR: 00000
Type: Integration
Disposition: Merged from poky
ChangeID: 2ac1632
Description:

Add a patch which handles the following issues:

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: arsv/perl-cross#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: arsv/perl-cross#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: arsv/perl-cross#87

(From OE-Core rev: 482fd0d99f989b5a72a25bdf402fb2f219420b5d)

Signed-off-by: Richard Purdie <[email protected]>
Signed-off-by: Jeremy Puhlman <[email protected]>
  • Loading branch information
rpurdie authored and jpuhlman committed Feb 8, 2020
1 parent edc80d3 commit 3ae8c49
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 0 deletions.
81 changes: 81 additions & 0 deletions meta/recipes-devtools/perl/files/determinism.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,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 <[email protected]

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=.

1 change: 1 addition & 0 deletions meta/recipes-devtools/perl/perl_5.30.1.bb
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \
file://0001-enc2xs-Add-environment-variable-to-suppress-comments.patch \
file://0002-Constant-Fix-up-shebang.patch \
file://0001-tests-adjust-to-correctly-exclude-unbuilt-extensions.patch \
file://determinism.patch \
"
SRC_URI_append_class-native = " \
file://perl-configpm-switch.patch \
Expand Down

0 comments on commit 3ae8c49

Please sign in to comment.