Patchwork [bitbake-devel,v2,6/9] fetch2: Fix missing output from stderr in fetcher logs

mail settings
Submitter Jason Wessel
Date June 1, 2012, 9:18 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/29105/
State Accepted
Commit af2133a04e1f4b22b181adf9c71f89c439bb88cf
Headers show


Jason Wessel - June 1, 2012, 9:18 p.m.
There are actually two problems to fix

1) The exception for bb.process.ExecutionError must be processed first
   because it is a derived from the bb.process.CmdError class and
   we never reach the ExecutionError otherwise.

2) The stderr needs to be printed as well as stdout to determine
   the root cause of a fetch failure.

The example I have is that I got a log that looked like:

ERROR: Function failed: Network access disabled through
  BB_NO_NETWORK but access requested with command
   /usr/bin/env wget -t 5 -nv --passive-ftp --no-check-certificate -P
   /localds '[...CLIPPED...] url None)

That really didn't tell me much, but with this patch I get error above
plus the following:

STDERR: /net/[...CLIPPED...]kernel-tools.git: Read-only file system

Having the ability to see that the build was trying to write to a
read-only file system was a good clue that the fetcher is broken in
some other way to be fixed in a follow on patch, but let us fix the
logging problem first.

Signed-off-by: Jason Wessel <>
 lib/bb/fetch2/ |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)


diff --git a/lib/bb/fetch2/ b/lib/bb/fetch2/
index 3391e6a..ba562a8 100644
--- a/lib/bb/fetch2/
+++ b/lib/bb/fetch2/
@@ -421,11 +421,10 @@  def runfetchcmd(cmd, d, quiet = False, cleanup = []):
         success = True
     except bb.process.NotFoundError as e:
         error_message = "Fetch command %s" % (e.command)
+    except bb.process.ExecutionError as e:
+        error_message = "Fetch command %s failed with exit code %s, output:\nSTDOUT: %s\nSTDERR: %s" % (e.command, e.exitcode, e.stdout, e.stderr)
     except bb.process.CmdError as e:
         error_message = "Fetch command %s could not be run:\n%s" % (e.command, e.msg)
-    except bb.process.ExecutionError as e:
-        error_message = "Fetch command %s failed with exit code %s, output:\n%s" % (e.command, e.exitcode, e.stderr)
     if not success:
         for f in cleanup: