[gnome-continuous-yocto/gnomeostree-3.28-rocko: 4116/8267] devtool: fix source extraction to work with recipe specific sysroots



commit 9b3e808624292ae9243ceca2c349f642c3c97ea7
Author: Paul Eggleton <paul eggleton linux intel com>
Date:   Tue Jan 17 12:14:36 2017 +1300

    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>

 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 8944b0a..30b247f 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):
         os.rmdir(srctree)
 
     initial_rev = None
-    tempdir = tempfile.mkdtemp(prefix='devtool')
+    # 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 it
+    # would 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.
+    tempbasedir = d.getVar('WORKDIR')
+    bb.utils.mkdirhier(tempbasedir)
+    tempdir = tempfile.mkdtemp(prefix='devtooltmp-', dir=tempbasedir)
     try:
         tinfoil.logger.setLevel(logging.WARNING)
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]