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

Side by Side Diff: prebuilt.py

Issue 6348010: Update prebuilt to use cros_overlay_list as the definitive answer for which overlay to modify. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils@master
Patch Set: Updated unittests with respect to feedback provided Created 9 years, 11 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 | prebuilt_unittest.py » ('j') | prebuilt_unittest.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import datetime 6 import datetime
7 import multiprocessing 7 import multiprocessing
8 import optparse 8 import optparse
9 import os 9 import os
10 import re 10 import re
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 _HOST_TARGET = 'amd64' 47 _HOST_TARGET = 'amd64'
48 _BOARD_PATH = 'chroot/build/%(board)s' 48 _BOARD_PATH = 'chroot/build/%(board)s'
49 _BOTO_CONFIG = '/home/chrome-bot/external-boto' 49 _BOTO_CONFIG = '/home/chrome-bot/external-boto'
50 # board/board-target/version/packages/' 50 # board/board-target/version/packages/'
51 _REL_BOARD_PATH = 'board/%(board)s/%(version)s/packages' 51 _REL_BOARD_PATH = 'board/%(board)s/%(version)s/packages'
52 # host/host-target/version/packages/' 52 # host/host-target/version/packages/'
53 _REL_HOST_PATH = 'host/%(target)s/%(version)s/packages' 53 _REL_HOST_PATH = 'host/%(target)s/%(version)s/packages'
54 # Private overlays to look at for builds to filter 54 # Private overlays to look at for builds to filter
55 # relative to build path 55 # relative to build path
56 _PRIVATE_OVERLAY_DIR = 'src/private-overlays' 56 _PRIVATE_OVERLAY_DIR = 'src/private-overlays'
57 _BINHOST_BASE_DIR = 'src/overlays'
58 _BINHOST_BASE_URL = 'http://commondatastorage.googleapis.com/chromeos-prebuilt' 57 _BINHOST_BASE_URL = 'http://commondatastorage.googleapis.com/chromeos-prebuilt'
59 _PREBUILT_BASE_DIR = 'src/third_party/chromiumos-overlay/chromeos/config/' 58 _PREBUILT_BASE_DIR = 'src/third_party/chromiumos-overlay/chromeos/config/'
60 # Created in the event of new host targets becoming available 59 # Created in the event of new host targets becoming available
61 _PREBUILT_MAKE_CONF = {'amd64': os.path.join(_PREBUILT_BASE_DIR, 60 _PREBUILT_MAKE_CONF = {'amd64': os.path.join(_PREBUILT_BASE_DIR,
62 'make.conf.amd64-host')} 61 'make.conf.amd64-host')}
63 _BINHOST_CONF_DIR = 'src/third_party/chromiumos-overlay/chromeos/binhost' 62 _BINHOST_CONF_DIR = 'src/third_party/chromiumos-overlay/chromeos/binhost'
64 63
65 64
66 class FiltersEmpty(Exception): 65 class FiltersEmpty(Exception):
67 """Raised when filters are used but none are found.""" 66 """Raised when filters are used but none are found."""
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 upload_files = {} 316 upload_files = {}
318 for pkg in pkgs: 317 for pkg in pkgs:
319 suffix = pkg['CPV'] + '.tbz2' 318 suffix = pkg['CPV'] + '.tbz2'
320 local_path = os.path.join(base_local_path, suffix) 319 local_path = os.path.join(base_local_path, suffix)
321 assert os.path.exists(local_path) 320 assert os.path.exists(local_path)
322 remote_path = '%s/%s' % (base_remote_path.rstrip('/'), suffix) 321 remote_path = '%s/%s' % (base_remote_path.rstrip('/'), suffix)
323 upload_files[local_path] = remote_path 322 upload_files[local_path] = remote_path
324 323
325 return upload_files 324 return upload_files
326 325
326 def GetBoardPathFromCrosOverlayList(build_path, target):
327 """Use the cros_overlay_list to determine the path to the board overlay
328 Args:
329 build_path: The path to the root of the build directory
330 target: The target that we are looking for, could consist of board and
331 board_variant, we handle that properly
332 Returns:
333 The last line from cros_overlay_list as a string
334 """
335 script_dir = os.path.join(build_path, 'src/scripts/bin')
336 cmd = ['./cros_overlay_list']
337 if re.match('.*?_.*', target):
338 (board, variant) = target.split('_')
339 cmd += ['--board', board, '--variant', variant]
340 elif re.match('.*?-\w+', target):
341 cmd += ['--board', target]
342 else:
343 raise UnknownBoardFormat('Unknown format: %s' % target)
327 344
328 def DeterminePrebuiltConfFile(target): 345 cmd_output = cros_build_lib.RunCommand(cmd, redirect_stdout=True,
346 cwd=script_dir)
347 # We only care about the last entry
348 return cmd_output.output.splitlines().pop()
349
350
351 def DeterminePrebuiltConfFile(build_path, target):
329 """Determine the prebuilt.conf file that needs to be updated for prebuilts. 352 """Determine the prebuilt.conf file that needs to be updated for prebuilts.
330 353
331 Args: 354 Args:
355 build_path: The path to the root of the build directory
332 target: String representation of the board. This includes host and board 356 target: String representation of the board. This includes host and board
333 targets 357 targets
334 358
335 Returns 359 Returns
336 A string path to a prebuilt.conf file to be updated. 360 A string path to a prebuilt.conf file to be updated.
337 """ 361 """
338 overlay_base_dir = _BINHOST_BASE_DIR
339 # If this is a private checkout default to updating
340 # private overlays over public.
341 if os.path.exists(_PRIVATE_OVERLAY_DIR):
342 overlay_base_dir = _PRIVATE_OVERLAY_DIR
343
344 if _HOST_TARGET == target: 362 if _HOST_TARGET == target:
345 # We are host. 363 # We are host.
346 # Without more examples of hosts this is a kludge for now. 364 # Without more examples of hosts this is a kludge for now.
347 # TODO(Scottz): as new host targets come online expand this to 365 # TODO(Scottz): as new host targets come online expand this to
348 # work more like boards. 366 # work more like boards.
349 make_path = _PREBUILT_MAKE_CONF[target] 367 make_path = _PREBUILT_MAKE_CONF[target]
350 elif re.match('.*?_.*', target):
351 # We are a board variant
352 overlay_str = 'overlay-variant-%s' % target.replace('_', '-')
353 make_path = os.path.join(overlay_base_dir, overlay_str, 'prebuilt.conf')
354 elif re.match('.*?-\w+', target):
355 overlay_str = 'overlay-%s' % target
356 make_path = os.path.join(overlay_base_dir, overlay_str, 'prebuilt.conf')
357 else: 368 else:
358 raise UnknownBoardFormat('Unknown format: %s' % target) 369 # We are a board
370 board = GetBoardPathFromCrosOverlayList(build_path, target)
371 make_path = os.path.join(board, 'prebuilt.conf')
359 372
360 return os.path.join(make_path) 373 return make_path
361 374
362 375
363 def UpdateBinhostConfFile(path, key, value): 376 def UpdateBinhostConfFile(path, key, value):
364 """Update binhost config file file with key=value. 377 """Update binhost config file file with key=value.
365 378
366 Args: 379 Args:
367 path: Filename to update. 380 path: Filename to update.
368 key: Key to update. 381 key: Key to update.
369 value: New value for key. 382 value: New value for key.
370 """ 383 """
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 url_suffix = _REL_HOST_PATH % {'version': version, 'target': _HOST_TARGET} 426 url_suffix = _REL_HOST_PATH % {'version': version, 'target': _HOST_TARGET}
414 package_string = _HOST_TARGET 427 package_string = _HOST_TARGET
415 git_file = os.path.join(build_path, _PREBUILT_MAKE_CONF[_HOST_TARGET]) 428 git_file = os.path.join(build_path, _PREBUILT_MAKE_CONF[_HOST_TARGET])
416 binhost_conf = os.path.join(build_path, _BINHOST_CONF_DIR, 'host', 429 binhost_conf = os.path.join(build_path, _BINHOST_CONF_DIR, 'host',
417 '%s.conf' % _HOST_TARGET) 430 '%s.conf' % _HOST_TARGET)
418 else: 431 else:
419 board_path = os.path.join(build_path, _BOARD_PATH % {'board': board}) 432 board_path = os.path.join(build_path, _BOARD_PATH % {'board': board})
420 package_path = os.path.join(board_path, 'packages') 433 package_path = os.path.join(board_path, 'packages')
421 package_string = board 434 package_string = board
422 url_suffix = _REL_BOARD_PATH % {'board': board, 'version': version} 435 url_suffix = _REL_BOARD_PATH % {'board': board, 'version': version}
423 git_file = os.path.join(build_path, DeterminePrebuiltConfFile(board)) 436 git_file = DeterminePrebuiltConfFile(build_path, board)
424 binhost_conf = os.path.join(build_path, _BINHOST_CONF_DIR, 'target', 437 binhost_conf = os.path.join(build_path, _BINHOST_CONF_DIR, 'target',
425 '%s.conf' % board) 438 '%s.conf' % board)
426 remote_location = '%s/%s' % (upload_location.rstrip('/'), url_suffix) 439 remote_location = '%s/%s' % (upload_location.rstrip('/'), url_suffix)
427 440
428 # Process Packages file, removing duplicates and filtered packages. 441 # Process Packages file, removing duplicates and filtered packages.
429 pkg_index = GrabLocalPackageIndex(package_path) 442 pkg_index = GrabLocalPackageIndex(package_path)
430 pkg_index.SetUploadLocation(binhost_base_url, url_suffix) 443 pkg_index.SetUploadLocation(binhost_base_url, url_suffix)
431 pkg_index.RemoveFilteredPackages(lambda pkg: ShouldFilterPackage(pkg)) 444 pkg_index.RemoveFilteredPackages(lambda pkg: ShouldFilterPackage(pkg))
432 uploads = pkg_index.ResolveDuplicateUploads(pkg_indexes) 445 uploads = pkg_index.ResolveDuplicateUploads(pkg_indexes)
433 446
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 if options.board: 555 if options.board:
543 UploadPrebuilt(options.build_path, options.upload, version, 556 UploadPrebuilt(options.build_path, options.upload, version,
544 options.binhost_base_url, board=options.board, 557 options.binhost_base_url, board=options.board,
545 git_sync=options.git_sync, key=options.key, 558 git_sync=options.git_sync, key=options.key,
546 pkg_indexes=pkg_indexes, 559 pkg_indexes=pkg_indexes,
547 sync_binhost_conf=options.sync_binhost_conf) 560 sync_binhost_conf=options.sync_binhost_conf)
548 561
549 562
550 if __name__ == '__main__': 563 if __name__ == '__main__':
551 main() 564 main()
OLDNEW
« no previous file with comments | « no previous file | prebuilt_unittest.py » ('j') | prebuilt_unittest.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698