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: tools/isolate/isolate.py

Issue 10073004: Returns an error code if no command is present (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
« 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 #!/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 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 """Always uses a temporary directory.""" 365 """Always uses a temporary directory."""
366 try: 366 try:
367 outdir = tempfile.mkdtemp(prefix='isolate') 367 outdir = tempfile.mkdtemp(prefix='isolate')
368 recreate_tree( 368 recreate_tree(
369 outdir, indir, dictfiles.keys(), run_test_from_archive.HARDLINK) 369 outdir, indir, dictfiles.keys(), run_test_from_archive.HARDLINK)
370 cwd = os.path.join(outdir, relative_cwd) 370 cwd = os.path.join(outdir, relative_cwd)
371 if not os.path.isdir(cwd): 371 if not os.path.isdir(cwd):
372 os.makedirs(cwd) 372 os.makedirs(cwd)
373 if read_only: 373 if read_only:
374 run_test_from_archive.make_writable(outdir, True) 374 run_test_from_archive.make_writable(outdir, True)
375 if not cmd:
376 print 'No command to run'
377 return 1
375 cmd = trace_inputs.fix_python_path(cmd) 378 cmd = trace_inputs.fix_python_path(cmd)
376 logging.info('Running %s, cwd=%s' % (cmd, cwd)) 379 logging.info('Running %s, cwd=%s' % (cmd, cwd))
377 return subprocess.call(cmd, cwd=cwd) 380 return subprocess.call(cmd, cwd=cwd)
378 finally: 381 finally:
379 run_test_from_archive.rmtree(outdir) 382 run_test_from_archive.rmtree(outdir)
380 383
381 384
382 def MODEtrace( 385 def MODEtrace(
383 _outdir, indir, _dictfiles, _read_only, cmd, relative_cwd, resultfile): 386 _outdir, indir, _dictfiles, _read_only, cmd, relative_cwd, resultfile):
384 """Shortcut to use trace_inputs.py properly. 387 """Shortcut to use trace_inputs.py properly.
385 388
386 It constructs the equivalent of dictfiles. It is hardcoded to base the 389 It constructs the equivalent of dictfiles. It is hardcoded to base the
387 checkout at src/. 390 checkout at src/.
388 """ 391 """
389 logging.info('Running %s, cwd=%s' % (cmd, os.path.join(indir, relative_cwd))) 392 logging.info('Running %s, cwd=%s' % (cmd, os.path.join(indir, relative_cwd)))
390 if resultfile: 393 if resultfile:
391 # Guesswork here. 394 # Guesswork here.
392 product_dir = os.path.dirname(resultfile) 395 product_dir = os.path.dirname(resultfile)
393 if product_dir and indir: 396 if product_dir and indir:
394 product_dir = os.path.relpath(product_dir, indir) 397 product_dir = os.path.relpath(product_dir, indir)
395 else: 398 else:
396 product_dir = None 399 product_dir = None
400 if not cmd:
401 print 'No command to run'
402 return 1
397 return trace_inputs.trace_inputs( 403 return trace_inputs.trace_inputs(
398 '%s.log' % resultfile, 404 '%s.log' % resultfile,
399 cmd, 405 cmd,
400 indir, 406 indir,
401 relative_cwd, 407 relative_cwd,
402 product_dir, 408 product_dir,
403 False) 409 False)
404 410
405 411
406 def get_valid_modes(): 412 def get_valid_modes():
407 """Returns the modes that can be used.""" 413 """Returns the modes that can be used."""
408 return sorted( 414 return sorted(
409 i[4:] for i in dir(sys.modules[__name__]) if i.startswith('MODE')) 415 i[4:] for i in dir(sys.modules[__name__]) if i.startswith('MODE'))
410 416
411 417
412 def main(): 418 def main():
413 default_variables = ['OS=%s' % trace_inputs.get_flavor()] 419 default_variables = ['OS=%s' % trace_inputs.get_flavor()]
414 if sys.platform in ('win32', 'cygwin'): 420 if sys.platform in ('win32', 'cygwin'):
415 default_variables.append('EXECUTABLE_SUFFIX=.exe') 421 default_variables.append('EXECUTABLE_SUFFIX=.exe')
416 else: 422 else:
417 default_variables.append('EXECUTABLE_SUFFIX=') 423 default_variables.append('EXECUTABLE_SUFFIX=')
418 valid_modes = get_valid_modes() 424 valid_modes = get_valid_modes()
419 parser = optparse.OptionParser( 425 parser = optparse.OptionParser(
420 usage='%prog [options] [.isolate file]', 426 usage='%prog [options] [.isolate file]',
421 description=sys.modules[__name__].__doc__) 427 description=sys.modules[__name__].__doc__)
422 parser.format_description = lambda *_: parser.description 428 parser.format_description = lambda *_: parser.description
423 parser.add_option( 429 parser.add_option(
424 '-v', '--verbose', 430 '-v', '--verbose',
425 action='count', 431 action='count',
426 default=2 if 'ISOLATE_DEBUG' in os.environ else 0, 432 default=int(os.environ.get('ISOLATE_DEBUG', 0)),
427 help='Use multiple times') 433 help='Use multiple times')
428 parser.add_option( 434 parser.add_option(
429 '-m', '--mode', 435 '-m', '--mode',
430 choices=valid_modes, 436 choices=valid_modes,
431 help='Determines the action to be taken: %s' % ', '.join(valid_modes)) 437 help='Determines the action to be taken: %s' % ', '.join(valid_modes))
432 parser.add_option( 438 parser.add_option(
433 '-r', '--result', 439 '-r', '--result',
434 metavar='FILE', 440 metavar='FILE',
435 help='Result file to store the json manifest') 441 help='Result file to store the json manifest')
436 parser.add_option( 442 parser.add_option(
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 command, 523 command,
518 relative_dir, 524 relative_dir,
519 options.result) 525 options.result)
520 except run_test_from_archive.MappingError, e: 526 except run_test_from_archive.MappingError, e:
521 print >> sys.stderr, str(e) 527 print >> sys.stderr, str(e)
522 return 1 528 return 1
523 529
524 530
525 if __name__ == '__main__': 531 if __name__ == '__main__':
526 sys.exit(main()) 532 sys.exit(main())
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