diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2012-01-19 13:59:15 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-01-19 14:34:34 +0000 |
commit | 11e5d7bc814a265d338dbb06d82e7533c2187be2 (patch) | |
tree | 5bafb67bdcad14bb22bd30f0784cc34d8a93778b | |
parent | adb3ed29db5973d6b43a0217c4d8052d2ff722f8 (diff) | |
download | poky-11e5d7bc814a265d338dbb06d82e7533c2187be2.tar.gz |
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>
-rw-r--r-- | meta/classes/patch.bbclass | 5 | ||||
-rw-r--r-- | meta/lib/oe/patch.py | 10 |
2 files changed, 9 insertions, 6 deletions
diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass index 471c32bce2..1ea4bc5e02 100644 --- a/meta/classes/patch.bbclass +++ b/meta/classes/patch.bbclass | |||
@@ -155,7 +155,10 @@ python patch_do_patch() { | |||
155 | patchset.Import({"file":local, "strippath": parm['striplevel']}, True) | 155 | patchset.Import({"file":local, "strippath": parm['striplevel']}, True) |
156 | except Exception as exc: | 156 | except Exception as exc: |
157 | bb.fatal(str(exc)) | 157 | bb.fatal(str(exc)) |
158 | resolver.Resolve() | 158 | try: |
159 | resolver.Resolve() | ||
160 | except bb.BBHandledException as e: | ||
161 | bb.fatal(str(e)) | ||
159 | } | 162 | } |
160 | patch_do_patch[vardepsexclude] = "PATCHRESOLVE" | 163 | patch_do_patch[vardepsexclude] = "PATCHRESOLVE" |
161 | 164 | ||
diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py index f4ccb3e183..6f7f90095c 100644 --- a/meta/lib/oe/patch.py +++ b/meta/lib/oe/patch.py | |||
@@ -2,14 +2,14 @@ import oe.path | |||
2 | import os | 2 | import os |
3 | import bb.utils, bb.msg, bb.data, bb.fetch2 | 3 | import bb.utils, bb.msg, bb.data, bb.fetch2 |
4 | 4 | ||
5 | class NotFoundError(Exception): | 5 | class NotFoundError(bb.BBHandledException): |
6 | def __init__(self, path): | 6 | def __init__(self, path): |
7 | self.path = path | 7 | self.path = path |
8 | 8 | ||
9 | def __str__(self): | 9 | def __str__(self): |
10 | return "Error: %s not found." % self.path | 10 | return "Error: %s not found." % self.path |
11 | 11 | ||
12 | class CmdError(Exception): | 12 | class CmdError(bb.BBHandledException): |
13 | def __init__(self, exitstatus, output): | 13 | def __init__(self, exitstatus, output): |
14 | self.status = exitstatus | 14 | self.status = exitstatus |
15 | self.output = output | 15 | self.output = output |
@@ -207,7 +207,7 @@ class QuiltTree(PatchSet): | |||
207 | # read series -> self.patches | 207 | # read series -> self.patches |
208 | seriespath = os.path.join(self.dir, 'patches', 'series') | 208 | seriespath = os.path.join(self.dir, 'patches', 'series') |
209 | if not os.path.exists(self.dir): | 209 | if not os.path.exists(self.dir): |
210 | raise Exception("Error: %s does not exist." % self.dir) | 210 | raise NotFoundError(self.dir) |
211 | if os.path.exists(seriespath): | 211 | if os.path.exists(seriespath): |
212 | series = file(seriespath, 'r') | 212 | series = file(seriespath, 'r') |
213 | for line in series.readlines(): | 213 | for line in series.readlines(): |
@@ -228,7 +228,7 @@ class QuiltTree(PatchSet): | |||
228 | if sys.exc_value.output.strip() == "No patches applied": | 228 | if sys.exc_value.output.strip() == "No patches applied": |
229 | return | 229 | return |
230 | else: | 230 | else: |
231 | raise sys.exc_value | 231 | raise |
232 | output = [val for val in output.split('\n') if not val.startswith('#')] | 232 | output = [val for val in output.split('\n') if not val.startswith('#')] |
233 | for patch in self.patches: | 233 | for patch in self.patches: |
234 | if os.path.basename(patch["quiltfile"]) == output[-1]: | 234 | if os.path.basename(patch["quiltfile"]) == output[-1]: |
@@ -336,7 +336,7 @@ class NOOPResolver(Resolver): | |||
336 | except Exception: | 336 | except Exception: |
337 | import sys | 337 | import sys |
338 | os.chdir(olddir) | 338 | os.chdir(olddir) |
339 | raise sys.exc_value | 339 | raise |
340 | 340 | ||
341 | # Patch resolver which relies on the user doing all the work involved in the | 341 | # Patch resolver which relies on the user doing all the work involved in the |
342 | # resolution, with the exception of refreshing the remote copy of the patch | 342 | # resolution, with the exception of refreshing the remote copy of the patch |