[bitbake-devel] [PATCH] gitsm: The fetcher did not process some recursive submodules properly.
Stefan Agner
stefan at agner.ch
Mon Jan 28 19:38:17 UTC 2019
On 27.01.2019 17:57, Mark Hatle wrote:
> Move the submodule processing outside of the if statement to avoid any
> optimizations that may happen.
>
> Update the test cases to include the additional case, and split the other
> test cases into individual tests to make it easier to figure out what
> the failure may be.
>
> Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
I can confirm that this resolves the issue we have been seeing:
Tested-by: Stefan Agner <stefan.agner at toradex.com>
Thanks Mark for looking into this!
--
Stefan
> ---
> lib/bb/fetch2/gitsm.py | 4 +++-
> lib/bb/tests/fetch.py | 20 ++++++++++++++++++++
> 2 files changed, 23 insertions(+), 1 deletion(-)
>
> diff --git a/lib/bb/fetch2/gitsm.py b/lib/bb/fetch2/gitsm.py
> index f45546b..b21fed2 100644
> --- a/lib/bb/fetch2/gitsm.py
> +++ b/lib/bb/fetch2/gitsm.py
> @@ -198,6 +198,8 @@ class GitSM(Git):
>
> Git.unpack(self, ud, destdir, d)
>
> - if not ud.bareclone and self.process_submodules(ud,
> ud.destdir, unpack_submodules, d):
> + ret = self.process_submodules(ud, ud.destdir, unpack_submodules, d)
> +
> + if not ud.bareclone and ret:
> # Run submodule update, this sets up the directories --
> without touching the config
> runfetchcmd("%s submodule update --recursive --no-fetch"
> % (ud.basecmd), d, quiet=True, workdir=ud.destdir)
> diff --git a/lib/bb/tests/fetch.py b/lib/bb/tests/fetch.py
> index e9ad807..522d202 100644
> --- a/lib/bb/tests/fetch.py
> +++ b/lib/bb/tests/fetch.py
> @@ -912,6 +912,7 @@ class FetcherNetworkTest(FetcherTest):
> if os.path.exists(os.path.join(repo_path, 'bitbake-gitsm-test1')):
> self.assertTrue(os.path.exists(os.path.join(repo_path,
> 'bitbake-gitsm-test1', 'bitbake')), msg='submodule of submodule
> missing')
>
> + def test_git_submodule_dbus_broker(self):
> # The following external repositories have show failures in
> fetch and unpack operations
> # We want to avoid regressions!
> url =
> "gitsm://github.com/bus1/dbus-broker;protocol=git;rev=fc874afa0992d0c75ec25acb43d344679f0ee7d2"
> @@ -928,16 +929,35 @@ class FetcherNetworkTest(FetcherTest):
> self.assertTrue(os.path.exists(os.path.join(repo_path,
> '.git/modules/subprojects/c-sundry/config')), msg='Missing submodule
> config "subprojects/c-sundry"')
> self.assertTrue(os.path.exists(os.path.join(repo_path,
> '.git/modules/subprojects/c-utf8/config')), msg='Missing submodule
> config "subprojects/c-utf8"')
>
> + def test_git_submodule_CLI11(self):
> url =
> "gitsm://github.com/CLIUtils/CLI11;protocol=git;rev=bd4dc911847d0cde7a6b41dfa626a85aab213baf"
> fetcher = bb.fetch.Fetch([url], self.d)
> fetcher.download()
> # Previous cwd has been deleted
> os.chdir(os.path.dirname(self.unpackdir))
> fetcher.unpack(self.unpackdir)
> +
> + repo_path = os.path.join(self.tempdir, 'unpacked', 'git')
> self.assertTrue(os.path.exists(os.path.join(repo_path,
> '.git/modules/extern/googletest/config')), msg='Missing submodule
> config "extern/googletest"')
> self.assertTrue(os.path.exists(os.path.join(repo_path,
> '.git/modules/extern/json/config')), msg='Missing submodule config
> "extern/json"')
> self.assertTrue(os.path.exists(os.path.join(repo_path,
> '.git/modules/extern/sanitizers/config')), msg='Missing submodule
> config "extern/sanitizers"')
>
> + def test_git_submodule_aktualizr(self):
> + url =
> "gitsm://github.com/advancedtelematic/aktualizr;branch=master;protocol=git;rev=d00d1a04cc2366d1a5f143b84b9f507f8bd32c44"
> + fetcher = bb.fetch.Fetch([url], self.d)
> + fetcher.download()
> + # Previous cwd has been deleted
> + os.chdir(os.path.dirname(self.unpackdir))
> + fetcher.unpack(self.unpackdir)
> +
> + repo_path = os.path.join(self.tempdir, 'unpacked', 'git')
> + self.assertTrue(os.path.exists(os.path.join(repo_path,
> '.git/modules/partial/extern/isotp-c/config')), msg='Missing submodule
> config "partial/extern/isotp-c/config"')
> + self.assertTrue(os.path.exists(os.path.join(repo_path,
> '.git/modules/partial/extern/isotp-c/modules/deps/bitfield-c/config')),
> msg='Missing submodule config
> "partial/extern/isotp-c/modules/deps/bitfield-c/config"')
> + self.assertTrue(os.path.exists(os.path.join(repo_path,
> 'partial/extern/isotp-c/deps/bitfield-c/.git')), msg="Submodule of
> submodule isotp-c did not unpack properly")
> + self.assertTrue(os.path.exists(os.path.join(repo_path,
> '.git/modules/tests/tuf-test-vectors/config')), msg='Missing submodule
> config "tests/tuf-test-vectors/config"')
> + self.assertTrue(os.path.exists(os.path.join(repo_path,
> '.git/modules/third_party/googletest/config')), msg='Missing submodule
> config "third_party/googletest/config"')
> + self.assertTrue(os.path.exists(os.path.join(repo_path,
> '.git/modules/third_party/HdrHistogram_c/config')), msg='Missing
> submodule config "third_party/HdrHistogram_c/config"')
> +
> class TrustedNetworksTest(FetcherTest):
> def test_trusted_network(self):
> # Ensure trusted_network returns False when the host IS in the list.
More information about the bitbake-devel
mailing list