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

Unified Diff: autoupdate.py

Issue 5109004: Add --payload to devserver to allow the update payload to be specified by the devserver user. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/dev-util.git@master
Patch Set: If the specified payload directory is static_image_dir, don't try to copy. Created 10 years, 1 month 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') | devserver.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: autoupdate.py
diff --git a/autoupdate.py b/autoupdate.py
index d9ef0bcc7b4eb4fe7e1bc9f1a05de41de2bfca24..992f730ea8597b918ac9eeea7087eb0b2dccc2ad 100644
--- a/autoupdate.py
+++ b/autoupdate.py
@@ -31,7 +31,8 @@ class Autoupdate(BuildObject):
"""
def __init__(self, serve_only=None, test_image=False, urlbase=None,
- factory_config_path=None, client_prefix=None, forced_image=None,
+ factory_config_path=None, client_prefix=None,
+ forced_image=None, forced_payload=None,
port=8080, src_image='', vm=False, board=None,
*args, **kwargs):
super(Autoupdate, self).__init__(*args, **kwargs)
@@ -45,6 +46,7 @@ class Autoupdate(BuildObject):
self.client_prefix = client_prefix
self.forced_image = forced_image
+ self.forced_payload = forced_payload
self.src_image = src_image
self.vm = vm
self.board = board
@@ -141,11 +143,12 @@ class Autoupdate(BuildObject):
cmd = ("md5sum %s | awk '{print $1}'" % update_path)
return os.popen(cmd).read().rstrip()
- def _Symlink(self, source, dest):
- """Creates a symlink at dest to source"""
- if os.path.exists(dest):
+ def _Copy(self, source, dest):
+ """Copies a file from dest to source (if different)"""
+ _LogMessage('Copy File %s -> %s' % (source, dest))
+ if os.path.lexists(dest):
os.remove(dest)
- os.symlink(source, dest)
+ shutil.copy(source, dest)
def GetUpdatePayload(self, hash, sha256, size, url, is_delta_format):
"""Returns a payload to the client corresponding to a new update.
@@ -352,9 +355,9 @@ class Autoupdate(BuildObject):
_LogMessage('"%s" "%s"' % (new_stateful_payload, cache_stateful_payload))
assert new_stateful_payload == cache_stateful_payload
- # If the generation worked, create symlinks
- self._Symlink(cache_update_payload, update_payload)
- self._Symlink(cache_stateful_payload, stateful_payload)
+ # If the generation worked, copy files
+ self._Copy(cache_update_payload, update_payload)
+ self._Copy(cache_stateful_payload, stateful_payload)
# return just the filename which is symlink in static_image_dir
return 'update.gz'
@@ -517,7 +520,21 @@ class Autoupdate(BuildObject):
Returns:
file name relative to static_image_dir on success.
"""
- if self.forced_image:
+ if self.forced_payload:
sosa 2010/11/18 01:47:43 No indention for multiline comments
dgarrett 2013/05/30 21:02:28 Done.
+ # If the forced payload is not already in our static_image_dir,
+ # copy it there.
+ if (os.path.dirname(os.path.abspath(self.forced_payload)) !=
+ os.path.abspath(static_image_dir)):
+ self._Copy(self.forced_payload, os.path.join(static_image_dir,
sosa 2010/11/18 01:47:43 Why not just symlink like the caches?
+ 'update.gz'))
+
+ self._Copy(os.path.join(os.path.dirname(self.forced_payload),
+ 'stateful.tgz'),
+ os.path.join(static_image_dir,
+ 'stateful.tgz'))
+
+ return 'update.gz'
+ elif self.forced_image:
return self.GenerateUpdateImageWithCache(
self.forced_image,
static_image_dir=static_image_dir)
« no previous file with comments | « no previous file | devserver.py » ('j') | devserver.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698