When external commands such as debugedit fail, it can be useful to see their output, so use oe.utils.getstatusoutput() instead of subprocess.call() to capture this and print it on failure.
Signed-off-by: Paul Eggleton <paul.eggle...@linux.intel.com> --- meta/classes/package.bbclass | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 8e6029a..5c2d1c6 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -236,7 +236,7 @@ def splitdebuginfo(file, debugfile, debugsrcdir, sourcefile, d): # # sourcefile is also generated containing a list of debugsources - import stat, subprocess + import stat dvar = d.getVar('PKGD', True) objcopy = d.getVar("OBJCOPY", True) @@ -257,22 +257,22 @@ def splitdebuginfo(file, debugfile, debugsrcdir, sourcefile, d): # We need to extract the debug src information here... if debugsrcdir: cmd = "'%s' -b '%s' -d '%s' -i -l '%s' '%s'" % (debugedit, workparentdir, debugsrcdir, sourcefile, file) - retval = subprocess.call(cmd, shell=True) + (retval, output) = oe.utils.getstatusoutput(cmd) if retval: - bb.fatal("debugedit failed with exit code %s (cmd was %s)" % (retval, cmd)) + bb.fatal("debugedit failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else "")) bb.utils.mkdirhier(os.path.dirname(debugfile)) cmd = "'%s' --only-keep-debug '%s' '%s'" % (objcopy, file, debugfile) - retval = subprocess.call(cmd, shell=True) + (retval, output) = oe.utils.getstatusoutput(cmd) if retval: - bb.fatal("objcopy failed with exit code %s (cmd was %s)" % (retval, cmd)) + bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else "")) # Set the debuglink to have the view of the file path on the target cmd = "'%s' --add-gnu-debuglink='%s' '%s'" % (objcopy, debugfile, file) - retval = subprocess.call(cmd, shell=True) + (retval, output) = oe.utils.getstatusoutput(cmd) if retval: - bb.fatal("objcopy failed with exit code %s (cmd was %s)" % (retval, cmd)) + bb.fatal("objcopy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else "")) if newmode: os.chmod(file, origmode) @@ -283,7 +283,7 @@ def copydebugsources(debugsrcdir, d): # The debug src information written out to sourcefile is further procecessed # and copied to the destination here. - import stat, subprocess + import stat sourcefile = d.expand("${WORKDIR}/debugsources.list") if debugsrcdir and os.path.isfile(sourcefile): @@ -311,7 +311,7 @@ def copydebugsources(debugsrcdir, d): processdebugsrc += "(cd '%s' ; cpio -pd0mlL --no-preserve-owner '%s%s' 2>/dev/null)" cmd = processdebugsrc % (sourcefile, workbasedir, workparentdir, dvar, debugsrcdir) - retval = subprocess.call(cmd, shell=True) + (retval, output) = oe.utils.getstatusoutput(cmd) # Can "fail" if internal headers/transient sources are attempted #if retval: # bb.fatal("debug source copy failed with exit code %s (cmd was %s)" % (retval, cmd)) @@ -319,9 +319,9 @@ def copydebugsources(debugsrcdir, d): # The copy by cpio may have resulted in some empty directories! Remove these cmd = "find %s%s -empty -type d -delete" % (dvar, debugsrcdir) - retval = subprocess.call(cmd, shell=True) + (retval, output) = oe.utils.getstatusoutput(cmd) if retval: - bb.fatal("empty directory removal failed with exit code %s (cmd was %s)" % (retval, cmd)) + bb.fatal("empty directory removal failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else "")) # Also remove debugsrcdir if its empty for p in nosuchdir[::-1]: @@ -446,7 +446,6 @@ python package_do_split_locales() { } python perform_packagecopy () { - import subprocess dest = d.getVar('D', True) dvar = d.getVar('PKGD', True) @@ -454,9 +453,9 @@ python perform_packagecopy () { # files to operate on # Preserve sparse files and hard links cmd = 'tar -cf - -C %s -ps . | tar -xf - -C %s' % (dest, dvar) - retval = subprocess.call(cmd, shell=True) + (retval, output) = oe.utils.getstatusoutput(cmd) if retval: - bb.fatal("file copy failed with exit code %s (cmd was %s)" % (retval, cmd)) + bb.fatal("file copy failed with exit code %s (cmd was %s)%s" % (retval, cmd, ":\n%s" % output if output else "")) # replace RPATHs for the nativesdk binaries, to make them relocatable if bb.data.inherits_class('nativesdk', d) or bb.data.inherits_class('cross-canadian', d): @@ -916,7 +915,7 @@ python split_and_strip_files () { } python populate_packages () { - import glob, re, subprocess + import glob, re workdir = d.getVar('WORKDIR', True) outdir = d.getVar('DEPLOY_DIR', True) -- 1.8.1.2 _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core