poky/meta/classes-recipe/perl-version.bbclass
Patrick Williams b7574378e8 perl-version: remove PERL* assignments
The perl-version.bbclass executes functions which can depend on
variables potentially populated by native, such as `libdir`.  The
sanity `native-last` suggests that recipes should `inherit native`
last, but when that is done the variables like PERLVERSION end up
as `None`, since `${STAGING_LIBDIR}` needs `${libdir}` which is not
yet populated (by native).

All recipes in poky and widely used meta-layers have already been
updated to use the functions directly instead of relying on these
problematic variables.  Delete the variables so that future recipes
do not make the mistake of using them.

Related: openbmc/openbmc#3770
(From OE-Core rev: 9351b6e7fab5669340bb062b9c84fb4faa3dce0b)

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-05-04 12:34:30 +01:00

67 lines
1.8 KiB
Plaintext

#
# Copyright OpenEmbedded Contributors
#
# SPDX-License-Identifier: MIT
#
PERL_OWN_DIR = ""
# Determine the staged version of perl from the perl configuration file
# Assign vardepvalue, because otherwise signature is changed before and after
# perl is built (from None to real version in config.sh).
get_perl_version[vardepvalue] = "${PERL_OWN_DIR}"
def get_perl_version(d):
import re
cfg = d.expand('${STAGING_LIBDIR}${PERL_OWN_DIR}/perl5/config.sh')
try:
f = open(cfg, 'r')
except IOError:
return None
l = f.readlines();
f.close();
r = re.compile(r"^version='(\d*\.\d*\.\d*)'")
for s in l:
m = r.match(s)
if m:
return m.group(1)
return None
# Determine the staged arch of perl from the perl configuration file
# Assign vardepvalue, because otherwise signature is changed before and after
# perl is built (from None to real version in config.sh).
def get_perl_arch(d):
import re
cfg = d.expand('${STAGING_LIBDIR}${PERL_OWN_DIR}/perl5/config.sh')
try:
f = open(cfg, 'r')
except IOError:
return None
l = f.readlines();
f.close();
r = re.compile("^archname='([^']*)'")
for s in l:
m = r.match(s)
if m:
return m.group(1)
return None
# Determine the staged arch of perl-native from the perl configuration file
# Assign vardepvalue, because otherwise signature is changed before and after
# perl is built (from None to real version in config.sh).
def get_perl_hostarch(d):
import re
cfg = d.expand('${STAGING_LIBDIR_NATIVE}/perl5/config.sh')
try:
f = open(cfg, 'r')
except IOError:
return None
l = f.readlines();
f.close();
r = re.compile("^archname='([^']*)'")
for s in l:
m = r.match(s)
if m:
return m.group(1)
return None