Skip to contentSkip to conversation

externalsrc: Handle .git not being a directory

PATCH Superseded Joshua Watt 3 participants 4 messages Aug 8, 2017

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

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
index 9aabb426d9e..ea0faaf4193 100644
@@ -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
#1 lore raw
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

#2 lore raw
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
#3 lore raw
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.0

I 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