From: Joshua Watt Date: Thu, 10 Aug 2017 02:18:32 +0000 (-0500) Subject: externalsrc: Handle .git not being a directory X-Git-Tag: 2017-10~643 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=95e1341b49f7184d280a03f64f131a4468a06867;p=openembedded-core.git 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 Signed-off-by: Richard Purdie --- diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass index 9aabb426d9..8141f25e04 100644 --- a/meta/classes/externalsrc.bbclass +++ b/meta/classes/externalsrc.bbclass @@ -184,11 +184,19 @@ def srctree_hash_files(d, srcdir=None): import tempfile 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 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()) + 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)