See this logic: if out: msger.debug('"%s" output: %s' % (args[0], out)) if ret != 0: S> msger.error("exec_cmd: '%s' returned '%s' instead of 0" % \ (cmd_and_args, ret)) So it fails to show stdout/stderr to the user on failure unless the user passed -D to wic. This is not useful. Also, all of this runner/exec code duplicates the other wrapping of subprocess done elsewhere in bitbake and oe-core.
Regarding code duplicates: Thanks for pointing out to it. I'm going to address it in refactoring bug 10619.
Created attachment 3564 [details] v1 I fixed the issue, but it unveiled another bug, brought by your latest change. I'll provide more details in the bug 10815.
patch has been sent for review: http://lists.openembedded.org/pipermail/openembedded-core/2017-January/130949.html
The fix has been accepted to poky master