Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1316)

Unified Diff: autoupdate.py

Issue 4198007: Pre generate updates for non-factory devserver use. (Closed) Base URL: http://git.chromium.org/git/dev-util.git
Patch Set: Add flag Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | devserver.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: autoupdate.py
diff --git a/autoupdate.py b/autoupdate.py
index 351b451b94555ba37d8f5a67c1c20a92bdd54dc9..498b0e947af858d8cd9c9e37ba18013147d1767a 100644
--- a/autoupdate.py
+++ b/autoupdate.py
@@ -454,6 +454,38 @@ class Autoupdate(BuildObject):
# setting sha-256 to an empty string.
return self.GetUpdatePayload(checksum, '', size, url, is_delta_format)
+ def GenerateUpdatePayloadForNonFactory(self, static_image_dir):
+ """Generates an update for non-factory and returns True on success."""
+ if self.use_cached and os.path.exists(os.path.join(static_image_dir,
+ 'update.gz')):
+ _LogMessage('Using cached image regardless of timestamps.')
+ return True
+ else:
+ if self.forced_image:
+ has_built_image = self.GenerateUpdateImage(
+ self.forced_image, move_to_static_dir=True,
+ static_image_dir=static_image_dir)
+ # Now that we've generated it, force devserver to use it.
+ self.use_cached = True
+ elif self.serve_only:
+ return self.GenerateImageFromZip(static_image_dir)
+ else:
+ return self.GenerateLatestUpdateImage(board_id,
+ client_version,
+ static_image_dir)
+
+ def PreGenerateUpdate(self):
+ """Pre-generates an update. Does not work for factory or label updates."""
+ # Does not work with factory config.
+ assert(not self.factory_config)
+ _LogMessage('Pre-generating the update payload.')
+ # Does not work with labels so just use static dir.
+ if self.GenerateUpdatePayloadForNonFactory(self.static_dir):
+ # Force the devserver to use the pre-generated payload.
+ self.use_cached = True
+ else:
+ _LogMessage('Failed to pre-generate update.')
+
def HandleUpdatePing(self, data, label=None):
"""Handles an update ping from an update client.
@@ -509,27 +541,7 @@ class Autoupdate(BuildObject):
if label:
static_image_dir = os.path.join(static_image_dir, label)
- # Prefer cached image if it exists.
- if self.use_cached and os.path.exists(os.path.join(static_image_dir,
- 'update.gz')):
- _LogMessage('Using cached image regardless of timestamps.')
- has_built_image = True
- else:
- if self.forced_image:
- has_built_image = self.GenerateUpdateImage(
- self.forced_image, move_to_static_dir=True,
- static_image_dir=static_image_dir)
- # Now that we've generated it, clear out so that other pings of same
- # devserver instance do not generate new images.
- self.forced_image = None
- elif self.serve_only:
- has_built_image = self.GenerateImageFromZip(static_image_dir)
- else:
- has_built_image = self.GenerateLatestUpdateImage(board_id,
- client_version,
- static_image_dir)
-
- if has_built_image:
+ if self.GenerateUpdatePayloadForNonFactory(static_image_dir):
filename = os.path.join(static_image_dir, 'update.gz')
hash = self._GetHash(filename)
sha256 = self._GetSHA256(filename)
« no previous file with comments | « no previous file | devserver.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698