diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2017-01-17 12:14:36 +1300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-01-20 11:53:49 +0000 |
commit | 9b3e808624292ae9243ceca2c349f642c3c97ea7 (patch) | |
tree | 428ac4d632f488e764a438e0c34ab8bd623947a9 /scripts/lib/devtool | |
parent | 38bcf14abce773142a5a402c2f4e5116fc885431 (diff) | |
download | poky-9b3e808624292ae9243ceca2c349f642c3c97ea7.tar.gz |
devtool: fix source extraction to work with recipe specific sysroots
When extracting source for a recipe within devtool (for extract, modify
or upgrade) We need to redirect WORKDIR, STAMPS_DIR etc. under a
temporary directory so that:
(a) we pick up all files that get unpacked to the WORKDIR, and
(b) we don't disturb the existing build
However, with recipe-specific sysroots the sysroots for the recipe will
be prepared under WORKDIR, and if we used the system temporary directory
i.e. usually /tmp) as used by mkdtemp by default, then our attempts to
hardlink files into the recipe-specific sysroots will fail on systems
where /tmp is a different filesystem, and we'd have to fall back to
copying the files which is a waste of time. Put the temp directory under
the WORKDIR to prevent that from being a problem.
(From OE-Core rev: e10a973cd9390eacb13bdb99693a0622bd3695f5)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
[RP: Add needed mkdirhier call]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/devtool')
-rw-r--r-- | scripts/lib/devtool/standard.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index 8944b0a34b..30b247fa74 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py | |||
@@ -465,7 +465,21 @@ def _extract_source(srctree, keep_temp, devbranch, sync, d, tinfoil): | |||
465 | os.rmdir(srctree) | 465 | os.rmdir(srctree) |
466 | 466 | ||
467 | initial_rev = None | 467 | initial_rev = None |
468 | tempdir = tempfile.mkdtemp(prefix='devtool') | 468 | # We need to redirect WORKDIR, STAMPS_DIR etc. under a temporary |
469 | # directory so that: | ||
470 | # (a) we pick up all files that get unpacked to the WORKDIR, and | ||
471 | # (b) we don't disturb the existing build | ||
472 | # However, with recipe-specific sysroots the sysroots for the recipe | ||
473 | # will be prepared under WORKDIR, and if we used the system temporary | ||
474 | # directory (i.e. usually /tmp) as used by mkdtemp by default, then | ||
475 | # our attempts to hardlink files into the recipe-specific sysroots | ||
476 | # will fail on systems where /tmp is a different filesystem, and it | ||
477 | # would have to fall back to copying the files which is a waste of | ||
478 | # time. Put the temp directory under the WORKDIR to prevent that from | ||
479 | # being a problem. | ||
480 | tempbasedir = d.getVar('WORKDIR') | ||
481 | bb.utils.mkdirhier(tempbasedir) | ||
482 | tempdir = tempfile.mkdtemp(prefix='devtooltmp-', dir=tempbasedir) | ||
469 | try: | 483 | try: |
470 | tinfoil.logger.setLevel(logging.WARNING) | 484 | tinfoil.logger.setLevel(logging.WARNING) |
471 | 485 | ||