<div dir="auto"><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Feb 11, 2018 02:34, &quot;Robert Yang&quot; &lt;<a href="mailto:liezhi.yang@windriver.com">liezhi.yang@windriver.com</a>&gt; wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Joshua,<br>
<br>
This one causes the following 2 recipes failed to build:<br>
<br>
meta-openembedded/meta-network<wbr>ing/recipes-support/libtalloc/<a href="http://libtalloc_2.1.10.bb" target="_blank"><wbr>libtalloc_2.1.10.bb</a>:do_<wbr>configure<br>
meta-openembedded/meta-network<wbr>ing/recipes-support/libtdb/<wbr>libtdb_1.3.15.bb:do_configure<br>
<br>
The error messages are similar:<br>
<br>
File: &#39;/usr/lib/python3.4/subprocess<wbr>.py&#39;, lineno: 1457, function: _execute_child<br>
     1453:                                # The error must be from chdir(cwd).<br>
     1454:                                err_msg += &#39;: &#39; + repr(cwd)<br>
     1455:                            else:<br>
     1456:                                err_msg += &#39;: &#39; + repr(orig_executable)<br>
 *** 1457:                    raise child_exception_type(errno_num<wbr>, err_msg)<br>
     1458:                raise child_exception_type(err_msg)<br>
     1459:<br>
     1460:<br>
     1461:        def _handle_exitstatus(self, sts, _WIFSIGNALED=os.WIFSIGNALED,<br>
Exception: FileNotFoundError: [Errno 2] No such file or directory: &#39;/path/to/tmp-glibc/work/i586-<wbr>wrs-linux/libtdb/1.3.15-r0/tdb<wbr>-1.3.15/waf&#39;<font color="#888888"><br>
<br>
// Robert</font></blockquote></div></div></div><div dir="auto"><br></div><div dir="auto">Forgot to reply all.</div><div dir="auto"><br></div><div dir="auto">I will look into this shortly, I think I know want needs to be done.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="elided-text"><br>
<br>
On 02/01/2018 03:49 AM, Joshua Watt wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
waf requires that the current working directory be the project root (in<br>
this case ${S} when it is invoked. The check to get the waf version was<br>
being executed as a prefunc for do_configure, which meant it was<br>
executed before the current working directory was switched to ${S}, and<br>
thus would fail with some recipes. Fix this by changing to ${S} before<br>
executing &quot;waf --version&quot;<br>
<br>
Signed-off-by: Joshua Watt &lt;<a href="mailto:JPEWhacker@gmail.com" target="_blank">JPEWhacker@gmail.com</a>&gt;<br>
---<br>
  meta/classes/waf.bbclass | 19 ++++++++++---------<br>
  1 file changed, 10 insertions(+), 9 deletions(-)<br>
<br>
diff --git a/meta/classes/waf.bbclass b/meta/classes/waf.bbclass<br>
index c3e744e5dec..bdbdc56767c 100644<br>
--- a/meta/classes/waf.bbclass<br>
+++ b/meta/classes/waf.bbclass<br>
@@ -26,16 +26,17 @@ def get_waf_parallel_make(d):<br>
      return &quot;&quot;<br>
    python waf_preconfigure() {<br>
+    import subprocess<br>
      from distutils.version import StrictVersion<br>
-    srcsubdir = d.getVar(&#39;S&#39;)<br>
-    wafbin = os.path.join(srcsubdir, &#39;waf&#39;)<br>
-    status, result = oe.utils.getstatusoutput(wafbi<wbr>n + &quot; --version&quot;)<br>
-    if status != 0:<br>
-        bb.warn(&quot;Unable to execute waf --version, exit code %d. Assuming waf version without bindir/libdir support.&quot; % status)<br>
-        return<br>
-    version = result.split()[1]<br>
-    if StrictVersion(version) &gt;= StrictVersion(&quot;1.8.7&quot;):<br>
-        d.setVar(&quot;WAF_EXTRA_CONF&quot;, &quot;--bindir=${bindir} --libdir=${libdir}&quot;)<br>
+    subsrcdir = d.getVar(&#39;S&#39;)<br>
+    wafbin = os.path.join(subsrcdir, &#39;waf&#39;)<br>
+    try:<br>
+        result = subprocess.check_output([wafbi<wbr>n, &#39;--version&#39;], cwd=subsrcdir, stderr=subprocess.STDOUT)<br>
+        version = result.decode(&#39;utf-8&#39;).split()<wbr>[1]<br>
+        if StrictVersion(version) &gt;= StrictVersion(&quot;1.8.7&quot;):<br>
+            d.setVar(&quot;WAF_EXTRA_CONF&quot;, &quot;--bindir=${bindir} --libdir=${libdir}&quot;)<br>
+    except subprocess.CalledProcessError as e:<br>
+        bb.warn(&quot;Unable to execute waf --version, exit code %d. Assuming waf version without bindir/libdir support.&quot; % e.returncode)<br>
  }<br>
    do_configure[prefuncs] += &quot;waf_preconfigure&quot;<br>
<br>
</blockquote>
</div></blockquote></div><br></div></div></div>