<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>7518</bug_id>
          
          <creation_ts>2015-03-25 23:07:24 +0000</creation_ts>
          <short_desc>Build multiple machines in the same bitbake invocation</short_desc>
          <delta_ts>2016-08-24 15:36:53 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>OE-Core</product>
          <component>configuration</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>High</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>2.2 M3</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Hall">tylerwhall</reporter>
          <assigned_to name="Richard Purdie">richard.purdie</assigned_to>
          <cc>frederico.cadete</cc>
    
    <cc>jose.perez.carranza</cc>
    
    <cc>tim.orling</cc>
          
          <qa_contact name="Libertad">libertad.gonzalez.de.la.cruz</qa_contact>
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>Yes (doc changes required)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>49763</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Hall">tylerwhall</who>
    <bug_when>2015-03-25 23:07:24 +0000</bug_when>
    <thetext>On complex embedded boards that have multiple SoCs and microcontrollers, it is sometimes necessary to build different images for multiple machines as well as firmware for microcontrollers and package them all into one programmable update file. Currently this requires separate invocations of bitbake with different configuration and an external tool to combine the artifacts from each.

Example:
A single board containing an x86_64 SoC connected over PCI express to an AArch64 SoC along with an AVR microcontroller. One SoC may be a slave to the other and get its firmware from the primary SoC. The microcontroller is reprogrammed from fimrware stored on the SoC&apos;s file system when out of date.

Perhaps this could be handled similarly to multilib, where the recipes for the &quot;slave&quot; machines are built using a mechanism like BBCLASSEXTEND. Ideally the recipes would not need to be modified to support this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49788</commentid>
    <comment_count>1</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2015-03-26 09:25:24 +0000</bug_when>
    <thetext>I&apos;ve wondered about this for a long time and you&apos;re right, the multilib BBCLASSEXTEND mechanism does give us some options.

The big challenge is that we&apos;ve intentionally kept knowledge of MACHINE out of bitbake. Unlike nativesdk/native, when you change MACHINE, the underlying base data store changes directly too.

The BBCLASSEXTEND mechanism &apos;just&apos; requires post processing of the datastore, differing machines requires a completely separate base data stores. The &quot;namespace&quot; of two different machines is identical too (both have &apos;bash&apos;), unlike something like nativesdk. Yes we could alter all the namespaces for each different machine but it touches a lot more places than nativesdk does.

How to pull all this together in a generic scalable way which doesn&apos;t overload bitbake and doesn&apos;t put &quot;OE specific&quot; knowledge like MACHINE into it is a tough question.

You&apos;d also start to get questions like &quot;why can&apos;t I do this with multiple DISTROs too?&quot;.

So yes I like the idea and would love to see it but the details of how are tricky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63378</commentid>
    <comment_count>2</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-06-27 22:03:44 +0000</bug_when>
    <thetext>I have multi-config on a branch and it basically works. Targeting M2 for the merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65485</commentid>
    <comment_count>3</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2016-08-24 15:36:53 +0000</bug_when>
    <thetext>http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=218b81acb682bf0006afeb1a5c7bc4adf0549796

Specific bugs can be opened for specific issues from here.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>