mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
With the renaming of the cross packages, its no longer possible to use
endswith("-cross") and similar to detect cross packages. Replace these
references with other techniques.
This resolves certain build from sstate failures which were due to the
system believing cross packages were target packages and therefore
dependency handling was altered.
(From OE-Core rev: 91edf4cac223298e50a4b8e59dd19f1b272e3418)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
105 lines
3.8 KiB
Python
105 lines
3.8 KiB
Python
class ClassExtender(object):
|
|
def __init__(self, extname, d):
|
|
self.extname = extname
|
|
self.d = d
|
|
self.pkgs_mapping = []
|
|
|
|
def extend_name(self, name):
|
|
if name.startswith("kernel-") or name == "virtual/kernel":
|
|
return name
|
|
if name.startswith("rtld"):
|
|
return name
|
|
if name.endswith("-" + self.extname):
|
|
name = name.replace("-" + self.extname, "")
|
|
if name.startswith("virtual/"):
|
|
subs = name.split("/", 1)[1]
|
|
if not subs.startswith(self.extname):
|
|
return "virtual/" + self.extname + "-" + subs
|
|
return name
|
|
if not name.startswith(self.extname):
|
|
return self.extname + "-" + name
|
|
return name
|
|
|
|
def map_variable(self, varname, setvar = True):
|
|
var = self.d.getVar(varname, True)
|
|
if not var:
|
|
return ""
|
|
var = var.split()
|
|
newvar = []
|
|
for v in var:
|
|
newvar.append(self.extend_name(v))
|
|
newdata = " ".join(newvar)
|
|
if setvar:
|
|
self.d.setVar(varname, newdata)
|
|
return newdata
|
|
|
|
def map_regexp_variable(self, varname, setvar = True):
|
|
var = self.d.getVar(varname, True)
|
|
if not var:
|
|
return ""
|
|
var = var.split()
|
|
newvar = []
|
|
for v in var:
|
|
if v.startswith("^" + self.extname):
|
|
newvar.append(v)
|
|
elif v.startswith("^"):
|
|
newvar.append("^" + self.extname + "-" + v[1:])
|
|
else:
|
|
newvar.append(self.extend_name(v))
|
|
newdata = " ".join(newvar)
|
|
if setvar:
|
|
self.d.setVar(varname, newdata)
|
|
return newdata
|
|
|
|
def map_depends(self, dep):
|
|
if dep.endswith(("-native", "-native-runtime")) or ('nativesdk-' in dep) or ('cross-canadian' in dep) or ('-crosssdk-' in dep):
|
|
return dep
|
|
else:
|
|
return self.extend_name(dep)
|
|
|
|
def map_depends_variable(self, varname, suffix = ""):
|
|
if suffix:
|
|
varname = varname + "_" + suffix
|
|
deps = self.d.getVar(varname, True)
|
|
if not deps:
|
|
return
|
|
deps = bb.utils.explode_dep_versions2(deps)
|
|
newdeps = {}
|
|
for dep in deps:
|
|
newdeps[self.map_depends(dep)] = deps[dep]
|
|
|
|
self.d.setVar(varname, bb.utils.join_deps(newdeps, False))
|
|
|
|
def map_packagevars(self):
|
|
for pkg in (self.d.getVar("PACKAGES", True).split() + [""]):
|
|
self.map_depends_variable("RDEPENDS", pkg)
|
|
self.map_depends_variable("RRECOMMENDS", pkg)
|
|
self.map_depends_variable("RSUGGESTS", pkg)
|
|
self.map_depends_variable("RPROVIDES", pkg)
|
|
self.map_depends_variable("RREPLACES", pkg)
|
|
self.map_depends_variable("RCONFLICTS", pkg)
|
|
self.map_depends_variable("PKG", pkg)
|
|
|
|
def rename_packages(self):
|
|
for pkg in (self.d.getVar("PACKAGES", True) or "").split():
|
|
if pkg.startswith(self.extname):
|
|
self.pkgs_mapping.append([pkg.split(self.extname + "-")[1], pkg])
|
|
continue
|
|
self.pkgs_mapping.append([pkg, self.extend_name(pkg)])
|
|
|
|
self.d.setVar("PACKAGES", " ".join([row[1] for row in self.pkgs_mapping]))
|
|
|
|
def rename_package_variables(self, variables):
|
|
for pkg_mapping in self.pkgs_mapping:
|
|
for subs in variables:
|
|
self.d.renameVar("%s_%s" % (subs, pkg_mapping[0]), "%s_%s" % (subs, pkg_mapping[1]))
|
|
|
|
class NativesdkClassExtender(ClassExtender):
|
|
def map_depends(self, dep):
|
|
if dep.endswith(("-gcc-initial", "-gcc", "-g++")):
|
|
return dep + "-crosssdk"
|
|
elif dep.endswith(("-native", "-native-runtime")) or ('nativesdk-' in dep) or ('-cross-' in dep) or ('-crosssdk-' in dep):
|
|
return dep
|
|
else:
|
|
return self.extend_name(dep)
|