diff mbox series

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

Message ID 6B2CCC9C-9F01-4A1A-9B04-212A007D7B58@abv.bg
State Not Applicable
Headers show
Series perl/host/compile: fails on macOS 11 Big Sur, workaround | expand

Commit Message

Georgi Valkov Nov. 17, 2020, 11:12 p.m. UTC
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


Thank you for any help!
Georgi Valkov

https://bugs.openwrt.org/index.php?do=details&task_id=3458

Comments

Rosen Penev Nov. 18, 2020, 2:24 a.m. UTC | #1
On Tue, Nov 17, 2020 at 3:16 PM Georgi Valkov <gvalkov@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.
>
> Thank you for any help!
> Georgi Valkov
>
> https://bugs.openwrt.org/index.php?do=details&task_id=3458
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Georgi Valkov Nov. 18, 2020, 8:32 a.m. UTC | #2
> On 2020-11-18, at 4:24 AM, Rosen Penev <rosenp@gmail.com> wrote:
> 
> On Tue, Nov 17, 2020 at 3:16 PM Georgi Valkov <gvalkov@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
>> 
>> 
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel@lists.openwrt.org
>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Georgi Valkov Nov. 23, 2020, 6:39 p.m. UTC | #3
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. 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.


Thank you again for any help!
Georgi Valkov


> On 2020-11-18, at 10:32 AM, Georgi Valkov <gvalkov@abv.bg> wrote:
> 
> 
> 
>> On 2020-11-18, at 4:24 AM, Rosen Penev <rosenp@gmail.com> wrote:
>> 
>> On Tue, Nov 17, 2020 at 3:16 PM Georgi Valkov <gvalkov@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
>>> 
>>> 
>>> _______________________________________________
>>> openwrt-devel mailing list
>>> openwrt-devel@lists.openwrt.org
>>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Rosen Penev Nov. 23, 2020, 9:52 p.m. UTC | #4
On Mon, Nov 23, 2020 at 10:39 AM Georgi Valkov <gvalkov@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
>
>
> Thank you again for any help!
> Georgi Valkov
>
>
> > On 2020-11-18, at 10:32 AM, Georgi Valkov <gvalkov@abv.bg> wrote:
> >
> >
> >
> >> On 2020-11-18, at 4:24 AM, Rosen Penev <rosenp@gmail.com> wrote:
> >>
> >> On Tue, Nov 17, 2020 at 3:16 PM Georgi Valkov <gvalkov@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
> >>>
> >>>
> >>> _______________________________________________
> >>> openwrt-devel mailing list
> >>> openwrt-devel@lists.openwrt.org
> >>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>
Philip Prindeville Nov. 24, 2020, 7:11 p.m. UTC | #5
> On Nov 23, 2020, at 2:52 PM, Rosen Penev <rosenp@gmail.com> wrote:
> 
> On Mon, Nov 23, 2020 at 10:39 AM Georgi Valkov <gvalkov@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@abv.bg> wrote:
>>> 
>>> 
>>> 
>>>> On 2020-11-18, at 4:24 AM, Rosen Penev <rosenp@gmail.com> wrote:
>>>> 
>>>> On Tue, Nov 17, 2020 at 3:16 PM Georgi Valkov <gvalkov@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
>>>>>
Georgi Valkov Nov. 24, 2020, 8:08 p.m. UTC | #6
Thank you, Philip!
Here it is the patch:


From a5c62c0dd2b4dabf72571239f08266b348dad5a2 Mon Sep 17 00:00:00 2001
From: Georgi Valkov <gvalkov@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@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@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)
--	-@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
--	-@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
--	-@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
--	-@rm -f miniperl.xok
--	-@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
--	-@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
--	-@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)
--	-@test ! -f extra.pods || rm -f `cat extra.pods`
--	-@rm -f extra.pods
-+	-@test ! -f extra.pods || $(RMS) `cat extra.pods`
-+	@$(RMS) extra.pods
- 	-@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:
--	-@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
--	-@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
--	-@test -f extra.pods && rm -f `cat extra.pods`
--	-@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)
-+	-@test -f extra.pods && $(RMS) `cat extra.pods`
-+	-@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)
- 	-@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
+ 	-@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
+ 	-@rm -f miniperl.xok
+ 	-@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
+ 	-@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@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@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@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))
Rosen Penev Nov. 25, 2020, 10:59 p.m. UTC | #7
On Tue, Nov 24, 2020 at 12:08 PM Georgi Valkov <gvalkov@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@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@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@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)
> --      -@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
> --      -@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
> --      -@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
> --      -@rm -f miniperl.xok
> --      -@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
> --      -@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
> --      -@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)
> --      -@test ! -f extra.pods || rm -f `cat extra.pods`
> --      -@rm -f extra.pods
> -+      -@test ! -f extra.pods || $(RMS) `cat extra.pods`
> -+      @$(RMS) extra.pods
> -       -@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:
> --      -@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
> --      -@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
> --      -@test -f extra.pods && rm -f `cat extra.pods`
> --      -@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)
> -+      -@test -f extra.pods && $(RMS) `cat extra.pods`
> -+      -@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)
> -       -@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
> +       -@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
> +       -@rm -f miniperl.xok
> +       -@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
> +       -@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@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@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@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@redfish-solutions.com> wrote:
> >
> >
> >
> >> On Nov 23, 2020, at 2:52 PM, Rosen Penev <rosenp@gmail.com> wrote:
> >>
> >> On Mon, Nov 23, 2020 at 10:39 AM Georgi Valkov <gvalkov@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@abv.bg> wrote:
> >>>>
> >>>>
> >>>>
> >>>>> On 2020-11-18, at 4:24 AM, Rosen Penev <rosenp@gmail.com> wrote:
> >>>>>
> >>>>> On Tue, Nov 17, 2020 at 3:16 PM Georgi Valkov <gvalkov@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
>
diff mbox series

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
       ;;