Commit Graph

40 Commits

Author SHA1 Message Date
Tianling Shen b9481f55d8 perl: perlmod: append _LARGEFILE64_SOURCE flag for musl 1.2.4
musl 1.2.4 deprecated legacy "LFS64" ("large file support") interfaces so
just having _GNU_SOURCE defined is not enough anymore.

Manually pass -D_LARGEFILE64_SOURCE to allow to keep using LFS64 definitions.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-05-20 13:05:19 +08:00
Eneas U de Queiroz 1e18c4324f
perl: perlmod.mk: use flock when hostpkg/perl used
Avoid parallel relinking and usage of the host perl binary by wrapping
its usage around flock calls.

Sometimes, two packages will try to relink the static host perl binary
at the same time.  Neither of them will have the other's module linked
in, and one of them will unavoidably clobber the other one's binary.

This will lead to errors when a package will not be able to find a
module that was supposed to be installed.

To fix that, an exclusive flock is used when relinking, with a 900
seconds timeout to avoid locking up the build process forever.

This is not enough because the binary may be concurrently used to build
another module package; perl is used in Configure, Compile, and Install
procedures.  If timing is right, a package will fail with a "permission
denied" error.

So a shared flock call is added in Configure, Compile, and Install
definitions for host and target, with a shorter, 300 seconds timeout.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
2021-08-17 12:03:34 -03:00
Eneas U de Queiroz 19c7496648
perl: perlmod.mk: use 'install' for host binaries
When installing a host perl module, the host perl binary in the staging
dir is replaced by using 'cp'.  However, if the binary is running in a
parallel job, cp will fail with a text file busy error.  Use
$(INSTALL_BIN), which unliks the file first to avoid the error.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
2021-08-11 16:59:20 -03:00
Philip Prindeville a5a4eafc93 perlmod: fix ability to build module out-of-feed
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2018-09-23 14:19:51 -06:00
Philip Prindeville 0d9584724f perl: version modules and non-base packages
Currently external modules and non-base packages are numbered
from their own internal number space, and even though the Perl
ABI number is embedded into them this isn't externally visible.

For example, perl-html-parser-3.72.1 could be built for ABI
5.26 or for 5.28, we can't easily tell.  This changes all of
that by embedding the ABI number into the filename.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2018-08-13 13:23:11 -06:00
Philip Prindeville b94744496f perl: update to 5.28
Refresh patches 900 and 910.

Add fix (920) for improperly gated variable.

Add workaround (020) for Storable's run-time check for stacksize.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2018-07-31 15:45:35 -06:00
Philip Prindeville 1e0db9ba80 perlmod: avoid 'do' semantics and just concatenate
In Perl the 'do' construct has some odd side-effects regarding $@,
$!, and return values (i.e. 'do'ing a file which evaluates to undef
can be a little ambiguous).

Instead, generate a preamble to the Makefile.PL and execute it as
stdin.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2018-01-25 18:48:34 -07:00
Philip Prindeville 531eb4404b Revert "perl: when Makefile.PL fails give more feedback"
This reverts commit a4aaaf8d8f.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2018-01-25 18:48:34 -07:00
Philip Prindeville be52f902d8 Revert "perlmod: redux handling odd Makefile.PL eval value"
This reverts commit f03cd7b5ac.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2018-01-25 18:48:34 -07:00
Philip Prindeville f03cd7b5ac perlmod: redux handling odd Makefile.PL eval value
It seems that Inline::C evaluates to undef which is problematic, so
we need to handle this better.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2017-11-07 16:13:02 -07:00
Philip Prindeville a4aaaf8d8f perl: when Makefile.PL fails give more feedback
There are a few packages which mysteriously fail during the configure
stage.  Give us better means of understanding why.

