Currently, if PATCHRESOLVE is user and and PatchTree() is being used, you can get backtraces if patch applcication fails. This is because even in the failure case, self._current is incremented, meaning second time around, there are array range issues.
This patch changes the code so _current is only incremented upon successful patch application, thereby resolving this failure. [YOCTO #2043 partially] Signed-off-by: Richard Purdie <[email protected]> --- diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py index 6f7f900..065a8f7 100644 --- a/meta/lib/oe/patch.py +++ b/meta/lib/oe/patch.py @@ -134,20 +134,23 @@ class PatchTree(PatchSet): bb.note("patches is %s" % self.patches) if all: for i in self.patches: + bb.note("applying patch %s" % i) + self._applypatch(i, force) + if self._current is not None: self._current = self._current + 1 else: self._current = 0 - bb.note("applying patch %s" % i) - self._applypatch(i, force) else: + bb.note("applying patch %s" % self.patches[self._current or 0]) + ret = self._applypatch(self.patches[self._current or 0], force) + if self._current is not None: self._current = self._current + 1 else: self._current = 0 - bb.note("applying patch %s" % self.patches[self._current]) - return self._applypatch(self.patches[self._current], force) + return ret def Pop(self, force = None, all = None): if all: _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
