From patchwork Tue Feb 7 21:09:50 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [3/4] cross.bbclass: add virtclass handler Date: Tue, 07 Feb 2012 21:09:50 -0000 From: Otavio Salvador X-Patchwork-Id: 20917 Message-Id: <3aaae21268883e5ebcc5373f99517045613ad102.1328648562.git.otavio@ossystems.com.br> To: openembedded-core@lists.openembedded.org Allow use of BBCLASSEXTEND with 'cross' and use of virtclass-cross in recipes. Signed-off-by: Otavio Salvador --- meta/classes/cross.bbclass | 39 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 39 insertions(+), 0 deletions(-) diff --git a/meta/classes/cross.bbclass b/meta/classes/cross.bbclass index 5681ab9..a764902 100644 --- a/meta/classes/cross.bbclass +++ b/meta/classes/cross.bbclass @@ -55,6 +55,45 @@ libexecdir = "${exec_prefix}/libexec/${CROSS_TARGET_SYS_DIR}" do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE}" +python cross_virtclass_handler () { + if not isinstance(e, bb.event.RecipePreFinalise): + return + + classextend = e.data.getVar('BBCLASSEXTEND', True) or "" + if "cross" not in classextend: + return + + pn = e.data.getVar("PN", True) + if not pn.endswith("-cross"): + return + + def map_dependencies(varname, d, suffix = ""): + if suffix: + varname = varname + "_" + suffix + deps = d.getVar(varname, True) + if not deps: + return + deps = bb.utils.explode_deps(deps) + newdeps = [] + for dep in deps: + if dep.endswith("-cross"): + newdeps.append(dep) + else: + newdeps.append(dep + "-cross") + bb.data.setVar(varname, " ".join(newdeps), d) + + for pkg in (e.data.getVar("PACKAGES", True).split() + [""]): + map_dependencies("RDEPENDS", e.data, pkg) + map_dependencies("RRECOMMENDS", e.data, pkg) + map_dependencies("RSUGGESTS", e.data, pkg) + map_dependencies("RPROVIDES", e.data, pkg) + map_dependencies("RREPLACES", e.data, pkg) + + bb.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + ":virtclass-cross", e.data) +} + +addhandler cross_virtclass_handler + do_install () { oe_runmake 'DESTDIR=${D}' install }