diff options
Diffstat (limited to 'bitbake/lib/bb/fetch2/gitsm.py')
| -rw-r--r-- | bitbake/lib/bb/fetch2/gitsm.py | 20 |
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 |
