diff options
author | Markus Lehtonen <markus.lehtonen@linux.intel.com> | 2015-04-30 12:16:07 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-05-16 22:31:50 +0100 |
commit | 89fb8c58c19f72d2751ede475075819c412f4fcf (patch) | |
tree | 45786b18c130a59e0a9d8f4a65c6313c457b08e4 /scripts/lib/devtool/standard.py | |
parent | 4faa0cdd45270ae0100423cca7c1bce953213f3a (diff) | |
download | poky-89fb8c58c19f72d2751ede475075819c412f4fcf.tar.gz |
devtool: extract: remove patches when S=WORKDIR
Before this change, all files from the recipe (SRC_URI), including
patches, were added to to srctree repository when S==WORKDIR. The patch
files are useless as they are automatically applied on top of the
srctree by devtool.
This change causes devtool extract to not commit these unnecessary (and
possibly confusing) patch file(s) into srctree repository.
[YOCTO #7602]
(From OE-Core rev: 3e0ffff619e49b1f0c13e5f6a663455be3ed26af)
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/devtool/standard.py')
-rw-r--r-- | scripts/lib/devtool/standard.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index 81a44d4513..3bc84c7418 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py | |||
@@ -177,6 +177,16 @@ def _parse_recipe(config, tinfoil, pn, appends): | |||
177 | return oe.recipeutils.parse_recipe(recipefile, append_files, | 177 | return oe.recipeutils.parse_recipe(recipefile, append_files, |
178 | tinfoil.config_data) | 178 | tinfoil.config_data) |
179 | 179 | ||
180 | |||
181 | def _ls_tree(directory): | ||
182 | """Recursive listing of files in a directory""" | ||
183 | ret = [] | ||
184 | for root, dirs, files in os.walk(directory): | ||
185 | ret.extend([os.path.relpath(os.path.join(root, fname), directory) for | ||
186 | fname in files]) | ||
187 | return ret | ||
188 | |||
189 | |||
180 | def extract(args, config, basepath, workspace): | 190 | def extract(args, config, basepath, workspace): |
181 | import bb | 191 | import bb |
182 | 192 | ||
@@ -196,6 +206,7 @@ def extract(args, config, basepath, workspace): | |||
196 | 206 | ||
197 | def _extract_source(srctree, keep_temp, devbranch, d): | 207 | def _extract_source(srctree, keep_temp, devbranch, d): |
198 | import bb.event | 208 | import bb.event |
209 | import oe.recipeutils | ||
199 | 210 | ||
200 | def eventfilter(name, handler, event, d): | 211 | def eventfilter(name, handler, event, d): |
201 | if name == 'base_eventhandler': | 212 | if name == 'base_eventhandler': |
@@ -264,7 +275,21 @@ def _extract_source(srctree, keep_temp, devbranch, d): | |||
264 | logger.info('Unpacking...') | 275 | logger.info('Unpacking...') |
265 | exec_task_func('do_unpack', False) | 276 | exec_task_func('do_unpack', False) |
266 | srcsubdir = crd.getVar('S', True) | 277 | srcsubdir = crd.getVar('S', True) |
267 | if srcsubdir != workdir and os.path.dirname(srcsubdir) != workdir: | 278 | if srcsubdir == workdir: |
279 | # Find non-patch sources that were "unpacked" to srctree directory | ||
280 | recipe_patches = [os.path.basename(patch) for patch in | ||
281 | oe.recipeutils.get_recipe_patches(crd)] | ||
282 | src_files = [fname for fname in _ls_tree(workdir) if | ||
283 | os.path.basename(fname) not in recipe_patches] | ||
284 | # Force separate S so that patch files can be left out from srctree | ||
285 | srcsubdir = tempfile.mkdtemp(dir=workdir) | ||
286 | crd.setVar('S', srcsubdir) | ||
287 | # Move source files to S | ||
288 | for path in src_files: | ||
289 | tgt_dir = os.path.join(srcsubdir, os.path.dirname(path)) | ||
290 | bb.utils.mkdirhier(tgt_dir) | ||
291 | shutil.move(os.path.join(workdir, path), tgt_dir) | ||
292 | elif os.path.dirname(srcsubdir) != workdir: | ||
268 | # Handle if S is set to a subdirectory of the source | 293 | # Handle if S is set to a subdirectory of the source |
269 | srcsubdir = os.path.join(workdir, os.path.relpath(srcsubdir, workdir).split(os.sep)[0]) | 294 | srcsubdir = os.path.join(workdir, os.path.relpath(srcsubdir, workdir).split(os.sep)[0]) |
270 | 295 | ||