diff options
| author | Paul Barker <pbarker@konsulko.com> | 2020-03-09 13:42:46 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-03-11 14:43:25 +0000 |
| commit | 6932c9757c870b6338e2a525696791bf3de6f703 (patch) | |
| tree | 09d90084d34d07100c19ffaf1ddc614e9fb921f4 /bitbake | |
| parent | 4cae3324bd362829dbb1c122342f2c7854a27899 (diff) | |
| download | poky-6932c9757c870b6338e2a525696791bf3de6f703.tar.gz | |
bitbake: fetch2/gitsm: Unpack shallow mirror tarballs
When a shallow mirror tarball is used to satisfy a gitsm URI it needs to
be unpacked temporarily so that the .gitmodules file can be examined.
(Bitbake rev: 3987db953e414255ce278bc25a5f6cec0f2a30c7)
Signed-off-by: Paul Barker <pbarker@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
| -rw-r--r-- | bitbake/lib/bb/fetch2/gitsm.py | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/bitbake/lib/bb/fetch2/gitsm.py b/bitbake/lib/bb/fetch2/gitsm.py index aa121cbee1..e7083001da 100644 --- a/bitbake/lib/bb/fetch2/gitsm.py +++ b/bitbake/lib/bb/fetch2/gitsm.py | |||
| @@ -20,6 +20,8 @@ NOTE: Switching a SRC_URI from "git://" to "gitsm://" requires a clean of your r | |||
| 20 | import os | 20 | import os |
| 21 | import bb | 21 | import bb |
| 22 | import copy | 22 | import copy |
| 23 | import shutil | ||
| 24 | import tempfile | ||
| 23 | from bb.fetch2.git import Git | 25 | from bb.fetch2.git import Git |
| 24 | from bb.fetch2 import runfetchcmd | 26 | from bb.fetch2 import runfetchcmd |
| 25 | from bb.fetch2 import logger | 27 | from bb.fetch2 import logger |
| @@ -130,7 +132,7 @@ class GitSM(Git): | |||
| 130 | ld.setVar('SRCPV', d.getVar('SRCPV')) | 132 | ld.setVar('SRCPV', d.getVar('SRCPV')) |
| 131 | ld.setVar('SRCREV_FORMAT', module) | 133 | ld.setVar('SRCREV_FORMAT', module) |
| 132 | 134 | ||
| 133 | function(ud, url, module, paths[module], ld) | 135 | function(ud, url, module, paths[module], workdir, ld) |
| 134 | 136 | ||
| 135 | return submodules != [] | 137 | return submodules != [] |
| 136 | 138 | ||
| @@ -152,7 +154,7 @@ class GitSM(Git): | |||
| 152 | return False | 154 | return False |
| 153 | 155 | ||
| 154 | def download(self, ud, d): | 156 | def download(self, ud, d): |
| 155 | def download_submodule(ud, url, module, modpath, d): | 157 | def download_submodule(ud, url, module, modpath, workdir, d): |
| 156 | url += ";bareclone=1;nobranch=1" | 158 | url += ";bareclone=1;nobranch=1" |
| 157 | 159 | ||
| 158 | # Is the following still needed? | 160 | # Is the following still needed? |
| @@ -163,16 +165,25 @@ class GitSM(Git): | |||
| 163 | newfetch.download() | 165 | newfetch.download() |
| 164 | # Drop a nugget to add each of the srcrevs we've fetched (used by need_update) | 166 | # Drop a nugget to add each of the srcrevs we've fetched (used by need_update) |
| 165 | runfetchcmd("%s config --add bitbake.srcrev %s" % \ | 167 | runfetchcmd("%s config --add bitbake.srcrev %s" % \ |
| 166 | (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=ud.clonedir) | 168 | (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=workdir) |
| 167 | except Exception as e: | 169 | except Exception as e: |
| 168 | logger.error('gitsm: submodule download failed: %s %s' % (type(e).__name__, str(e))) | 170 | logger.error('gitsm: submodule download failed: %s %s' % (type(e).__name__, str(e))) |
| 169 | raise | 171 | raise |
| 170 | 172 | ||
| 171 | Git.download(self, ud, d) | 173 | Git.download(self, ud, d) |
| 172 | self.process_submodules(ud, ud.clonedir, download_submodule, d) | 174 | |
| 175 | # If we're using a shallow mirror tarball it needs to be unpacked | ||
| 176 | # temporarily so that we can examine the .gitmodules file | ||
| 177 | if ud.shallow and os.path.exists(ud.fullshallow) and self.need_update(ud, d): | ||
| 178 | tmpdir = tempfile.mkdtemp(dir=d.getVar("DL_DIR")) | ||
| 179 | runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=tmpdir) | ||
| 180 | self.process_submodules(ud, tmpdir, download_submodule, d) | ||
| 181 | shutil.rmtree(tmpdir) | ||
| 182 | else: | ||
| 183 | self.process_submodules(ud, ud.clonedir, download_submodule, d) | ||
| 173 | 184 | ||
| 174 | def unpack(self, ud, destdir, d): | 185 | def unpack(self, ud, destdir, d): |
| 175 | def unpack_submodules(ud, url, module, modpath, d): | 186 | def unpack_submodules(ud, url, module, modpath, workdir, d): |
| 176 | url += ";bareclone=1;nobranch=1" | 187 | url += ";bareclone=1;nobranch=1" |
| 177 | 188 | ||
| 178 | # Figure out where we clone over the bare submodules... | 189 | # Figure out where we clone over the bare submodules... |
