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

Side by Side Diff: src/platform/dev/autoupdate.py

Issue 2283003: Make stateful_update use ping_omaha's flags. small devserver clenaups. (Closed) Base URL: ssh://git@chromiumos-git//chromeos
Patch Set: fix sosa's comments Created 10 years, 7 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 unified diff | Download patch
« no previous file with comments | « no previous file | src/platform/dev/stateful_update » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from buildutil import BuildObject 5 from buildutil import BuildObject
6 from xml.dom import minidom 6 from xml.dom import minidom
7 7
8 import os 8 import os
9 import shutil 9 import shutil
10 import sys 10 import sys
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 client_tokens = client_version.replace('_','').split('.') 83 client_tokens = client_version.replace('_','').split('.')
84 latest_tokens = latest_version.replace('_','').split('.') 84 latest_tokens = latest_version.replace('_','').split('.')
85 web.debug('client version %s latest version %s' \ 85 web.debug('client version %s latest version %s' \
86 % (client_version, latest_version)) 86 % (client_version, latest_version))
87 for i in range(4): 87 for i in range(4):
88 if int(latest_tokens[i]) == int(client_tokens[i]): 88 if int(latest_tokens[i]) == int(client_tokens[i]):
89 continue 89 continue
90 return int(latest_tokens[i]) > int(client_tokens[i]) 90 return int(latest_tokens[i]) > int(client_tokens[i])
91 return False 91 return False
92 92
93 def UnpackImage(self, image_path, image_file, stateful_file, kernel_file, root fs_file): 93 def UnpackImage(self, image_path, image_file, stateful_file,
94 kernel_file, rootfs_file):
94 unpack_command = 'cd %s && ./unpack_partitions.sh %s' % \ 95 unpack_command = 'cd %s && ./unpack_partitions.sh %s' % \
95 (image_path, image_file) 96 (image_path, image_file)
96 if os.system(unpack_command) == 0: 97 if os.system(unpack_command) == 0:
97 shutil.move(os.path.join(image_path, 'part_1'), stateful_file) 98 shutil.move(os.path.join(image_path, 'part_1'), stateful_file)
98 shutil.move(os.path.join(image_path, 'part_2'), kernel_file) 99 shutil.move(os.path.join(image_path, 'part_2'), kernel_file)
99 shutil.move(os.path.join(image_path, 'part_3'), rootfs_file) 100 shutil.move(os.path.join(image_path, 'part_3'), rootfs_file)
100 os.system('cd %s && rm part_*' % image_path) 101 os.system('cd %s && rm part_*' % image_path)
101 return True 102 return True
102 return False 103 return False
103 104
104 def UnpackZip(self, image_path, image_file): 105 def UnpackZip(self, image_path, image_file):
105 return os.system('cd %s && unzip -o image.zip %s unpack_partitions.sh' % \ 106 image = os.path.join(image_path, image_file)
106 (image_path, image_file)) == 0 107 if os.path.exists(image):
108 return True
109 else:
110 return os.system('cd %s && unzip -o image.zip %s unpack_partitions.sh' %
111 (image_path, image_file)) == 0
107 112
108 def GetImageBinPath(self, image_path): 113 def GetImageBinPath(self, image_path):
109 if self.test_image: 114 if self.test_image:
110 image_file = 'chromiumos_test_image.bin' 115 image_file = 'chromiumos_test_image.bin'
111 else: 116 else:
112 image_file = 'chromiumos_image.bin' 117 image_file = 'chromiumos_image.bin'
113 return image_file 118 return image_file
114 119
115 def BuildUpdateImage(self, image_path): 120 def BuildUpdateImage(self, image_path):
116 stateful_file = '%s/stateful.image' % image_path 121 stateful_file = '%s/stateful.image' % image_path
117 kernel_file = '%s/kernel.image' % image_path 122 kernel_file = '%s/kernel.image' % image_path
118 rootfs_file = '%s/rootfs.image' % image_path 123 rootfs_file = '%s/rootfs.image' % image_path
119 124
120 image_file = self.GetImageBinPath(image_path) 125 image_file = self.GetImageBinPath(image_path)
121 bin_path = os.path.join(image_path, image_file) 126 bin_path = os.path.join(image_path, image_file)
122 127
123 # Get appropriate update.gz to compare timestamps. 128 # Get appropriate update.gz to compare timestamps.
124 if self.serve_only: 129 if self.serve_only:
125 cached_update_file = os.path.join(image_path, 'update.gz') 130 cached_update_file = os.path.join(image_path, 'update.gz')
126 else: 131 else:
127 cached_update_file = os.path.join(self.static_dir, 'update.gz') 132 cached_update_file = os.path.join(self.static_dir, 'update.gz')
128 133
129 # Check whether we need to re-create if the original image is newer. 134 # If the rootfs image is newer, re-create everything.
130 if (os.path.exists(cached_update_file) and 135 if (os.path.exists(cached_update_file) and
131 os.path.getmtime(cached_update_file) >= os.path.getmtime(bin_path)): 136 os.path.getmtime(cached_update_file) >= os.path.getmtime(bin_path)):
132 web.debug('Using cached update image at %s instead of %s' % 137 web.debug('Using cached update image at %s instead of %s' %
133 (cached_update_file, bin_path)) 138 (cached_update_file, bin_path))
134 else: 139 else:
135 # Unpack zip file if we are serving from a directory. 140 # Unpack zip file if we are serving from a directory.
136 if self.serve_only and not self.UnpackZip(image_path, image_file): 141 if self.serve_only and not self.UnpackZip(image_path, image_file):
137 web.debug('unzip image.zip failed.') 142 web.debug('unzip image.zip failed.')
138 return False 143 return False
139 144
140 if not self.UnpackImage(image_path, image_file, stateful_file, 145 if not self.UnpackImage(image_path, image_file, stateful_file,
141 kernel_file, rootfs_file): 146 kernel_file, rootfs_file):
142 web.debug('Failed to unpack image.') 147 web.debug('Failed to unpack image.')
143 return False 148 return False
144 149
145 update_file = os.path.join(image_path, 'update.gz') 150 update_file = os.path.join(image_path, 'update.gz')
146 web.debug('Generating update image %s' % update_file) 151 web.debug('Generating update image %s' % update_file)
147 mkupdate_command = '%s/mk_memento_images.sh %s %s' % \ 152 mkupdate_command = '%s/mk_memento_images.sh %s %s' % \
148 (self.scripts_dir, kernel_file, rootfs_file) 153 (self.scripts_dir, kernel_file, rootfs_file)
149 if os.system(mkupdate_command) != 0: 154 if os.system(mkupdate_command) != 0:
150 web.debug('Failed to create update image') 155 web.debug('Failed to create update image')
151 return False 156 return False
152 157
153 mkstatefulupdate_command = 'gzip %s' % stateful_file 158 mkstatefulupdate_command = 'gzip -f %s' % stateful_file
154 if os.system(mkstatefulupdate_command) != 0: 159 if os.system(mkstatefulupdate_command) != 0:
155 web.debug('Failed to create stateful update image') 160 web.debug('Failed to create stateful update image')
156 return False 161 return False
157 162
158 # Add gz suffix 163 # Add gz suffix
159 stateful_file = '%s.gz' % stateful_file 164 stateful_file = '%s.gz' % stateful_file
160 165
161 # Cleanup of image files 166 # Cleanup of image files
162 os.remove(kernel_file) 167 os.remove(kernel_file)
163 os.remove(rootfs_file) 168 os.remove(rootfs_file)
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 ok = self.BuildUpdateImage(latest_image_path) 331 ok = self.BuildUpdateImage(latest_image_path)
327 if ok != True: 332 if ok != True:
328 web.debug('Failed to build an update image') 333 web.debug('Failed to build an update image')
329 return self.GetNoUpdatePayload() 334 return self.GetNoUpdatePayload()
330 335
331 hash = self.GetHash('%s/update.gz' % self.static_dir) 336 hash = self.GetHash('%s/update.gz' % self.static_dir)
332 size = self.GetSize('%s/update.gz' % self.static_dir) 337 size = self.GetSize('%s/update.gz' % self.static_dir)
333 338
334 url = 'http://%s/static/update.gz' % hostname 339 url = 'http://%s/static/update.gz' % hostname
335 return self.GetUpdatePayload(hash, size, url) 340 return self.GetUpdatePayload(hash, size, url)
OLDNEW
« no previous file with comments | « no previous file | src/platform/dev/stateful_update » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698