diff options
| author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2012-01-16 15:01:08 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-01-20 16:47:39 +0000 |
| commit | 8878ee89ba45dfe9b3852e21604c216795152159 (patch) | |
| tree | 2a35935400dc3e2168a6b559081d79712c3f9d04 | |
| parent | 42645b09655c348f47010be6eab7c607af243cdc (diff) | |
| download | poky-8878ee89ba45dfe9b3852e21604c216795152159.tar.gz | |
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.
(Bitbake rev: 721e986624529aedef96dd06c9fe6243f2897b10)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | bitbake/lib/bb/fetch2/__init__.py | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index fe4f4b1d60..07aac4c3a0 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py | |||
| @@ -479,7 +479,7 @@ def try_mirrors(d, origud, mirrors, check = False): | |||
| 479 | return found | 479 | return found |
| 480 | continue | 480 | continue |
| 481 | 481 | ||
| 482 | if ud.method.need_update(newuri, ud, ld): | 482 | if not os.path.exists(ud.donestamp) or ud.method.need_update(newuri, ud, ld): |
| 483 | ud.method.download(newuri, ud, ld) | 483 | ud.method.download(newuri, ud, ld) |
| 484 | if hasattr(ud.method,"build_mirror_data"): | 484 | if hasattr(ud.method,"build_mirror_data"): |
| 485 | ud.method.build_mirror_data(newuri, ud, ld) | 485 | ud.method.build_mirror_data(newuri, ud, ld) |
| @@ -955,7 +955,7 @@ class Fetch(object): | |||
| 955 | try: | 955 | try: |
| 956 | self.d.setVar("BB_NO_NETWORK", network) | 956 | self.d.setVar("BB_NO_NETWORK", network) |
| 957 | 957 | ||
| 958 | if not m.need_update(u, ud, self.d): | 958 | if os.path.exists(ud.donestamp) and not m.need_update(u, ud, self.d): |
| 959 | localpath = ud.localpath | 959 | localpath = ud.localpath |
| 960 | elif m.try_premirror(u, ud, self.d): | 960 | elif m.try_premirror(u, ud, self.d): |
| 961 | logger.debug(1, "Trying PREMIRRORS") | 961 | logger.debug(1, "Trying PREMIRRORS") |
| @@ -966,7 +966,7 @@ class Fetch(object): | |||
| 966 | self.d.setVar("BB_NO_NETWORK", "1") | 966 | self.d.setVar("BB_NO_NETWORK", "1") |
| 967 | 967 | ||
| 968 | firsterr = None | 968 | firsterr = None |
| 969 | if not localpath and m.need_update(u, ud, self.d): | 969 | if not localpath and ((not os.path.exists(ud.donestamp)) or m.need_update(u, ud, self.d)): |
| 970 | try: | 970 | try: |
| 971 | logger.debug(1, "Trying Upstream") | 971 | logger.debug(1, "Trying Upstream") |
| 972 | m.download(u, ud, self.d) | 972 | m.download(u, ud, self.d) |
