patch.bbclass: allow importing patches into other dirs

This is taken from openembedded.master:
commit 9d0d70da60ca8ef278916f442125d41161846f38
Author: Chris Larson <chris_larson@mentor.com>
Date:   Mon Aug 23 13:03:55 2010 -0400

    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 i
    multiple .pc/patches directories to manage each of the patchsets.

    (From OE-Core rev: 01e4609ee8441c8212725fd062782313caae0708)

Signed-off-by: Chris Larson <chris_larson@mentor.com>

Signed-off-by: Tom Rini <tom_rini@mentor.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Tom Rini 2011-03-31 10:45:57 -07:00 committed by Richard Purdie
parent 9b2210c07d
commit 4febd376ed
1 changed files with 16 additions and 3 deletions

View File

@ -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:
@ -117,6 +115,21 @@ python patch_do_patch() {
bb.note("Patch '%s' doesn't apply to revision" % 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)