summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/fetch2/hg.py
diff options
context:
space:
mode:
authorChristopher Larson <chris_larson@mentor.com>2015-09-15 13:56:06 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-09-18 09:05:36 +0100
commit3a5e46b6ed483e43251da7e328b9299189997722 (patch)
tree579532935bca4c0c6765a21e294f7c59fb7a1591 /bitbake/lib/bb/fetch2/hg.py
parent441f04ce97d12fd6b5f6cad9e23afe7080939092 (diff)
downloadpoky-3a5e46b6ed483e43251da7e328b9299189997722.tar.gz
bitbake: bb.fetch2.{git, hg}: remove tarball if it needs updating
We were maintaining state in the form of ud.repochanged to determine whether we need to write the tarball in the case where the tarball already exists, but this state is maintained only in memory. If we need to update the git repo, set ud.repochanged to True, and then are interrupted or killed, the tarball will then be out of date. Rather than maintaining this state, simply remove the out of date tarball when we update the git repo, and it will be re-created with updated content in build_mirror_data. [YOCTO #6366] (Bitbake rev: eaaa81393f181432c8586b17ade623f42c9fed2e) Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/fetch2/hg.py')
-rw-r--r--bitbake/lib/bb/fetch2/hg.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/bitbake/lib/bb/fetch2/hg.py b/bitbake/lib/bb/fetch2/hg.py
index d978630bac..bbb4ed95dc 100644
--- a/bitbake/lib/bb/fetch2/hg.py
+++ b/bitbake/lib/bb/fetch2/hg.py
@@ -163,8 +163,6 @@ class Hg(FetchMethod):
163 def download(self, ud, d): 163 def download(self, ud, d):
164 """Fetch url""" 164 """Fetch url"""
165 165
166 ud.repochanged = not os.path.exists(ud.fullmirror)
167
168 logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'") 166 logger.debug(2, "Fetch: checking for module directory '" + ud.moddir + "'")
169 167
170 # If the checkout doesn't exist and the mirror tarball does, extract it 168 # If the checkout doesn't exist and the mirror tarball does, extract it
@@ -189,7 +187,11 @@ class Hg(FetchMethod):
189 logger.debug(1, "Running %s", pullcmd) 187 logger.debug(1, "Running %s", pullcmd)
190 bb.fetch2.check_network_access(d, pullcmd, ud.url) 188 bb.fetch2.check_network_access(d, pullcmd, ud.url)
191 runfetchcmd(pullcmd, d) 189 runfetchcmd(pullcmd, d)
192 ud.repochanged = True 190 try:
191 os.unlink(ud.fullmirror)
192 except OSError as exc:
193 if exc.errno != errno.ENOENT:
194 raise
193 195
194 # No source found, clone it. 196 # No source found, clone it.
195 if not os.path.exists(ud.moddir): 197 if not os.path.exists(ud.moddir):
@@ -238,7 +240,7 @@ class Hg(FetchMethod):
238 240
239 def build_mirror_data(self, ud, d): 241 def build_mirror_data(self, ud, d):
240 # Generate a mirror tarball if needed 242 # Generate a mirror tarball if needed
241 if ud.write_tarballs == "1" and (ud.repochanged or not os.path.exists(ud.fullmirror)): 243 if ud.write_tarballs == "1" and not os.path.exists(ud.fullmirror):
242 # it's possible that this symlink points to read-only filesystem with PREMIRROR 244 # it's possible that this symlink points to read-only filesystem with PREMIRROR
243 if os.path.islink(ud.fullmirror): 245 if os.path.islink(ud.fullmirror):
244 os.unlink(ud.fullmirror) 246 os.unlink(ud.fullmirror)