* if some package is using PACKAGECONFIG and also BBCLASSEXTEND then it could be called twice but without this PACKAGECONFIG was adding items to DEPENDS after virtclass handler so foo-native was depending on bar instead of bar-foo when bar was added by PACKAGECONFIG see: http://lists.linuxtogo.org/pipermail/openembedded-core/2012-February/017772.html
Signed-off-by: Martin Jansa <[email protected]> --- meta/classes/base.bbclass | 77 ++++++++++++++++++++++++++++++++++++--- meta/classes/native.bbclass | 25 +------------ meta/classes/nativesdk.bbclass | 27 +------------- 3 files changed, 73 insertions(+), 56 deletions(-) diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index c8ed544..14efa16 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -223,6 +223,59 @@ def get_layers_branch_rev(d): s1= layers_branch_rev[i][p1:] return layers_branch_rev +def native_virtclass_map_dependencies(d): + 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.replace("-cross", "-native")) + elif not dep.endswith("-native"): + newdeps.append(dep + "-native") + else: + newdeps.append(dep) + d.setVar(varname, " ".join(newdeps)) + + map_dependencies("DEPENDS", d) + for pkg in [d.getVar("PN", True), "", "${PN}"]: + map_dependencies("RDEPENDS", d, pkg) + map_dependencies("RRECOMMENDS", d, pkg) + map_dependencies("RSUGGESTS", d, pkg) + map_dependencies("RPROVIDES", d, pkg) + map_dependencies("RREPLACES", d, pkg) + +def nativesdk_virtclass_map_dependencies(d): + 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("-native") or dep.endswith("-cross"): + newdeps.append(dep) + elif dep.endswith("-gcc-intermediate") or dep.endswith("-gcc-initial") or dep.endswith("-gcc") or dep.endswith("-g++"): + newdeps.append(dep + "-crosssdk") + elif not dep.endswith("-nativesdk"): + newdeps.append(dep.replace("-nativesdk", "") + "-nativesdk") + else: + newdeps.append(dep) + d.setVar(varname, " ".join(newdeps)) + + map_dependencies("DEPENDS", d) + #for pkg in (d.getVar("PACKAGES", True).split() + [""]): + # map_dependencies("RDEPENDS", d, pkg) + # map_dependencies("RRECOMMENDS", d, pkg) + # map_dependencies("RSUGGESTS", d, pkg) + # map_dependencies("RPROVIDES", d, pkg) + # map_dependencies("RREPLACES", d, pkg) addhandler base_eventhandler python base_eventhandler() { @@ -293,8 +346,10 @@ do_build () { : } -python () { - import exceptions, string, re +addhandler packageconfig_handler +python packageconfig_handler () { + if not isinstance(e, bb.event.RecipePreFinalise): + return # Handle PACKAGECONFIG # @@ -302,14 +357,14 @@ python () { # # PACKAGECONFIG ?? = "<default options>" # PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends" - pkgconfigflags = d.getVarFlags("PACKAGECONFIG") or {} + pkgconfigflags = e.data.getVarFlags("PACKAGECONFIG") or {} if pkgconfigflags: - pkgconfig = (d.getVar('PACKAGECONFIG', True) or "").split() + pkgconfig = (e.data.getVar('PACKAGECONFIG', True) or "").split() def appendVar(varname, appends): if not appends: return - varname = d.expand(varname) - d.appendVar(varname, " " + " ".join(appends)) + varname = e.data.expand(varname) + e.data.appendVar(varname, " " + " ".join(appends)) extradeps = [] extrardeps = [] @@ -332,6 +387,16 @@ python () { appendVar('DEPENDS', extradeps) appendVar('RDEPENDS_${PN}', extrardeps) appendVar('EXTRA_OECONF', extraconf) + classextend = e.data.getVar('BBCLASSEXTEND', True) or "" + pn = e.data.getVar("PN", True) + if "native" in classextend and pn.endswith("-native"): + native_virtclass_map_dependencies(e.data) + if "nativesdk" in classextend and pn.endswith("-nativesdk"): + nativesdk_virtclass_map_dependencies(e.data) +} + +python () { + import exceptions, string, re # If PRINC is set, try and increase the PR value by the amount specified princ = d.getVar('PRINC', True) diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass index ffab971..7ef3684 100644 --- a/meta/classes/native.bbclass +++ b/meta/classes/native.bbclass @@ -112,30 +112,7 @@ python native_virtclass_handler () { if not pn.endswith("-native"): 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.replace("-cross", "-native")) - elif not dep.endswith("-native"): - newdeps.append(dep + "-native") - else: - newdeps.append(dep) - d.setVar(varname, " ".join(newdeps)) - - map_dependencies("DEPENDS", e.data) - for pkg in [e.data.getVar("PN", True), "", "${PN}"]: - 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) + native_virtclass_map_dependencies(e.data) provides = e.data.getVar("PROVIDES", True) for prov in provides.split(): diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass index ceec53e..af8f9ef 100644 --- a/meta/classes/nativesdk.bbclass +++ b/meta/classes/nativesdk.bbclass @@ -72,32 +72,7 @@ python () { if not pn.endswith("-nativesdk"): 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("-native") or dep.endswith("-cross"): - newdeps.append(dep) - elif dep.endswith("-gcc-intermediate") or dep.endswith("-gcc-initial") or dep.endswith("-gcc") or dep.endswith("-g++"): - newdeps.append(dep + "-crosssdk") - elif not dep.endswith("-nativesdk"): - newdeps.append(dep.replace("-nativesdk", "") + "-nativesdk") - else: - newdeps.append(dep) - d.setVar(varname, " ".join(newdeps)) - - map_dependencies("DEPENDS", d) - #for pkg in (d.getVar("PACKAGES", True).split() + [""]): - # map_dependencies("RDEPENDS", d, pkg) - # map_dependencies("RRECOMMENDS", d, pkg) - # map_dependencies("RSUGGESTS", d, pkg) - # map_dependencies("RPROVIDES", d, pkg) - # map_dependencies("RREPLACES", d, pkg) + nativesdk_virtclass_map_dependencies(d) provides = d.getVar("PROVIDES", True) for prov in provides.split(): -- 1.7.8.5 _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
