<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">&lt;<a href="mailto:richard.purdie@linuxfoundation.org" target="_blank">richard.purdie@linuxfoundation.org</a>&gt;</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[&quot;testmachine&quot;] = {<br>
                        &quot;test64&quot;:       ( 8,     0,    0,          False,         32),<br>
                        &quot;testel&quot;:     ( 8,     0,    0,          True,          32),<br>
                      }<br>
    return machdata<br>
<br>
PACKAGEQA_EXTRA_MACHDEFFUNCS = &quot;my_testfunc&quot;<br>
<br>
[YOCTO #8554]<br>
<br>
Signed-off-by: Richard Purdie &lt;<a href="mailto:richard.purdie@linuxfoundation.org">richard.purdie@linuxfoundation.org</a>&gt;<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 ?= &quot;--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>
             &quot;darwin9&quot; : {<br>
                         &quot;arm&quot; :       (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(&quot;PACKAGEQA_EXTRA_MACHDEFFUNCS&quot;, True) or &quot;&quot;).split()<br>
+    for m in extra_machdata:<br>
+        call = m + &quot;(machdata, d)&quot;<br>
+        locs = { &quot;machdata&quot; : machdata, &quot;d&quot; : 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>