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

Side by Side Diff: tools/isolate/isolate.py

Issue 10139020: Change --variable argument, must now be spaced, -V foo bar, instead of -V foo=bar. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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 | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium 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 """Does one of the following depending on the --mode argument: 6 """Does one of the following depending on the --mode argument:
7 check Verifies all the inputs exist, touches the file specified with 7 check Verifies all the inputs exist, touches the file specified with
8 --result and exits. 8 --result and exits.
9 hashtable Puts a manifest file and hard links each of the inputs into the 9 hashtable Puts a manifest file and hard links each of the inputs into the
10 output directory. 10 output directory.
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 False) 411 False)
412 412
413 413
414 def get_valid_modes(): 414 def get_valid_modes():
415 """Returns the modes that can be used.""" 415 """Returns the modes that can be used."""
416 return sorted( 416 return sorted(
417 i[4:] for i in dir(sys.modules[__name__]) if i.startswith('MODE')) 417 i[4:] for i in dir(sys.modules[__name__]) if i.startswith('MODE'))
418 418
419 419
420 def main(): 420 def main():
421 default_variables = ['OS=%s' % trace_inputs.get_flavor()] 421 default_variables = [('OS', trace_inputs.get_flavor())]
422 if sys.platform in ('win32', 'cygwin'): 422 if sys.platform in ('win32', 'cygwin'):
423 default_variables.append('EXECUTABLE_SUFFIX=.exe') 423 default_variables.append(('EXECUTABLE_SUFFIX', '.exe'))
424 else: 424 else:
425 default_variables.append('EXECUTABLE_SUFFIX=') 425 default_variables.append(('EXECUTABLE_SUFFIX', ''))
426 valid_modes = get_valid_modes() 426 valid_modes = get_valid_modes()
427 parser = optparse.OptionParser( 427 parser = optparse.OptionParser(
428 usage='%prog [options] [.isolate file]', 428 usage='%prog [options] [.isolate file]',
429 description=sys.modules[__name__].__doc__) 429 description=sys.modules[__name__].__doc__)
430 parser.format_description = lambda *_: parser.description 430 parser.format_description = lambda *_: parser.description
431 parser.add_option( 431 parser.add_option(
432 '-v', '--verbose', 432 '-v', '--verbose',
433 action='count', 433 action='count',
434 default=int(os.environ.get('ISOLATE_DEBUG', 0)), 434 default=int(os.environ.get('ISOLATE_DEBUG', 0)),
435 help='Use multiple times') 435 help='Use multiple times')
436 parser.add_option( 436 parser.add_option(
437 '-m', '--mode', 437 '-m', '--mode',
438 choices=valid_modes, 438 choices=valid_modes,
439 help='Determines the action to be taken: %s' % ', '.join(valid_modes)) 439 help='Determines the action to be taken: %s' % ', '.join(valid_modes))
440 parser.add_option( 440 parser.add_option(
441 '-r', '--result', 441 '-r', '--result',
442 metavar='FILE', 442 metavar='FILE',
443 help='Result file to store the json manifest') 443 help='Result file to store the json manifest')
444 parser.add_option( 444 parser.add_option(
445 '-V', '--variable', 445 '-V', '--variable',
446 nargs=2,
446 action='append', 447 action='append',
447 default=default_variables, 448 default=default_variables,
448 dest='variables', 449 dest='variables',
449 metavar='FOO=BAR', 450 metavar='FOO BAR',
450 help='Variables to process in the .isolate file, default: %default') 451 help='Variables to process in the .isolate file, default: %default')
451 parser.add_option( 452 parser.add_option(
452 '-o', '--outdir', metavar='DIR', 453 '-o', '--outdir', metavar='DIR',
453 help='Directory used to recreate the tree or store the hash table. ' 454 help='Directory used to recreate the tree or store the hash table. '
454 'If the environment variable ISOLATE_HASH_TABLE_DIR exists, it will ' 455 'If the environment variable ISOLATE_HASH_TABLE_DIR exists, it will '
455 'be used. Otherwise, for run and remap, uses a /tmp subdirectory. ' 456 'be used. Otherwise, for run and remap, uses a /tmp subdirectory. '
456 'For the other modes, defaults to the directory containing --result') 457 'For the other modes, defaults to the directory containing --result')
457 458
458 options, args = parser.parse_args() 459 options, args = parser.parse_args()
459 level = [logging.ERROR, logging.INFO, logging.DEBUG][min(2, options.verbose)] 460 level = [logging.ERROR, logging.INFO, logging.DEBUG][min(2, options.verbose)]
460 logging.basicConfig( 461 logging.basicConfig(
461 level=level, 462 level=level,
462 format='%(levelname)5s %(module)15s(%(lineno)3d): %(message)s') 463 format='%(levelname)5s %(module)15s(%(lineno)3d): %(message)s')
463 464
464 if not options.mode: 465 if not options.mode:
465 parser.error('--mode is required') 466 parser.error('--mode is required')
466 if len(args) != 1: 467 if len(args) != 1:
467 parser.error('Use only one argument which should be a .isolate file') 468 parser.error('Use only one argument which should be a .isolate file')
468 469
469 input_file = os.path.abspath(args[0]) 470 input_file = os.path.abspath(args[0])
470 isolate_dir = os.path.dirname(input_file) 471 isolate_dir = os.path.dirname(input_file)
471 472
472 # Extract the variables. 473 # Extract the variables.
473 variables = dict(i.split('=', 1) for i in options.variables) 474 variables = dict(options.variables)
474 # Process path variables as a special case. First normalize it, verifies it 475 # Process path variables as a special case. First normalize it, verifies it
475 # exists, convert it to an absolute path, then set it as relative to 476 # exists, convert it to an absolute path, then set it as relative to
476 # isolate_dir. 477 # isolate_dir.
477 for i in ('PRODUCT_DIR',): 478 for i in ('PRODUCT_DIR',):
478 if i not in variables: 479 if i not in variables:
479 continue 480 continue
480 variable = os.path.normpath(variables[i]) 481 variable = os.path.normpath(variables[i])
481 if not os.path.isdir(variable): 482 if not os.path.isdir(variable):
482 parser.error('%s=%s is not a directory' % (i, variable)) 483 parser.error('%s=%s is not a directory' % (i, variable))
483 variable = os.path.abspath(variable) 484 variable = os.path.abspath(variable)
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 command, 525 command,
525 relative_dir, 526 relative_dir,
526 options.result) 527 options.result)
527 except run_test_from_archive.MappingError, e: 528 except run_test_from_archive.MappingError, e:
528 print >> sys.stderr, str(e) 529 print >> sys.stderr, str(e)
529 return 1 530 return 1
530 531
531 532
532 if __name__ == '__main__': 533 if __name__ == '__main__':
533 sys.exit(main()) 534 sys.exit(main())
OLDNEW
« no previous file with comments | « third_party/cacheinvalidation/cacheinvalidation.gyp ('k') | tools/isolate/isolate_smoke_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698