externalsrc: Handle .git not being a directory
PATCH v2 1/1 externalsrc: Handle .git not being a directory
Use git rev-parse to determine the location of the .git directory, in case it is not an immediate child of EXTERNALSRC (e.g. when using submodules). In the event git can't resolve the .git directory, fall back to the non-git method for hashing.
Signed-off-by Joshua Watt <[email protected]>
--- meta/classes/externalsrc.bbclass | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
meta/classes/externalsrc.bbclass +9 -3
@@ -182,13 +182,19 @@ def srctree_hash_files(d, srcdir=None): import shutil import subprocess import tempfile + import re s_dir = srcdir or d.getVar('EXTERNALSRC') - git_dir = os.path.join(s_dir, '.git') - oe_hash_file = os.path.join(git_dir, 'oe-devtool-tree-sha1') + git_dir = None + + try: + git_dir = subprocess.check_output(['git', 'rev-parse', '--absolute-git-dir'], cwd=s_dir).decode("utf-8").rstrip() + except subprocess.CalledProcessError: + pass ret = " " - if os.path.exists(git_dir): + if git_dir is not None: + oe_hash_file = os.path.join(git_dir, 'oe-devtool-tree-sha1') with tempfile.NamedTemporaryFile(prefix='oe-devtool-index') as tmp_index: # Clone index shutil.copyfile(os.path.join(git_dir, 'index'), tmp_index.name)
Signature · 1 line
2.13.3