[gnome-continuous-yocto/gnomeostree-3.28-rocko: 8164/8267] externalsrc: fix ExpansionError if the source dir does not exist yet



commit da8f32a3bb0eec874c66b5f18c08a5b8f15a94c5
Author: Luca Ceresoli <luca lucaceresoli net>
Date:   Fri Sep 29 10:39:24 2017 +0200

    externalsrc: fix ExpansionError if the source dir does not exist yet
    
    The externalsrc class code assumes that the source directory
    (EXTERNALSRC) exists before bitbake is called. Otherwise do_configure
    will fail obviously since externalsrc does not fetch anything.
    
    Commit 3ca6085729d9 ("externalsrc: Handle .git not being a directory")
    changed this behaviour. Now on a missing EXTERNALSRC directory we get
    a bb.data_smart.ExpansionError during _parsing_, way before
    do_configure can be run.
    
    This new behaviour creates two problems:
    
     * First, there error message is very cryptic (and it's hard to
       provide a better message since no task is ever run):
    
         ERROR: ExpansionError during parsing /<...>/<...>.bb
         Traceback (most recent call last):
         bb.data_smart.ExpansionError: Failure expanding variable do_compile[file-checksums], expression was 
${@srctree_hash_files(d)} which triggered exception FileNotFoundError: [Errno 2] No such file or directory: 
'<...>'
    
     * Second, this prevents creating a class based on externalsrc that
       automatically fetches the code in EXTERNALSRC before do_compile
       runs.
    
    Fix both problems by simply calling git with '-C ${EXTERNALSRC}'
    instead of calling git inside the non-existing directory. This changes
    from a bb.data_smart.ExpansionError to a
    subprocess.CalledProcessError, which is in line with what's actually
    going on: git is telling us it can't find the git dir.
    
    Also remove a comment that does not apply anymore.
    
    (From OE-Core rev: 390e4cc74ef9b578e1cced21444247d975610154)
    
    Signed-off-by: Luca Ceresoli <luca lucaceresoli net>
    Cc: Joshua Watt <jpewhacker gmail com>
    Signed-off-by: Ross Burton <ross burton intel com>
    Signed-off-by: Armin Kuster <akuster mvista com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 meta/classes/externalsrc.bbclass |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)
---
diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index 08e6e47..65dd13d 100644
--- a/meta/classes/externalsrc.bbclass
+++ b/meta/classes/externalsrc.bbclass
@@ -188,10 +188,8 @@ def srctree_hash_files(d, srcdir=None):
     git_dir = None
 
     try:
-        # git rev-parse returns the path relative to the current working
-        # directory
         git_dir = os.path.join(s_dir,
-            subprocess.check_output(['git', 'rev-parse', '--git-dir'], cwd=s_dir).decode("utf-8").rstrip())
+            subprocess.check_output(['git', '-C', s_dir, 'rev-parse', '--git-dir']).decode("utf-8").rstrip())
     except subprocess.CalledProcessError:
         pass
 


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