path: root/scripts/lib/devtool/
diff options
authorPaul Eggleton <>2015-02-19 16:40:03 +0000
committerRichard Purdie <>2015-02-23 17:35:29 +0000
commite7744de454b1ea545fe9ae5c1e0733872a9c2632 (patch)
tree78f26fc7a8b77a6b611209647c3bd2a592a27aa4 /scripts/lib/devtool/
parent62a41b412f2a4079614a2bc5e29210cfb316ba64 (diff)
devtool: support source extraction for recipes that use a shared workdir
Enable source extraction used by devtool extract / devtool modify -x for recipes that use a shared workdir (e.g. the kernel and gcc). (From OE-Core rev: 73a5bdc7921791b954ca717293e76c7e3091a19e) Signed-off-by: Paul Eggleton <> Signed-off-by: Richard Purdie <>
Diffstat (limited to 'scripts/lib/devtool/')
1 files changed, 14 insertions, 5 deletions
diff --git a/scripts/lib/devtool/ b/scripts/lib/devtool/
index 4cb03f3..bf18aae 100644
--- a/scripts/lib/devtool/
+++ b/scripts/lib/devtool/
@@ -137,10 +137,6 @@ def _extract_source(srctree, keep_temp, devbranch, d):
logger.error("The perf recipe does not actually check out source and thus cannot be supported by this tool")
return None
- if 'work-shared' in d.getVar('S', True):
- logger.error("The %s recipe uses a shared workdir which this tool does not currently support" % pn)
- return None
if'image', d):
logger.error("The %s recipe is an image, and therefore is not supported by this tool" % pn)
return None
@@ -169,6 +165,16 @@ def _extract_source(srctree, keep_temp, devbranch, d):
workdir = os.path.join(tempdir, 'workdir')
crd.setVar('WORKDIR', workdir)
crd.setVar('T', os.path.join(tempdir, 'temp'))
+ if not crd.getVar('S', True).startswith(workdir):
+ # Usually a shared workdir recipe (kernel, gcc)
+ # Try to set a reasonable default
+ if'kernel', d):
+ crd.setVar('S', '${WORKDIR}/source')
+ else:
+ crd.setVar('S', '${WORKDIR}/${BP}')
+ if'kernel', d):
+ # We don't want to move the source to STAGING_KERNEL_DIR here
+ crd.setVar('STAGING_KERNEL_DIR', '${S}')
# FIXME: This is very awkward. Unfortunately it's not currently easy to properly
# execute tasks outside of bitbake itself, until then this has to suffice if we
@@ -204,7 +210,10 @@ def _extract_source(srctree, keep_temp, devbranch, d):
- if not'kernel-yocto', d):
+ if'kernel-yocto', d):
+ (stdout, _) ='git --git-dir="%s" rev-parse HEAD' % crd.expand('${WORKDIR}/git'), cwd=srcsubdir)
+ initial_rev = stdout.rstrip()
+ else:
if not os.listdir(srcsubdir):
logger.error("no source unpacked to S, perhaps the %s recipe doesn't use any source?" % pn)
return None
OpenPOWER on IntegriCloud