<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jan 14, 2013 at 9:04 AM, Andrew Stubbs <span dir="ltr">&lt;<a href="mailto:ams@codesourcery.com" target="_blank">ams@codesourcery.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi all,<br>
<br>
I&#39;m trying to evaluate use of BitBake for projects other than OE.<br>
<br>
As part of that I&#39;ve been experimenting, and trying to learn how it works by writing a minimalist working recipe set starting from a blank slate. I had hoped that, with the documentation and error/warning messages, I would be able to do this step-by-step through trial and error, and thus learn more than doing a straight cut-and-paste. This works up to a point, but I&#39;ve now hit a dead end:<br>



<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
ERROR: An uncaught exception occured in runqueue, please see the failure below:<br>
ERROR: Running idle function<br>
Traceback (most recent call last):<br>
  File &quot;/opt/bitbake/lib/bb/cooker.<u></u>py&quot;, line 1152, in buildTargetsIdle(server=&lt;<u></u>ProcessServer(ProcessServer-1, started)&gt;, rq=&lt;bb.runqueue.RunQueue instance at 0x14654d0&gt;, abort=False):<br>



                 try:<br>
    &gt;                retval = rq.execute_runqueue()<br>
                 except runqueue.TaskFailure as exc:<br>
  File &quot;/opt/bitbake/lib/bb/runqueue.<u></u>py&quot;, line 934, in RunQueue.execute_runqueue():<br>
             try:<br>
    &gt;            return self._execute_runqueue()<br>
             except bb.runqueue.TaskFailure:<br>
  File &quot;/opt/bitbake/lib/bb/runqueue.<u></u>py&quot;, line 901, in RunQueue._execute_runqueue():<br>
             if self.state is runQueueRunning:<br>
    &gt;            retval = self.rqexe.execute()<br>
<br>
  File &quot;/opt/bitbake/lib/bb/runqueue.<u></u>py&quot;, line 1365, in RunQueueExecuteTasks.execute()<u></u>:<br>
<br>
    &gt;            if self.rq.check_stamp_task(task, taskname, cache=self.stampcache):<br>
                     logger.debug(2, &quot;Stamp current task %s (%s)&quot;, task,<br>
  File &quot;/opt/bitbake/lib/bb/runqueue.<u></u>py&quot;, line 821, in RunQueue.check_stamp_task(<u></u>task=0, taskname=&#39;do_build&#39;, recurse=False, cache={}):<br>
             # If the stamp is missing its not current<br>
    &gt;        if not os.access(stampfile, os.F_OK):<br>
                 logger.debug(2, &quot;Stampfile %s not available&quot;, stampfile)<br>
TypeError: coercing to Unicode: need string or buffer, NoneType found<br>
</blockquote>
<br>
Apparently BitBake has some kind of internal assumption about what the recipes/classes will look like that it doesn&#39;t explicitly check, and I haven&#39;t satisfied, somehow? Googling around suggests that the problem might be related to loops in the dependency chain, or something, but my recipe only has one task.<br>



<br>
Essentially, I have three files:<br>
<br>
conf/bitbake.conf<br>
---8&lt;---------------&gt;8---<br>
BBFILES = &quot;*.bb&quot;<br>
CACHE = &quot;/tmp/bbcache&quot;<br>
---8&lt;---------------&gt;8---<br>
<br>
classes/base.bbclass<br>
---8&lt;---------------&gt;8---<br>
addtask build<br>
<br>
do_build () {<br>
        :<br>
}<br>
---8&lt;---------------&gt;8---<br>
<br>
<a href="http://hello.bb" target="_blank">hello.bb</a><br>
---8&lt;---------------&gt;8---<br>
PROVIDES=&quot;hello&quot;<br>
<br>
do_build () {<br>
        echo &quot;Hello, World!&quot;<br>
}<br>
---8&lt;---------------&gt;8---<br>
<br>
I then invoke &quot;env BBPATH=$PWD bitbake hello&quot; and get the above exception.<br>
<br>
Clearly, I&#39;m missing something crucial, but what? Can you help me figure out what the minimal &quot;hello world&quot; recipe might look like?<br>
<br>
Thanks in advance<br>
<br>
Andrew<br>
<br>
P.S. I will probably end up using something based on a copy of the OE base-class, given there&#39;s no point in reinventing the wheel, but I&#39;d like to understand how these things work from first-principles first.<br>

</blockquote><div><br></div><div style>This doesn&#39;t answer your problem directy, and you may have seen this tutorial already, but in case not:</div><div style><br></div><div style><a href="http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/">http://hambedded.org/blog/2012/11/24/from-bitbake-hello-world-to-an-image/</a></div>

<div style><br></div><div style>Note that I&#39;m including a hello world example in the new BitBake User Manual I&#39;m working on.</div><div style> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">



<br>
______________________________<u></u>_________________<br>
bitbake-devel mailing list<br>
<a href="mailto:bitbake-devel@lists.openembedded.org" target="_blank">bitbake-devel@lists.<u></u>openembedded.org</a><br>
<a href="http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/bitbake-devel" target="_blank">http://lists.linuxtogo.org/<u></u>cgi-bin/mailman/listinfo/<u></u>bitbake-devel</a><br>
</blockquote></div><br></div></div>