diff options
author | Mark Hatle <mark.hatle@windriver.com> | 2019-01-15 16:31:34 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-01-16 15:35:08 +0000 |
commit | 80f41edbf7a3d2da1625b5dcc15902054ed014de (patch) | |
tree | 138a254c00ffc0c06cedd941d9d796b554cc1c00 /bitbake/lib | |
parent | e46947e17bfef18ba7f27a88e097d0fbc924d2a9 (diff) | |
download | poky-80f41edbf7a3d2da1625b5dcc15902054ed014de.tar.gz |
bitbake: gitsm.py: Optimize code and attempt to resolve locking issue
It was reported that a race condition on a shared download directory could
occur with the gitsm fetcher, the result happened with a call to
git config
that occured within the update_submodules. Since the fetch is locked by the
upper level, it was probably the prior need_update(...) function causing this
because of some old code.
The gitsm class inherits the git class. The need_update was overridding the
version in gitsm, so that it forceably checked the submodules.
It's clear we can optimize the code by only updating if the primary repository
needs updating. Since we don't care if the submodule repository has changed
because if the primary hasn't, references to the submodule won't change.
(Bitbake rev: 346338667edca1f58ace769ad417548da2b8d981)
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r-- | bitbake/lib/bb/fetch2/gitsm.py | 14 |
1 files changed, 0 insertions, 14 deletions
diff --git a/bitbake/lib/bb/fetch2/gitsm.py b/bitbake/lib/bb/fetch2/gitsm.py index dd94186cc4..11bfa6684f 100644 --- a/bitbake/lib/bb/fetch2/gitsm.py +++ b/bitbake/lib/bb/fetch2/gitsm.py | |||
@@ -148,20 +148,6 @@ class GitSM(Git): | |||
148 | 148 | ||
149 | return True | 149 | return True |
150 | 150 | ||
151 | def need_update(self, ud, d): | ||
152 | main_repo_needs_update = Git.need_update(self, ud, d) | ||
153 | |||
154 | # First check that the main repository has enough history fetched. If it doesn't, then we don't | ||
155 | # even have the .gitmodules and gitlinks for the submodules to attempt asking whether the | ||
156 | # submodules' histories are recent enough. | ||
157 | if main_repo_needs_update: | ||
158 | return True | ||
159 | |||
160 | # Now check that the submodule histories are new enough. The git-submodule command doesn't have | ||
161 | # any clean interface for doing this aside from just attempting the checkout (with network | ||
162 | # fetched disabled). | ||
163 | return not self.update_submodules(ud, d) | ||
164 | |||
165 | def download(self, ud, d): | 151 | def download(self, ud, d): |
166 | Git.download(self, ud, d) | 152 | Git.download(self, ud, d) |
167 | 153 | ||