<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
<div>I've had a problem with the 1.15.2 version of BitBake and I'd like to see if a BitBake expert can short-circuit my investigation.</div>
<div><br>
</div>
<div>I am trying to create a &quot;Hello, World!&quot; BitBake project. That is, I want to create the smallest possible BitBake project with one layer and one recipe that does nothing except print &quot;Hello, World!&quot;</div>
<div><br>
</div>
<div>Because the project is *intended* to be small, the entire file tree fits very comfortably at the end of this message. Here's what works fine:</div>
<div><br>
</div>
<div><br>
</div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; $ ../BitBake/bin/bitbake-layers show-layers</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; Parsing recipes..done.</font></div>
<div><font face="Courier New" style="font-size: 14px;"><br>
</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; layer &nbsp; &nbsp; path &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;priority</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; ==========================================================</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; LayerA &nbsp; &nbsp;/home/pturley/Workspace/Hello/LayerA &nbsp; &nbsp;1</font></div>
<div><font face="Courier New" style="font-size: 14px;"><br>
</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; $ ../BitBake/bin/bitbake-layers show-recipes</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; Parsing recipes..done.</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; === Available recipes: ===</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; a:</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; &nbsp; LayerA &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1</font></div>
<div><br>
</div>
<div><br>
</div>
<div>When I tried this:</div>
<div><br>
</div>
<div><br>
</div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; ../BitBake/bin/bitbake -c listtasks a</font></div>
<div><br>
</div>
<div><br>
</div>
<div>I got a Python stack trace that ended here:</div>
<div><br>
</div>
<div><br>
</div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; &nbsp; File &quot;../BitBake/lib/bb/runqueue.py&quot;, line 902, in RunQueue.check_stamp_task(task=0, taskname='do_listtasks', recurse=False):</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# If the stamp is missing its not current</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; &gt; &nbsp; &nbsp; &nbsp; &nbsp;if not os.access(stampfile, os.F_OK):</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;logger.debug(2, &quot;Stampfile %s not available&quot;, stampfile)</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; TypeError: coercing to Unicode: need string or buffer, NoneType found</font></div>
<div><br>
</div>
<div><br>
</div>
<div>I've done a bit of debugging, and I've discovered that this code doesn't expect the &quot;stampfile&quot; variable to be &quot;None&quot; (which it is). I made a very simple fix to get past the problem:</div>
<div><br>
</div>
<div><br>
</div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; if not stampfile or not os.access(stampfile, os.F_OK):</font></div>
<div><br>
</div>
<div><br>
</div>
<div>I'd prefer to use BitBake &quot;as-is,&quot; so I'd like to get to the root cause of the problem.</div>
<div><br>
</div>
<div>I *can* dig into the code and eventually find my way back to whatever is causing BitBake to trip over this condition. What would be *really* great, though, is if an expert just glanced at this message and said something like &quot;Oh yeh - you just need to
 create directory 'X' and BitBake won't trip over this anymore.&quot;</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><font face="Courier New" style="font-size: 14px;">------------------------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;"><br>
</font></div>
<div><font face="Courier New" style="font-size: 14px;"><br>
</font></div>
<div><font face="Courier New" style="font-size: 14px;">├── build</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; ├── classes</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; └── base.bbclass</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; &#43;-----------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp;addtask listtasks</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; |</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp;do_listtasks[nostamp] = &quot;1&quot;</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; |</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp;python do_listtasks() {</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import sys</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# emit variables and shell functions</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#bb.data.emit_env(sys.__stdout__, d)</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# emit the metadata which isnt valid shell</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for e in d.keys():</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if d.getVarFlag(e, 'task'):</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bb.plain(&quot;%s&quot; % e)</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp;}</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; |</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp;addtask build</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; |</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp;do_build() {</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp;echo &quot;Hello&quot;</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp;}</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; &#43;-----------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; └── conf</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; ├── bblayers.conf</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; │ &nbsp; &#43;-----------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; │ &nbsp; | &nbsp;BBLAYERS ?= &quot; \</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; │ &nbsp; | &nbsp; &nbsp;/home/pturley/Workspace/Hello/LayerA \</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; │ &nbsp; | &nbsp; &nbsp;&quot;</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; │ &nbsp; &#43;-----------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; └── bitbake.conf</font></div>
<div><font face="Courier New" style="font-size: 14px;">│</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#43;-----------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;CACHE = &quot;${TOPDIR}/cache&quot;</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#43;-----------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;">│</font></div>
<div><font face="Courier New" style="font-size: 14px;">├── LayerA</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; ├── a.bb</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; &#43;-----------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp;DESCRIPTION = &quot;Layer A Main Recipe&quot;</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp;PN = 'a'</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; | &nbsp;PV = '1'</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │ &nbsp; &nbsp; &nbsp; &#43;-----------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; └── conf</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; │</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; └── layer.conf</font></div>
<div><font face="Courier New" style="font-size: 14px;">│</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#43;-----------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;BBPATH .= &quot;:${LAYERDIR}&quot;</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;BBFILES &#43;= &quot;${LAYERDIR}/*.bb&quot;</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;BBFILE_COLLECTIONS &#43;= &quot;A&quot;</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp;BBFILE_PATTERN_A := &quot;^${LAYERDIR}/&quot;</font></div>
<div><font face="Courier New" style="font-size: 14px;">│ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#43;-----------------------------------------------</font></div>
<div><font face="Courier New" style="font-size: 14px;">│</font></div>
<div><font face="Courier New" style="font-size: 14px;">└── BitBake</font></div>
<div><font face="Courier New" style="font-size: 14px;"><br>
</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp;The BitBake directory origin is:</font></div>
<div><font face="Courier New" style="font-size: 14px;"><br>
</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp;<a href="http://git.openembedded.org/bitbake/">http://git.openembedded.org/bitbake/</a></font></div>
<div><font face="Courier New" style="font-size: 14px;"><br>
</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp;I have the 1.15.2 tag checked out, which is what</font></div>
<div><font face="Courier New" style="font-size: 14px;">&nbsp; &nbsp;Yocto denzil uses.</font></div>
<div><br>
</div>
</body>
</html>