1 # Copyright (C) 2006 OpenedHand LTD
3 # Point to an empty file so any user's custom settings don't break things
4 QUILTRCFILE ?= "${STAGING_BINDIR_NATIVE}/quiltrc"
6 PATCHDEPENDENCY = "${PATCHTOOL}-native:do_populate_sysroot"
8 python patch_do_patch() {
11 src_uri = (bb.data.getVar('SRC_URI', d, 1) or '').split()
16 "patch": oe.patch.PatchTree,
17 "quilt": oe.patch.QuiltTree,
18 "git": oe.patch.GitApplyTree,
21 cls = patchsetmap[bb.data.getVar('PATCHTOOL', d, 1) or 'quilt']
24 "noop": oe.patch.NOOPResolver,
25 "user": oe.patch.UserResolver,
28 rcls = resolvermap[bb.data.getVar('PATCHRESOLVE', d, 1) or 'user']
30 s = bb.data.getVar('S', d, 1)
32 path = os.getenv('PATH')
33 os.putenv('PATH', bb.data.getVar('PATH', d, 1))
37 resolver = rcls(patchset)
39 workdir = bb.data.getVar('WORKDIR', d, 1)
41 (type, host, path, user, pswd, parm) = bb.decodeurl(url)
44 base, ext = os.path.splitext(os.path.basename(path))
45 if ext in ('.gz', '.bz2', '.Z'):
46 local = os.path.join(workdir, base)
47 ext = os.path.splitext(base)[1]
53 bb.msg.warn(None, "Unsupported value '%s' for 'apply' url param in '%s', please use 'yes' or 'no'" % (apply, url))
56 bb.msg.warn(None, "Deprecated usage of 'patch' url param in '%s', please use 'apply={yes,no}'" % url)
57 elif ext not in (".diff", ".patch"):
61 bb.fetch.init([url],d)
62 url = bb.encodeurl((type, host, path, user, pswd, []))
63 local = os.path.join('/', bb.fetch.localpath(url, d))
64 local = bb.data.expand(local, d)
66 if "striplevel" in parm:
67 striplevel = parm["striplevel"]
69 bb.msg.warn(None, "Deprecated usage of 'pnum' url parameter in '%s', please use 'striplevel'" % url)
70 striplevel = parm["pnum"]
77 pname = os.path.basename(local)
79 if "mindate" in parm or "maxdate" in parm:
80 pn = bb.data.getVar('PN', d, 1)
81 srcdate = bb.data.getVar('SRCDATE_%s' % pn, d, 1)
83 srcdate = bb.data.getVar('SRCDATE', d, 1)
86 srcdate = bb.data.getVar('DATE', d, 1)
88 if "maxdate" in parm and parm["maxdate"] < srcdate:
89 bb.note("Patch '%s' is outdated" % pname)
92 if "mindate" in parm and parm["mindate"] > srcdate:
93 bb.note("Patch '%s' is predated" % pname)
98 srcrev = bb.data.getVar('SRCREV', d, 1)
99 if srcrev and srcrev < parm["minrev"]:
100 bb.note("Patch '%s' applies to later revisions" % pname)
104 srcrev = bb.data.getVar('SRCREV', d, 1)
105 if srcrev and srcrev > parm["maxrev"]:
106 bb.note("Patch '%s' applies to earlier revisions" % pname)
109 bb.note("Applying patch '%s' (%s)" % (pname, oe.path.format_display(local, d)))
111 patchset.Import({"file":local, "remote":url, "strippath": striplevel}, True)
114 raise bb.build.FuncFailed(str(sys.exc_value))
118 addtask patch after do_unpack
119 do_patch[dirs] = "${WORKDIR}"
120 do_patch[depends] = "${PATCHDEPENDENCY}"
122 EXPORT_FUNCTIONS do_patch