Initial commit

This commit is contained in:
Your Name
2026-04-23 17:07:55 +08:00
commit b7e39e063b
16725 changed files with 1625565 additions and 0 deletions
@@ -0,0 +1,24 @@
From a033c9ece12b6eead48eed63f106ccdec6159b0c Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 20 Dec 2019 16:26:55 +0100
Subject: [PATCH] CheckLib.pm: do not attempt to run a cross executable
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
inc/Devel/CheckLib.pm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/inc/Devel/CheckLib.pm b/inc/Devel/CheckLib.pm
index 36a451a..b04acc1 100644
--- a/inc/Devel/CheckLib.pm
+++ b/inc/Devel/CheckLib.pm
@@ -330,7 +330,7 @@ sub assert_lib {
push @missing, $lib if $rv != 0 || !-x $exefile;
my $absexefile = File::Spec->rel2abs($exefile);
$absexefile = '"' . $absexefile . '"' if $absexefile =~ m/\s/;
- push @wrongresult, $lib if $rv == 0 && -x $exefile && system($absexefile) != 0;
+ push @wrongresult, $lib if $rv == 0 && -x $exefile && 0 != 0;
unlink $ofile if -e $ofile;
_cleanup_exe($exefile);
}
@@ -0,0 +1,34 @@
From e8e095b9c71c58f8197d6315359446b6b084cb2b Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 5 Jun 2018 14:58:42 +0300
Subject: [PATCH] Somehow this module breaks through the perl wrapper and
declares perl binary to be 'perl.real'. This patch forces it back to perl.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
index 948c476..f537526 100644
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
@@ -1110,6 +1110,9 @@ WARNING
}
foreach my $name (@$names){
+ # Getting MakeMaker.pm use perl wrapper instead of 'perl.real' directly
+ $name =~ s/perl\.real/perl/ if ($name =~ /perl\.real/);
+
my ($abs, $use_dir);
if ($self->file_name_is_absolute($name)) { # /foo/bar
$abs = $name;
@@ -2006,6 +2009,7 @@ sub init_PERL {
$self->{PERL} ||=
$self->find_perl(5.0, \@perls, \@defpath, $Verbose );
+
my $perl = $self->{PERL};
$perl =~ s/^"//;
@@ -0,0 +1,36 @@
From a73fff1fcf0def4ce93964f1b63fe3ad0967259d Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Fri, 18 Feb 2022 09:44:26 +0000
Subject: [PATCH] cpan/Sys-Syslog/Makefile.PL: Fix _PATH_LOG for deterministic
It checks host's path such as /dev/log and uses it, this doesn't make sense for
cross build, and it causes undeterministic, for example, the contianer os
usually doesn't have /dev/log which leads to a different build result since
other host usually has /dev/log, so make it always use the default value to fix
the issue.
Submitted a ticket to upstream: https://rt.cpan.org/Ticket/Display.html?id=141612
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
cpan/Sys-Syslog/Makefile.PL | 2 ++
1 file changed, 2 insertions(+)
diff --git a/cpan/Sys-Syslog/Makefile.PL b/cpan/Sys-Syslog/Makefile.PL
index d09ba69..d44e58c 100644
--- a/cpan/Sys-Syslog/Makefile.PL
+++ b/cpan/Sys-Syslog/Makefile.PL
@@ -130,6 +130,8 @@ else {
$_PATH_LOG = "";
}
+# OE specific
+$_PATH_LOG = "";
# if possible, generate the code that handles the constants with
# ExtUtils::Constant, otherwise use cached copy in fallback/
--
2.31.1
@@ -0,0 +1,32 @@
From 260ebd15e16cd86b9b58e5c5f3a496b3853ca46d Mon Sep 17 00:00:00 2001
From: Joshua Watt <JPEWhacker@gmail.com>
Date: Mon, 17 Jun 2019 10:47:23 -0500
Subject: [PATCH 2/2] Constant: Fix up shebang
The instructions indicate that the script should be explicitly passed to
"perl -x", so automatically setting the #! to be ^X is unnecessary and
makes the file non-reproducible when building because ^X could be the
absolute path to miniperl.
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Upstream-Status: Submitted [https://rt.cpan.org/Public/Bug/Display.html?id=129866]
---
cpan/ExtUtils-Constant/lib/ExtUtils/Constant/XS.pm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/XS.pm b/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/XS.pm
index 14eb809714..d4d074e121 100644
--- a/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/XS.pm
+++ b/cpan/ExtUtils-Constant/lib/ExtUtils/Constant/XS.pm
@@ -219,7 +219,7 @@ sub dogfood {
Regenerate these constant functions by feeding this entire source file to
perl -x
-#!$^X -w
+#!/usr/bin/env perl -x -w
use ExtUtils::Constant qw (constant_types C_constant XS_constant);
EOT
--
2.21.0
@@ -0,0 +1,29 @@
From a625ec2cc3a0b6116c1f8b831d3480deb621c245 Mon Sep 17 00:00:00 2001
From: Stig Palmquist <git@stig.io>
Date: Tue, 28 Feb 2023 11:54:06 +0100
Subject: [PATCH] Add verify_SSL=>1 to HTTP::Tiny to verify https server
identity
CVE: CVE-2023-31484
Upstream-Status: Backport [https://github.com/andk/cpanpm/commit/9c98370287f4e709924aee7c58ef21c85289a7f0]
Signed-off-by: Soumya <soumya.sambu@windriver.com>
---
cpan/CPAN/lib/CPAN/HTTP/Client.pm | 1 +
1 file changed, 1 insertion(+)
diff --git a/cpan/CPAN/lib/CPAN/HTTP/Client.pm b/cpan/CPAN/lib/CPAN/HTTP/Client.pm
index 4fc792c..a616fee 100644
--- a/cpan/CPAN/lib/CPAN/HTTP/Client.pm
+++ b/cpan/CPAN/lib/CPAN/HTTP/Client.pm
@@ -32,6 +32,7 @@ sub mirror {
my $want_proxy = $self->_want_proxy($uri);
my $http = HTTP::Tiny->new(
+ verify_SSL => 1,
$want_proxy ? (proxy => $self->{proxy}) : ()
);
--
2.40.0
@@ -0,0 +1,217 @@
From 77f557ef84698efeb6eed04e4a9704eaf85b741d
From: Stig Palmquist <git@stig.io>
Date: Mon Jun 5 16:46:22 2023 +0200
Subject: [PATCH] Change verify_SSL default to 1, add ENV var to enable
insecure default
- Changes the `verify_SSL` default parameter from `0` to `1`
Based on patch by Dominic Hargreaves:
https://salsa.debian.org/perl-team/interpreter/perl/-/commit/1490431e40e22052f75a0b3449f1f53cbd27ba92
CVE: CVE-2023-31486
- Add check for `$ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT}` that
enables the previous insecure default behaviour if set to `1`.
This provides a workaround for users who encounter problems with the
new `verify_SSL` default.
Example to disable certificate checks:
```
$ PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT=1 ./script.pl
```
- Updates to documentation:
- Describe changing the verify_SSL value
- Describe the escape-hatch environment variable
- Remove rationale for not enabling verify_SSL
- Add missing certificate search paths
- Replace "SSL" with "TLS/SSL" where appropriate
- Use "machine-in-the-middle" instead of "man-in-the-middle"
Upstream-Status: Backport [https://github.com/chansen/p5-http-tiny/commit/77f557ef84698efeb6eed04e4a9704eaf85b741d]
Signed-off-by: Soumya <soumya.sambu@windriver.com>
---
cpan/HTTP-Tiny/lib/HTTP/Tiny.pm | 86 ++++++++++++++++++++++-----------
1 file changed, 57 insertions(+), 29 deletions(-)
diff --git a/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm b/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
index 83ca06d..ebc34a1 100644
--- a/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
+++ b/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
@@ -40,10 +40,14 @@ sub _croak { require Carp; Carp::croak(@_) }
#pod * C<timeout> — Request timeout in seconds (default is 60) If a socket open,
#pod read or write takes longer than the timeout, the request response status code
#pod will be 599.
-#pod * C<verify_SSL> — A boolean that indicates whether to validate the SSL
-#pod certificate of an C<https> — connection (default is false)
+#pod * C<verify_SSL> — A boolean that indicates whether to validate the TLS/SSL
+#pod certificate of an C<https> — connection (default is true). Changed from false
+#pod to true in version 0.083.
#pod * C<SSL_options> — A hashref of C<SSL_*> — options to pass through to
#pod L<IO::Socket::SSL>
+#pod * C<$ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT}> - Changes the default
+#pod certificate verification behavior to not check server identity if set to 1.
+#pod Only effective if C<verify_SSL> is not set. Added in version 0.083.
#pod
#pod An accessor/mutator method exists for each attribute.
#pod
@@ -111,11 +115,17 @@ sub timeout {
sub new {
my($class, %args) = @_;
+ # Support lower case verify_ssl argument, but only if verify_SSL is not
+ # true.
+ if ( exists $args{verify_ssl} ) {
+ $args{verify_SSL} ||= $args{verify_ssl};
+ }
+
my $self = {
max_redirect => 5,
timeout => defined $args{timeout} ? $args{timeout} : 60,
keep_alive => 1,
- verify_SSL => $args{verify_SSL} || $args{verify_ssl} || 0, # no verification by default
+ verify_SSL => defined $args{verify_SSL} ? $args{verify_SSL} : _verify_SSL_default(),
no_proxy => $ENV{no_proxy},
};
@@ -134,6 +144,13 @@ sub new {
return $self;
}
+sub _verify_SSL_default {
+ my ($self) = @_;
+ # Check if insecure default certificate verification behaviour has been
+ # changed by the user by setting PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT=1
+ return (($ENV{PERL_HTTP_TINY_INSECURE_BY_DEFAULT} || '') eq '1') ? 0 : 1;
+}
+
sub _set_proxies {
my ($self) = @_;
@@ -1055,7 +1072,7 @@ sub new {
timeout => 60,
max_line_size => 16384,
max_header_lines => 64,
- verify_SSL => 0,
+ verify_SSL => HTTP::Tiny::_verify_SSL_default(),
SSL_options => {},
%args
}, $class;
@@ -2043,11 +2060,11 @@ proxy
timeout
verify_SSL
-=head1 SSL SUPPORT
+=head1 TLS/SSL SUPPORT
Direct C<https> connections are supported only if L<IO::Socket::SSL> 1.56 or
greater and L<Net::SSLeay> 1.49 or greater are installed. An error will occur
-if new enough versions of these modules are not installed or if the SSL
+if new enough versions of these modules are not installed or if the TLS
encryption fails. You can also use C<HTTP::Tiny::can_ssl()> utility function
that returns boolean to see if the required modules are installed.
@@ -2055,7 +2072,7 @@ An C<https> connection may be made via an C<http> proxy that supports the CONNEC
command (i.e. RFC 2817). You may not proxy C<https> via a proxy that itself
requires C<https> to communicate.
-SSL provides two distinct capabilities:
+TLS/SSL provides two distinct capabilities:
=over 4
@@ -2069,24 +2086,17 @@ Verification of server identity
=back
-B<By default, HTTP::Tiny does not verify server identity>.
-
-Server identity verification is controversial and potentially tricky because it
-depends on a (usually paid) third-party Certificate Authority (CA) trust model
-to validate a certificate as legitimate. This discriminates against servers
-with self-signed certificates or certificates signed by free, community-driven
-CA's such as L<CAcert.org|http://cacert.org>.
+B<By default, HTTP::Tiny verifies server identity>.
-By default, HTTP::Tiny does not make any assumptions about your trust model,
-threat level or risk tolerance. It just aims to give you an encrypted channel
-when you need one.
+This was changed in version 0.083 due to security concerns. The previous default
+behavior can be enabled by setting C<$ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT}>
+to 1.
-Setting the C<verify_SSL> attribute to a true value will make HTTP::Tiny verify
-that an SSL connection has a valid SSL certificate corresponding to the host
-name of the connection and that the SSL certificate has been verified by a CA.
-Assuming you trust the CA, this will protect against a L<man-in-the-middle
-attack|http://en.wikipedia.org/wiki/Man-in-the-middle_attack>. If you are
-concerned about security, you should enable this option.
+Verification is done by checking that that the TLS/SSL connection has a valid
+certificate corresponding to the host name of the connection and that the
+certificate has been verified by a CA. Assuming you trust the CA, this will
+protect against L<machine-in-the-middle
+attacks|http://en.wikipedia.org/wiki/Machine-in-the-middle_attack>.
Certificate verification requires a file containing trusted CA certificates.
@@ -2094,9 +2104,7 @@ If the environment variable C<SSL_CERT_FILE> is present, HTTP::Tiny
will try to find a CA certificate file in that location.
If the L<Mozilla::CA> module is installed, HTTP::Tiny will use the CA file
-included with it as a source of trusted CA's. (This means you trust Mozilla,
-the author of Mozilla::CA, the CPAN mirror where you got Mozilla::CA, the
-toolchain used to install it, and your operating system security, right?)
+included with it as a source of trusted CA's.
If that module is not available, then HTTP::Tiny will search several
system-specific default locations for a CA certificate file:
@@ -2115,13 +2123,33 @@ system-specific default locations for a CA certificate file:
/etc/ssl/ca-bundle.pem
+=item *
+
+/etc/openssl/certs/ca-certificates.crt
+
+=item *
+
+/etc/ssl/cert.pem
+
+=item *
+
+/usr/local/share/certs/ca-root-nss.crt
+
+=item *
+
+/etc/pki/tls/cacert.pem
+
+=item *
+
+/etc/certs/ca-certificates.crt
+
=back
An error will be occur if C<verify_SSL> is true and no CA certificate file
is available.
-If you desire complete control over SSL connections, the C<SSL_options> attribute
-lets you provide a hash reference that will be passed through to
+If you desire complete control over TLS/SSL connections, the C<SSL_options>
+attribute lets you provide a hash reference that will be passed through to
C<IO::Socket::SSL::start_SSL()>, overriding any options set by HTTP::Tiny. For
example, to provide your own trusted CA file:
@@ -2131,7 +2159,7 @@ example, to provide your own trusted CA file:
The C<SSL_options> attribute could also be used for such things as providing a
client certificate for authentication to a server or controlling the choice of
-cipher used for the SSL connection. See L<IO::Socket::SSL> documentation for
+cipher used for the TLS/SSL connection. See L<IO::Socket::SSL> documentation for
details.
=head1 PROXY SUPPORT
--
2.40.0
@@ -0,0 +1,36 @@
From a22785783b17cbaa28afaee4a024d81a1903701d
From: Stig Palmquist <git@stig.io>
Date: Sun Jun 18 11:36:05 2023 +0200
Subject: [PATCH] Fix incorrect env var name for verify_SSL default
The variable to override the verify_SSL default differed slightly in the
documentation from what was checked for in the code.
This commit makes the code use `PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT`
as documented, instead of `PERL_HTTP_TINY_INSECURE_BY_DEFAULT` which was
missing `SSL_`
CVE: CVE-2023-31486
Upstream-Status: Backport [https://github.com/chansen/p5-http-tiny/commit/a22785783b17cbaa28afaee4a024d81a1903701d]
Signed-off-by: Soumya <soumya.sambu@windriver.com>
---
cpan/HTTP-Tiny/lib/HTTP/Tiny.pm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm b/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
index ebc34a1..65ac8ff 100644
--- a/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
+++ b/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
@@ -148,7 +148,7 @@ sub _verify_SSL_default {
my ($self) = @_;
# Check if insecure default certificate verification behaviour has been
# changed by the user by setting PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT=1
- return (($ENV{PERL_HTTP_TINY_INSECURE_BY_DEFAULT} || '') eq '1') ? 0 : 1;
+ return (($ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT} || '') eq '1') ? 0 : 1;
}
sub _set_proxies {
--
2.40.0
@@ -0,0 +1,45 @@
Fixes to make the perl build reproducible:
a) Remove the \n from configure_attr.sh since it gets quoted differently depending on
whether the shell is bash or dash which can cause the test result to be incorrect.
Reported upstream: https://github.com/arsv/perl-cross/issues/87
b) Sort the order of the module lists from configure_mods.sh since otherwise
the result isn't the same leading to makefile differences.
Reported upstream: https://github.com/arsv/perl-cross/issues/88
c) Sort the Encode::Byte byte_t.fnm file output (and the makefile depends whilst
there for good measure)
This needs to go to upstream perl (not done)
d) Use bash for perl-cross configure since otherwise trnl gets set to "\n" with bash
and "" with dash
Reported upstream: https://github.com/arsv/perl-cross/issues/87
RP 2020/2/7
Upstream-Status: Pending [75% submitted]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org
Index: perl-5.30.1/cpan/Encode/Byte/Makefile.PL
===================================================================
--- perl-5.30.1.orig/cpan/Encode/Byte/Makefile.PL
+++ perl-5.30.1/cpan/Encode/Byte/Makefile.PL
@@ -171,7 +171,7 @@ sub postamble
my $lengthsofar = length($str);
my $continuator = '';
$str .= "$table.c : $enc2xs Makefile.PL";
- foreach my $file (@{$tables{$table}})
+ foreach my $file (sort (@{$tables{$table}}))
{
$str .= $continuator.' '.$self->catfile($dir,$file);
if ( length($str)-$lengthsofar > 128*$numlines )
@@ -189,7 +189,7 @@ sub postamble
qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n};
open (FILELIST, ">$table.fnm")
|| die "Could not open $table.fnm: $!";
- foreach my $file (@{$tables{$table}})
+ foreach my $file (sort (@{$tables{$table}}))
{
print FILELIST $self->catfile($dir,$file) . "\n";
}
@@ -0,0 +1,20 @@
The code is encoding host compiler parameters into target builds. Avoid
this for our target builds (patch is target specific, not native)
Upstream-Status: Inappropriate [Cross compile hack]
RP 2020/2/18
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Index: perl-5.30.1/cpan/Encode/bin/enc2xs
===================================================================
--- perl-5.30.1.orig/cpan/Encode/bin/enc2xs
+++ perl-5.30.1/cpan/Encode/bin/enc2xs
@@ -195,7 +195,7 @@ sub compiler_info {
# above becomes false.
my $sized = $declaration && !($compat && !$pedantic);
- return ($cpp, $static, $sized);
+ return (0, 1, 1);
}
@@ -0,0 +1,37 @@
From 8e1efba7560d8d55524c7a0f1b0539ddce419b86 Mon Sep 17 00:00:00 2001
From: Brendan O'Dea <bod@debian.org>
Date: Fri, 16 Dec 2005 01:32:14 +1100
Subject: [PATCH 6/8] Remove Errno version check due to upgrade problems with
long-running processes.
Bug-Debian: http://bugs.debian.org/343351
Remove version check which can cause problems for long running
processes embedding perl when upgrading to a newer version,
compatible, but built on a different machine.
Patch-Name: debian/errno_ver.diff
Upstream-Status: Pending
---
ext/Errno/Errno_pm.PL | 5 -----
1 file changed, 5 deletions(-)
diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL
index 6251a3c..eeed445 100644
--- a/ext/Errno/Errno_pm.PL
+++ b/ext/Errno/Errno_pm.PL
@@ -294,11 +294,6 @@ EDQ
# they've already declared perl doesn't need to worry about this risk.
if(!$ENV{'PERL_BUILD_EXPAND_CONFIG_VARS'}) {
print <<"CONFIG_CHECK_END";
-use Config;
-"\$Config{'archname'}-\$Config{'osvers'}" eq
-"$archname-$Config{'osvers'}" or
- die "Errno architecture ($archname-$Config{'osvers'}) does not match executable architecture (\$Config{'archname'}-\$Config{'osvers'})";
-
CONFIG_CHECK_END
}
--
2.1.4
@@ -0,0 +1,27 @@
Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Index: perl-5.8.8/lib/ExtUtils/MM_Unix.pm
===================================================================
--- perl-5.12.3.orig/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2008-10-31 22:01:35.000000000 +0000
+++ perl-5.12.3/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2008-10-31 22:01:35.000000000 +0000
@@ -1597,6 +1597,19 @@
$self->{PERL_LIB} ||= $Config{privlibexp};
$self->{PERL_ARCHLIB} ||= $Config{archlibexp};
$self->{PERL_INC} = $self->catdir("$self->{PERL_ARCHLIB}","CORE"); # wild guess for now
+ # Check for environment override so we'll find the headers in the correct place
+ if (defined $ENV{PERL_LIB})
+ {
+ $self->{PERL_LIB} = $ENV{PERL_LIB};
+ }
+ if (defined $ENV{PERL_ARCHLIB})
+ {
+ $self->{PERL_ARCHLIB} = $ENV{PERL_ARCHLIB};
+ }
+ if (defined $ENV{PERL_INC})
+ {
+ $self->{PERL_INC} = $ENV{PERL_INC};
+ }
my $perl_h;
if (not -f ($perl_h = $self->catfile($self->{PERL_INC},"perl.h"))
@@ -0,0 +1,57 @@
From e789c1a0c9de5928a3b49f5b9d81b63636f5c7bb Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Sun, 27 May 2007 21:04:11 +0000
Subject: [PATCH] perl: 5.8.7 -> 5.8.8 (from OE)
This patch is used for perl-native only. It enables the switching of
configuration files between Config_heavy.pl and
Config_heavy-target.pl by setting the environment variables
PERLCONFIGTARGET - the later containing settings for the target while
the former contains those for the host. This will allow cpan.bbclass
to use the settings appropriate for the native and/or target builds
as required. This also disables the use of the cache since the cached
values would be valid for the host only.
Upstream-Status: Inappropriate [native]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
configpm | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/configpm b/configpm
index 94a4778..99b20c9 100755
--- a/configpm
+++ b/configpm
@@ -687,7 +687,7 @@ sub FETCH {
my($self, $key) = @_;
# check for cached value (which may be undef so we use exists not defined)
- return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key);
+ return $self->fetch_string($key);
}
ENDOFEND
@@ -845,7 +845,21 @@ $config_txt .= sprintf <<'ENDOFTIE', $fast_config;
sub DESTROY { }
sub AUTOLOAD {
- require 'Config_heavy.pl';
+ my $cfgfile = 'Config_heavy.pl';
+ if (defined $ENV{PERLCONFIGTARGET} and $ENV{PERLCONFIGTARGET} eq "yes")
+ {
+ $cfgfile = 'Config_heavy-target.pl';
+ }
+ if (defined $ENV{PERL_ARCHLIB})
+ {
+ push @INC, $ENV{PERL_ARCHLIB};
+ require $cfgfile;
+ pop @INC;
+ }
+ else
+ {
+ require $cfgfile;
+ }
goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
}
@@ -0,0 +1,38 @@
Upstream-Status: Inappropriate [embedded specific]
Allow the location that .so files are searched for for dynamic
loading to be changed via an environment variable. This is to allow
us to load .so's from the host system while building for the target
system.
Update by Nitin A Kamble <nitin.a.kamble@intel.com> 2011/04/21
Index: perl-5.24.1/dist/XSLoader/XSLoader_pm.PL
===================================================================
--- perl-5.24.1.orig/dist/XSLoader/XSLoader_pm.PL
+++ perl-5.24.1/dist/XSLoader/XSLoader_pm.PL
@@ -52,6 +52,24 @@ sub load {
my ($caller, $modlibname) = caller();
my $module = $caller;
+ # OE: Allow env to form dynamic loader to look in a different place
+ # This is so it finds the host .so files, not the targets
+ if (defined $ENV{PERLHOSTLIB})
+ {
+ my $hostlib = $ENV{PERLHOSTLIB};
+ my $hostarchlib = $ENV{PERLHOSTARCHLIB};
+ print STDERR "*** Module name IN: $modlibname\n";
+ my ($p1, $p2, $p3, $p4, $p5, $p6, $p7) = $modlibname =~ m/(^(.*lib\w*\/)?)((perl5\/[0-9\.]*\/)?)(([^\/]*)\/)?(.*)$/;
+ print STDERR "*** p1: $p1 p3: $p3 p5: $p5 p7: $p7\n";
+ if ( $p1 ne "" ) {
+ $modlibname = $hostlib.$p7;
+ }
+ if ( $p6 ne "" ) {
+ $modlibname = $hostarchlib.$p7;
+ }
+ print STDERR "*** Module name OUT: $modlibname\n";
+ }
+
if (@_) {
$module = $_[0];
} else {
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,2 @@
#!/bin/sh
cd t && PERL_BUILD_PACKAGING=1 ./TEST | sed -u -e 's|\(.*\) .* ok$|PASS: \1|' -e 's|\(.*\) .* skipped|SKIP: \1|' -e 's|\(.*\) \.\(.*\)|FAIL: \1|'
@@ -0,0 +1,49 @@
SUMMARY = "Error - Error/exception handling in an OO-ish way"
DESCRIPTION = "The Error package provides two interfaces. Firstly \
Error provides a procedural interface to exception handling. \
Secondly Error is a base class for errors/exceptions that can \
either be thrown, for subsequent catch, or can simply be recorded."
HOMEPAGE = "https://github.com/shlomif/perl-error.pm"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=8f3499d09ee74a050c0319391ff9d100"
PR = "r1"
DEPENDS += "perl"
RDEPENDS:${PN} += " \
perl-module-carp \
perl-module-exporter \
perl-module-scalar-util \
perl-module-overload \
perl-module-strict \
perl-module-vars \
perl-module-warnings \
"
RDEPENDS:${PN}-ptest += " \
perl-module-base \
perl-module-file-spec \
perl-module-io-handle \
perl-module-ipc-open3 \
perl-module-lib \
perl-module-test-more \
"
SRC_URI = "http://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Error-${PV}.tar.gz"
SRC_URI[md5sum] = "6732b1c6207e4a9a3e2987c88368039a"
SRC_URI[sha256sum] = "1a23f7913032aed6d4b68321373a3899ca66590f4727391a091ec19c95bf7adc"
S = "${WORKDIR}/Error-${PV}"
inherit cpan ptest-perl
do_install:prepend() {
# test requires "-T" (taint) command line option
rm -rf ${B}/t/pod-coverage.t
}
BBCLASSEXTEND = "native"
@@ -0,0 +1,14 @@
#!/bin/sh
for case in `find t -type f -name '*.t'`; do
perl -I inc -I blib -Mblib $case >$case.output 2>&1
ret=$?
cat $case.output
if [ $ret -ne 0 ]; then
echo "FAIL: ${case%.t}"
else
echo "PASS: ${case%.t}"
fi
rm -f $case.output
done
@@ -0,0 +1,138 @@
SUMMARY = "Module::Build - Build and install Perl modules"
DESCRIPTION = "Many Perl distributions use a Build.PL file instead of a \
Makefile.PL file to drive distribution configuration, build, test and \
installation. Traditionally, Build.PL uses Module::Build as the underlying \
build system. This module provides a simple, lightweight, drop-in replacement. \
Whereas Module::Build has over 6,700 lines of code; this module has less than \
120, yet supports the features needed by most distributions."
SECTION = "libs"
HOMEPAGE = "https://metacpan.org/release/Module-Build"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
LIC_FILES_CHKSUM = "file://README;beginline=881;endline=886;md5=3027f56c664545e54678c26b7f1ac19c"
SRC_URI = "${CPAN_MIRROR}/authors/id/L/LE/LEONT/Module-Build-${PV}.tar.gz \
file://run-ptest \
"
SRC_URI[sha256sum] = "66aeac6127418be5e471ead3744648c766bd01482825c5b66652675f2bc86a8f"
S = "${WORKDIR}/Module-Build-${PV}"
inherit cpan_build ptest-perl
# From:
# https://github.com/rehsack/meta-cpan/blob/master/recipes-devel/module-build-perl/module-build-perl_0.4216.bb
#
do_patch_module_build () {
cd ${S}
sed -i -e 's,my $interpreter = $self->{properties}{perl};,my $interpreter = "${bindir}/perl";,g' lib/Module/Build/Base.pm
}
do_patch[postfuncs] += "do_patch_module_build"
EXTRA_CPAN_BUILD_FLAGS = "--create_packlist=0"
do_install:prepend () {
# We do not have a recipe for libpod-parser-perl which is for
# documentation (and is deprecated in favor of Pod::Simple)
rm -rf ${B}/t/pod_parser.t
}
do_install:append () {
rm -rf ${D}${docdir}/perl/html
sed -i "s:^#!.*:#!/usr/bin/env perl:" ${D}${bindir}/config_data
}
do_install_ptest() {
cp -r ${B}/inc ${D}${PTEST_PATH}
cp -r ${B}/blib ${D}${PTEST_PATH}
cp -r ${B}/_build ${D}${PTEST_PATH}
cp -r ${B}/lib ${D}${PTEST_PATH}
chown -R root:root ${D}${PTEST_PATH}
sed -i -e "s,'perl' => .*,'perl' => '/usr/bin/perl'\,,g" \
-e "s,${STAGING_BINDIR_NATIVE}/perl-native/\.\.,${bindir}/,g" \
-e "s,${S},,g" \
-e "s,${D},,g" \
${D}${PTEST_PATH}/_build/build_params \
${D}${PTEST_PATH}/_build/runtime_params
rm -rf ${D}${PTEST_PATH}/blib/libhtml/site/lib/Module/
rm -rf ${D}${PTEST_PATH}/_build/magicnum
}
RDEPENDS:${PN} += " \
perl-module-carp \
perl-module-cpan \
perl-module-config \
perl-module-cwd \
perl-module-data-dumper \
perl-module-encode \
perl-module-extutils-cbuilder \
perl-module-extutils-command \
perl-module-extutils-install \
perl-module-extutils-installed \
perl-module-extutils-mkbootstrap \
perl-module-extutils-packlist \
perl-module-extutils-parsexs \
perl-module-file-basename \
perl-module-file-compare \
perl-module-file-copy \
perl-module-file-find \
perl-module-file-glob \
perl-module-file-path \
perl-module-file-spec \
perl-module-file-spec-functions \
perl-module-getopt-long \
perl-module-metadata \
perl-module-perl-ostype \
perl-module-pod-man \
perl-module-tap-harness \
perl-module-text-abbrev \
perl-module-text-parsewords \
perl-module-utf8 \
"
RDEPENDS:${PN}-ptest += " \
packagegroup-core-buildessential \
perl-dev \
perl-module-blib \
perl-module-encode-encoding \
perl-module-extutils-cbuilder-base \
perl-module-extutils-command-mm \
perl-module-extutils-mm-unix \
perl-module-file-temp \
perl-module-lib \
perl-module-parse-cpan-meta \
perl-module-perlio \
perl-module-perlio-encoding \
perl-module-pod-simple-transcodesmart \
perl-module-pod-text \
perl-module-tap-base \
perl-module-tap-formatter-base \
perl-module-tap-formatter-file \
perl-module-tap-formatter-session \
perl-module-tap-harness-env \
perl-module-tap-parser \
perl-module-tap-parser-scheduler \
perl-module-test-harness \
perl-module-test-more \
"
RPROVIDES:${PN} += "\
libmodule-build-base-perl \
libmodule-build-compat-perl \
libmodule-build-config-perl \
libmodule-build-cookbook-perl \
libmodule-build-dumper-perl \
libmodule-build-notes-perl \
libmodule-build-ppmaker-perl \
libmodule-build-platform-default-perl \
libmodule-build-platform-unix-perl \
libmodule-build-podparser-perl \
"
# t/xs.t RDEPENDS on "EXTERN.h" provided by perl-dev
INSANE_SKIP:${PN}-ptest = "dev-deps"
BBCLASSEXTEND = "native"
@@ -0,0 +1,36 @@
SUMMARY = "Incredibly simple helpers for testing code with exceptions"
DESCRIPTION = "Test::Fatal is an alternative to the popular Test::Exception.\
It does much less, but should allow greater flexibility in testing \
exception-throwing code with about the same amount of typing."
HOMEPAGE = "https://github.com/rjbs/Test-Fatal"
BUGTRACKER = "https://github.com/rjbs/Test-Fatal/issues"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=b5c851290cab1dda12fcfb0e9ec43639"
SRC_URI = "${CPAN_MIRROR}/authors/id/R/RJ/RJBS/Test-Fatal-${PV}.tar.gz"
SRC_URI[sha256sum] = "37dfffdafb84b762efe96b02fb2aa41f37026c73e6b83590db76229697f3c4a6"
S = "${WORKDIR}/Test-Fatal-${PV}"
inherit cpan ptest-perl
RDEPENDS:${PN} += "\
libtry-tiny-perl \
perl-module-carp \
perl-module-exporter \
perl-module-test-builder \
"
RDEPENDS:${PN}-ptest += "\
perl-module-extutils-makemaker \
perl-module-extutils-mm-unix \
perl-module-file-spec \
perl-module-overload \
perl-module-test-builder-tester \
perl-module-test-more \
"
BBCLASSEXTEND = "native nativesdk"
@@ -0,0 +1,28 @@
SUMMARY = "Skip tests when modules not available"
DESCRIPTION = "Skip test scripts if modules are not available. \
The requested modules will be loaded, and optionally have their versions \
checked. If the module is missing, the test script will be skipped. Modules \
that are found but fail to compile will exit with an error rather than skip."
HOMEPAGE = "https://metacpan.org/release/Test-Needs"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
CPAN_NAME = "Test-Needs"
CPAN_AUTHOR = "HAARG"
LIC_FILES_CHKSUM = "file://README;md5=3f3ccd21a0a48aa313db212cc3b1bc09;beginline=88;endline=89"
DEPENDS += "perl"
SRC_URI = "https://cpan.metacpan.org/authors/id/H/HA/${CPAN_AUTHOR}/${CPAN_NAME}-${PV}.tar.gz"
SRC_URI[sha256sum] = "923ffdc78fcba96609753e4bae26b0ba0186893de4a63cd5236e012c7c90e208"
S = "${WORKDIR}/${CPAN_NAME}-${PV}"
inherit cpan ptest-perl
RDEPENDS:${PN}-ptest += "perl-module-test-more perl-module-ipc-open3 perl-module-lib perl-module-version"
BBCLASSEXTEND = "native"
@@ -0,0 +1,39 @@
# Copyright (C) 2020 Jens Rehsack <sno@netbsd.org>
# Released under the MIT license (see COPYING.MIT for the terms)
SUMMARY = "Test::Warnings - Test for warnings and the lack of them"
DESCRIPTION = "If you've ever tried to use Test::NoWarnings to confirm there are no \
warnings generated by your tests, combined with the convenience of \
\\"done_testing\\" to not have to declare a test count, you'll have discovered \
that these two features do not play well together, as the test count will \
be calculated *before* the warnings test is run, resulting in a TAP error. \
(See "examples/test_nowarnings.pl" in this distribution for a \
demonstration.)"
HOMEPAGE = "https://github.com/karenetheridge/Test-Warnings"
BUGTRACKER = "https://rt.cpan.org/Public/Dist/Display.html?Name=Test-Warnings"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
LIC_FILES_CHKSUM = "file://LICENCE;md5=6f2b02f39e7d359efd9525fbc56c84a1"
SRC_URI = "${CPAN_MIRROR}/authors/id/E/ET/ETHER/Test-Warnings-${PV}.tar.gz"
SRC_URI[sha256sum] = "1e542909fef305e45563e9878ea1c3b0c7cef1b28bb7ae07eba2e1efabec477b"
S = "${WORKDIR}/Test-Warnings-${PV}"
inherit cpan ptest-perl
RDEPENDS:${PN} += "\
perl-module-test-builder \
"
# Many hidden dependencies and mysterious failures occur without full perl-modules
RDEPENDS:${PN}-ptest += "perl-modules"
do_install_ptest_perl:append () {
cp -r ${B}/t/lib ${D}${PTEST_PATH}/t/
chown -R root:root ${D}${PTEST_PATH}/t/lib
}
BBCLASSEXTEND = "native nativesdk"
@@ -0,0 +1,36 @@
SUMMARY = "Try::Tiny - Minimal try/catch with proper preservation of $@"
DESCRIPTION = "This module provides bare bones try/catch/finally statements \
that are designed to minimize common mistakes with eval blocks, and NOTHING \
else."
HOMEPAGE = "https://github.com/p5sagit/Try-Tiny"
BUGTRACKER = "https://rt.cpan.org/Public/Dist/Display.html?Name=Try-Tiny"
SECTION = "libs"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENCE;md5=5dc332c2d4aade55f5db244681000091"
SRC_URI = "${CPAN_MIRROR}/authors/id/E/ET/ETHER/Try-Tiny-${PV}.tar.gz"
SRC_URI[sha256sum] = "3300d31d8a4075b26d8f46ce864a1d913e0e8467ceeba6655d5d2b2e206c11be"
S = "${WORKDIR}/Try-Tiny-${PV}"
inherit cpan ptest-perl
RDEPENDS:${PN} += "\
perl-module-carp \
perl-module-constant \
perl-module-exporter \
"
RRECOMMENDS:${PN} += "\
perl-module-sub-util \
"
RDEPENDS:${PN}-ptest += "\
perl-module-extutils-makemaker \
perl-module-extutils-mm-unix \
perl-module-file-spec \
perl-module-if \
perl-module-test-more \
"
BBCLASSEXTEND = "native nativesdk"
@@ -0,0 +1,110 @@
From 858daa5047b00e7d5aa795302a9fad5504c8f0b9 Mon Sep 17 00:00:00 2001
From: Tim Orling <tim.orling@konsulko.com>
Date: Thu, 17 Nov 2022 16:33:20 -0800
Subject: [PATCH] Skip TODO test cases that fail
TODO cases report as "not ok" with ptest-runner
Upstream-Status: Inappropriate [ptest-runner specific]
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
---
t/escape-char.t | 20 ++++++++++----------
t/iri.t | 18 +++++++++---------
t/mailto.t | 12 ++++++------
3 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/t/escape-char.t b/t/escape-char.t
index c6ce79c..5e62ad5 100644
--- a/t/escape-char.t
+++ b/t/escape-char.t
@@ -6,16 +6,16 @@ use warnings;
use Test::More;
use URI ();
-TODO: {
- my $str = "http://foo/\xE9";
- utf8::upgrade($str);
- my $uri = URI->new($str);
-
- local $TODO = 'URI::Escape::escape_char misunderstands utf8';
-
- # http://foo/%C3%A9
- is("$uri", 'http://foo/%E9', 'correctly created a URI from a utf8-upgraded string');
-}
+#TODO: {
+# my $str = "http://foo/\xE9";
+# utf8::upgrade($str);
+# my $uri = URI->new($str);
+#
+# local $TODO = 'URI::Escape::escape_char misunderstands utf8';
+#
+# # http://foo/%C3%A9
+# is("$uri", 'http://foo/%E9', 'correctly created a URI from a utf8-upgraded string');
+#}
{
my $str = "http://foo/\xE9";
diff --git a/t/iri.t b/t/iri.t
index 2eb64b2..9c663c9 100644
--- a/t/iri.t
+++ b/t/iri.t
@@ -6,7 +6,7 @@ use Test::More;
use Config qw( %Config );
if (defined $Config{useperlio}) {
- plan tests=>26;
+ plan tests=>24;
} else {
plan skip_all=>'this perl doesn\'t support PerlIO layers';
}
@@ -60,17 +60,17 @@ is $u->as_iri, "http://➡.ws/";
# draft-duerst-iri-bis.txt examples (section 3.7.1):
is(URI->new("http://www.example.org/D%C3%BCrst")->as_iri, "http://www.example.org/D\xFCrst");
is(URI->new("http://www.example.org/D%FCrst")->as_iri, "http://www.example.org/D%FCrst");
-TODO: {
- local $TODO = "some chars (like U+202E, RIGHT-TO-LEFT OVERRIDE) need to stay escaped";
-is(URI->new("http://xn--99zt52a.example.org/%e2%80%ae")->as_iri, "http://\x{7D0D}\x{8C46}.example.org/%e2%80%ae");
-}
+#TODO: {
+# local $TODO = "some chars (like U+202E, RIGHT-TO-LEFT OVERRIDE) need to stay escaped";
+#is(URI->new("http://xn--99zt52a.example.org/%e2%80%ae")->as_iri, "http://\x{7D0D}\x{8C46}.example.org/%e2%80%ae");
+#}
# try some URLs that can't be IDNA encoded (fallback to encoded UTF8 bytes)
$u = URI->new("http://" . ("ü" x 128));
is $u, "http://" . ("%C3%BC" x 128);
is $u->host, ("\xC3\xBC" x 128);
-TODO: {
- local $TODO = "should ihost decode UTF8 bytes?";
- is $u->ihost, ("ü" x 128);
-}
+#TODO: {
+# local $TODO = "should ihost decode UTF8 bytes?";
+# is $u->ihost, ("ü" x 128);
+#}
is $u->as_iri, "http://" . ("ü" x 128);
diff --git a/t/mailto.t b/t/mailto.t
index 79e9a13..c68cfb2 100644
--- a/t/mailto.t
+++ b/t/mailto.t
@@ -48,12 +48,12 @@ $u = URI->new('mailto:user+detail@example.com');
is $u->to, 'user+detail@example.com', 'subaddress with `+` parsed correctly';
is $u, 'mailto:user+detail@example.com', '... and stringification works';
-TODO: {
- local $TODO = "We can't handle quoted local parts without properly parsing the email addresses";
- $u = URI->new('mailto:"foo bar+baz"@example.com');
- is $u->to, '"foo bar+baz"@example.com', 'address with quoted local part containing spaces is parsed correctly';
- is $u, 'mailto:%22foo%20bar+baz%22@example.com', '... and stringification works';
-}
+#TODO: {
+# local $TODO = "We can't handle quoted local parts without properly parsing the email addresses";
+# $u = URI->new('mailto:"foo bar+baz"@example.com');
+# is $u->to, '"foo bar+baz"@example.com', 'address with quoted local part containing spaces is parsed correctly';
+# is $u, 'mailto:%22foo%20bar+baz%22@example.com', '... and stringification works';
+#}
# RFC 5321 (4.1.3) - Address Literals
@@ -0,0 +1,56 @@
SUMMARY = "Perl module to manipulate and access URI strings"
DESCRIPTION = "This package contains the URI.pm module with friends. \
The module implements the URI class. URI objects can be used to access \
and manipulate the various components that make up these strings."
HOMEPAGE = "https://metacpan.org/dist/URI"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d8ca5f628bf2cd180bc4fa044cb8ef41"
SRC_URI = "${CPAN_MIRROR}/authors/id/O/OA/OALDERS/URI-${PV}.tar.gz \
file://0001-Skip-TODO-test-cases-that-fail.patch \
"
SRC_URI[sha256sum] = "5f7e42b769cb27499113cfae4b786c37d49e7c7d32dbb469602cd808308568f8"
S = "${WORKDIR}/URI-${PV}"
EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}"
inherit cpan ptest-perl
do_compile() {
export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
cpan_do_compile
}
do_install:prepend() {
# these tests require "-T" (taint) command line option
rm -rf ${B}/t/cwd.t
rm -rf ${B}/t/file.t
}
RDEPENDS:${PN} += "\
perl-module-integer \
perl-module-mime-base64 \
"
RDEPENDS:${PN}-ptest += " \
libtest-fatal-perl \
libtest-needs-perl \
libtest-warnings-perl \
perl-module-encode \
perl-module-encode-encoding \
perl-module-extutils-makemaker \
perl-module-extutils-mm-unix \
perl-module-file-spec-functions \
perl-module-net-domain \
perl-module-perlio \
perl-module-perlio-encoding \
perl-module-test \
perl-module-test-more \
perl-module-utf8 \
"
BBCLASSEXTEND = "native"
@@ -0,0 +1,59 @@
SUMMARY = "XML::Parser - A perl module for parsing XML documents"
HOMEPAGE = "https://libexpat.github.io/"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
LIC_FILES_CHKSUM = "file://Parser.pm;beginline=1;endline=7;md5=d12cc778c80fc4c518f0e5dee29fd5fb"
DEPENDS += "expat"
SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Parser-${PV}.tar.gz \
file://ptest-perl/run-ptest \
file://0001-CheckLib.pm-do-not-attempt-to-run-a-cross-executable.patch \
"
SRC_URI[md5sum] = "80bb18a8e6240fcf7ec2f7b57601c170"
SRC_URI[sha256sum] = "d331332491c51cccfb4cb94ffc44f9cd73378e618498d4a37df9e043661c515d"
S = "${WORKDIR}/XML-Parser-${PV}"
EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR} CC='${CC}' LD='${CCLD}' FULL_AR='${AR}'"
inherit cpan ptest-perl
# fix up sub MakeMaker project as arguments don't get propagated though
# see https://rt.cpan.org/Public/Bug/Display.html?id=28632
do_configure:append:class-target() {
sed -E \
-e 's:-L${STAGING_LIBDIR}::g' -e 's:-I${STAGING_INCDIR}::g' \
-i Makefile Expat/Makefile
}
do_configure:append() {
sed -e 's:--sysroot=.*\(\s\|$\):--sysroot=${STAGING_DIR_TARGET} :g' \
-i Makefile Expat/Makefile
sed 's:^FULL_AR = .*:FULL_AR = ${AR}:g' -i Expat/Makefile
# make sure these two do not build in parallel
sed 's!^$(INST_DYNAMIC):!$(INST_DYNAMIC): $(BOOTSTRAP)!' -i Expat/Makefile
}
do_compile() {
export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
cpan_do_compile
}
do_compile:class-native() {
cpan_do_compile
}
do_install_ptest() {
sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlstats
sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlfilter
sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/xmlcomments
sed -i -e "s:/usr/local/bin/perl:/usr/bin/perl:g" ${B}/samples/canonical
cp -r ${B}/samples ${D}${PTEST_PATH}
chown -R root:root ${D}${PTEST_PATH}/samples
}
RDEPENDS:${PN} += "perl-module-carp perl-module-file-spec"
RDEPENDS:${PN}-ptest += "perl-module-filehandle perl-module-if perl-module-test perl-module-test-more"
BBCLASSEXTEND="native nativesdk"
@@ -0,0 +1,30 @@
DESCRIPTION = "libxml-perl is a collection of smaller Perl modules, scripts, and \
documents for working with XML in Perl. libxml-perl software \
works in combination with XML::Parser, PerlSAX, XML::DOM, \
XML::Grove and others."
HOMEPAGE = "http://search.cpan.org/dist/libxml-perl/"
SUMMARY = "Collection of Perl modules for working with XML"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
PR = "r3"
LIC_FILES_CHKSUM = "file://README;beginline=33;endline=35;md5=1705549eef7577a3d6ba71123a1f0ce8"
DEPENDS += "libxml-parser-perl"
SRC_URI = "http://www.cpan.org/modules/by-module/XML/${BPN}-${PV}.tar.gz"
SRC_URI[md5sum] = "0ed5fbdda53d1301ddaed88db10503bb"
SRC_URI[sha256sum] = "4571059b7b5d48b7ce52b01389e95d798bf5cf2020523c153ff27b498153c9cb"
EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}"
inherit cpan ptest-perl
do_compile() {
export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
cpan_do_compile
}
RDEPENDS:${PN} += "perl-module-carp perl-module-overload perl-module-universal perl-module-io-handle"
RDEPENDS:${PN}-ptest += "libxml-parser-perl perl-module-file-glob perl-module-cwd perl-module-constant"
@@ -0,0 +1,35 @@
SUMMARY = "Perl module for reading and writing XML"
DESCRIPTION = "The XML::Simple Perl module provides a simple API layer \
on top of an underlying XML parsing module to maintain XML files \
(especially configuration files). It is a blunt rewrite of XML::Simple \
(by Grant McLean) to use the XML::LibXML parser for XML structures, \
where the original uses plain Perl or SAX parsers."
HOMEPAGE = "http://search.cpan.org/~markov/XML-LibXML-Simple-0.93/lib/XML/LibXML/Simple.pod"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
LIC_FILES_CHKSUM = "file://LICENSE;md5=cf206df8c9fe775f1d4c484386491eac"
DEPENDS += "libxml-parser-perl"
SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Simple-${PV}.tar.gz"
SRC_URI[md5sum] = "bb841dce889a26c89a1c2739970e9fbc"
SRC_URI[sha256sum] = "531fddaebea2416743eb5c4fdfab028f502123d9a220405a4100e68fc480dbf8"
S = "${WORKDIR}/XML-Simple-${PV}"
EXTRA_PERLFLAGS = "-I ${PERLHOSTLIB}"
inherit cpan ptest-perl
RDEPENDS:${PN} += " \
libxml-namespacesupport-perl \
libxml-parser-perl \
libxml-sax-perl \
"
RDEPENDS:${PN}-ptest += " \
perl-module-file-temp \
perl-module-test-more \
"
BBCLASSEXTEND = "native"
@@ -0,0 +1,63 @@
inherit ptest
SRC_URI += "file://run-ptest \
"
DEBUG_PREFIX_MAP_REGEX = "${@'\\|'.join(d.getVar('DEBUG_PREFIX_MAP').split())}"
do_install_ptest () {
mkdir -p ${D}${PTEST_PATH}
sed -e "s:\/usr\/local:${bindir}:g" -i cpan/version/t/*
sed -e "s:\/opt:\/usr:" -i Porting/add-package.pl
sed -e "s:\/local\/gnu\/:\/:" -i hints/cxux.sh
tar -c --exclude=try --exclude=a.out --exclude='*.o' --exclude=libperl.so* --exclude=[Mm]akefile --exclude=hostperl \
--exclude=cygwin --exclude=os2 --exclude=djgpp --exclude=qnx --exclude=symbian --exclude=haiku \
--exclude=vms --exclude=vos --exclude=NetWare --exclude=amigaos4 --exclude=buildcustomize.pl \
--exclude='win32/config.*' --exclude=plan9 --exclude=README.plan9 --exclude=perlplan9.pod --exclude=Configure \
--exclude=veryclean.sh --exclude=realclean.sh --exclude=getioctlsizes \
--exclude=dl_aix.xs --exclude=sdbm.3 --exclude='cflags.SH' --exclude=[Mm]akefile.old \
--exclude=miniperl --exclude=generate_uudmap --exclude=patches --exclude='config.log' * | ( cd ${D}${PTEST_PATH} && tar -x )
ln -sf ${bindir}/perl ${D}${PTEST_PATH}/t/perl
# Remove build host references from various scattered files...
find "${D}${PTEST_PATH}" \
\( -name '*.PL' -o -name 'myconfig' -o -name 'cflags' -o -name '*.pl' -o -name '*.sh' -o -name '*.pm' \
-o -name 'h2xs' -o -name 'h2ph' \
-o -name '*.h' -o -name 'config.sh-*' -o -name 'pod2man' -o -name 'pod2text' -o -name 'Makefile.config' \) \
-type f -exec sed -i \
-e "s,${D},,g" \
-e "s,--sysroot=${STAGING_DIR_HOST},,g" \
-e "s,-isystem${STAGING_INCDIR} ,,g" \
-e 's^${DEBUG_PREFIX_MAP_REGEX}^^g' \
-e "s,${STAGING_BINDIR_NATIVE}/perl-native/,${bindir}/,g" \
-e "s,${STAGING_LIBDIR},${libdir},g" \
-e "s,${STAGING_BINDIR},${bindir},g" \
-e "s,${STAGING_INCDIR},${includedir},g" \
-e "s,${STAGING_BINDIR_NATIVE}/,,g" \
-e "s,${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX},${bindir},g" \
-e 's:${RECIPE_SYSROOT_NATIVE}::g' \
-e 's:${RECIPE_SYSROOT}::g' \
{} +
# Remove a useless timestamp...
sed -i -e '/Autogenerated starting on/d' ${D}${PTEST_PATH}/lib/unicore/mktables.lst
# Remove files with host-specific configuration for building native binaries
rm ${D}${PTEST_PATH}/Makefile.config ${D}${PTEST_PATH}/xconfig.h ${D}${PTEST_PATH}/xconfig.sh
}
python populate_packages:prepend() {
# Put all *.t files from the lib dir in the ptest package
# do_split_packages requires a pair of () in the regex, but we have nothing
# to match, so use an empty pair.
if bb.utils.contains('DISTRO_FEATURES', 'ptest', True, False, d):
do_split_packages(d, d.expand('${libdir}/perl/${PV}'), r'.*\.t()',
'${PN}-ptest%s', '%s', recursive=True, match_path=True)
}
RDEPENDS:${PN}-ptest += "${PN}-modules ${PN}-doc sed procps-ps"
# The perl-ptest package contains Perl internal modules and generating file
# dependencies for it causes problems.
SKIP_FILEDEPS:${PN}-ptest = '1'
@@ -0,0 +1,420 @@
SUMMARY = "Perl scripting language"
HOMEPAGE = "http://www.perl.org/"
DESCRIPTION = "Perl is a highly capable, feature-rich programming language"
SECTION = "devel"
LICENSE = "Artistic-1.0 | GPL-1.0-or-later"
LIC_FILES_CHKSUM = "file://Copying;md5=5b122a36d0f6dc55279a0ebc69f3c60b \
file://Artistic;md5=71a4d5d9acc18c0952a6df2218bb68da \
"
SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \
file://perl-rdepends.txt \
file://0001-Somehow-this-module-breaks-through-the-perl-wrapper-.patch \
file://errno_ver.diff \
file://native-perlinc.patch \
file://perl-dynloader.patch \
file://0002-Constant-Fix-up-shebang.patch \
file://determinism.patch \
file://0001-cpan-Sys-Syslog-Makefile.PL-Fix-_PATH_LOG-for-determ.patch \
file://CVE-2023-31484.patch \
file://CVE-2023-31486-0001.patch \
file://CVE-2023-31486-0002.patch \
"
SRC_URI:append:class-native = " \
file://perl-configpm-switch.patch \
"
SRC_URI:append:class-target = " \
file://encodefix.patch \
"
SRC_URI[perl.sha256sum] = "68203665d8ece02988fc77dc92fccbb297a83a4bb4b8d07558442f978da54cc1"
B = "${WORKDIR}/perl-${PV}-build"
inherit upstream-version-is-even update-alternatives
DEPENDS += "perlcross-native zlib virtual/crypt"
# make 4.1 has race issues with the double-colon usage of MakeMaker, see #14096
DEPENDS += "make-native"
PERL_LIB_VER = "${@'.'.join(d.getVar('PV').split('.')[0:2])}.0"
PACKAGECONFIG ??= "gdbm"
PACKAGECONFIG[bdb] = ",-Ui_db,db"
PACKAGECONFIG[gdbm] = ",-Ui_gdbm,gdbm"
# Don't generate comments in enc2xs output files. They are not reproducible
export ENC2XS_NO_COMMENTS = "1"
CFLAGS += "-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
do_configure:prepend() {
rm -rf ${B}
cp -rfp ${S} ${B}
cp -rfp ${STAGING_DATADIR_NATIVE}/perl-cross/* ${B}
cd ${B}
}
do_configure:class-target() {
./configure --prefix=${prefix} --libdir=${libdir} \
--target=${TARGET_SYS} \
-Duseshrplib \
-Dusethreads \
-Dsoname=libperl.so.5 \
-Dvendorprefix=${prefix} \
-Dvendorlibdir=${libdir} \
-Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
-Dlibpth='${libdir} ${base_libdir}' \
-Dglibpth='${libdir} ${base_libdir}' \
-Alddlflags=' ${LDFLAGS}' \
-Dd_gnulibc=define \
${PACKAGECONFIG_CONFARGS}
#perl.c uses an ARCHLIB_EXP define to generate compile-time code that
#adds the archlibexp path to @INC during run-time initialization of a
#new perl interpreter.
#Because we've changed this value in a temporary way to make it
#possible to use ExtUtils::Embed in the target build (the temporary
#value in config.sh gets re-stripped out during packaging), the
#ARCHLIB_EXP value that gets generated still uses the temporary version
#instead of the original expected version (i.e. becauses it's in the
#generated config.h, it doesn't get stripped out during packaging like
#the others in config.sh).
sed -i -e "s,${STAGING_LIBDIR},${libdir},g" config.h
}
do_configure:class-nativesdk() {
./configure --prefix=${prefix} \
--target=${TARGET_SYS} \
-Duseshrplib \
-Dusethreads \
-Dsoname=libperl.so.5 \
-Dvendorprefix=${prefix} \
-Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
-Alddlflags=' ${LDFLAGS}' \
${PACKAGECONFIG_CONFARGS}
# See the comment above
sed -i -e "s,${STAGING_LIBDIR},${libdir},g" config.h
}
do_configure:class-native() {
./configure --prefix=${prefix} \
-Dbin=${bindir}/perl-native \
-Duseshrplib \
-Dusethreads \
-Dsoname=libperl.so.5 \
-Dvendorprefix=${prefix} \
-Ui_xlocale \
-Alddlflags=' ${LDFLAGS}' \
${PACKAGECONFIG_CONFARGS}
# This prevents leakage of build paths into perl-native binaries, which
# causes non-deterministic troubles when those paths no longer exist or aren't accessible.
sed -i -e "s,${STAGING_LIBDIR},/completelyboguspath,g" config.h
}
do_configure:append() {
if [ -n "$SOURCE_DATE_EPOCH" ]; then
PERL_BUILD_DATE="$(${PYTHON} -c "\
from datetime import datetime, timezone; \
print(datetime.fromtimestamp($SOURCE_DATE_EPOCH, timezone.utc).strftime('%a %b %d %H:%M:%S %Y')) \
")"
echo "#define PERL_BUILD_DATE \"$PERL_BUILD_DATE\"" >> config.h
fi
}
do_compile() {
oe_runmake
}
do_install() {
oe_runmake 'DESTDIR=${D}' install
install -d ${D}${libdir}/perl5
install -d ${D}${libdir}/perl5/${PV}/
install -d ${D}${libdir}/perl5/${PV}/ExtUtils/
# Save native config
install config.sh ${D}${libdir}/perl5
install lib/Config.pm ${D}${libdir}/perl5/${PV}/
install lib/ExtUtils/typemap ${D}${libdir}/perl5/${PV}/ExtUtils/
# Fix up shared library
dir=$(echo ${D}/${libdir}/perl5/${PV}/*/CORE)
rm $dir/libperl.so
ln -sf ../../../../libperl.so.${PERL_LIB_VER} $dir/libperl.so
# Try to catch Bug #13946
if [ -e ${D}/${libdir}/perl5/${PV}/Storable.pm ]; then
bbfatal 'non-arch specific Storable.pm found! See https://bugzilla.yoctoproject.org/show_bug.cgi?id=13946'
fi
}
do_install:append:class-target() {
# This is used to substitute target configuration when running native perl via perl-configpm-switch.patch
ln -s Config_heavy.pl ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_heavy-target.pl
# This contains host-specific information used for building miniperl (a helper executable built with host compiler)
# and therefore isn't reproducible. I believe the file isn't actually needed on target.
rm ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/xconfig.h
}
do_install:append:class-nativesdk() {
# This is used to substitute target configuration when running native perl via perl-configpm-switch.patch
ln -s Config_heavy.pl ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_heavy-target.pl
create_wrapper ${D}${bindir}/perl \
PERL5LIB='$PERL5LIB:${SDKPATHNATIVE}/${libdir_nativesdk}/perl5/site_perl/${PV}:${SDKPATHNATIVE}/${libdir_nativesdk}/perl5/vendor_perl/${PV}:${SDKPATHNATIVE}/${libdir_nativesdk}/perl5/${PV}'
}
do_install:append:class-native () {
# Those wrappers mean that perl installed from sstate (which may change
# path location) works and that in the nativesdk case, the SDK can be
# installed to a different location from the one it was built for.
create_wrapper ${D}${bindir}/perl-native/perl PERL5LIB='$PERL5LIB:${STAGING_LIBDIR}/perl5/site_perl/${PV}:${STAGING_LIBDIR}/perl5/vendor_perl/${PV}:${STAGING_LIBDIR}/perl5/${PV}'
# Use /usr/bin/env nativeperl for the perl script.
for f in `grep -Il '#! *${bindir}/perl' ${D}/${bindir}/*`; do
sed -i -e 's|${bindir}/perl|/usr/bin/env nativeperl|' $f
done
}
PACKAGE_PREPROCESS_FUNCS += "perl_package_preprocess"
perl_package_preprocess () {
# Fix up installed configuration
sed -i -e "s,${D},,g" \
-e "s,${DEBUG_PREFIX_MAP},,g" \
-e "s,--sysroot=${STAGING_DIR_HOST},,g" \
-e "s,-isystem${STAGING_INCDIR} ,,g" \
-e "s,${STAGING_LIBDIR},${libdir},g" \
-e "s,${STAGING_BINDIR},${bindir},g" \
-e "s,${STAGING_INCDIR},${includedir},g" \
-e "s,${STAGING_BINDIR_NATIVE}/perl-native/,${bindir}/,g" \
-e "s,${STAGING_BINDIR_NATIVE}/,,g" \
-e "s,${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX},${bindir},g" \
-e 's:${RECIPE_SYSROOT}::g' \
${PKGD}${bindir}/h2xs.perl \
${PKGD}${bindir}/h2ph.perl \
${PKGD}${bindir}/pod2man.perl \
${PKGD}${bindir}/pod2text.perl \
${PKGD}${bindir}/pod2usage.perl \
${PKGD}${bindir}/podchecker.perl \
${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/config.h \
${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/perl.h \
${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/pp.h \
${PKGD}${libdir}/perl5/${PV}/Config.pm \
${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config.pm \
${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config.pod \
${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_git.pl \
${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_heavy.pl \
${PKGD}${libdir}/perl5/${PV}/ExtUtils/Liblist/Kid.pm \
${PKGD}${libdir}/perl5/${PV}/FileCache.pm \
${PKGD}${libdir}/perl5/${PV}/pod/*.pod \
${PKGD}${libdir}/perl5/config.sh
}
inherit update-alternatives
ALTERNATIVE_PRIORITY = "100"
ALTERNATIVE:${PN}-misc = "corelist cpan enc2xs encguess h2ph h2xs instmodsh json_pp libnetcfg \
piconv pl2pm pod2html pod2man pod2text pod2usage podchecker \
prove ptar ptardiff ptargrep shasum splain streamzip xsubpp zipdetails"
ALTERNATIVE_LINK_NAME[corelist] = "${bindir}/corelist"
ALTERNATIVE_LINK_NAME[cpan] = "${bindir}/cpan"
ALTERNATIVE_LINK_NAME[enc2xs] = "${bindir}/enc2xs"
ALTERNATIVE_LINK_NAME[encguess] = "${bindir}/encguess"
ALTERNATIVE_LINK_NAME[h2ph] = "${bindir}/h2ph"
ALTERNATIVE_LINK_NAME[h2xs] = "${bindir}/h2xs"
ALTERNATIVE_LINK_NAME[instmodsh] = "${bindir}/instmodsh"
ALTERNATIVE_LINK_NAME[json_pp] = "${bindir}/json_pp"
ALTERNATIVE_LINK_NAME[libnetcfg] = "${bindir}/libnetcfg"
ALTERNATIVE_LINK_NAME[piconv] = "${bindir}/piconv"
ALTERNATIVE_LINK_NAME[pl2pm] = "${bindir}/pl2pm"
ALTERNATIVE_LINK_NAME[pod2html] = "${bindir}/pod2html"
ALTERNATIVE_LINK_NAME[pod2man] = "${bindir}/pod2man"
ALTERNATIVE_LINK_NAME[pod2text] = "${bindir}/pod2text"
ALTERNATIVE_LINK_NAME[pod2usage] = "${bindir}/pod2usage"
ALTERNATIVE_LINK_NAME[podchecker] = "${bindir}/podchecker"
ALTERNATIVE_LINK_NAME[prove] = "${bindir}/prove"
ALTERNATIVE_LINK_NAME[ptar] = "${bindir}/ptar"
ALTERNATIVE_LINK_NAME[ptardiff] = "${bindir}/ptardiff"
ALTERNATIVE_LINK_NAME[ptargrep] = "${bindir}/ptargrep"
ALTERNATIVE_LINK_NAME[shasum] = "${bindir}/shasum"
ALTERNATIVE_LINK_NAME[splain] = "${bindir}/splain"
ALTERNATIVE_LINK_NAME[streamzip] = "${bindir}/streamzip"
ALTERNATIVE_LINK_NAME[xsubpp] = "${bindir}/xsubpp"
ALTERNATIVE_LINK_NAME[zipdetails] = "${bindir}/zipdetails"
require perl-ptest.inc
FILES:${PN} = "${bindir}/perl ${bindir}/perl.real ${bindir}/perl${PV} ${libdir}/libperl.so* \
${libdir}/perl5/site_perl \
${libdir}/perl5/${PV}/Config.pm \
${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config.pm \
${libdir}/perl5/${PV}/*/Config_git.pl \
${libdir}/perl5/${PV}/*/Config_heavy-target.pl \
${libdir}/perl5/config.sh \
${libdir}/perl5/${PV}/strict.pm \
${libdir}/perl5/${PV}/warnings.pm \
${libdir}/perl5/${PV}/warnings \
${libdir}/perl5/${PV}/vars.pm \
${libdir}/perl5/site_perl \
${libdir}/perl5/${PV}/ExtUtils/MANIFEST.SKIP \
${libdir}/perl5/${PV}/ExtUtils/xsubpp \
${libdir}/perl5/${PV}/ExtUtils/typemap \
"
RPROVIDES:${PN} += "perl-module-strict perl-module-vars perl-module-config perl-module-warnings \
perl-module-warnings-register"
FILES:${PN}-staticdev:append = " ${libdir}/perl5/${PV}/*/CORE/libperl.a"
FILES:${PN}-dev:append = " ${libdir}/perl5/${PV}/*/CORE"
FILES:${PN}-doc:append = " ${libdir}/perl5/${PV}/Unicode/Collate/*.txt \
${libdir}/perl5/${PV}/*/.packlist \
${libdir}/perl5/${PV}/Encode/encode.h \
"
PACKAGES += "${PN}-misc"
FILES:${PN}-misc = "${bindir}/*"
PACKAGES += "${PN}-pod"
FILES:${PN}-pod = "${libdir}/perl5/${PV}/pod \
${libdir}/perl5/${PV}/*.pod \
${libdir}/perl5/${PV}/*/*.pod \
${libdir}/perl5/${PV}/*/*/*.pod \
${libdir}/perl5/${PV}/*/*/*/*.pod \
"
PACKAGES += "${PN}-module-cpan ${PN}-module-unicore"
FILES:${PN}-module-cpan += "${libdir}/perl5/${PV}/CPAN \
"
FILES:${PN}-module-unicore += "${libdir}/perl5/${PV}/unicore"
ALTERNATIVE_PRIORITY = "40"
ALTERNATIVE:${PN}-doc = "Thread.3"
ALTERNATIVE_LINK_NAME[Thread.3] = "${mandir}/man3/Thread.3"
# Create a perl-modules package recommending all the other perl
# packages (actually the non modules packages and not created too)
ALLOW_EMPTY:${PN}-modules = "1"
PACKAGES += "${PN}-modules "
PACKAGESPLITFUNCS =+ "split_perl_packages"
python split_perl_packages () {
libdir = d.expand('${libdir}/perl5/${PV}')
do_split_packages(d, libdir, r'.*/auto/([^.]*)/[^/]*\.(so|ld|ix|al)', '${PN}-module-%s', 'perl module %s', recursive=True, match_path=True, prepend=False)
do_split_packages(d, libdir, r'.*linux/([^\/]*)\.pm', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
do_split_packages(d, libdir, r'Module/([^\/]*)\.pm', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
do_split_packages(d, libdir, r'Module/([^\/]*)/.*', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
do_split_packages(d, libdir, r'.*linux/([^\/].*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
do_split_packages(d, libdir, r'(^(?!(CPAN\/|CPANPLUS\/|Module\/|unicore\/|.*linux\/)[^\/]).*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
# perl-modules should recommend every perl module, and only the
# modules. Don't attempt to use the result of do_split_packages() as some
# modules are manually split (eg. perl-module-unicore).
packages = filter(lambda p: 'perl-module-' in p, d.getVar('PACKAGES').split())
d.setVar(d.expand("RRECOMMENDS:${PN}-modules"), ' '.join(packages))
# Read the pre-generated dependency file, and use it to set module dependecies
for line in open(d.expand("${WORKDIR}") + '/perl-rdepends.txt').readlines():
splitline = line.split()
# Filter empty lines and comments
if len(splitline) == 0 or splitline[0].startswith("#"):
continue
if bb.data.inherits_class('native', d):
module = splitline[0] + '-native'
depends = "perl-native"
else:
module = splitline[0].replace("RDEPENDS:perl", "RDEPENDS:${PN}")
depends = splitline[2].strip('"').replace("perl-module", "${PN}-module")
d.appendVar(d.expand(module), " " + depends)
}
python() {
if d.getVar('CLASSOVERRIDE') == "class-target":
d.setVar("PACKAGES_DYNAMIC", "^${MLPREFIX}perl-module-.*(?<!native)$")
elif d.getVar('CLASSOVERRIDE') == "class-native":
d.setVar("PACKAGES_DYNAMIC", "^perl-module-.*-native$")
elif d.getVar('CLASSOVERRIDE') == "class-nativesdk":
d.setVar("PACKAGES_DYNAMIC", "^nativesdk-perl-module-.*")
}
RDEPENDS:${PN}-misc += "perl perl-modules"
RDEPENDS:${PN}-pod += "perl"
BBCLASSEXTEND = "native nativesdk"
SSTATE_SCAN_FILES += "*.pm *.pod *.h *.pl *.sh"
do_create_rdepends_inc() {
cd ${WORKDIR}
cat <<'EOPREAMBLE' > ${WORKDIR}/perl-rdepends.inc
# Some additional dependencies that the above doesn't manage to figure out
RDEPENDS:${PN}-module-file-spec += "${PN}-module-file-spec-unix"
RDEPENDS:${PN}-module-scalar-util += "${PN}-module-list-util"
RDEPENDS:${PN}-module-file-temp += "${PN}-module-scalar-util"
RDEPENDS:${PN}-module-file-temp += "${PN}-module-file-spec"
RDEPENDS:${PN}-module-io-file += "${PN}-module-symbol"
RDEPENDS:${PN}-module-io-file += "${PN}-module-carp"
RDEPENDS:${PN}-module-math-bigint += "${PN}-module-math-bigint-calc"
RDEPENDS:${PN}-module-test-builder += "${PN}-module-list-util"
RDEPENDS:${PN}-module-test-builder += "${PN}-module-scalar-util"
RDEPENDS:${PN}-module-test-builder-formatter += "${PN}-module-test2-formatter-tap"
RDEPENDS:${PN}-module-test2-api += "${PN}-module-test2-event-fail"
RDEPENDS:${PN}-module-test2-api += "${PN}-module-test2-event-pass"
RDEPENDS:${PN}-module-test2-api += "${PN}-module-test2-event-v2"
RDEPENDS:${PN}-module-test2-formatter-tap += "${PN}-module-test2-formatter"
RDEPENDS:${PN}-module-thread-queue += "${PN}-module-attributes"
RDEPENDS:${PN}-module-overload += "${PN}-module-overloading"
# Generated depends list beyond this line
EOPREAMBLE
test -e packages-split.new && rm -rf packages-split.new
cp -r packages-split packages-split.new && cd packages-split.new
find . -name \*.pm | xargs sed -i '/^=head/,/^=cut/d'
egrep -r "^\s*(\<use .*|\<require .*);?" perl-module-* --include="*.pm" | \
sed "s/\/.*\.pm: */ += /g;s/[\"\']//g;s/;.*/\"/g;s/+= .*\(require\|use\)\> */+= \"perl-module-/g;s/CPANPLUS::.*/cpanplus/g;s/CPAN::.*/cpan/g;s/::/-/g;s/ [^+\"].*//g;s/_/-/g;s/\.pl\"$/\"/;s/\"\?\$/\"/;s/(//;s/)//;" | tr [:upper:] [:lower:] | \
awk '{if ($3 != "\x22"$1"\x22"){ print $0}}'| \
grep -v -e "\-vms\-" -e module-5 -e "^$" -e "\\$" -e your -e tk -e autoperl -e html -e http -e parse-cpan -e perl-ostype -e ndbm-file -e module-mac -e fcgi -e lwp -e dbd -e dbix | \
sort -u | \
sed 's/^/RDEPENDS:/;s/perl-module-/${PN}-module-/g;s/module-\(module-\)/\1/g;s/\(module-load\)-conditional/\1/g;s/encode-configlocal/&-pm/;' | \
egrep -wv '=>|module-a|module-apache.?|module-apr|module-authen-sasl|module-b-asmdata|module-convert-ebcdic|module-devel-size|module-digest-perl-md5|module-dumpvalue|module-extutils-constant-aaargh56hash|module-extutils-xssymset|module-file-bsdglob|module-for|module-it|module-io-socket-inet6|module-io-socket-ssl|module-io-string|module-ipc-system-simple|module-lexical|module-local-lib|metadata|module-modperl-util|module-pluggable-object|module-test-builder-io-scalar|module-text-unidecode|module-unicore|module-win32|objects\sload|syscall.ph|systeminfo.ph|%s' | \
egrep -wv '=>|module-algorithm-diff|module-carp|module-c<extutils-mm-unix>|module-l<extutils-mm-unix>|module-encode-hanextra|module-extutils-makemaker-version-regex|module-file-spec|module-io-compress-lzma|module-io-uncompress-unxz|module-locale-maketext-lexicon|module-log-agent|module-meta-notation|module-net-localcfg|module-net-ping-external|module-b-deparse|module-scalar-util|module-some-module|module-symbol|module-uri|module-win32api-file' > ${WORKDIR}/perl-rdepends.generated
cat ${WORKDIR}/perl-rdepends.inc ${WORKDIR}/perl-rdepends.generated > ${THISDIR}/files/perl-rdepends.txt
}
# bitbake perl -c create_rdepends_inc
addtask do_create_rdepends_inc
SYSROOT_PREPROCESS_FUNCS += "perl_sysroot_create_wrapper"
perl_sysroot_create_wrapper () {
mkdir -p ${SYSROOT_DESTDIR}${bindir}
# Create a wrapper that /usr/bin/env perl will use to get perl-native.
# This MUST live in the normal bindir.
cat > ${SYSROOT_DESTDIR}${bindir}/nativeperl << EOF
#!/bin/sh
realpath=\`readlink -fn \$0\`
exec \`dirname \$realpath\`/perl-native/perl "\$@"
EOF
chmod 0755 ${SYSROOT_DESTDIR}${bindir}/nativeperl
cat ${SYSROOT_DESTDIR}${bindir}/nativeperl
}
SSTATE_HASHEQUIV_FILEMAP = " \
populate_sysroot:*/lib*/perl5/*/*/Config_heavy.pl:${TMPDIR} \
populate_sysroot:*/lib*/perl5/*/*/Config_heavy.pl:${COREBASE} \
populate_sysroot:*/lib*/perl5/config.sh:${TMPDIR} \
populate_sysroot:*/lib*/perl5/config.sh:${COREBASE} \
"