Fix pre-generate logic to work with latest and fix other bug.
Change-Id: I19d1ff21833c36bad8e59514bd64af55d59633df
BUG=8732
TEST=./start_devserver with -p --board=x86-mario --client_prefix=C
Review URL: http://codereview.chromium.org/4504001
diff --git a/autoupdate.py b/autoupdate.py
index 1618760..b1d5ae7 100644
--- a/autoupdate.py
+++ b/autoupdate.py
@@ -31,8 +31,8 @@
def __init__(self, serve_only=None, test_image=False, urlbase=None,
factory_config_path=None, client_prefix=None, forced_image=None,
- use_cached=False, port=8080, src_image='', vm=False, *args,
- **kwargs):
+ use_cached=False, port=8080, src_image='', vm=False, board=None,
+ *args, **kwargs):
super(Autoupdate, self).__init__(*args, **kwargs)
self.serve_only = serve_only
self.factory_config = factory_config_path
@@ -47,6 +47,7 @@
self.use_cached = use_cached
self.src_image = src_image
self.vm = vm
+ self.board = board
def _GetSecondsSinceMidnight(self):
"""Returns the seconds since midnight as a decimal value."""
@@ -296,16 +297,17 @@
"""
_LogMessage('Generating update for image %s' % image_path)
update_path = self.GenerateUpdateFile(image_path)
- stateful_update_path = self.GenerateStatefulFile(image_path)
- if not update_path or not stateful_update_path:
- _LogMessage('Failed to generate update')
- return False
+ if update_path:
+ stateful_update_path = self.GenerateStatefulFile(image_path)
+ if stateful_update_path:
+ if move_to_static_dir:
+ return self.MoveImagesToStaticDir(update_path, stateful_update_path,
+ static_image_dir)
- if move_to_static_dir:
- return self.MoveImagesToStaticDir(update_path, stateful_update_path,
- static_image_dir)
- else:
- return True
+ return True
+
+ _LogMessage('Failed to generate update')
+ return False
def GenerateLatestUpdateImage(self, board_id, client_version,
static_image_dir=None):
@@ -473,28 +475,33 @@
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
+ return has_built_image
elif self.serve_only:
return self.GenerateImageFromZip(static_image_dir)
- elif board_id and client_version:
- return self.GenerateLatestUpdateImage(board_id,
- client_version,
- static_image_dir)
else:
+ if board_id:
+ return self.GenerateLatestUpdateImage(board_id,
+ client_version,
+ static_image_dir)
+
+ _LogMessage('You must set --board for pre-generating latest update.')
return False
def PreGenerateUpdate(self):
- """Pre-generates an update. Does not work for factory or label updates."""
+ """Pre-generates an update. Returns True on success."""
# 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(None, None, self.static_dir):
+ if self.GenerateUpdatePayloadForNonFactory(self.board, '0.0.0.0',
+ self.static_dir):
# Force the devserver to use the pre-generated payload.
self.use_cached = True
+ _LogMessage('Pre-generated update successfully.')
+ return True
else:
_LogMessage('Failed to pre-generate update.')
+ return False
def HandleUpdatePing(self, data, label=None):
"""Handles an update ping from an update client.