<feed xmlns='http://www.w3.org/2005/Atom'>
<title>packages/lang/perl/files, branch master</title>
<subtitle>Mirror of packages feed</subtitle>
<id>https://git-03.infra.openwrt.org/feed/packages/atom?h=master</id>
<link rel='self' href='https://git-03.infra.openwrt.org/feed/packages/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/'/>
<updated>2025-05-05T09:20:38Z</updated>
<entry>
<title>perl: fix parallel build race condition in target build</title>
<updated>2025-05-05T09:20:38Z</updated>
<author>
<name>Matthias Schiffer</name>
</author>
<published>2025-04-26T20:37:16Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/commit/?id=b98fb6063599fa0c33ac4f8b1ca836b957f2ea96'/>
<id>urn:sha1:b98fb6063599fa0c33ac4f8b1ca836b957f2ea96</id>
<content type='text'>
We have received reports of builds of perl occasionally failing when
building with many parallel jobs, with a log like the following:

    LD_LIBRARY_PATH=[...]/perl/perl-5.40.0 ./miniperl -Ilib make_ext.pl \
        dist/constant/pm_to_blib  MAKE="make" LIBPERL_A=libperl.so
    File/Path.pm did not return a true value at [...]/hostpkg/usr/lib/perl5/5.40.0/ExtUtils/MakeMaker.pm line 13.
    BEGIN failed--compilation aborted at [...]/hostpkg/usr/lib/perl5/5.40.0/ExtUtils/MakeMaker.pm line 13.
    Compilation failed in require at Makefile.PL line 3.
    BEGIN failed--compilation aborted at Makefile.PL line 3.
    Unsuccessful Makefile.PL(dist/constant): code=65280 at make_ext.pl line 532.

The failing extension (dist/constant in the above log) would differ
between runs.

The cause of the issue is the `-Ilib` in the command line of miniperl.
In the host build, `./miniperl -I lib` will use the following include
path:

    [..]/build_dir/hostpkg/perl/perl-5.40.0/cpan/AutoLoader/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/dist/Carp/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/dist/PathTools
    [..]/build_dir/hostpkg/perl/perl-5.40.0/dist/PathTools/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/cpan/ExtUtils-Install/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/cpan/ExtUtils-MakeMaker/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/cpan/ExtUtils-Manifest/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/cpan/File-Path/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/ext/re
    [..]/build_dir/hostpkg/perl/perl-5.40.0/dist/Term-ReadLine/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/dist/Exporter/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/ext/File-Find/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/cpan/Text-Tabs/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/dist/constant/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/cpan/version/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/cpan/Getopt-Long/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/cpan/Text-ParseWords/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/cpan/ExtUtils-PL2Bat/lib
    [..]/build_dir/hostpkg/perl/perl-5.40.0/lib
    .

Various dependencies of the extension build scripts (Makefile.PL) -
including File-Path, which failed to be loaded in the error log - are
included in the path by buildcustomize.pl, as these extensions are only
installed to `lib` as the build proceeds.

However, in a target build, miniperl is just a symlink to the previously
built host perl. As the host perl does not implicitly load
`buildcustomize.pl`, we get the following include path for
`./miniperl -Ilib`:

    lib
    [..]/staging_dir/hostpkg/usr/lib/perl5/site_perl/5.40.0/x86_64-linux
    [..]/staging_dir/hostpkg/usr/lib/perl5/site_perl/5.40.0
    [..]/staging_dir/hostpkg/usr/lib/perl5/5.40.0/x86_64-linux
    [..]/staging_dir/hostpkg/usr/lib/perl5/5.40.0

The host perl's install location is used as the default include path
which provides File-Path etc. for the target build; however, as more
and more libraries get installed into `lib` during the extension build,
they may get loaded from there instead, as `lib` is at the beginning of
the include path. When multiple extensions are built in parallel, a
Makefile.PL may attempt to load File/Path from `lib` after the file has
been created, but before its contents have been written fully, resulting
in the build to fail.

In fact, we should not load anything from `lib` during the target build,
as it is the staging directory for the target, including native
extensions built for the target architecture - with one exception: The
build scripts expect to find target information in the `Config` module,
so simply removing `lib` from the include path completely would break
the build.

Solve the issue by creating an alternative lib directory `lib_build`,
symlinking `Config.pm` and its dependencies in it, and replacing the
`-Ilib` argument with `-Ilib_build` using a wrapper script around the
host perl executable. This is similar to the approach seen in perl's own
obsolete/broken cross compile scripts (`Cross/Makefile`).

