classes/patch: avoid backtrace when patch does not apply

We don't need to see a Python stack backtrace when a patch does not
apply, just the error output from patch, so trap these kinds of errors
and ensure that we display the message and fail the task and nothing
else.

Fixes [YOCTO #1143]

(From OE-Core rev: ce6c80a1e68c2af0b4b5fa27582ad9c9f119e5c1)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton 2012-01-19 13:59:15 +00:00 committed by Richard Purdie
parent adb3ed29db
commit 11e5d7bc81
2 changed files with 9 additions and 6 deletions

View File

@ -155,7 +155,10 @@ python patch_do_patch() {
patchset.Import({"file":local, "strippath": parm['striplevel']}, True)
except Exception as exc:
bb.fatal(str(exc))
resolver.Resolve()
try:
resolver.Resolve()
except bb.BBHandledException as e:
bb.fatal(str(e))
}
patch_do_patch[vardepsexclude] = "PATCHRESOLVE"

View File

@ -2,14 +2,14 @@ import oe.path
import os
import bb.utils, bb.msg, bb.data, bb.fetch2
class NotFoundError(Exception):
class NotFoundError(bb.BBHandledException):
def __init__(self, path):
self.path = path
def __str__(self):
return "Error: %s not found." % self.path
class CmdError(Exception):
class CmdError(bb.BBHandledException):
def __init__(self, exitstatus, output):
self.status = exitstatus
self.output = output
@ -207,7 +207,7 @@ class QuiltTree(PatchSet):
# read series -> self.patches
seriespath = os.path.join(self.dir, 'patches', 'series')
if not os.path.exists(self.dir):
raise Exception("Error: %s does not exist." % self.dir)
raise NotFoundError(self.dir)
if os.path.exists(seriespath):
series = file(seriespath, 'r')
for line in series.readlines():
@ -228,7 +228,7 @@ class QuiltTree(PatchSet):
if sys.exc_value.output.strip() == "No patches applied":
return
else:
raise sys.exc_value
raise
output = [val for val in output.split('\n') if not val.startswith('#')]
for patch in self.patches:
if os.path.basename(patch["quiltfile"]) == output[-1]:
@ -336,7 +336,7 @@ class NOOPResolver(Resolver):
except Exception:
import sys
os.chdir(olddir)
raise sys.exc_value
raise
# Patch resolver which relies on the user doing all the work involved in the
# resolution, with the exception of refreshing the remote copy of the patch