<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 22, 2016 at 7:25 AM, Richard Purdie <span dir="ltr"><<a href="mailto:richard.purdie@linuxfoundation.org" target="_blank">richard.purdie@linuxfoundation.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":lb" class="a3s aXjCH m15612ff545c4334f">In order to add a new architecture or sub-architecture to OE, you currently<br>
need to tweak the table in insane.<span class="il">bbclass</span>. This adds a mechanism so this<br>
can be done from a BSP layer. It needs a function definition which needs<br>
a <span class="il">class</span> file but can then be done with something like:<br>
<br>
def my_testfunc(machdata, d):<br>
machdata["testmachine"] = {<br>
"test64": ( 8, 0, 0, False, 32),<br>
"testel": ( 8, 0, 0, True, 32),<br>
}<br>
return machdata<br>
<br>
PACKAGEQA_EXTRA_MACHDEFFUNCS = "my_testfunc"<br>
<br>
[YOCTO #8554]<br>
<br>
Signed-off-by: Richard Purdie <<a href="mailto:richard.purdie@linuxfoundation.org">richard.purdie@linuxfoundation.org</a>><br>
<br>
diff --git a/meta/classes/insane.<span class="il">bbclass</span> b/meta/classes/insane.<span class="il">bbclass</span><br>
index 9b2337c..98381c2 100644<br>
--- a/meta/classes/insane.<span class="il">bbclass</span><br>
+++ b/meta/classes/insane.<span class="il">bbclass</span><br>
@@ -54,8 +54,8 @@ UNKNOWN_CONFIGURE_WHITELIST ?= "--enable-nls --disable-nls --disable-silent-rule<br>
# feel free to add and correct.<br>
#<br>
# TARGET_OS TARGET_ARCH MACHINE, OSABI, ABIVERSION, Little Endian, 32bit?<br>
-def package_qa_get_machine_dict():<br>
- return {<br>
+def package_qa_get_machine_dict(d):<br>
+ machdata = {<br>
"darwin9" : {<br>
"arm" : (40, 0, 0, True, 32),<br>
},<br>
@@ -168,6 +168,16 @@ def package_qa_get_machine_dict():<br>
},<br>
}<br>
<br>
+ # Add in any extra user supplied data which may come from a BSP layer, removing the<br>
+ # need to always change this <span class="il">class</span> directly<br>
+ extra_machdata = (d.getVar("PACKAGEQA_EXTRA_MACHDEFFUNCS", True) or "").split()<br>
+ for m in extra_machdata:<br>
+ call = m + "(machdata, d)"<br>
+ locs = { "machdata" : machdata, "d" : d}<br>
+ machdata = <span class="il">bb</span>.utils.better_eval(call, locs)</div></blockquote></div><br>Out of curiosity, why pass in the dict and have it modify and return it, when it could just return a new dict that you add to machdata with machdata.update()?<br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Christopher Larson<br>clarson at kergoth dot com<br>Founder - BitBake, OpenEmbedded, OpenZaurus<br>Maintainer - Tslib<br>Senior Software Engineer, Mentor Graphics</div>
</div></div>