From patchwork Fri Jun 1 21:18:36 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [bitbake-devel, v2, 6/9] fetch2: Fix missing output from stderr in fetcher logs Date: Fri, 01 Jun 2012 21:18:36 -0000 From: Jason Wessel X-Patchwork-Id: 29105 Message-Id: <1338585519-869-7-git-send-email-jason.wessel@windriver.com> To: 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 'http://downloads.yoctoproject.org/[...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/__init__.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py index 3391e6a..ba562a8 100644 --- a/lib/bb/fetch2/__init__.py +++ b/lib/bb/fetch2/__init__.py @@ -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: try: