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

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

Issue 2131015: Add more images support for system and EC firmware. (Closed) Base URL: ssh://git@chromiumos-git/chromiumos
Patch Set: self-documenting code 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 | no next file » | 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 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 config = [ 187 config = [
188 { 188 {
189 'qual_ids': set([1, 2, 3, "x86-generic"]), 189 'qual_ids': set([1, 2, 3, "x86-generic"]),
190 'factory_image': 'generic-factory.gz', 190 'factory_image': 'generic-factory.gz',
191 'factory_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=', 191 'factory_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
192 'release_image': 'generic-release.gz', 192 'release_image': 'generic-release.gz',
193 'release_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=', 193 'release_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
194 'oempartitionimg_image': 'generic-oem.gz', 194 'oempartitionimg_image': 'generic-oem.gz',
195 'oempartitionimg_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=', 195 'oempartitionimg_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
196 'stateimg_image': 'generic-state.gz', 196 'stateimg_image': 'generic-state.gz',
197 'stateimg_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=' 197 'stateimg_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
198 'systemrom_image': 'generic-systemrom.gz',
199 'systemrom_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
200 'ecrom_image': 'generic-ecrom.gz',
201 'ecrom_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
198 }, 202 },
199 { 203 {
200 'qual_ids': set([6]), 204 'qual_ids': set([6]),
201 'factory_image': '6-factory.gz', 205 'factory_image': '6-factory.gz',
202 'factory_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=', 206 'factory_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
203 'release_image': '6-release.gz', 207 'release_image': '6-release.gz',
204 'release_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=', 208 'release_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
205 'oempartitionimg_image': '6-oem.gz', 209 'oempartitionimg_image': '6-oem.gz',
206 'oempartitionimg_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=', 210 'oempartitionimg_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
207 'stateimg_image': '6-state.gz', 211 'stateimg_image': '6-state.gz',
208 'stateimg_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=' 212 'stateimg_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
213 'systemrom_image': '6-systemrom.gz',
214 'systemrom_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
215 'ecrom_image': '6-ecrom.gz',
216 'ecrom_checksum': 'AtiI8B64agHVN+yeBAyiNMX3+HM=',
209 }, 217 },
210 ] 218 ]
211 The server will look for the files by name in the static files 219 The server will look for the files by name in the static files
212 directory. 220 directory.
213 221
214 If validate_checksums is True, validates checksums and exits. If 222 If validate_checksums is True, validates checksums and exits. If
215 a checksum mismatch is found, it's printed to the screen. 223 a checksum mismatch is found, it's printed to the screen.
216 """ 224 """
217 f = open(filename, 'r') 225 f = open(filename, 'r')
218 output = {} 226 output = {}
219 exec(f.read(), output) 227 exec(f.read(), output)
220 self.factory_config = output['config'] 228 self.factory_config = output['config']
221 success = True 229 success = True
222 for stanza in self.factory_config: 230 for stanza in self.factory_config:
223 for kind in ('factory', 'oempartitionimg', 'release', 'stateimg'): 231 for key in stanza.copy().iterkeys():
224 stanza[kind + '_size'] = \ 232 suffix = '_image'
225 os.path.getsize(self.static_dir + '/' + stanza[kind + '_image']) 233 if key.endswith(suffix):
226 if validate_checksums: 234 kind = key[:-len(suffix)]
227 factory_checksum = self.GetHash(self.static_dir + '/' + 235 stanza[kind + '_size'] = \
228 stanza[kind + '_image']) 236 os.path.getsize(self.static_dir + '/' + stanza[kind + '_image'])
229 if factory_checksum != stanza[kind + '_checksum']: 237 if validate_checksums:
230 print 'Error: checksum mismatch for %s. Expected "%s" but file ' \ 238 factory_checksum = self.GetHash(self.static_dir + '/' +
231 'has checksum "%s".' % (stanza[kind + '_image'], 239 stanza[kind + '_image'])
232 stanza[kind + '_checksum'], 240 if factory_checksum != stanza[kind + '_checksum']:
233 factory_checksum) 241 print 'Error: checksum mismatch for %s. Expected "%s" but file ' \
234 success = False 242 'has checksum "%s".' % (stanza[kind + '_image'],
243 stanza[kind + '_checksum'],
244 factory_checksum)
245 success = False
235 if validate_checksums: 246 if validate_checksums:
236 if success is False: 247 if success is False:
237 raise Exception('Checksum mismatch in conf file.') 248 raise Exception('Checksum mismatch in conf file.')
238 print 'Config file looks good.' 249 print 'Config file looks good.'
239 250
240 def GetFactoryImage(self, board_id, channel): 251 def GetFactoryImage(self, board_id, channel):
241 kind = channel.rsplit('-', 1)[0] 252 kind = channel.rsplit('-', 1)[0]
242 for stanza in self.factory_config: 253 for stanza in self.factory_config:
243 if board_id not in stanza['qual_ids']: 254 if board_id not in stanza['qual_ids']:
244 continue 255 continue
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 ok = self.BuildUpdateImage(latest_image_path) 322 ok = self.BuildUpdateImage(latest_image_path)
312 if ok != True: 323 if ok != True:
313 web.debug('Failed to build an update image') 324 web.debug('Failed to build an update image')
314 return self.GetNoUpdatePayload() 325 return self.GetNoUpdatePayload()
315 326
316 hash = self.GetHash('%s/update.gz' % self.static_dir) 327 hash = self.GetHash('%s/update.gz' % self.static_dir)
317 size = self.GetSize('%s/update.gz' % self.static_dir) 328 size = self.GetSize('%s/update.gz' % self.static_dir)
318 329
319 url = 'http://%s/static/update.gz' % hostname 330 url = 'http://%s/static/update.gz' % hostname
320 return self.GetUpdatePayload(hash, size, url) 331 return self.GetUpdatePayload(hash, size, url)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698