Also, some Makefile.PL's have "use" statements which reference
files which are in or under ".".

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2017-10-27 18:22:13 -06:00
Philip Prindeville c79911b66d perl: modules failing due to dot not in @INC
5.26.1 introduced default_inc_excludes_dot which is causing
perl-html-tags and possibly other modules to fail.  Add explict
dot back when invoking module's ./Makefile.PL.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2017-10-27 15:43:14 -06:00
Philip Prindeville 4a94479f96 perl: update to 5.26.1
Required changes:

* Add qualifying '.' to scripts or to @INC, as appropriate since we're
  enabling default_inc_excludes_dot;

* Add new platform/library definitions like double-double format and
  locale library functions/headers;

* Delete patch 020 as it's been upstreamed;

Optional changes:

* Instead of using -@rm and having that fail, emit an error message,
  and be ignored, just use @rm -f instead which will always succeed.

Security
[CVE-2017-12837] Heap buffer overflow in regular expression compiler

Compiling certain regular expression patterns with the case-insensitive
modifier could cause a heap buffer overflow and crash perl. This has
now been fixed. [perl #131582]

[CVE-2017-12883] Buffer over-read in regular expression parser

For certain types of syntax error in a regular expression pattern, the
error message could either contain the contents of a random, possibly
large, chunk of memory, or could crash perl. This has now been fixed.
[perl #131598]

[CVE-2017-12814] $ENV{$key} stack buffer overflow on Windows

A possible stack buffer overflow in the %ENV code on Windows has been
fixed by removing the buffer completely since it was superfluous anyway.
[perl #131665]

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2017-10-24 11:40:34 -06:00
Michail Frolov 571a810fd4 lang/perl: Upgraded to Perl 5.24.1
Signed-off-by: Michail Frolov <frolovm@pobox.com>
2017-05-10 14:46:25 -04:00
Hannu Nyman 19bb3f7eaf Merge pull request #3740 from pprindeville/fix-perlmod-stripping
perlmod: global knob to disable comment stripping modules
2017-01-11 23:39:14 +02:00
Philip Prindeville 785b67a27e perlmod: global knob to disable comment stripping modules
Certain strings are misinterpreted as comments by perlmod.mk and removed
when they shouldn't be (in particular, perl-cgi).  Enable this whenever
you have sufficient flash space.

Globally, CONFIG_PERL_NOCOMMENT=y (default) causes comments to be stripped
as before.  However, a package (like perl-cgi) can override this with
PKG_LEAVE_COMMENTS=1.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
2017-01-11 14:31:09 -07:00
Matthias Schiffer 4a984a8d60
treewide: replace $(STAGING_DIR)/host and $(HOST_BUILD_PREFIX) with $(STAGING_DIR_HOSTPKG)
As both LEDE and OpenWrt have STAGING_DIR_HOSTPKG now, we can start to rely
on it. See 73b7f55424 for more information on
STAGING_DIR_HOSTPKG.

STAGING_DIR_HOSTPKG won't actually be changed before the first LEDE release
(it is equivalent to $(STAGING_DIR)/host), so this simple search/replace
cleanup is safe to apply. Doing this cleanup now will be useful for the
Gluon project (an OpenWrt/LEDE based firmware framework) for experimenting
with modifying STAGING_DIR_HOSTPKG before doing this in the LEDE upstream.

Also fixes a typo in the dbus Makefile ("STAGIND_DIR").

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2017-01-10 18:25:54 +01:00
Felix Fietkau 9f8e5aca34 treewide: use $(STAGING_DIR)/host instead of $(STAGING_DIR_HOST), sync with changes in trunk
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2016-01-20 21:56:03 +01:00
Marcel Denia 1c8c372e9c perl: Properly override PERL_INC for subdirectory builds
Signed-off-by: Marcel Denia <naoir@gmx.net>
2015-09-14 15:33:18 +02:00
Marcel Denia 7a545cc9b3 perl: Update to 5.22.0
Signed-off-by: Marcel Denia <naoir@gmx.net>
2015-06-18 23:58:45 +02:00
Marcel Denia 273d4bd6a7 perl: Have perl's major version number in one central place
This will simplify updating the package in the future.

Signed-off-by: Marcel Denia <naoir@gmx.net>
2015-06-18 23:58:45 +02:00
Marcel Denia 3c7528d2f4 perl: Pass _LARGEFILE_SOURCE and _FILE_OFFSET_BITS in cflags
Fixes broken largefile support.

Signed-off-by: Marcel Denia <naoir@gmx.net>
2015-05-27 02:03:56 +02:00
Marcel Denia 3f7e3977a5 perl: Allow changing the default directory for perlmod/Compile
Signed-off-by: Marcel Denia <naoir@gmx.net>
2015-05-27 02:03:56 +02:00
Marcel Denia 828800508d perl: Add "-rdynamic" to LDDLFLAGS override in perlmod/Configure
perl would have done the same.

Signed-off-by: Marcel Denia <naoir@gmx.net>
2015-05-27 02:03:56 +02:00
Marcel Denia 9474e497c6 perl: Override cpprun configuration symbol
This will not change any existing packages' functionality. All packages
that used this symbol before during build(with it's value being "cc  -E") most
likely would've failed compilation.
Note that this change is only in effect during build.

Signed-off-by: Marcel Denia <naoir@gmx.net>
2015-05-27 02:03:56 +02:00
Marcel Denia c6d65000d8 perl: Allow changing the default directory for perlmod/Configure
Signed-off-by: Marcel Denia <naoir@gmx.net>
2015-05-27 02:03:56 +02:00
John Crispin 98be2ca3e0 global: change all instances of USE_EGLIBC to USE_GLIBC
Signed-off-by: John Crispin <blogic@openwrt.org>
2015-03-12 20:52:37 +01:00
Marcel Denia 7236fe401f perl: Provide correct CFLAGS through perlmod.mk
In case threading is enabled, perl is compiled with -D_REENTRANT
and -D_GNU_SOURCE, which, apart from other things, enables usage
of off64_t. As we override module CFLAGS manually, we'll have to
pass that flags as well.

Signed-off-by: Marcel Denia <naoir@gmx.net>
2015-02-07 23:22:54 +01:00
Marcel Denia 1549919b71 perl: Also strip begin, end and for pragmas
Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-11-06 08:18:42 +01:00
Marcel Denia 95058be605 perl: Add basic test support
Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-11-06 08:18:42 +01:00
Marcel Denia c56aabec0e perl: Add perlmod host rules
Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-08-14 17:14:22 +02:00
Marcel Denia 3e7876c22f lang/perl: Strip encoding pragma
The "encoding" pragma is officially deprecated.
Makes HTML::Parser/HTML::Entities work.

Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-07-24 03:04:31 +02:00
Marcel Denia d94b738420 lang/perl: Use target headers for external modules
Before, external modules actually used host-perl headers.
Aside from obviously being the wrong thing to do, it made them misbehave if
host and target architectures differ too much.

Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-07-22 16:21:38 +02:00
Marcel Denia e04bd7368a lang/perl: Override CCFLAGS configuration symbol in perlmod
This makes external perl modules compile their native code with the
correct CFLAGS, not with the one host-perl is using.

Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-07-21 03:29:17 +02:00
Marcel Denia 2bc4222ffb lang/perl: Clean up, add comments
Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-07-19 08:19:10 +02:00
Marcel Denia cc07017bb6 lang/perl: Override perl configuration symbols for cross-compile
Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-07-19 08:19:01 +02:00
Marcel Denia c72b4ba933 lang/perl: Update paths in perlmod.mk
Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-07-19 08:18:58 +02:00
Marcel Denia eb52e56950 lang/perl: Remove PERL_LIB from perlmod.mk
Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-07-19 08:18:37 +02:00
Marcel Denia e7263f63ca lang/perl: Fix paths in perlmod.mk
Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-07-07 22:54:13 +02:00
Marcel Denia 6420bbd712 Import of oldpackages/perl
Signed-off-by: Marcel Denia <naoir@gmx.net>
2014-07-07 22:54:12 +02:00