]> code.ossystems Code Review - openembedded-core.git/commit
externalsrc: fix ExpansionError if the source dir does not exist yet
authorLuca Ceresoli <luca@lucaceresoli.net>
Fri, 29 Sep 2017 08:39:24 +0000 (10:39 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 8 Nov 2017 19:54:22 +0000 (19:54 +0000)
commit8e8251582e977d7c6ab525ac1b493fbbe3af38b2
tree3d79979ad8d9ded2876de6baad368ac0a956c1b1
parentcb19166c540969f56959e25c1068934bdc40b013
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.

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Cc: Joshua Watt <jpewhacker@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/externalsrc.bbclass