perl/host/compile: fails on macOS 11 Big Sur, workaround

Georgi Valkov gvalkov at abv.bg
Sat Nov 28 13:34:09 EST 2020


Hello Rosen and Philip!

I created a draft pull-request as suggested by Rosen.
I also added description in the patch, and made minor corrections.
The macOS version check in hints/darwin.sh now matches perl-5.33.4,
However the rest of the changes are not in the patch, since I am not sure
If the rest of the code will work with them.
Unfortunately my previous e-mail to Philip was not delivered.
https://github.com/openwrt/packages/pull/14054


> On 2020-11-26, at 12:59 AM, Rosen Penev <rosenp at gmail.com> wrote:
> 
> On Tue, Nov 24, 2020 at 12:08 PM Georgi Valkov <gvalkov at abv.bg> wrote:
>> 
>> Thank you, Philip!
>> Here it is the patch:
> Please post this on https://github.com/openwrt/packages/pulls . This
> patch does not apply locally.
>> 
>> 
>> From a5c62c0dd2b4dabf72571239f08266b348dad5a2 Mon Sep 17 00:00:00 2001
>> From: Georgi Valkov <gvalkov at abv.bg>
>> Date: Tue, 24 Nov 2020 22:02:30 +0200
>> Subject: [PATCH] perl: switch to 5.30.0
>> 
>> perl: switch to 5.30.0
>> 
>> Signed-off-by: Georgi Valkov <gvalkov at abv.bg>
>> ---
>> feeds/packages/lang/perl/Makefile             |   4 +-
>> feeds/packages/lang/perl/files/base.config    |   4 +
>> feeds/packages/lang/perl/files/version.config |   6 +-
>> .../patches/020-storables-stacksize.patch     |  66 ---
>> .../perl/patches/302-macos_11_support.patch   |   6 +-
>> .../lang/perl/patches/900-use-rm-force.patch  | 285 -------------
>> .../patches/910-miniperl-needs-inc-dot.patch  |  22 +-
>> .../lang/perl/patches/920-fix-no-locale.patch | 383 ------------------
>> .../perl/patches/998-Errno_errno.h_path.patch |  11 -
>> ...999-fix-build-failure-against-gcc-10.patch | 103 -----
>> feeds/packages/lang/perl/perlver.mk           |   5 +-
>> 11 files changed, 28 insertions(+), 867 deletions(-)
>> delete mode 100644 feeds/packages/lang/perl/patches/020-storables-stacksize.patch
>> delete mode 100644 feeds/packages/lang/perl/patches/900-use-rm-force.patch
>> delete mode 100644 feeds/packages/lang/perl/patches/920-fix-no-locale.patch
>> delete mode 100644 feeds/packages/lang/perl/patches/998-Errno_errno.h_path.patch
>> delete mode 100644 feeds/packages/lang/perl/patches/999-fix-build-failure-against-gcc-10.patch
>> 
>> diff --git a/feeds/packages/lang/perl/Makefile b/feeds/packages/lang/perl/Makefile
>> index 84d256d..5e5ded2 100644
>> --- a/feeds/packages/lang/perl/Makefile
>> +++ b/feeds/packages/lang/perl/Makefile
>> @@ -11,7 +11,7 @@ include perlver.mk
>> 
>> PKG_NAME:=perl
>> PKG_VERSION:=$(PERL_VERSION)
>> -PKG_RELEASE:=4
>> +PKG_RELEASE:=1
>> 
>> PKG_SOURCE_URL:=\
>>                https://cpan.metacpan.org/src/5.0 \
>> @@ -21,7 +21,7 @@ PKG_SOURCE_URL:=\
>>                https://mirrors.sonic.net/cpan/src/5.0 \
>>                https://www.cpan.org/src/5.0
>> PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
>> -PKG_HASH:=fea7162d4cca940a387f0587b93f6737d884bf74d8a9d7cfd978bc12cd0b202d
>> +PKG_HASH:=ac501cad4af904d33370a9ea39dbb7a8ad4cb19bc7bc8a9c17d8dc3e81ef6306
>> 
>> PKG_LICENSE:=GPL-1.0-or-later Artistic-1.0-Perl
>> PKG_LICENSE_FILES:=Copying Artistic README
>> diff --git a/feeds/packages/lang/perl/files/base.config b/feeds/packages/lang/perl/files/base.config
>> index f2d18f5..5551588 100644
>> --- a/feeds/packages/lang/perl/files/base.config
>> +++ b/feeds/packages/lang/perl/files/base.config
>> @@ -436,6 +436,7 @@ d_sethostent_r='undef'
>> d_setitimer='define'
>> d_setlinebuf='define'
>> d_setlocale='define'
>> +d_setlocale_accepts_any_locale_name='undef'
>> d_setlocale_r='undef'
>> d_setnent='define'
>> d_setnetent_r='undef'
>> @@ -543,6 +544,8 @@ d_timegm='define'
>> d_times='define'
>> d_tm_tm_gmtoff='define'
>> d_tm_tm_zone='define'
>> +d_towlower='undef'
>> +d_towupper='undef'
>> d_trunc='define'
>> d_truncate='define'
>> d_truncl='define'
>> @@ -737,6 +740,7 @@ i_varargs='undef'
>> i_varhdr='stdarg.h'
>> i_vfork='undef'
>> i_wchar='define'
>> +i_wctype='define'
>> i_xlocale='undef'
>> ignore_versioned_solibs='y'
>> inc_version_list=' '
>> diff --git a/feeds/packages/lang/perl/files/version.config b/feeds/packages/lang/perl/files/version.config
>> index b318648..b80127a 100644
>> --- a/feeds/packages/lang/perl/files/version.config
>> +++ b/feeds/packages/lang/perl/files/version.config
>> @@ -1,11 +1,11 @@
>> # Set the version here
>> PERL_REVISION=5
>> -PERL_VERSION=28
>> -PERL_SUBVERSION=1
>> +PERL_VERSION=30
>> +PERL_SUBVERSION=0
>> 
>> # (api_revison, api_version, api_subversion) = (revision, version, 0) usually
>> PERL_API_REVISION=5
>> -PERL_API_VERSION=28
>> +PERL_API_VERSION=30
>> PERL_API_SUBVERSION=0
>> 
>> known_extensions='B Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/Glob Filter/Util/Call GDBM_File Hash/Util I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Text/Soundex Time/HiRes Time/Piece Unicode/Normalize Win32 Win32API/File Win32CORE XS/APItest XS/Typemap attrs re threads threads/shared Hash/Util/FieldHash'
>> diff --git a/feeds/packages/lang/perl/patches/020-storables-stacksize.patch b/feeds/packages/lang/perl/patches/020-storables-stacksize.patch
>> deleted file mode 100644
>> index 903d90b..0000000
>> --- a/feeds/packages/lang/perl/patches/020-storables-stacksize.patch
>> +++ /dev/null
>> @@ -1,66 +0,0 @@
>> -From 682a4acb98783a7f9b5c286b308f12863599fec3 Mon Sep 17 00:00:00 2001
>> -From: Tony Cook <tony at develop-help.com>
>> -Date: Mon, 30 Jul 2018 21:00:52 +1000
>> -Subject: (perl #133411) don't try to load Storable with -Dusecrosscompile
>> -
>> ----
>> - dist/Storable/Makefile.PL |  9 ++++++++-
>> - dist/Storable/stacksize   | 10 +++++++---
>> - 2 files changed, 15 insertions(+), 4 deletions(-)
>> -
>> ---- a/dist/Storable/Makefile.PL
>> -+++ b/dist/Storable/Makefile.PL
>> -@@ -90,12 +90,19 @@ sub depend {
>> -         # blib.pm needs arch/lib
>> -         $extra_deps = ' Storable.pm';
>> -     }
>> -+    my $whichperl;
>> -+    if ($Config::Config{usecrosscompile}) {
>> -+        $whichperl = '$(PERLRUN)';
>> -+    }
>> -+    else {
>> -+        $whichperl = '$(FULLPERLRUNINST)';
>> -+    }
>> -     my $linktype = uc($_[0]->{LINKTYPE});
>> -     my $limit_pm = File::Spec->catfile('lib', 'Storable', 'Limit.pm');
>> -     "
>> - $limit_pm : stacksize \$(INST_$linktype)$extra_deps
>> -       \$(MKPATH) \$(INST_LIB)
>> --      \$(FULLPERLRUNINST) stacksize $options
>> -+      $whichperl stacksize $options
>> -
>> - release : dist
>> -       git tag \$(VERSION)
>> ---- a/dist/Storable/stacksize
>> -+++ b/dist/Storable/stacksize
>> -@@ -7,6 +7,9 @@ use Cwd;
>> - use File::Spec;
>> - use strict;
>> -
>> -+-d "lib" or mkdir "lib";
>> -+-d "lib/Storable" or mkdir "lib/Storable";
>> -+
>> - my $fn = "lib/Storable/Limit.pm";
>> - my $ptrsize = $Config{ptrsize};
>> - my ($bad1, $bad2) = (65001, 25000);
>> -@@ -29,6 +32,10 @@ sub is_miniperl {
>> - }
>> -
>> - if (is_miniperl()) {
>> -+    if ($Config{usecrosscompile}) {
>> -+        write_limits(500, 265);
>> -+        exit;
>> -+    }
>> -     die "Should not run during miniperl\n";
>> - }
>> - my $prefix = "";
>> -@@ -68,9 +75,6 @@ if ($ENV{PERL_CORE}) {
>> -     }
>> - }
>> -
>> ---d "lib" or mkdir "lib";
>> ---d "lib/Storable" or mkdir "lib/Storable";
>> --
>> - if ($^O eq "MSWin32") {
>> -     require Win32;
>> -     my ($str, $major, $minor) = Win32::GetOSVersion();
>> diff --git a/feeds/packages/lang/perl/patches/302-macos_11_support.patch b/feeds/packages/lang/perl/patches/302-macos_11_support.patch
>> index 6b8e1b0..c069232 100644
>> --- a/feeds/packages/lang/perl/patches/302-macos_11_support.patch
>> +++ b/feeds/packages/lang/perl/patches/302-macos_11_support.patch
>> @@ -1,7 +1,7 @@
>> -Index: perl-5.28.1/hints/darwin.sh
>> +Index: perl-5.30.0/hints/darwin.sh
>> ===================================================================
>> ---- perl-5.28.1.orig/hints/darwin.sh
>> -+++ perl-5.28.1/hints/darwin.sh
>> +--- perl-5.30.0.orig/hints/darwin.sh
>> ++++ perl-5.30.0/hints/darwin.sh
>> @@ -327,7 +327,7 @@ EOM
>>      # "ProductVersion:    10.11"     "10.11"
>>          prodvers=`sw_vers|awk '/^ProductVersion:/{print $2}'|awk -F. '{print $1"."$2}'`
>> diff --git a/feeds/packages/lang/perl/patches/900-use-rm-force.patch b/feeds/packages/lang/perl/patches/900-use-rm-force.patch
>> deleted file mode 100644
>> index d219757..0000000
>> --- a/feeds/packages/lang/perl/patches/900-use-rm-force.patch
>> +++ /dev/null
>> @@ -1,285 +0,0 @@
>> ---- a/Makefile.SH
>> -+++ b/Makefile.SH
>> -@@ -275,6 +275,7 @@ LNS = $lns
>> - # NOTE: some systems don't grok "cp -f". XXX Configure test needed?
>> - CPS = $cp
>> - RMS = rm -f
>> -+RMS_R = rm -rf
>> - ranlib = $ranlib
>> -
>> - # The following are mentioned only to make metaconfig include the
>> -@@ -736,7 +737,7 @@ bitcount.h: generate_uudmap$(HOST_EXE_EX
>> -       ./generate_uudmap$(HOST_EXE_EXT) $(generated_headers)
>> -
>> - generate_uudmap$(HOST_EXE_EXT): generate_uudmap$(OBJ_EXT)
>> --      - at rm generate_uudmap$(HOST_EXE_EXT)
>> -+      @$(RMS) generate_uudmap$(HOST_EXE_EXT)
>> -       $(LNS) $(HOST_GENERATE) generate_uudmap$(HOST_EXE_EXT)
>> -
>> - !NO!SUBS!
>> -@@ -876,26 +877,26 @@ mydtrace.h: $(DTRACE_H)
>> -       define)
>> -               $spitshell >>$Makefile <<'!NO!SUBS!'
>> - $(DTRACE_MINI_O): perldtrace.d $(miniperl_objs_nodt)
>> --      -rm -rf mpdtrace
>> -+      $(RMS_R) mpdtrace
>> -       mkdir mpdtrace
>> -       cp $(miniperl_objs_nodt) mpdtrace/
>> -       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MINI_O) $(miniperl_dtrace_objs)
>> -
>> - $(DTRACE_PERLLIB_O): perldtrace.d $(perllib_objs_nodt)
>> --      -rm -rf libpdtrace
>> -+      $(RMS_R) libpdtrace
>> -       mkdir libpdtrace
>> -       cp $(perllib_objs_nodt) libpdtrace/
>> -       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_PERLLIB_O) $(perllib_dtrace_objs)
>> -
>> - $(DTRACE_MAIN_O): perldtrace.d perlmain$(OBJ_EXT)
>> --      -rm -rf maindtrace
>> -+      $(RMS_R) maindtrace
>> -       mkdir maindtrace
>> -       cp perlmain$(OBJ_EXT) maindtrace/
>> -       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) $(perlmain_dtrace_objs) ||           \
>> -         ( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a dummy $(DTRACE_MAIN_O)" && \
>> -           $(ECHO) >dtrace_main.c &&                                                         \
>> -           `$(CCCMD)` $(PLDLFLAGS) dtrace_main.c &&                                          \
>> --           rm -f dtrace_main.c )
>> -+           $(RMS) dtrace_main.c )
>> -
>> - !NO!SUBS!
>> -               ;;
>> -@@ -906,13 +907,13 @@ $(LIBPERL): $& $(perllib_dep) $(DYNALOAD
>> -       case "$useshrplib" in
>> -       true)
>> -               $spitshell >>$Makefile <<'!NO!SUBS!'
>> --      rm -f $@
>> -+      $(RMS) $@
>> -       $(LD) -o $@ $(SHRPLDFLAGS) $(perllib_objs) $(DYNALOADER) $(libs)
>> - !NO!SUBS!
>> -               case "$osname" in
>> -               aix)
>> -                       $spitshell >>$Makefile <<'!NO!SUBS!'
>> --      rm -f libperl$(OBJ_EXT)
>> -+      $(RMS) libperl$(OBJ_EXT)
>> -       mv $@ libperl$(OBJ_EXT)
>> -       $(AR) qv $(LIBPERL) libperl$(OBJ_EXT)
>> - !NO!SUBS!
>> -@@ -921,7 +922,7 @@ $(LIBPERL): $& $(perllib_dep) $(DYNALOAD
>> -               ;;
>> -       *)
>> -               $spitshell >>$Makefile <<'!NO!SUBS!'
>> --      rm -f $(LIBPERL)
>> -+      $(RMS) $(LIBPERL)
>> -       $(AR) rc $(LIBPERL) $(perllib_objs) $(DYNALOADER)
>> -       @$(ranlib) $(LIBPERL)
>> - !NO!SUBS!
>> -@@ -954,7 +955,7 @@ $(MINIPERL_EXE): lib/buildcustomize.pl
>> -       amigaos*)
>> -               $spitshell >>$Makefile <<'!NO!SUBS!'
>> - lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
>> --      - at rm -f miniperl.xok
>> -+      @$(RMS) miniperl.xok
>> -       $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
>> -           $(miniperl_objs) $(libs)
>> - #     $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
>> -@@ -992,7 +993,7 @@ NAMESPACEFLAGS = -force_flat_namespace
>> -               esac
>> -               $spitshell >>$Makefile <<'!NO!SUBS!'
>> - lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
>> --      - at rm -f miniperl.xok
>> -+      @$(RMS) miniperl.xok
>> -       $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \
>> -           $(miniperl_objs) $(libs)
>> -       $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
>> -@@ -1003,8 +1004,8 @@ lib/buildcustomize.pl: $& $(miniperl_obj
>> -               if test "X$hostperl" != X; then
>> -                       $spitshell >>$Makefile <<!GROK!THIS!
>> - lib/buildcustomize.pl: \$& \$(miniperl_dep) write_buildcustomize.pl
>> --      - at rm -f miniperl.xok
>> --      - at rm \$(MINIPERL_EXE)
>> -+      @\$(RMS) miniperl.xok
>> -+      @\$(RMS) \$(MINIPERL_EXE)
>> -       \$(LNS) \$(HOST_PERL) \$(MINIPERL_EXE)
>> -       \$(LDLIBPTH) ./miniperl\$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
>> -       \$(MINIPERL) -f write_buildcustomize.pl 'osname' "$osname"
>> -@@ -1012,7 +1013,7 @@ lib/buildcustomize.pl: \$& \$(miniperl_d
>> -               else
>> -                       $spitshell >>$Makefile <<'!NO!SUBS!'
>> - lib/buildcustomize.pl: $& $(miniperl_dep) write_buildcustomize.pl
>> --      - at rm -f miniperl.xok
>> -+      @$(RMS) miniperl.xok
>> -       $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
>> -           $(miniperl_objs) $(libs)
>> -       $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
>> -@@ -1025,7 +1026,7 @@ lib/buildcustomize.pl: $& $(miniperl_dep
>> -       $spitshell >>$Makefile <<'!NO!SUBS!'
>> -
>> - $(PERL_EXE): $& $(perlmain_dep) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) write_buildcustomize.pl
>> --      - at rm -f miniperl.xok
>> -+      @$(RMS) miniperl.xok
>> - !NO!SUBS!
>> -
>> -         case $osname in
>> -@@ -1119,8 +1120,8 @@ pod/perl5281delta.pod: pod/perldelta.pod
>> -       $(LNS) perldelta.pod pod/perl5281delta.pod
>> -
>> - extra.pods: $(MINIPERL_EXE)
>> --      - at test ! -f extra.pods || rm -f `cat extra.pods`
>> --      - at rm -f extra.pods
>> -+      - at test ! -f extra.pods || $(RMS) `cat extra.pods`
>> -+      @$(RMS) extra.pods
>> -       - at for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
>> -           nx=`echo $$x | sed -e "s/README\.//"`; \
>> -           $(LNS) ../$$x "pod/perl"$$nx".pod" ; \
>> -@@ -1340,11 +1341,11 @@ realclean:     _realcleaner _mopup
>> -       @echo "Note that '$(MAKE) realclean' does not delete config.sh or Policy.sh"
>> -
>> - _clobber:
>> --      - at rm -f Cross/run-* Cross/to-* Cross/from-* Cross/mkdir
>> --      -rm -rf host
>> --      rm -f t/test_state
>> --      rm -f config.sh cppstdin Policy.sh extras.lst
>> --      rm -f $(MANIFEST_SRT)
>> -+      @$(RMS) Cross/run-* Cross/to-* Cross/from-* Cross/mkdir
>> -+      $(RMS_R) host
>> -+      $(RMS) t/test_state
>> -+      $(RMS) config.sh cppstdin Policy.sh extras.lst
>> -+      $(RMS) $(MANIFEST_SRT)
>> -
>> - clobber:      _realcleaner _mopup _clobber
>> -
>> -@@ -1352,23 +1353,23 @@ distclean:     clobber
>> -
>> - # Like distclean but also removes emacs backups and *.orig.
>> - veryclean:    _verycleaner _mopup _clobber
>> --      - at rm -f Obsolete Wanted
>> -+      $(RMS) Obsolete Wanted
>> -
>> - # Do not 'make _mopup' directly.
>> - _mopup:
>> --      rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c perlmini.c generate_uudmap$(EXE_EXT) $(generated_headers)
>> -+      $(RMS) *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c perlmini.c generate_uudmap$(EXE_EXT) $(generated_headers)
>> -       -rmdir .depending
>> --      - at test -f extra.pods && rm -f `cat extra.pods`
>> --      - at test -f vms/README_vms.pod && rm -f vms/README_vms.pod
>> --      -rm -f perl.exp ext.libs $(generated_pods) uni.data opmini.o perlmini.o pod/roffitall
>> --      -rm -f perl.export perl.dll perl.libexp perl.map perl.def
>> --      -rm -f *perl.xok
>> --      -rm -f cygwin.c libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump
>> --      -rm -f $(PERL_EXE) $(MINIPERL_EXE) $(LIBPERL) libperl.* microperl
>> --      -rm -f config.arch config.over $(DTRACE_H)
>> -+      - at test -f extra.pods && $(RMS) `cat extra.pods`
>> -+      - at test -f vms/README_vms.pod && $(RMS) vms/README_vms.pod
>> -+      $(RMS) perl.exp ext.libs $(generated_pods) uni.data opmini.o perlmini.o pod/roffitall
>> -+      $(RMS) perl.export perl.dll perl.libexp perl.map perl.def
>> -+      $(RMS) *perl.xok
>> -+      $(RMS) cygwin.c libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump
>> -+      $(RMS) $(PERL_EXE) $(MINIPERL_EXE) $(LIBPERL) libperl.* microperl
>> -+      $(RMS) config.arch config.over $(DTRACE_H)
>> -
>> - _cleaner1:
>> --      -cd os2; rm -f Makefile
>> -+      -cd os2; $(RMS) Makefile
>> -       -cd pod; $(LDLIBPTH) $(MAKE) $(CLEAN)
>> -       -cd utils; $(LDLIBPTH) $(MAKE) $(CLEAN)
>> -       - at if test -f $(MINIPERL_EXE) ; then \
>> -@@ -1378,31 +1379,31 @@ _cleaner1:
>> -       else \
>> -       sh $(CLEAN).sh ; \
>> -       fi
>> --      rm -f realclean.sh veryclean.sh
>> --      -rm -f `grep -v ^# mkppport.lst | grep . | sed -e 's/$$/\/ppport.h/'`
>> -+      $(RMS) realclean.sh veryclean.sh
>> -+      $(RMS) `grep -v ^# mkppport.lst | grep . | sed -e 's/$$/\/ppport.h/'`
>> -
>> - # Dear POSIX, thanks for making the default to xargs to be
>> - # run once if nothhing is passed in. It is such a great help.
>> -
>> - # Some systems do not support "?", so keep these files separate.
>> - _cleaner2:
>> --      -rm -f core.*perl.*.? t/core.perl.*.? .?*.c
>> --      rm -f core *perl.core t/core t/*perl.core core.* t/core.*
>> --      rm -f t/$(PERL_EXE) t/rantests
>> --      rm -rf t/tmp*
>> --      rm -rf $(addedbyconf)
>> --      rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old makefile.old utils/Makefile
>> --      rm -f $(private)
>> --      rm -rf $(unidatafiles) $(unidatadirs)
>> --      rm -rf lib/auto
>> --      rm -f lib/.exists lib/*/.exists lib/*/*/.exists
>> --      rm -f h2ph.man
>> --      rm -rf .config
>> --      rm -f preload
>> --      rm -f pod2htmd.tmp
>> --      rm -rf pod/perlfunc pod/perlipc
>> -+      $(RMS) core.*perl.*.? t/core.perl.*.? .?*.c
>> -+      $(RMS) core *perl.core t/core t/*perl.core core.* t/core.*
>> -+      $(RMS) t/$(PERL_EXE) t/rantests
>> -+      $(RMS_R) t/tmp*
>> -+      $(RMS_R) $(addedbyconf)
>> -+      $(RMS) $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old makefile.old utils/Makefile
>> -+      $(RMS) $(private)
>> -+      $(RMS_R) $(unidatafiles) $(unidatadirs)
>> -+      $(RMS_R) lib/auto
>> -+      $(RMS) lib/.exists lib/*/.exists lib/*/*/.exists
>> -+      $(RMS) h2ph.man
>> -+      $(RMS_R) .config
>> -+      $(RMS) preload
>> -+      $(RMS) pod2htmd.tmp
>> -+      $(RMS_R) pod/perlfunc pod/perlipc
>> -       -rmdir ext/B/lib
>> --      rm -f so_locations $(LIBPERL_NONSHR) $(MINIPERL_NONSHR)
>> -+      $(RMS) so_locations $(LIBPERL_NONSHR) $(MINIPERL_NONSHR)
>> -       -rmdir lib/version lib/threads lib/inc/ExtUtils lib/inc lib/encoding
>> -       -rmdir lib/autodie/exception lib/autodie/Scope lib/autodie lib/XS
>> -       -rmdir lib/Win32API lib/VMS lib/Unicode/Collate/Locale
>> -@@ -1452,11 +1453,11 @@ _realcleaner:
>> - _verycleaner:
>> -       @$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=veryclean
>> -       @$(LDLIBPTH) $(MAKE) _cleaner2
>> --      -rm -f *~ *.orig */*~ */*.orig */*/*~ */*/*.orig
>> -+      $(RMS) *~ *.orig */*~ */*.orig */*/*~ */*/*.orig
>> -
>> - .PHONY: lint
>> - lint: $(c)
>> --      rm -f *.ln
>> -+      $(RMS) *.ln
>> -       lint $(lintflags) -DPERL_CORE -D_REENTRANT -DDEBUGGING -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(c)
>> -
>> - cscopeflags = -Rb  # Recursive, build-only.
>> -@@ -1514,7 +1515,7 @@ case "$targethost" in
>> - '') $spitshell >>$Makefile <<'!NO!SUBS!'
>> - test_prep test-prep: test_prep_pre $(MINIPERL_EXE) $(unidatafiles) $(PERL_EXE) \
>> -       $(dynamic_ext) $(TEST_PERL_DLL) runtests $(generated_pods) common_build
>> --      cd t && (rm -f $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
>> -+      cd t && ($(RMS) $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
>> -
>> - !NO!SUBS!
>> - ;;
>> -@@ -1564,7 +1565,7 @@ test_prep test-prep: test_prep_pre \$(MI
>> -       $to config.sh
>> - # --- For lib/diagnostics.t with -Duseshrplib
>> -       $to \$(PERL_EXE)
>> --      cd t && (rm -f \$(PERL_EXE); \$(LNS) ../\$(PERL_EXE) \$(PERL_EXE)) && cd ..
>> -+      cd t && (\$(RMS) \$(PERL_EXE); \$(LNS) ../\$(PERL_EXE) \$(PERL_EXE)) && cd ..
>> -       $to t/\$(PERL_EXE)
>> -
>> - !GROK!THIS!
>> -@@ -1574,7 +1575,7 @@ esac
>> - $spitshell >>$Makefile <<'!NO!SUBS!'
>> - test_prep_reonly: $(MINIPERL_EXE) $(PERL_EXE) $(dynamic_ext_re) $(TEST_PERL_DLL)
>> -       $(MINIPERL) make_ext.pl $(dynamic_ext_re) MAKE="$(MAKE)" LIBPERL_A=$(LIBPERL) LINKTYPE=dynamic
>> --      cd t && (rm -f $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
>> -+      cd t && ($(RMS) $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
>> - !NO!SUBS!
>> -
>> - case "$targethost" in
>> -@@ -1629,7 +1630,7 @@ minitest_prep:
>> -       @echo "You may see some irrelevant test failures if you have been unable"
>> -       @echo "to build lib/Config.pm, or the Unicode data files."
>> -       @echo " "
>> --      - cd t && (rm -f $(PERL_EXE); $(LNS) ../$(MINIPERL_EXE) $(PERL_EXE))
>> -+      - cd t && ($(RMS) $(PERL_EXE); $(LNS) ../$(MINIPERL_EXE) $(PERL_EXE))
>> -
>> - MINITEST_TESTS = base/*.t comp/*.t cmd/*.t run/*.t io/*.t re/*.t opbasic/*.t op/*.t uni/*.t perf/*.t
>> -
>> diff --git a/feeds/packages/lang/perl/patches/910-miniperl-needs-inc-dot.patch b/feeds/packages/lang/perl/patches/910-miniperl-needs-inc-dot.patch
>> index 347f6f2..ce32516 100644
>> --- a/feeds/packages/lang/perl/patches/910-miniperl-needs-inc-dot.patch
>> +++ b/feeds/packages/lang/perl/patches/910-miniperl-needs-inc-dot.patch
>> @@ -1,6 +1,8 @@
>> ---- a/Makefile.SH
>> -+++ b/Makefile.SH
>> -@@ -333,7 +333,7 @@ PATH_SEP = $p_
>> +Index: perl-5.32.0/Makefile.SH
>> +===================================================================
>> +--- perl-5.32.0.orig/Makefile.SH
>> ++++ perl-5.32.0/Makefile.SH
>> +@@ -338,7 +338,7 @@ PATH_SEP = $p_
>>  # Macros to invoke a copy of miniperl during the build.  Targets which
>>  # are built using these macros should depend on \$(MINIPERL_EXE)
>>  MINIPERL_EXE = miniperl\$(EXE_EXT)
>> @@ -9,8 +11,8 @@
>> 
>>  # Macros to invoke sort the MANIFEST during build
>>  MANIFEST_SRT = MANIFEST.srt
>> -@@ -996,7 +996,7 @@ lib/buildcustomize.pl: $& $(miniperl_obj
>> -       @$(RMS) miniperl.xok
>> +@@ -1009,7 +1009,7 @@ lib/buildcustomize.pl: $& $(miniperl_obj
>> +       - at rm -f miniperl.xok
>>        $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \
>>            $(miniperl_objs) $(libs)
>> -      $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
>> @@ -18,17 +20,17 @@
>>        $(MINIPERL) -f write_buildcustomize.pl
>>  !NO!SUBS!
>>                ;;
>> -@@ -1007,7 +1007,7 @@ lib/buildcustomize.pl: \$& \$(miniperl_d
>> -       @\$(RMS) miniperl.xok
>> -       @\$(RMS) \$(MINIPERL_EXE)
>> +@@ -1020,7 +1020,7 @@ lib/buildcustomize.pl: \$& \$(miniperl_d
>> +       - at rm -f miniperl.xok
>> +       - at rm \$(MINIPERL_EXE)
>>        \$(LNS) \$(HOST_PERL) \$(MINIPERL_EXE)
>> -      \$(LDLIBPTH) ./miniperl\$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
>> +      \$(LDLIBPTH) ./miniperl\$(HOST_EXE_EXT) -w -Ilib -I. -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
>>        \$(MINIPERL) -f write_buildcustomize.pl 'osname' "$osname"
>>  !GROK!THIS!
>>                else
>> -@@ -1016,7 +1016,7 @@ lib/buildcustomize.pl: $& $(miniperl_dep
>> -       @$(RMS) miniperl.xok
>> +@@ -1029,7 +1029,7 @@ lib/buildcustomize.pl: $& $(miniperl_dep
>> +       - at rm -f miniperl.xok
>>        $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
>>            $(miniperl_objs) $(libs)
>> -      $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
>> diff --git a/feeds/packages/lang/perl/patches/920-fix-no-locale.patch b/feeds/packages/lang/perl/patches/920-fix-no-locale.patch
>> deleted file mode 100644
>> index 25ff285..0000000
>> --- a/feeds/packages/lang/perl/patches/920-fix-no-locale.patch
>> +++ /dev/null
>> @@ -1,383 +0,0 @@
>> -commit d36adde059ed1c4f7af210b4f9fc3a7bd2d7d343
>> -Author: Karl Williamson <khw at cpan.org>
>> -Date:   Wed May 23 15:32:47 2018 -0600
>> -
>> -    Fix to compile under -DNO_LOCALE
>> -
>> -    Several problems with this compile option were not caught before 5.28
>> -    was frozen.
>> -
>> ---- a/embed.fnc
>> -+++ b/embed.fnc
>> -@@ -2793,9 +2793,11 @@ s       |bool   |isa_lookup     |NN HV *stash|NN con
>> - #endif
>> -
>> - #if defined(PERL_IN_LOCALE_C)
>> -+#  ifdef USE_LOCALE
>> - sn    |const char*|category_name |const int category
>> - s     |const char*|switch_category_locale_to_template|const int switch_category|const int template_category|NULLOK const char * template_locale
>> - s     |void   |restore_switched_locale|const int category|NULLOK const char * const original_locale
>> -+#  endif
>> - #  ifdef HAS_NL_LANGINFO
>> - sn    |const char*|my_nl_langinfo|const nl_item item|bool toggle
>> - #  else
>> ---- a/embed.h
>> -+++ b/embed.h
>> -@@ -1796,16 +1796,16 @@
>> - #define unshare_hek_or_pvn(a,b,c,d)   S_unshare_hek_or_pvn(aTHX_ a,b,c,d)
>> - #  endif
>> - #  if defined(PERL_IN_LOCALE_C)
>> --#define category_name         S_category_name
>> --#define restore_switched_locale(a,b)  S_restore_switched_locale(aTHX_ a,b)
>> - #define save_to_buffer                S_save_to_buffer
>> --#define switch_category_locale_to_template(a,b,c)     S_switch_category_locale_to_template(aTHX_ a,b,c)
>> - #    if defined(USE_LOCALE)
>> -+#define category_name         S_category_name
>> - #define new_collate(a)                S_new_collate(aTHX_ a)
>> - #define new_ctype(a)          S_new_ctype(aTHX_ a)
>> - #define new_numeric(a)                S_new_numeric(aTHX_ a)
>> -+#define restore_switched_locale(a,b)  S_restore_switched_locale(aTHX_ a,b)
>> - #define set_numeric_radix(a)  S_set_numeric_radix(aTHX_ a)
>> - #define stdize_locale(a)      S_stdize_locale(aTHX_ a)
>> -+#define switch_category_locale_to_template(a,b,c)     S_switch_category_locale_to_template(aTHX_ a,b,c)
>> - #      if defined(USE_POSIX_2008_LOCALE)
>> - #define emulate_setlocale     S_emulate_setlocale
>> - #      endif
>> ---- a/locale.c
>> -+++ b/locale.c
>> -@@ -1264,6 +1264,7 @@ S_locking_setlocale(pTHX_
>> - }
>> -
>> - #endif
>> -+#ifdef USE_LOCALE
>> -
>> - STATIC void
>> - S_set_numeric_radix(pTHX_ const bool use_locale)
>> -@@ -1299,6 +1300,10 @@ S_set_numeric_radix(pTHX_ const bool use
>> -     }
>> -
>> - #  endif
>> -+#else
>> -+
>> -+    PERL_UNUSED_ARG(use_locale);
>> -+
>> - #endif /* USE_LOCALE_NUMERIC and can find the radix char */
>> -
>> - }
>> -@@ -1481,7 +1486,6 @@ S_new_ctype(pTHX_ const char *newctype)
>> -
>> - #ifndef USE_LOCALE_CTYPE
>> -
>> --    PERL_ARGS_ASSERT_NEW_CTYPE;
>> -     PERL_UNUSED_ARG(newctype);
>> -     PERL_UNUSED_CONTEXT;
>> -
>> -@@ -1994,6 +1998,8 @@ S_new_collate(pTHX_ const char *newcoll)
>> -
>> - }
>> -
>> -+#endif
>> -+
>> - #ifdef WIN32
>> -
>> - STATIC char *
>> -@@ -2139,11 +2145,20 @@ Perl_setlocale(const int category, const
>> - {
>> -     /* This wraps POSIX::setlocale() */
>> -
>> -+#ifdef NO_LOCALE
>> -+
>> -+    PERL_UNUSED_ARG(category);
>> -+    PERL_UNUSED_ARG(locale);
>> -+
>> -+    return "C";
>> -+
>> -+#else
>> -+
>> -     const char * retval;
>> -     const char * newlocale;
>> -     dSAVEDERRNO;
>> --    DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
>> -     dTHX;
>> -+    DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
>> -
>> - #ifdef USE_LOCALE_NUMERIC
>> -
>> -@@ -2262,6 +2277,8 @@ Perl_setlocale(const int category, const
>> -
>> -     return retval;
>> -
>> -+#endif
>> -+
>> - }
>> -
>> - PERL_STATIC_INLINE const char *
>> -@@ -2414,13 +2431,16 @@ S_my_nl_langinfo(const int item, bool to
>> -     dTHX;
>> -     const char * retval;
>> -
>> -+#ifdef USE_LOCALE_NUMERIC
>> -+
>> -     /* We only need to toggle into the underlying LC_NUMERIC locale for these
>> -      * two items, and only if not already there */
>> -     if (toggle && ((   item != RADIXCHAR && item != THOUSEP)
>> -                     || PL_numeric_underlying))
>> --    {
>> -+
>> -+#endif  /* No toggling needed if not using LC_NUMERIC */
>> -+
>> -         toggle = FALSE;
>> --    }
>> -
>> - #if defined(HAS_NL_LANGINFO) /* nl_langinfo() is available.  */
>> - #  if   ! defined(HAS_THREAD_SAFE_NL_LANGINFO_L)      \
>> -@@ -2468,6 +2488,8 @@ S_my_nl_langinfo(const int item, bool to
>> -             do_free = TRUE;
>> -         }
>> -
>> -+#    ifdef USE_LOCALE_NUMERIC
>> -+
>> -         if (toggle) {
>> -             if (PL_underlying_numeric_obj) {
>> -                 cur = PL_underlying_numeric_obj;
>> -@@ -2478,6 +2500,8 @@ S_my_nl_langinfo(const int item, bool to
>> -             }
>> -         }
>> -
>> -+#    endif
>> -+
>> -         /* We have to save it to a buffer, because the freelocale() just below
>> -          * can invalidate the internal one */
>> -         retval = save_to_buffer(nl_langinfo_l(item, cur),
>> -@@ -5169,9 +5193,7 @@ Perl_my_strerror(pTHX_ const int errnum)
>> -     LOCALE_UNLOCK;
>> -
>> - #  endif /* End of doesn't have strerror_l */
>> --#endif   /* End of does have locale messages */
>> --
>> --#ifdef DEBUGGING
>> -+#  ifdef DEBUGGING
>> -
>> -     if (DEBUG_Lv_TEST) {
>> -         PerlIO_printf(Perl_debug_log, "Strerror returned; saving a copy: '");
>> -@@ -5179,7 +5201,8 @@ Perl_my_strerror(pTHX_ const int errnum)
>> -         PerlIO_printf(Perl_debug_log, "'\n");
>> -     }
>> -
>> --#endif
>> -+#  endif
>> -+#endif   /* End of does have locale messages */
>> -
>> -     SAVEFREEPV(errstr);
>> -     return errstr;
>> -@@ -5301,10 +5324,17 @@ L<C<Perl_switch_to_global_locale>|perlap
>> - bool
>> - Perl_sync_locale()
>> - {
>> -+
>> -+#ifndef USE_LOCALE
>> -+
>> -+    return TRUE;
>> -+
>> -+#else
>> -+
>> -     const char * newlocale;
>> -     dTHX;
>> -
>> --#ifdef USE_POSIX_2008_LOCALE
>> -+#  ifdef USE_POSIX_2008_LOCALE
>> -
>> -     bool was_in_global_locale = FALSE;
>> -     locale_t cur_obj = uselocale((locale_t) 0);
>> -@@ -5316,11 +5346,11 @@ Perl_sync_locale()
>> -      * will affect the */
>> -     if (cur_obj == LC_GLOBAL_LOCALE) {
>> -
>> --#  ifdef HAS_QUERY_LOCALE
>> -+#    ifdef HAS_QUERY_LOCALE
>> -
>> -         do_setlocale_c(LC_ALL, setlocale(LC_ALL, NULL));
>> -
>> --#  else
>> -+#    else
>> -
>> -         unsigned int i;
>> -
>> -@@ -5330,17 +5360,17 @@ Perl_sync_locale()
>> -             do_setlocale_r(categories[i], setlocale(categories[i], NULL));
>> -         }
>> -
>> --#  endif
>> -+#    endif
>> -
>> -         was_in_global_locale = TRUE;
>> -     }
>> -
>> --#else
>> -+#  else
>> -
>> -     bool was_in_global_locale = TRUE;
>> -
>> --#endif
>> --#ifdef USE_LOCALE_CTYPE
>> -+#  endif
>> -+#  ifdef USE_LOCALE_CTYPE
>> -
>> -     newlocale = savepv(do_setlocale_c(LC_CTYPE, NULL));
>> -     DEBUG_Lv(PerlIO_printf(Perl_debug_log,
>> -@@ -5349,8 +5379,8 @@ Perl_sync_locale()
>> -     new_ctype(newlocale);
>> -     Safefree(newlocale);
>> -
>> --#endif /* USE_LOCALE_CTYPE */
>> --#ifdef USE_LOCALE_COLLATE
>> -+#  endif /* USE_LOCALE_CTYPE */
>> -+#  ifdef USE_LOCALE_COLLATE
>> -
>> -     newlocale = savepv(do_setlocale_c(LC_COLLATE, NULL));
>> -     DEBUG_Lv(PerlIO_printf(Perl_debug_log,
>> -@@ -5359,8 +5389,8 @@ Perl_sync_locale()
>> -     new_collate(newlocale);
>> -     Safefree(newlocale);
>> -
>> --#endif
>> --#ifdef USE_LOCALE_NUMERIC
>> -+#  endif
>> -+#  ifdef USE_LOCALE_NUMERIC
>> -
>> -     newlocale = savepv(do_setlocale_c(LC_NUMERIC, NULL));
>> -     DEBUG_Lv(PerlIO_printf(Perl_debug_log,
>> -@@ -5369,9 +5399,12 @@ Perl_sync_locale()
>> -     new_numeric(newlocale);
>> -     Safefree(newlocale);
>> -
>> --#endif /* USE_LOCALE_NUMERIC */
>> -+#  endif /* USE_LOCALE_NUMERIC */
>> -
>> -     return was_in_global_locale;
>> -+
>> -+#endif
>> -+
>> - }
>> -
>> - #if defined(DEBUGGING) && defined(USE_LOCALE)
>> ---- a/makedef.pl
>> -+++ b/makedef.pl
>> -@@ -574,6 +574,9 @@ unless ($define{USE_LOCALE_COLLATE}) {
>> -                   PL_collxfrm_mult
>> -                   Perl_sv_collxfrm
>> -                   Perl_sv_collxfrm_flags
>> -+                    PL_strxfrm_NUL_replacement
>> -+                    PL_strxfrm_is_behaved
>> -+                    PL_strxfrm_max_cp
>> -                        );
>> - }
>> -
>> -@@ -583,6 +586,9 @@ unless ($define{USE_LOCALE_NUMERIC}) {
>> -                   PL_numeric_name
>> -                   PL_numeric_radix_sv
>> -                   PL_numeric_standard
>> -+                    PL_numeric_underlying
>> -+                    PL_numeric_underlying_is_standard
>> -+                    PL_underlying_numeric_obj
>> -                        );
>> - }
>> -
>> ---- a/perl.h
>> -+++ b/perl.h
>> -@@ -5656,6 +5656,9 @@ typedef struct am_table_short AMTS;
>> - #  define IN_LC_COMPILETIME(category)      0
>> - #  define IN_LC_RUNTIME(category)          0
>> - #  define IN_LC(category)                  0
>> -+#  define _CHECK_AND_WARN_PROBLEMATIC_LOCALE
>> -+#  define _CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG(s, send)
>> -+#  define _CHECK_AND_OUTPUT_WIDE_LOCALE_CP_MSG(c)
>> - #endif
>> -
>> -
>> ---- a/proto.h
>> -+++ b/proto.h
>> -@@ -4886,8 +4886,6 @@ PERL_CALLCONV SV*        Perl_hfree_next_entry(
>> -       assert(hv); assert(indexp)
>> - #endif
>> - #if defined(PERL_IN_LOCALE_C)
>> --STATIC const char*    S_category_name(const int category);
>> --STATIC void   S_restore_switched_locale(pTHX_ const int category, const char * const original_locale);
>> - #ifndef PERL_NO_INLINE_FUNCTIONS
>> - PERL_STATIC_INLINE const char *       S_save_to_buffer(const char * string, char **buf, Size_t *buf_size, const Size_t offset)
>> -                       __attribute__warn_unused_result__;
>> -@@ -4895,17 +4893,19 @@ PERL_STATIC_INLINE const char *        S_save_t
>> -       assert(buf_size)
>> - #endif
>> -
>> --STATIC const char*    S_switch_category_locale_to_template(pTHX_ const int switch_category, const int template_category, const char * template_locale);
>> - #  if defined(USE_LOCALE)
>> -+STATIC const char*    S_category_name(const int category);
>> - STATIC void   S_new_collate(pTHX_ const char* newcoll);
>> - STATIC void   S_new_ctype(pTHX_ const char* newctype);
>> - #define PERL_ARGS_ASSERT_NEW_CTYPE    \
>> -       assert(newctype)
>> - STATIC void   S_new_numeric(pTHX_ const char* newnum);
>> -+STATIC void   S_restore_switched_locale(pTHX_ const int category, const char * const original_locale);
>> - STATIC void   S_set_numeric_radix(pTHX_ const bool use_locale);
>> - STATIC char*  S_stdize_locale(pTHX_ char* locs);
>> - #define PERL_ARGS_ASSERT_STDIZE_LOCALE        \
>> -       assert(locs)
>> -+STATIC const char*    S_switch_category_locale_to_template(pTHX_ const int switch_category, const int template_category, const char * template_locale);
>> - #    if defined(USE_POSIX_2008_LOCALE)
>> - STATIC const char*    S_emulate_setlocale(const int category, const char* locale, unsigned int index, const bool is_index_valid);
>> - #    endif
>> ---- a/sv.c
>> -+++ b/sv.c
>> -@@ -13330,10 +13330,15 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const s
>> -
>> -     SvTAINT(sv);
>> -
>> -+#ifdef USE_LOCALE_NUMERIC
>> -+
>> -     if (lc_numeric_set) {
>> -         RESTORE_LC_NUMERIC();   /* Done outside loop, so don't have to
>> -                                    save/restore each iteration. */
>> -     }
>> -+
>> -+#endif
>> -+
>> - }
>> -
>> - /* =========================================================================
>> ---- a/t/lib/warnings/regexec
>> -+++ b/t/lib/warnings/regexec
>> -@@ -215,6 +215,10 @@ Use of \b{} or \B{} for non-UTF-8 locale
>> - Use of \b{} or \B{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 17.
>> - ########
>> - # NAME (?[ ]) in non-UTF-8 locale
>> -+require '../loc_tools.pl';
>> -+unless (locales_enabled()) {
>> -+    print("SKIPPED\n# locales not available\n"),exit;
>> -+}
>> - eval { require POSIX; POSIX->import("locale_h") };
>> - if ($@) {
>> -     print("SKIPPED\n# no POSIX\n"),exit;
>> -@@ -229,14 +233,14 @@ setlocale(&POSIX::LC_CTYPE, "C");
>> - ":" =~ /(?[ \: ])/;
>> - no warnings 'locale';
>> - EXPECT
>> --Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 9.
>> --Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 9.
>> --Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 10.
>> --Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 10.
>> --Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 11.
>> --Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 11.
>> --Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 12.
>> --Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 12.
>> -+Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 13.
>> -+Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 13.
>> -+Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 14.
>> -+Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 14.
>> -+Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 15.
>> -+Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 15.
>> -+Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 16.
>> -+Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 16.
>> - ########
>> - # NAME (?[ ]) in UTF-8 locale
>> - require '../loc_tools.pl';
>> diff --git a/feeds/packages/lang/perl/patches/998-Errno_errno.h_path.patch b/feeds/packages/lang/perl/patches/998-Errno_errno.h_path.patch
>> deleted file mode 100644
>> index f221dd9..0000000
>> --- a/feeds/packages/lang/perl/patches/998-Errno_errno.h_path.patch
>> +++ /dev/null
>> @@ -1,11 +0,0 @@
>> ---- a/ext/Errno/Errno_pm.PL
>> -+++ b/ext/Errno/Errno_pm.PL
>> -@@ -133,7 +133,7 @@
>> -       # Some Linuxes have weird errno.hs which generate
>> -       # no #file or #line directives
>> -       my ($linux_errno_h) = grep { -e $_ } map { "$_/errno.h" }
>> --          "$sysroot/usr/include", "$sysroot/usr/local/include",
>> -+          "$sysroot/usr/include", "$sysroot/usr/local/include", "$sysroot/include",
>> -           split / / => $Config{locincpth} or
>> -               die "Cannot find errno.h";
>> -       $file{$linux_errno_h} = 1;
>> diff --git a/feeds/packages/lang/perl/patches/999-fix-build-failure-against-gcc-10.patch b/feeds/packages/lang/perl/patches/999-fix-build-failure-against-gcc-10.patch
>> deleted file mode 100644
>> index 55d9a0e..0000000
>> --- a/feeds/packages/lang/perl/patches/999-fix-build-failure-against-gcc-10.patch
>> +++ /dev/null
>> @@ -1,103 +0,0 @@
>> -From 6bd6308fcea3541e505651bf8e8127a4a03d22cd Mon Sep 17 00:00:00 2001
>> -From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar at redhat.com>
>> -Date: Tue, 12 Nov 2019 09:19:18 +0100
>> -Subject: [PATCH] Adapt Configure to GCC version 10
>> -
>> -I got a notice from Jeff Law <law at redhat.com>:
>> -
>> -    Your particular package fails its testsuite. This was ultimately
>> -    tracked down to a Configure problem. The perl configure script treated
>> -    gcc-10 as gcc-1 and turned on -fpcc-struct-return. This is an ABI
>> -    changing flag and caused Perl to not be able to interact properly with
>> -    the dbm libraries on the system leading to a segfault.
>> -
>> -His proposed patch corrected only this one instance of the version
>> -mismatch. Reading the Configure script revealed more issues. This
>> -patch fixes all of them I found.
>> -
>> ----
>> - Configure | 14 +++++++-------
>> - cflags.SH |  2 +-
>> - 2 files changed, 8 insertions(+), 8 deletions(-)
>> -
>> -diff --git a/Configure b/Configure
>> -index fad1c9f2b1..706c0b64ed 100755
>> ---- a/Configure
>> -+++ b/Configure
>> -@@ -4701,7 +4701,7 @@ else
>> - fi
>> - $rm -f try try.*
>> - case "$gccversion" in
>> --1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
>> -+1.*) cpp=`./loc gcc-cpp $cpp $pth` ;;
>> - esac
>> - case "$gccversion" in
>> - '') gccosandvers='' ;;
>> -@@ -4741,7 +4741,7 @@ esac
>> - # gcc 3.* complain about adding -Idirectories that they already know about,
>> - # so we will take those off from locincpth.
>> - case "$gccversion" in
>> --3*)
>> -+3.*)
>> -     echo "main(){}">try.c
>> -     for incdir in $locincpth; do
>> -        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
>> -@@ -5467,13 +5467,13 @@ fi
>> - case "$hint" in
>> - default|recommended)
>> -       case "$gccversion" in
>> --      1*) dflt="$dflt -fpcc-struct-return" ;;
>> -+      1.*) dflt="$dflt -fpcc-struct-return" ;;
>> -       esac
>> -       case "$optimize:$DEBUGGING" in
>> -       *-g*:old) dflt="$dflt -DDEBUGGING";;
>> -       esac
>> -       case "$gccversion" in
>> --      2*) if $test -d /etc/conf/kconfig.d &&
>> -+      2.*) if $test -d /etc/conf/kconfig.d &&
>> -                       $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
>> -               then
>> -                       # Interactive Systems (ISC) POSIX mode.
>> -@@ -5482,7 +5482,7 @@ default|recommended)
>> -               ;;
>> -       esac
>> -       case "$gccversion" in
>> --      1*) ;;
>> -+      1.*) ;;
>> -       2.[0-8]*) ;;
>> -       ?*)     set strict-aliasing -fno-strict-aliasing
>> -               eval $checkccflag
>> -@@ -5600,7 +5600,7 @@ case "$cppflags" in
>> -     ;;
>> - esac
>> - case "$gccversion" in
>> --1*) cppflags="$cppflags -D__GNUC__"
>> -+1.*) cppflags="$cppflags -D__GNUC__"
>> - esac
>> - case "$mips_type" in
>> - '');;
>> -@@ -23103,7 +23103,7 @@ fi
>> -
>> - : add -D_FORTIFY_SOURCE if feasible and not already there
>> - case "$gccversion" in
>> --[4567].*)     case "$optimize$ccflags" in
>> -+[456789].*|[1-9][0-9]*)       case "$optimize$ccflags" in
>> -       *-O*)   case "$ccflags$cppsymbols" in
>> -               *_FORTIFY_SOURCE=*) # Don't add it again.
>> -                       echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4
>> -diff --git a/cflags.SH b/cflags.SH
>> -index e60742fed1..f1bcd6c38e 100755
>> ---- a/cflags.SH
>> -+++ b/cflags.SH
>> -@@ -156,7 +156,7 @@ esac
>> -
>> - case "$gccversion" in
>> - '') ;;
>> --[12]*) ;; # gcc versions 1 (gasp!) and 2 are not good for this.
>> -+[12].*) ;; # gcc versions 1 (gasp!) and 2 are not good for this.
>> - Intel*) ;; # # Is that you, Intel C++?
>> - #
>> - # NOTE 1: the -std=c89 without -pedantic is a bit pointless.
>> ---
>> -2.17.1
>> -
>> diff --git a/feeds/packages/lang/perl/perlver.mk b/feeds/packages/lang/perl/perlver.mk
>> index dbec815..2218942 100644
>> --- a/feeds/packages/lang/perl/perlver.mk
>> +++ b/feeds/packages/lang/perl/perlver.mk
>> @@ -1,4 +1,7 @@
>> -PERL_VERSION:=5.28.1
>> +PERL_VERSION:=5.30.0
>> +#+PERL_VERSION:=5.30.0
>> +#+PERL_VERSION:=5.30.3
>> +#+PERL_VERSION:=5.32.0
>> 
>> PERL_EXPLODE:=$(subst ., ,$(PERL_VERSION))
>> 
>> --
>> 2.24.3 (Apple Git-128)
>> 
>> 
>> 
>> 
>>> On 2020-11-24, at 9:11 PM, Philip Prindeville <philipp_subx at redfish-solutions.com> wrote:
>>> 
>>> 
>>> 
>>>> On Nov 23, 2020, at 2:52 PM, Rosen Penev <rosenp at gmail.com> wrote:
>>>> 
>>>> On Mon, Nov 23, 2020 at 10:39 AM Georgi Valkov <gvalkov at abv.bg> wrote:
>>>>> 
>>>>> Dear Rosen,
>>>>> 
>>>>> Thanks to your help I discovered the feeds/packages repository, however I was not able to resolve the race condition during build and discover why Errno.pm is not built when multiple workers are used e.g.: make package/feeds/packages/perl/host/{clean,compile} -j 12
>>>>> 
>>>>> The good news is that if we move to perl 5.30.0 or newer, the race condition is resolved.
>>>> That's very good.
>>>> 
>>>>> We also need to add a few flags to files/base.config:
>>>>> d_attribute_always_inline=‘define'
>>>>> d_setlocale_accepts_any_locale_name=‘undef'
>>>>> d_sockaddr_storage=‘undef’
>>>>> d_towlower=‘undef'
>>>>> d_towupper=‘undef'
>>>>> d_wcrtomb=‘undef'
>>>>> i_wctype=‘define’
>>>>> 
>>>>> Then we can compile perl/host 5.30.0 up to 5.32.0. However building perl for the target fails the install phase:
>>>>> 
>>>>> error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool: input file: /Volumes/test/openwrt/build_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/perl/perl-5.30.0/ipkg-install/usr/bin/perl5.30.0 is not a Mach-O file
>>>>> Cannot update /Volumes/test/openwrt/build_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/perl/perl-5.30.0/ipkg-install/usr/bin/perl5.30.0 dependency paths
>>>>> make[3]: *** [makefile:445: install-all] Error 1
>>>>> make[3]: Leaving directory '/Volumes/test/openwrt/build_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/perl/perl-5.30.0'
>>>>> make[2]: *** [Makefile:152: /Volumes/test/openwrt/build_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/perl/perl-5.30.0/.built] Error 2
>>>>> 
>>>>> Another symptom I see, is that with 5.30.0 build_dir/target-arm_cortex-a9+vfpv3-d16_musl_eabi/perl/perl-5.30.0/ipkg-install/usr/bin contains only perl5.30.0, while with the original 5.28.1 it contains many executables.
>>>>> 
>>>>> Can you please update perl to 5.30.0 or 5.32.0? Just make sure it compiles correctly on Linux or whatever environment you are using, and I will test it on macOS 11. I seem to be missing something, and it might take me a very long time to learn my way through, because I lack experience.
>>>> I don't maintain perl. That's https://github.com/pprindeville . CC'ed
>>> 
>>> 
>>> If you have a patch to update to 5.30, I’ll look at it.
>>> 
>>> -Philip
>>> 
>>> 
>>>>> 
>>>>> 
>>>>> Thank you again for any help!
>>>>> Georgi Valkov
>>>>> 
>>>>> 
>>>>>> On 2020-11-18, at 10:32 AM, Georgi Valkov <gvalkov at abv.bg> wrote:
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On 2020-11-18, at 4:24 AM, Rosen Penev <rosenp at gmail.com> wrote:
>>>>>>> 
>>>>>>> On Tue, Nov 17, 2020 at 3:16 PM Georgi Valkov <gvalkov at abv.bg> wrote:
>>>>>>>> 
>>>>>>>> Dear OpenWRT team,
>>>>>>>> 
>>>>>>>> I just updated my laptop to macOS 11 Big Sur. Presently only the perl hostpkg package fails during the build. Once I get past perl, everything else compiles correctly. Below is a patch, workaround, and details from my research. My target is Marvell EBU Armada, Linksys WRT3200ACM.
>>>>>>>> 
>>>>>>>> Before applying the patch, make package/feeds/packages/perl/host/compile V=sc fails with the following error:
>>>>>>>> Which of these apply, if any? [darwin]
>>>>>>>> 
>>>>>>>> *** Unexpected product version 11.0.
>>>>>>>> ***
>>>>>>>> *** Try running sw_vers and see what its ProductVersion says.
>>>>>>>> 
>>>>>>>> After the patch, make package/feeds/packages/perl/host/compile succeeds, however when multiple workers are used: make package/feeds/packages/perl/host/compile -j 12 V=sc, the build fails:
>>>>>>>> Writing Makefile for CPAN
>>>>>>>> make[4]: Entering directory '/Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/cpan/Archive-Tar'
>>>>>>>> make[4]: Entering directory '/Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/cpan/CPAN'
>>>>>>>> Generating a Unix-style Makefile
>>>>>>>> Writing Makefile for Errno
>>>>>>>> make[4]: Entering directory '/Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/ext/Errno'
>>>>>>>> "../../miniperl" "-I../../lib" Errno_pm.PL Errno.pm
>>>>>>>> Can't locate Errno.pm in @INC (you may need to install the Errno module) (@INC contains: /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/cpan/AutoLoader/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/dist/Carp/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/dist/PathTools /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/dist/PathTools/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/cpan/ExtUtils-Install/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/cpan/ExtUtils-MakeMaker/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/cpan/ExtUtils-Manifest/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/cpan/File-Path/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/ext/re /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/dist/Term-ReadLine/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/dist/Exporter/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/ext/File-Find/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/cpan/Text-Tabs/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/dist/constant/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/cpan/version/lib /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/lib .) at /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/dist/PathTools/Cwd.pm line 444.
>>>>>>>> Unsuccessful Makefile.PL(cpan/ExtUtils-MakeMaker): code=512 at make_ext.pl line 518.
>>>>>>>> make[3]: *** [GNUmakefile:599: cpan/ExtUtils-MakeMaker/pm_to_blib] Error 2
>>>>>>>> 
>>>>>>>> I have also seen errors where the build is trying to use /miniperl instead of ./miniperl, as well as /build_dir/hostpkg/perl/perl-5.28.1/perl instead of /Volumes/test/openwrt/build_dir/hostpkg/perl/perl-5.28.1/perl. The will occur if we try to build perl without host/clean and clean. Seems like a race condition due to dependency misconfiguration.
>>>>>>>> 
>>>>>>>> Here is the list of all commands in order to compile OpenWRT starting from a clean build root:
>>>>>>>> make -j 12
>>>>>>>> make package/feeds/packages/perl/host/clean
>>>>>>>> make package/feeds/packages/perl/clean
>>>>>>>> make package/feeds/packages/perl/compile
>>>>>>>> make -j 12
>>>>>>>> 
>>>>>>>> The first make fails, then we perform host-clean and clean for perl, next compile will also do host-compile - we have to use a single worker here. Finally we can complete the rest of the build process. I should note that Languages, Perl, perl is not selected in menuconfig. I can understand if the hostpkg/perl is required during the build process, however perl/host{clean,compile} is not enough, I also need to perform perl/{clean,compile}.
>>>>>>>> 
>>>>>>>> Here is the quick patch I made in order to verify if there are any other broken packages: no. Only perl fails to compile. I am also not sure how to handle patches and pull-requests for feeds, so I thought I should rather share my research here and ask for help.
>>>>>>>> 
>>>>>>>> feeds/packages/lang/perl/patches/302-macos_11_support.patch
>>>>>>>> Index: perl-5.28.1/hints/darwin.sh
>>>>>>>> ===================================================================
>>>>>>>> --- perl-5.28.1.orig/hints/darwin.sh
>>>>>>>> +++ perl-5.28.1/hints/darwin.sh
>>>>>>>> @@ -327,7 +327,7 @@ EOM
>>>>>>>> # "ProductVersion:    10.11"     "10.11"
>>>>>>>>     prodvers=`sw_vers|awk '/^ProductVersion:/{print $2}'|awk -F. '{print $1"."$2}'`
>>>>>>>> case "$prodvers" in
>>>>>>>> -    10.*)
>>>>>>>> +    10.*|11.*)
>>>>>>>>   add_macosx_version_min ccflags $prodvers
>>>>>>>>   add_macosx_version_min ldflags $prodvers
>>>>>>>>   ;;
>>>>>>>> 
>>>>>>> This patch is for https://github.com/openwrt/packages
>>>>>>> 
>>>>>>> Please submit a PR there.
>>>>>>> 
>>>>>>> Speaking of perl, it could probably use an update.
>>>>>> 
>>>>>> I would only make a pull-request when I’m certain I have corrected all issues and tested thoroughly.
>>>>>> Indeed the perl package must be updated. I’m not sure if I am allowed to create patches for /feeds, because
>>>>>> /feeds and /package/feeds are in .gitignore, so I shouldn't force changes inside these directories.
>>>>>> At least I’m not aware of a proper way to do so.
>>>>>> 
>>>>>>>> 
>>>>>>>> Thank you for any help!
>>>>>>>> Georgi Valkov
>>>>>>>> 
>>>>>>>> https://bugs.openwrt.org/index.php?do=details&task_id=3458
>> 
> 




More information about the openwrt-devel mailing list