externalsrc: Handle .git not being a directory
PATCH v3 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.
--- meta/classes/externalsrc.bbclass | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
meta/classes/externalsrc.bbclass +8 -3
@@ -184,11 +184,16 @@ 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_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
Quoted 3 lines · Joshua Watt
+
git_dir= subprocess.check_output(['git', 'rev-parse',
'--absolute-git-dir'], cwd=s_dir).decode("utf-8").rstrip()
Doesn't work with my old git:
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:
'--absolute-git-dir/index'
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
$ git rev-parse --absolute-git-dir --absolute-git-dir $ git --version git version 2.11.0
Ross
Quoted 18 lines · Ross
On 8 August 2017 at 02:46, Joshua Watt <[email protected]> wrote:
+ git_dir = subprocess.check_output(['git', 'rev-parse', '--absolute-git-dir'], cwd=s_dir).decode("utf-8").rstrip()Doesn't work with my old git:
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: '--absolute-git-dir/index'
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
Quoted 5 lines
$ git rev-parse --absolute-git-dir --absolute-git-dir $ git --version git version 2.11.0
I also tried it and got same log. my git is a bit newer (2.12.3).
Leo
Quoted 7 lines
Ross
Signature · 4 lines
_______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
Quoted 22 lines · Leonardo Sandoval
Quoted 21 lines · Ross
On 8 August 2017 at 02:46, Joshua Watt <[email protected]> wrote:
+ git_dir = subprocess.check_output(['git', 'rev-parse', '--absolute-git-dir'], cwd=s_dir).decode("utf-8").rstrip()Doesn't work with my old git:
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: '--absolute-git-dir/index'
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
Quoted 7 lines
Quoted 5 lines
$ git rev-parse --absolute-git-dir --absolute-git-dir $ git --version git version 2.11.0I also tried it and got same log. my git is a bit newer (2.12.3).
Ok. I wasn't sure exactly when that option was added, I'll use the older one.
Quoted 11 lines
Leo
Quoted 7 lines
Ross
Signature · 4 lines
_______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core