From 9d0d70da60ca8ef278916f442125d41161846f38 Mon Sep 17 00:00:00 2001 From: Chris Larson Date: Mon, 23 Aug 2010 13:03:55 -0400 Subject: patch: allow importing patches into other dirs Use the 'patchdir' flag. If relative, it's assumed to be relative to ${S}. It creates a patchset class per patch directory, so for quilt this results in multiple .pc/patches directories to manage each of the patchsets. Signed-off-by: Chris Larson --- classes/patch.bbclass | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'classes') diff --git a/classes/patch.bbclass b/classes/patch.bbclass index 7b0c44471a..227d7c9aeb 100644 --- a/classes/patch.bbclass +++ b/classes/patch.bbclass @@ -31,10 +31,8 @@ python patch_do_patch() { path = os.getenv('PATH') os.putenv('PATH', bb.data.getVar('PATH', d, 1)) - patchset = cls(s, d) - patchset.Clean() - resolver = rcls(patchset) + classes = {} workdir = bb.data.getVar('WORKDIR', d, 1) for url in src_uri: @@ -106,6 +104,21 @@ python patch_do_patch() { bb.note("Patch '%s' applies to earlier revisions" % pname) continue + if "patchdir" in parm: + patchdir = parm["patchdir"] + if not os.path.isabs(patchdir): + patchdir = os.path.join(s, patchdir) + else: + patchdir = s + + if not patchdir in classes: + patchset = cls(patchdir, d) + resolver = rcls(patchset) + classes[patchdir] = (patchset, resolver) + patchset.Clean() + else: + patchset, resolver = classes[patchdir] + bb.note("Applying patch '%s' (%s)" % (pname, oe.path.format_display(local, d))) try: patchset.Import({"file":local, "remote":url, "strippath": striplevel}, True) -- cgit 1.2.3-korg