diff options
Diffstat (limited to 'repo/system/perl')
-rw-r--r-- | repo/system/perl/musl-locale.patch | 37 | ||||
-rw-r--r-- | repo/system/perl/musl-skip-dst-test.patch | 13 | ||||
-rw-r--r-- | repo/system/perl/musl-stack-size.patch | 16 | ||||
-rw-r--r-- | repo/system/perl/perl.xibuild | 60 | ||||
-rw-r--r-- | repo/system/perl/skip-test-due-to-busybox-ps.patch | 13 | ||||
-rw-r--r-- | repo/system/perl/zlib-test.patch | 80 |
6 files changed, 219 insertions, 0 deletions
diff --git a/repo/system/perl/musl-locale.patch b/repo/system/perl/musl-locale.patch new file mode 100644 index 0000000..65839f1 --- /dev/null +++ b/repo/system/perl/musl-locale.patch @@ -0,0 +1,37 @@ +diff --git a/locale.c b/locale.c +index 7653340..7243cb1 100644 +--- a/locale.c ++++ b/locale.c +@@ -581,6 +581,10 @@ S_emulate_setlocale(const int category, + + return (char *) querylocale(mask, cur_obj); + ++# elif defined(_NL_LOCALE_NAME) ++ ++ return (char *) nl_langinfo_l(_NL_LOCALE_NAME(category), cur_obj); ++ + # else + + /* If this assert fails, adjust the size of curlocales in intrpvar.h */ +@@ -737,7 +741,7 @@ S_emulate_setlocale(const int category, + + /* Here, we are switching locales. */ + +-# ifndef HAS_QUERYLOCALE ++# if !defined(HAS_QUERYLOCALE) && !defined(_NL_LOCALE_NAME) + + if (strEQ(locale, "")) { + +@@ -1094,6 +1098,12 @@ S_emulate_setlocale(const int category, + locale = querylocale(mask, new_obj); + } + ++# elif defined(_NL_LOCALE_NAME) ++ ++ if (strEQ(locale, "")) { ++ locale = nl_langinfo_l(_NL_LOCALE_NAME(category), new_obj); ++ } ++ + # else + + /* Here, 'locale' is the return value */ diff --git a/repo/system/perl/musl-skip-dst-test.patch b/repo/system/perl/musl-skip-dst-test.patch new file mode 100644 index 0000000..d217ecc --- /dev/null +++ b/repo/system/perl/musl-skip-dst-test.patch @@ -0,0 +1,13 @@ +diff --git a/cpan/Time-Piece/t/02core_dst.t b/cpan/Time-Piece/t/02core_dst.t +index 3f54fff..4b1faa8 100644 +--- a/cpan/Time-Piece/t/02core_dst.t ++++ b/cpan/Time-Piece/t/02core_dst.t +@@ -119,7 +119,7 @@ cmp_ok($t->month_last_day, '==', 31); # test more + + + SKIP: { +- skip "Extra tests for Linux, BSD only.", 8 unless $is_linux or $is_mac or $is_bsd; ++ skip "Extra tests for Linux, BSD only.", 8 unless $is_mac or $is_bsd; + + local $ENV{TZ} = "EST5EDT4"; + Time::Piece::_tzset(); diff --git a/repo/system/perl/musl-stack-size.patch b/repo/system/perl/musl-stack-size.patch new file mode 100644 index 0000000..08a9ef0 --- /dev/null +++ b/repo/system/perl/musl-stack-size.patch @@ -0,0 +1,16 @@ +Tests fails on s390x due to low thread stack size +upstream report: https://github.com/Perl/perl5/issues/18160 + +diff --git a/t/thread_it.pl b/t/thread_it.pl +index f38a580..e8c450a 100644 +--- a/t/thread_it.pl ++++ b/t/thread_it.pl +@@ -36,7 +36,7 @@ my $curr = threads->create({ + stack_size => $^O eq 'hpux' ? 524288 : + $^O eq 'darwin' ? 2000000: + $^O eq 'VMS' ? 150000 : +- $^O eq 'aix' ? 1500000 : 0, ++ $^O eq 'aix' ? 1500000 : 256*1024, + }, sub { + run_tests(); + return defined &curr_test ? curr_test() : () diff --git a/repo/system/perl/perl.xibuild b/repo/system/perl/perl.xibuild new file mode 100644 index 0000000..494b9f1 --- /dev/null +++ b/repo/system/perl/perl.xibuild @@ -0,0 +1,60 @@ +#!/bin/sh + +MAKEDEPS="make sed" +DEPS="gdbm musl bzip2 zlib tar" + +PKG_VER=5.34.0 +SOURCE=https://www.cpan.org/src/5.0/perl-$PKG_VER.tar.gz +DESC="The Practical Extraction and Report Language" +ADDITIONAL=" +musl-locale.patch +musl-skip-dst-test.patch +musl-stack-size.patch +skip-test-due-to-busybox-ps.patch +zlib-test.patch +" + +prepare () { + apply_patches + export BUILD_ZLIB=False + export BUILD_BZIP2=0 + export CF_OLD=$CFLAGS + export CFLAGS="$CFLAGS -DNO_POSIX_2008_LOCALE" + export CFLAGS="$CFLAGS -D_GNU_SOURCE" + + rm -rf cpan/Compress-Raw-Zlib/zlib-src + sed -i '/\(bzip2\|zlib\)-src/d' MANIFEST + + rm -rf cpan/Compress-Raw-Bzip2/bzip2-src + sed -i '/\(bzip2\|zzz\)-src/d' MANIFEST + + sh Configure -des -Dprefix=/usr \ + -Dvendorprefix=/usr \ + -Dprivlib=/usr/lib/perl5/5.34/core_perl \ + -Darchlib=/usr/lib/perl5/5.34/core_perl \ + -Dsitelib=/usr/lib/perl5/5.34/site_perl \ + -Dsitearch=/usr/lib/perl5/5.34/site_perl \ + -Dvendorlib=/usr/lib/perl5/5.34/vendor_perl \ + -Dvendorarch=/usr/lib/perl5/5.34/vendor_perl \ + -Dman1dir=/usr/share/man/man1 \ + -Dman3dir=/usr/share/man/man3 \ + -Dpager="/usr/bin/less -isR" \ + -Duseshrplib \ + -Dusethreads \ + -Dcccdlflags='-fPIC' -Dccdlflags='-rdynamic' +} + +build () { + make +} + +check () { + make test || true +} + +package () { + make DESTDIR="$PKG_DEST" install + for f in $(find /export -maxdepth 1 -type f); do echo $f; rm $f; done + unset BUILD_ZLIB BUILD_BZIP2 +} + diff --git a/repo/system/perl/skip-test-due-to-busybox-ps.patch b/repo/system/perl/skip-test-due-to-busybox-ps.patch new file mode 100644 index 0000000..ac3becc --- /dev/null +++ b/repo/system/perl/skip-test-due-to-busybox-ps.patch @@ -0,0 +1,13 @@ +diff --git a/t/op/magic.t b/t/op/magic.t +index 27c1d43..91882f4 100644 +--- a/t/op/magic.t ++++ b/t/op/magic.t +@@ -408,7 +408,7 @@ EOP + # argv[0] assignment and by calling prctl() + { + SKIP: { +- skip "We don't have prctl() here, or we're on Android", 2 unless $Config{d_prctl_set_name} && $^O ne 'android'; ++ skip "Skip test to avoid external ps(1) dependency", 2; + + # We don't really need these tests. prctl() is tested in the + # Kernel, but test it anyway for our sanity. If something doesn't diff --git a/repo/system/perl/zlib-test.patch b/repo/system/perl/zlib-test.patch new file mode 100644 index 0000000..1cb8f5e --- /dev/null +++ b/repo/system/perl/zlib-test.patch @@ -0,0 +1,80 @@ +diff --git a/cpan/Compress-Raw-Zlib/t/02zlib.t b/cpan/Compress-Raw-Zlib/t/02zlib.t +index 64c8944..9b2e9cb 100644 +--- a/cpan/Compress-Raw-Zlib/t/02zlib.t ++++ b/cpan/Compress-Raw-Zlib/t/02zlib.t +@@ -13,6 +13,7 @@ use bytes; + use Test::More ; + use CompTestUtils; + ++use constant ZLIB_1_2_12_0 => 0x12C0; + + BEGIN + { +@@ -490,7 +491,16 @@ SKIP: + last if $status == Z_STREAM_END or $status != Z_OK ; + } + +- cmp_ok $status, '==', Z_DATA_ERROR ; ++ # Z_STREAM_END returned by 1.12.2, Z_DATA_ERROR for older zlib ++ if (ZLIB_VERNUM >= ZLIB_1_2_12_0) ++ { ++ cmp_ok $status, '==', Z_STREAM_END ; ++ } ++ else ++ { ++ cmp_ok $status, '==', Z_DATA_ERROR ; ++ } ++ + is $GOT, $goodbye ; + + +@@ -514,7 +524,17 @@ SKIP: + is length($rest), $len2, "expected compressed output"; + + $GOT = ''; +- cmp_ok $k->inflate($rest, $GOT), '==', Z_DATA_ERROR, "inflate returns Z_DATA_ERROR"; ++ $status = $k->inflate($rest, $GOT); ++ # Z_STREAM_END returned by 1.12.2, Z_DATA_ERROR for older zlib ++ if (ZLIB_VERNUM >= ZLIB_1_2_12_0) ++ { ++ cmp_ok $status, '==', Z_STREAM_END ; ++ } ++ else ++ { ++ cmp_ok $status, '==', Z_DATA_ERROR ; ++ } ++ + is $GOT, $goodbye ; + } + +diff --git a/cpan/IO-Compress/t/cz-03zlib-v1.t b/cpan/IO-Compress/t/cz-03zlib-v1.t +index 9b75f9b..41734d0 100644 +--- a/cpan/IO-Compress/t/cz-03zlib-v1.t ++++ b/cpan/IO-Compress/t/cz-03zlib-v1.t +@@ -14,6 +14,8 @@ use Test::More ; + use CompTestUtils; + use Symbol; + ++use constant ZLIB_1_2_12_0 => 0x12C0; ++ + BEGIN + { + # use Test::NoWarnings, if available +@@ -700,7 +702,16 @@ EOM + + ($GOT, $status) = $k->inflate($rest) ; + +- ok $status == Z_DATA_ERROR ; ++ # Z_STREAM_END returned by 1.12.2, Z_DATA_ERROR for older zlib ++ if (ZLIB_VERNUM >= ZLIB_1_2_12_0) ++ { ++ cmp_ok $status, '==', Z_STREAM_END ; ++ } ++ else ++ { ++ cmp_ok $status, '==', Z_DATA_ERROR ; ++ } ++ + ok $Z . $GOT eq $goodbye ; + } + |