summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2019-01-15 16:31:34 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-01-16 15:35:08 +0000
commit80f41edbf7a3d2da1625b5dcc15902054ed014de (patch)
tree138a254c00ffc0c06cedd941d9d796b554cc1c00 /bitbake
parente46947e17bfef18ba7f27a88e097d0fbc924d2a9 (diff)
downloadpoky-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')
-rw-r--r--bitbake/lib/bb/fetch2/gitsm.py14
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