mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 05:29:32 +00:00
packagedata/multilib: Fix search patch for multilib builds
The current multilib search path code for packagedata is flawed since it doesn't correctly handle changes in the TARGET_VENDOR/TARGET_OS that multilib may make. This patch enhances the code to correctly build the search paths so multilib packagedata is found correctly. (From OE-Core rev: f50c5d36b2da9b36d56d95a7d89404509a1a3e9b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -36,8 +36,6 @@ python multilib_virtclass_handler () {
|
|||||||
e.data.setVar("MLPREFIX", variant + "-")
|
e.data.setVar("MLPREFIX", variant + "-")
|
||||||
e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False))
|
e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False))
|
||||||
e.data.setVar("SHLIBSDIR_virtclass-multilib-" + variant ,e.data.getVar("SHLIBSDIR", False) + "/" + variant)
|
e.data.setVar("SHLIBSDIR_virtclass-multilib-" + variant ,e.data.getVar("SHLIBSDIR", False) + "/" + variant)
|
||||||
if e.data.getVar("TARGET_VENDOR_virtclass-multilib-" + variant, False) is None:
|
|
||||||
e.data.setVar("TARGET_VENDOR_virtclass-multilib-" + variant, e.data.getVar("TARGET_VENDOR", False) + "ml" + variant)
|
|
||||||
e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
|
e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ python multilib_virtclass_handler_global () {
|
|||||||
if not e.data:
|
if not e.data:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if isinstance(e, bb.event.RecipePreFinalise):
|
||||||
|
for v in e.data.getVar("MULTILIB_VARIANTS", True).split():
|
||||||
|
if e.data.getVar("TARGET_VENDOR_virtclass-multilib-" + v, False) is None:
|
||||||
|
e.data.setVar("TARGET_VENDOR_virtclass-multilib-" + v, e.data.getVar("TARGET_VENDOR", False) + "ml" + v)
|
||||||
|
|
||||||
variant = e.data.getVar("BBEXTENDVARIANT", True)
|
variant = e.data.getVar("BBEXTENDVARIANT", True)
|
||||||
|
|
||||||
if isinstance(e, bb.event.RecipeParsed) and not variant:
|
if isinstance(e, bb.event.RecipeParsed) and not variant:
|
||||||
|
|||||||
+30
-12
@@ -23,21 +23,39 @@ def read_pkgdatafile(fn):
|
|||||||
|
|
||||||
return pkgdata
|
return pkgdata
|
||||||
|
|
||||||
|
def all_pkgdatadirs(d):
|
||||||
|
archs = []
|
||||||
|
tos = []
|
||||||
|
tvs = []
|
||||||
|
|
||||||
|
archs.append(d.getVar("PACKAGE_ARCHS", True).split())
|
||||||
|
tos.append(d.getVar("TARGET_OS", True))
|
||||||
|
tvs.append(d.getVar("TARGET_VENDOR", True))
|
||||||
|
|
||||||
|
variants = d.getVar("MULTILIB_VARIANTS", True) or ""
|
||||||
|
for item in variants.split():
|
||||||
|
localdata = bb.data.createCopy(d)
|
||||||
|
overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
|
||||||
|
localdata.setVar("OVERRIDES", overrides)
|
||||||
|
bb.data.update_data(localdata)
|
||||||
|
|
||||||
|
archs.append(localdata.getVar("PACKAGE_ARCHS", True).split())
|
||||||
|
tos.append(localdata.getVar("TARGET_OS", True))
|
||||||
|
tvs.append(localdata.getVar("TARGET_VENDOR", True))
|
||||||
|
|
||||||
|
dirs = []
|
||||||
|
for i in range(len(archs)):
|
||||||
|
for arch in archs[i]:
|
||||||
|
dirs.append(arch + tvs[i] + "-" + tos[i] + "/runtime/")
|
||||||
|
dirs.reverse()
|
||||||
|
return dirs
|
||||||
|
|
||||||
def get_subpkgedata_fn(pkg, d):
|
def get_subpkgedata_fn(pkg, d):
|
||||||
archs = d.expand("${PACKAGE_ARCHS}").split(" ")
|
dirs = all_pkgdatadirs(d)
|
||||||
mlarchs = d.getVar("MULTILIB_PACKAGE_ARCHS", d) or None
|
|
||||||
|
|
||||||
if mlarchs:
|
|
||||||
for mlarch in mlarchs.split(" "):
|
|
||||||
if "_" in mlarch:
|
|
||||||
prefix, split, new_arch = mlarch.partition("_")
|
|
||||||
archs.append(new_arch)
|
|
||||||
|
|
||||||
archs.reverse()
|
|
||||||
pkgdata = d.expand('${TMPDIR}/pkgdata/')
|
pkgdata = d.expand('${TMPDIR}/pkgdata/')
|
||||||
targetdir = d.expand('${TARGET_VENDOR}-${TARGET_OS}/runtime/')
|
for dir in dirs:
|
||||||
for arch in archs:
|
fn = pkgdata + dir + pkg
|
||||||
fn = pkgdata + arch + targetdir + pkg
|
|
||||||
if os.path.exists(fn):
|
if os.path.exists(fn):
|
||||||
return fn
|
return fn
|
||||||
return d.expand('${PKGDATA_DIR}/runtime/%s' % pkg)
|
return d.expand('${PKGDATA_DIR}/runtime/%s' % pkg)
|
||||||
|
|||||||
Reference in New Issue
Block a user