All of lore.kernel.org
 help / color / mirror / Atom feed
* Paul Eggleton : bitbake/fetch2: allow resuming interrupted fetch
@ 2012-01-20 16:50 git
  0 siblings, 0 replies; only message in thread
From: git @ 2012-01-20 16:50 UTC (permalink / raw)
  To: bitbake-devel

Module: bitbake.git
Branch: master
Commit: 721e986624529aedef96dd06c9fe6243f2897b10
URL:    http://git.openembedded.org/?p=bitbake.git&a=commit;h=721e986624529aedef96dd06c9fe6243f2897b10

Author: Paul Eggleton <paul.eggleton@linux.intel.com>
Date:   Mon Jan 16 15:01:08 2012 +0000

bitbake/fetch2: allow resuming interrupted fetch

A lot of our checks in the fetcher code assume that if the downloaded
file exists, the download finished successfully; this meant that if
BitBake was interrupted in the middle of a fetch then it would not
resume the fetch the next time, but instead attempt to use the
half-fetched file and usually fail as a result.

Since we're already writing a ".done" stamp file when a fetch completes,
just check for its existence and assume the download didn't complete
successfully if it isn't present.

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

---

 lib/bb/fetch2/__init__.py |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index fe4f4b1..07aac4c 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -479,7 +479,7 @@ def try_mirrors(d, origud, mirrors, check = False):
                     return found
                 continue
 
-            if ud.method.need_update(newuri, ud, ld):
+            if not os.path.exists(ud.donestamp) or ud.method.need_update(newuri, ud, ld):
                 ud.method.download(newuri, ud, ld)
                 if hasattr(ud.method,"build_mirror_data"):
                     ud.method.build_mirror_data(newuri, ud, ld)
@@ -955,7 +955,7 @@ class Fetch(object):
             try:
                 self.d.setVar("BB_NO_NETWORK", network)
  
-                if not m.need_update(u, ud, self.d):
+                if os.path.exists(ud.donestamp) and not m.need_update(u, ud, self.d):
                     localpath = ud.localpath
                 elif m.try_premirror(u, ud, self.d):
                     logger.debug(1, "Trying PREMIRRORS")
@@ -966,7 +966,7 @@ class Fetch(object):
                     self.d.setVar("BB_NO_NETWORK", "1")
 
                 firsterr = None
-                if not localpath and m.need_update(u, ud, self.d):
+                if not localpath and ((not os.path.exists(ud.donestamp)) or m.need_update(u, ud, self.d)):
                     try:
                         logger.debug(1, "Trying Upstream")
                         m.download(u, ud, self.d)




^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2012-01-20 16:49 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-20 16:50 Paul Eggleton : bitbake/fetch2: allow resuming interrupted fetch git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.