summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/fetch2/gitsm.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/fetch2/gitsm.py')
-rw-r--r--bitbake/lib/bb/fetch2/gitsm.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/bitbake/lib/bb/fetch2/gitsm.py b/bitbake/lib/bb/fetch2/gitsm.py
index b21fed2669..32389130bd 100644
--- a/bitbake/lib/bb/fetch2/gitsm.py
+++ b/bitbake/lib/bb/fetch2/gitsm.py
@@ -147,6 +147,23 @@ class GitSM(Git):
147 147
148 return submodules != [] 148 return submodules != []
149 149
150 def need_update(self, ud, d):
151 if Git.need_update(self, ud, d):
152 return True
153
154 try:
155 # Check for the nugget dropped by the download operation
156 known_srcrevs = runfetchcmd("%s config --get-all bitbake.srcrev" % \
157 (ud.basecmd), d, workdir=ud.clonedir)
158
159 if ud.revisions[ud.names[0]] not in known_srcrevs.split():
160 return True
161 except bb.fetch2.FetchError:
162 # No srcrev nuggets, so this is new and needs to be updated
163 return True
164
165 return False
166
150 def download(self, ud, d): 167 def download(self, ud, d):
151 def download_submodule(ud, url, module, modpath, d): 168 def download_submodule(ud, url, module, modpath, d):
152 url += ";bareclone=1;nobranch=1" 169 url += ";bareclone=1;nobranch=1"
@@ -157,6 +174,9 @@ class GitSM(Git):
157 try: 174 try:
158 newfetch = Fetch([url], d, cache=False) 175 newfetch = Fetch([url], d, cache=False)
159 newfetch.download() 176 newfetch.download()
177 # Drop a nugget to add each of the srcrevs we've fetched (used by need_update)
178 runfetchcmd("%s config --add bitbake.srcrev %s" % \
179 (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=ud.clonedir)
160 except Exception as e: 180 except Exception as e:
161 logger.error('gitsm: submodule download failed: %s %s' % (type(e).__name__, str(e))) 181 logger.error('gitsm: submodule download failed: %s %s' % (type(e).__name__, str(e)))
162 raise 182 raise