mirror of
https://git.yoctoproject.org/poky
synced 2026-02-26 19:39:40 +01:00
classes/patch: move several functions to oe.patch
Move patch_path(), src_patches() and should_apply() to oe.patch, making them easier to call from elsewhere (particularly across the UI/server boundary). (From OE-Core rev: 2724511e18810cc8082c1b028e3b7c8a8b5def56) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
45adbe3709
commit
275b3fe5f4
@@ -80,110 +80,13 @@ python patch_task_postfunc() {
|
||||
}
|
||||
|
||||
def src_patches(d, all=False, expand=True):
|
||||
workdir = d.getVar('WORKDIR', True)
|
||||
fetch = bb.fetch2.Fetch([], d)
|
||||
patches = []
|
||||
sources = []
|
||||
for url in fetch.urls:
|
||||
local = patch_path(url, fetch, workdir, expand)
|
||||
if not local:
|
||||
if all:
|
||||
local = fetch.localpath(url)
|
||||
sources.append(local)
|
||||
continue
|
||||
|
||||
urldata = fetch.ud[url]
|
||||
parm = urldata.parm
|
||||
patchname = parm.get('pname') or os.path.basename(local)
|
||||
|
||||
apply, reason = should_apply(parm, d)
|
||||
if not apply:
|
||||
if reason:
|
||||
bb.note("Patch %s %s" % (patchname, reason))
|
||||
continue
|
||||
|
||||
patchparm = {'patchname': patchname}
|
||||
if "striplevel" in parm:
|
||||
striplevel = parm["striplevel"]
|
||||
elif "pnum" in parm:
|
||||
#bb.msg.warn(None, "Deprecated usage of 'pnum' url parameter in '%s', please use 'striplevel'" % url)
|
||||
striplevel = parm["pnum"]
|
||||
else:
|
||||
striplevel = '1'
|
||||
patchparm['striplevel'] = striplevel
|
||||
|
||||
patchdir = parm.get('patchdir')
|
||||
if patchdir:
|
||||
patchparm['patchdir'] = patchdir
|
||||
|
||||
localurl = bb.fetch.encodeurl(('file', '', local, '', '', patchparm))
|
||||
patches.append(localurl)
|
||||
|
||||
if all:
|
||||
return sources
|
||||
|
||||
return patches
|
||||
|
||||
def patch_path(url, fetch, workdir, expand=True):
|
||||
"""Return the local path of a patch, or None if this isn't a patch"""
|
||||
|
||||
local = fetch.localpath(url)
|
||||
base, ext = os.path.splitext(os.path.basename(local))
|
||||
if ext in ('.gz', '.bz2', '.Z'):
|
||||
if expand:
|
||||
local = os.path.join(workdir, base)
|
||||
ext = os.path.splitext(base)[1]
|
||||
|
||||
urldata = fetch.ud[url]
|
||||
if "apply" in urldata.parm:
|
||||
apply = oe.types.boolean(urldata.parm["apply"])
|
||||
if not apply:
|
||||
return
|
||||
elif ext not in (".diff", ".patch"):
|
||||
return
|
||||
|
||||
return local
|
||||
import oe.patch
|
||||
return oe.patch.src_patches(d, all, expand)
|
||||
|
||||
def should_apply(parm, d):
|
||||
"""Determine if we should apply the given patch"""
|
||||
|
||||
if "mindate" in parm or "maxdate" in parm:
|
||||
pn = d.getVar('PN', True)
|
||||
srcdate = d.getVar('SRCDATE_%s' % pn, True)
|
||||
if not srcdate:
|
||||
srcdate = d.getVar('SRCDATE', True)
|
||||
|
||||
if srcdate == "now":
|
||||
srcdate = d.getVar('DATE', True)
|
||||
|
||||
if "maxdate" in parm and parm["maxdate"] < srcdate:
|
||||
return False, 'is outdated'
|
||||
|
||||
if "mindate" in parm and parm["mindate"] > srcdate:
|
||||
return False, 'is predated'
|
||||
|
||||
|
||||
if "minrev" in parm:
|
||||
srcrev = d.getVar('SRCREV', True)
|
||||
if srcrev and srcrev < parm["minrev"]:
|
||||
return False, 'applies to later revisions'
|
||||
|
||||
if "maxrev" in parm:
|
||||
srcrev = d.getVar('SRCREV', True)
|
||||
if srcrev and srcrev > parm["maxrev"]:
|
||||
return False, 'applies to earlier revisions'
|
||||
|
||||
if "rev" in parm:
|
||||
srcrev = d.getVar('SRCREV', True)
|
||||
if srcrev and parm["rev"] not in srcrev:
|
||||
return False, "doesn't apply to revision"
|
||||
|
||||
if "notrev" in parm:
|
||||
srcrev = d.getVar('SRCREV', True)
|
||||
if srcrev and parm["notrev"] in srcrev:
|
||||
return False, "doesn't apply to revision"
|
||||
|
||||
return True, None
|
||||
import oe.patch
|
||||
return oe.patch.should_apply(parm, d)
|
||||
|
||||
should_apply[vardepsexclude] = "DATE SRCDATE"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user