<feed xmlns='http://www.w3.org/2005/Atom'>
<title>packages/lang/perl/Makefile, branch master</title>
<subtitle>Mirror of packages feed</subtitle>
<id>https://git.openwrt.org/feed/packages/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/feed/packages/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/'/>
<updated>2026-06-08T14:41:45Z</updated>
<entry>
<title>perl: install libperl.so using $(INSTALL_BIN) to enable stripping</title>
<updated>2026-06-08T14:41:45Z</updated>
<author>
<name>Josef Schlehofer</name>
</author>
<published>2026-06-07T21:01:07Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=b6d2070fc82996d78ada8a6638639a285c0edcfb'/>
<id>urn:sha1:b6d2070fc82996d78ada8a6638639a285c0edcfb</id>
<content type='text'>
Install libperl.so with executable permissions (0755) instead of copying
it as-is.

This allows the OpenWrt build system to recognize the library as a binary and
automatically run the "strip" utility on it. Stripping removes unnecessary
debugging metadata and helper symbols that are only needed for development but
not for running Perl on the router.

This change reduces the installed size of libperl.so on the device:
- Before (not stripped): 3.7 MB (3,929,652 bytes)

```
root@turris:~# file /usr/lib/perl5/5.40/CORE/libperl.so
/usr/lib/perl5/5.40/CORE/libperl.so: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, with debug_info, not stripped
```

- After (stripped):     3.5 MB (3,674,081 bytes)

```
root@turris:~# file /usr/lib/perl5/5.40/CORE/libperl.so
/usr/lib/perl5/5.40/CORE/libperl.so: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, no section header
```

Saving ~255 KB of flash storage space on target devices.

Signed-off-by: Josef Schlehofer &lt;pepe.schlehofer@gmail.com&gt;
</content>
</entry>
<entry>
<title>perl: fix miniperl missing execute permission (CI fix)</title>
<updated>2026-05-20T17:09:52Z</updated>
<author>
<name>Alexandru Ardelean</name>
</author>
<published>2026-05-20T08:22:31Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=d4d4e3e4194dd6673c4f9eec5f4ee841c28b026c'/>
<id>urn:sha1:d4d4e3e4194dd6673c4f9eec5f4ee841c28b026c</id>
<content type='text'>
On some build systems, the miniperl binary is created without execute
permission (errno 126 when running it as /bin/sh). This breaks building
the mro extension and cascades to all dependent packages.

Fix by ensuring chmod +x on miniperl after the main build step.
This matches how many other build systems handle this same issue.

Signed-off-by: Alexandru Ardelean &lt;alex@shruggie.ro&gt;
</content>
</entry>
<entry>
<title>perl: fix missing line numbers in error messages</title>
<updated>2026-05-20T13:22:53Z</updated>
<author>
<name>Jens Wagner</name>
</author>
<published>2026-05-15T16:00:06Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=95b7bf91a775163f0c84eaf58add6f9df81ba2a2'/>
<id>urn:sha1:95b7bf91a775163f0c84eaf58add6f9df81ba2a2</id>
<content type='text'>
There were some type definitions missing in architecture.config,
that caused perl to return '%' instead of actual line numbers.

Fixes: https://github.com/openwrt/packages/issues/25912

Signed-off-by: Jens Wagner &lt;jens@wagner2013.de&gt;
</content>
</entry>
<entry>
<title>treewide: cleanup URLs</title>
<updated>2026-05-08T20:28:27Z</updated>
<author>
<name>Yanase Yuki</name>
</author>
<published>2026-01-02T09:06:57Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=b0d8a3d384915c2de1c5b473fcfb8b3996bb849b'/>
<id>urn:sha1:b0d8a3d384915c2de1c5b473fcfb8b3996bb849b</id>
<content type='text'>
This commit converts plain HTTP URLs to HTTPS, and updates
old or outdated URLs.

Signed-off-by: Yanase Yuki &lt;dev@zpc.st&gt;
</content>
</entry>
<entry>
<title>perlbase-encode: added dependency on perlbase-storable</title>
<updated>2026-01-22T20:02:25Z</updated>
<author>
<name>Jens Wagner</name>
</author>
<published>2026-01-02T13:56:33Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=fcaf398736cca73e370f605c07805b15e2217868'/>
<id>urn:sha1:fcaf398736cca73e370f605c07805b15e2217868</id>
<content type='text'>
The Encode module uses the Storable module.

Signed-off-by: Jens Wagner &lt;jens@wagner2013.de&gt;
</content>
</entry>
<entry>
<title>treewide: fix spelling and grammar in Makefiles</title>
<updated>2025-12-31T07:12:36Z</updated>
<author>
<name>George Sapkin</name>
</author>
<published>2025-12-26T04:26:18Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=de64f871b0f00b885039997eb46f914bdac687a5'/>
<id>urn:sha1:de64f871b0f00b885039997eb46f914bdac687a5</id>
<content type='text'>
Fix spelling and grammar in package definitions, configs, comments and
other strings.

Signed-off-by: George Sapkin &lt;george@sapk.in&gt;
</content>
</entry>
<entry>
<title>perl: adjust with glibc and libcrypt-compat</title>
<updated>2025-07-14T08:40:15Z</updated>
<author>
<name>Konstantin Demin</name>
</author>
<published>2025-07-04T07:51:41Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=443ce3174d9ab2ca31b26f1d49403d6160f0c5f7'/>
<id>urn:sha1:443ce3174d9ab2ca31b26f1d49403d6160f0c5f7</id>
<content type='text'>
glibc 2.39 has removed libcrypt completely.
solution: link against libxcrypt built with glibc compatibility.

Signed-off-by: Konstantin Demin &lt;rockdrilla@gmail.com&gt;
</content>
</entry>
<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.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: Run make depend to fix build race condition</title>
<updated>2024-07-28T21:53:19Z</updated>
<author>
<name>Andreas Gnau</name>
</author>
<published>2024-03-05T18:30:09Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=68c0a57f57f70aea324c4585c0499d7c4ea0416c'/>
<id>urn:sha1:68c0a57f57f70aea324c4585c0499d7c4ea0416c</id>
<content type='text'>
Run make depend before building perl. This fixes parallel build failures
on machines with a high number of cores.

Example error 1:

    /bin/ln -s /build/staging_dir/hostpkg/usr/bin/generate_uudmap generate_uidmap
    make[5]: ./generate_uudmap: Command not found
    make[5]: *** [Makefile:321: bitcount.h] Error 127

Example error 2:

    /bin/ln -s /build/staging_dir/hostpkg/usr/bin/generate_uudmap generate_udmap
    ./generate_uudmap uudmap.h bitcount.h mg_data.h
    /bin/ln: failed to create symbolic link 'generate_uudmap': File exists
    make[5]: *** [Makefile:325: generate_uudmap] Error 1

Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996953
Link: https://salsa.debian.org/perl-team/interpreter/perl/-/commit/366bc98c916a3455f15c532aa33a5636d2fe2803
Closes: https://github.com/openwrt/packages/issues/8238
Signed-off-by: Andreas Gnau &lt;andreas.gnau@iopsys.eu&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.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>
</feed>
