diff mbox series

[kirkstone,master] externalsrc: fix lookup for .gitmodules

Message ID 20221201140440.9051-1-peter.marko@siemens.com
State New, archived
Headers show
Series [kirkstone,master] externalsrc: fix lookup for .gitmodules | expand

Commit Message

Marko, Peter Dec. 1, 2022, 2:04 p.m. UTC
Commit 0533edac277080e1bd130c14df0cbac61ba01a0c broke
bitbake parsing when bitbake is executed from directory with existing .gitmodules
and the recipe in externalsrc does not have .gitmodules

The check needs to search for .gitmodules in sources path, not cwd.

iParsing recipes...ERROR: ExpansionError during parsing <path to recipe>
...
bb.data_smart.ExpansionError: Failure expanding variable do_compile[file-checksums], expression was ${@srctree_hash_files(d)} which triggered exception CalledProcessError: Command '['git', 'config', '--file', '.gitmodules', '--get-regexp', 'path']' returned non-zero exit status 1.

Signed-off-by: Peter Marko <peter.marko@siemens.com>
---
 meta/classes/externalsrc.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ross Burton Dec. 5, 2022, 1:35 p.m. UTC | #1
On 1 Dec 2022, at 14:04, Peter Marko via lists.openembedded.org <peter.marko=siemens.com@lists.openembedded.org> wrote:
> 
> Commit 0533edac277080e1bd130c14df0cbac61ba01a0c broke
> bitbake parsing when bitbake is executed from directory with existing .gitmodules
> and the recipe in externalsrc does not have .gitmodules
> 
> The check needs to search for .gitmodules in sources path, not cwd.
> 
> iParsing recipes...ERROR: ExpansionError during parsing <path to recipe>
> ...
> bb.data_smart.ExpansionError: Failure expanding variable do_compile[file-checksums], expression was ${@srctree_hash_files(d)} which triggered exception CalledProcessError: Command '['git', 'config', '--file', '.gitmodules', '--get-regexp', 'path']' returned non-zero exit status 1.

There’s been a series of commits now “fixing” the lookup logic, can you write a small test case to exercise this path?

Ross
Marko, Peter Dec. 5, 2022, 9:42 p.m. UTC | #2
> There’s been a series of commits now “fixing” the lookup logic, can you write a small test case to exercise this path?
> 
> Ross

Test implemented under https://lists.openembedded.org/g/openembedded-core/message/174304.
I did it as a separate patch from this one as it is my first test and it may need several iterations to get right.
But if necessary, I'll send a v2 which will be a series of those two patches.

Peter
diff mbox series

Patch

diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index 75fb91bcb0..0deb5dbf5f 100644
--- a/meta/classes/externalsrc.bbclass
+++ b/meta/classes/externalsrc.bbclass
@@ -230,7 +230,7 @@  def srctree_hash_files(d, srcdir=None):
             env['GIT_INDEX_FILE'] = tmp_index.name
             subprocess.check_output(['git', 'add', '-A', '.'], cwd=s_dir, env=env)
             git_sha1 = subprocess.check_output(['git', 'write-tree'], cwd=s_dir, env=env).decode("utf-8")
-            if os.path.exists(".gitmodules"):
+            if os.path.exists(os.path.join(s_dir, ".gitmodules")):
                 submodule_helper = subprocess.check_output(["git", "config", "--file", ".gitmodules", "--get-regexp", "path"], cwd=s_dir, env=env).decode("utf-8")
                 for line in submodule_helper.splitlines():
                     module_dir = os.path.join(s_dir, line.rsplit(maxsplit=1)[1])