Signed-off-by: Matthias Schiffer &lt;mschiffer@universe-factory.net&gt;
</content>
</entry>
<entry>
<title>perl: drop 110-always_use_miniperl.patch</title>
<updated>2025-05-05T09:20:38Z</updated>
<author>
<name>Matthias Schiffer</name>
</author>
<published>2025-04-25T10:35:23Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/commit/?id=e7b5a35e5caa784200da32b6c6b457e20a67fd2a'/>
<id>urn:sha1:e7b5a35e5caa784200da32b6c6b457e20a67fd2a</id>
<content type='text'>
The patch was introduced in commit 4c57844f0f04 ("lang/perl: Add hack to
make perl always use miniperl during build"), but it is not actually
necessary. By setting $perl to a non-empty value (using 'perl' as is
common on desktop distros), the logic works as intended and selects the
correct perl binary for host and target builds.

As miniperl just symlinks to host perl for target builds, the main
effect of this change is not unconditionally passing `-Ilib -I.`
anymore. This seems like a good thing; host libraries should be used
with host perl by default.

Signed-off-by: Matthias Schiffer &lt;mschiffer@universe-factory.net&gt;
</content>
</entry>
<entry>
<title>perl: fix Segmentation fault</title>
<updated>2024-07-23T01:48:26Z</updated>
<author>
<name>Esaaprilia Salsabila</name>
</author>
<published>2024-07-18T15:31:15Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/commit/?id=5a923168c834157bc590c9b43de2c172dd934645'/>
<id>urn:sha1:5a923168c834157bc590c9b43de2c172dd934645</id>
<content type='text'>
Signed-off-by: Esaaprilia Salsabila &lt;esaapriliasalsabila@gmail.com&gt;
</content>
</entry>
<entry>
<title>perl: update version 5.40.0</title>
<updated>2024-06-20T21:18:35Z</updated>
<author>
<name>Esaaprilia Salsabila</name>
</author>
<published>2024-06-17T23:43:33Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/commit/?id=c5b97d4d967fde1e090b90b547500abaa40cc925'/>
<id>urn:sha1:c5b97d4d967fde1e090b90b547500abaa40cc925</id>
<content type='text'>
https://metacpan.org/release/HAARG/perl-5.40.0

remove bytes_heavy.pl
Perl/perl5#22047

perl update version 5.40.0

Signed-off-by: Esaaprilia Salsabila &lt;esaapriliasalsabila@gmail.com&gt;
</content>
</entry>
<entry>
<title>perl: update to version 5.38.2</title>
<updated>2023-12-01T19:18:10Z</updated>
<author>
<name>Andy Syam</name>
</author>
<published>2023-12-01T11:01:52Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/commit/?id=24847159857ccd64d5d823d109a03b1908b25bd0'/>
<id>urn:sha1:24847159857ccd64d5d823d109a03b1908b25bd0</id>
<content type='text'>
removed one that no longer exists in perl-5.38.2

updated one patch

fixed missing builtin.pm

Signed-off-by: Andy Syam &lt;privasisource@gmail.com&gt;
</content>
</entry>
<entry>
<title>perl: update to version 5.38.0</title>
<updated>2023-11-23T02:32:50Z</updated>
<author>
<name>Andy Syam</name>
</author>
<published>2023-11-21T06:13:35Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/commit/?id=0142d0659822413a3ac5ed4c76d74cbcf5a1ca7e'/>
<id>urn:sha1:0142d0659822413a3ac5ed4c76d74cbcf5a1ca7e</id>
<content type='text'>
removed some sources to download perl. I believe I only need one source to download perl at https://www.cpan.org/src/5.0. I see some Linux distributions use that source to download.
change the position of PKG_MAINTAINER to make it neater and prettier

perform a patch refresh
removes some patches that have been applied in perl-5.38.0 as well as patches that are no longer used in perl-5.38.0

added one patch Perl/perl5@ba6e2c3 this fixes the issue regcomp*.c, regexec.c - fixup regex engine build under -Uusedl

provided updates and synchronized libc.config base.config version.config to perl-5.38.0
removed deprecated arybase in perl-5.29.4

Signed-off-by: Andy Syam &lt;privasisource@gmail.com&gt;
</content>
</entry>
<entry>
<title>perl: add support for riscv64</title>
<updated>2023-10-23T05:29:03Z</updated>
<author>
<name>Zoltan HERPAI</name>
</author>
<published>2023-10-12T14:20:07Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/commit/?id=cf59047d3c3f07baed76751e19f06db9c6541800'/>
<id>urn:sha1:cf59047d3c3f07baed76751e19f06db9c6541800</id>
<content type='text'>
Required by sifiveu and upcoming riscv targets.

Signed-off-by: Zoltan HERPAI &lt;wigyori@uid0.hu&gt;
</content>
</entry>
<entry>
<title>perl: add powerpc64 support</title>
<updated>2022-03-03T00:30:32Z</updated>
<author>
<name>Rosen Penev</name>
</author>
<published>2022-02-28T07:24:23Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/commit/?id=59980b6be79546acb4a9c69c92cd7bfdb4450785'/>
<id>urn:sha1:59980b6be79546acb4a9c69c92cd7bfdb4450785</id>
<content type='text'>
Needed by the QoriQ target.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
</content>
</entry>
<entry>
<title>perl: define $sysroot for extensions</title>
<updated>2020-02-09T07:08:58Z</updated>
<author>
<name>Alexander Ryzhov</name>
</author>
<published>2019-09-26T12:51:13Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/commit/?id=fed1b3b11bf9361dbbd158a1018c701d8180e49b'/>
<id>urn:sha1:fed1b3b11bf9361dbbd158a1018c701d8180e49b</id>
<content type='text'>
Signed-off-by: Alexander Ryzhov &lt;github@ryzhov-al.ru&gt;
Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
</content>
</entry>
<entry>
<title>perl: add missing config for mips64el</title>
<updated>2018-12-19T05:28:26Z</updated>
<author>
<name>Tony Ambardar</name>
</author>
<published>2018-12-19T05:27:34Z</published>
<link rel='alternate' type='text/html' href='https://git-03.infra.openwrt.org/feed/packages/commit/?id=0716d8fe5aa6705f69657fa149e5b437ff37bc65'/>
<id>urn:sha1:0716d8fe5aa6705f69657fa149e5b437ff37bc65</id>
<content type='text'>
Compilation otherwise fails building for MIPS Malta 64-bit LE.

Signed-off-by: Tony Ambardar &lt;itugrok@yahoo.com&gt;
</content>
</entry>
</feed>
