diff options
Diffstat (limited to 'meta/classes/patch.bbclass')
-rw-r--r-- | meta/classes/patch.bbclass | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass index 80fd45f0e3..762216345a 100644 --- a/meta/classes/patch.bbclass +++ b/meta/classes/patch.bbclass | |||
@@ -31,10 +31,8 @@ python patch_do_patch() { | |||
31 | 31 | ||
32 | path = os.getenv('PATH') | 32 | path = os.getenv('PATH') |
33 | os.putenv('PATH', bb.data.getVar('PATH', d, 1)) | 33 | os.putenv('PATH', bb.data.getVar('PATH', d, 1)) |
34 | patchset = cls(s, d) | ||
35 | patchset.Clean() | ||
36 | 34 | ||
37 | resolver = rcls(patchset) | 35 | classes = {} |
38 | 36 | ||
39 | workdir = bb.data.getVar('WORKDIR', d, 1) | 37 | workdir = bb.data.getVar('WORKDIR', d, 1) |
40 | for url in src_uri: | 38 | for url in src_uri: |
@@ -117,6 +115,21 @@ python patch_do_patch() { | |||
117 | bb.note("Patch '%s' doesn't apply to revision" % pname) | 115 | bb.note("Patch '%s' doesn't apply to revision" % pname) |
118 | continue | 116 | continue |
119 | 117 | ||
118 | if "patchdir" in parm: | ||
119 | patchdir = parm["patchdir"] | ||
120 | if not os.path.isabs(patchdir): | ||
121 | patchdir = os.path.join(s, patchdir) | ||
122 | else: | ||
123 | patchdir = s | ||
124 | |||
125 | if not patchdir in classes: | ||
126 | patchset = cls(patchdir, d) | ||
127 | resolver = rcls(patchset) | ||
128 | classes[patchdir] = (patchset, resolver) | ||
129 | patchset.Clean() | ||
130 | else: | ||
131 | patchset, resolver = classes[patchdir] | ||
132 | |||
120 | bb.note("Applying patch '%s' (%s)" % (pname, oe.path.format_display(local, d))) | 133 | bb.note("Applying patch '%s' (%s)" % (pname, oe.path.format_display(local, d))) |
121 | try: | 134 | try: |
122 | patchset.Import({"file":local, "remote":url, "strippath": striplevel}, True) | 135 | patchset.Import({"file":local, "remote":url, "strippath": striplevel}, True) |