[OE-core] [PATCH] uninative.bbclass: capture stdout/err from patchelf-uninative

Patrick Ohly patrick.ohly at intel.com
Thu Feb 11 06:59:42 UTC 2016


When patchelf-uninative fails, reporting only the exit code
as done by subprocess.check_call() is not enough to understand
the problem. We also need to capture and report the output
of the command.

Signed-off-by: Patrick Ohly <patrick.ohly at intel.com>
---
 meta/classes/uninative.bbclass | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass
index 580917b..0448cf6 100644
--- a/meta/classes/uninative.bbclass
+++ b/meta/classes/uninative.bbclass
@@ -84,5 +84,11 @@ python uninative_changeinterp () {
                 continue
 
             #bb.warn("patchelf-uninative --set-interpreter %s %s" % (d.getVar("UNINATIVE_LOADER", True), f))
-            subprocess.check_call("patchelf-uninative --set-interpreter %s %s" % (d.getVar("UNINATIVE_LOADER", True), f), shell=True)
+            cmd = "patchelf-uninative --set-interpreter %s %s" % (d.getVar("UNINATIVE_LOADER", True), f)
+            p = subprocess.Popen(cmd, shell=True,
+                                 stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+            stdout, stderr = p.communicate()
+            if p.returncode:
+                bb.fatal("'%s' failed with exit code %d and the following output:\n%s" %
+                         (cmd, p.returncode, stdout))
 }
-- 
2.1.4




More information about the Openembedded-core mailing list