| OLD | NEW |
| 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 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 | 384 |
| 385 It constructs the equivalent of dictfiles. It is hardcoded to base the | 385 It constructs the equivalent of dictfiles. It is hardcoded to base the |
| 386 checkout at src/. | 386 checkout at src/. |
| 387 """ | 387 """ |
| 388 logging.info( | 388 logging.info( |
| 389 'Running %s, cwd=%s' % ( | 389 'Running %s, cwd=%s' % ( |
| 390 data['command'], os.path.join(indir, data['relative_cwd']))) | 390 data['command'], os.path.join(indir, data['relative_cwd']))) |
| 391 product_dir = None | 391 product_dir = None |
| 392 if data['resultdir'] and indir: | 392 if data['resultdir'] and indir: |
| 393 # Defaults to none if both are the same directory. | 393 # Defaults to none if both are the same directory. |
| 394 product_dir = os.path.relpath(data['resultdir'], indir) or None | 394 try: |
| 395 product_dir = os.path.relpath(data['resultdir'], indir) or None |
| 396 except ValueError: |
| 397 # This happens on Windows if data['resultdir'] is one drive, let's say |
| 398 # 'C:\' and indir on another one like 'D:\'. |
| 399 product_dir = None |
| 395 if not data['command']: | 400 if not data['command']: |
| 396 print 'No command to run' | 401 print 'No command to run' |
| 397 return 1 | 402 return 1 |
| 398 return trace_inputs.trace_inputs( | 403 return trace_inputs.trace_inputs( |
| 399 data['resultfile'], | 404 data['resultfile'], |
| 400 data['command'], | 405 data['command'], |
| 401 indir, | 406 indir, |
| 402 data['relative_cwd'], | 407 data['relative_cwd'], |
| 403 product_dir, | 408 product_dir, |
| 404 False) | 409 False) |
| (...skipping 27 matching lines...) Expand all Loading... |
| 432 variable = os.path.abspath(variable) | 437 variable = os.path.abspath(variable) |
| 433 # All variables are relative to the input file. | 438 # All variables are relative to the input file. |
| 434 variables[i] = os.path.relpath(variable, isolate_dir) | 439 variables[i] = os.path.relpath(variable, isolate_dir) |
| 435 | 440 |
| 436 command, infiles, read_only = load_isolate( | 441 command, infiles, read_only = load_isolate( |
| 437 open(input_file, 'r').read(), variables, error) | 442 open(input_file, 'r').read(), variables, error) |
| 438 | 443 |
| 439 # The trick used to determine the root directory is to look at "how far" back | 444 # The trick used to determine the root directory is to look at "how far" back |
| 440 # up it is looking up. | 445 # up it is looking up. |
| 441 # TODO(maruel): Stop the msbuild generator from generating a mix of / and \\. | 446 # TODO(maruel): Stop the msbuild generator from generating a mix of / and \\. |
| 442 root_dir = isolate_dir.replace(os.path.sep, '/') | 447 isolate_dir_replaced = isolate_dir.replace(os.path.sep, '/') |
| 448 root_dir = isolate_dir_replaced |
| 449 logging.debug('root_dir before searching: %s' % root_dir) |
| 443 for i in infiles: | 450 for i in infiles: |
| 444 i = i.replace(os.path.sep, '/') | 451 i = i.replace(os.path.sep, '/') |
| 445 x = isolate_dir.replace(os.path.sep, '/') | 452 x = isolate_dir.replace(os.path.sep, '/') |
| 446 while i.startswith('../'): | 453 while i.startswith('../'): |
| 447 i = i[3:] | 454 i = i[3:] |
| 448 assert not i.startswith('/') | 455 assert not i.startswith('/') |
| 449 x = posixpath.dirname(x) | 456 x = posixpath.dirname(x) |
| 450 if root_dir.startswith(x): | 457 if root_dir.startswith(x): |
| 451 root_dir = x | 458 root_dir = x |
| 452 root_dir = root_dir.replace('/', os.path.sep) | 459 root_dir = root_dir.replace('/', os.path.sep) |
| 460 logging.debug('root_dir after searching: %s' % root_dir) |
| 461 |
| 453 # The relative directory is automatically determined by the relative path | 462 # The relative directory is automatically determined by the relative path |
| 454 # between root_dir and the directory containing the .isolate file. | 463 # between root_dir and the directory containing the .isolate file. |
| 455 relative_dir = os.path.relpath(isolate_dir, root_dir) | 464 relative_dir = os.path.relpath(isolate_dir, root_dir).replace( |
| 465 os.path.sep, '/') |
| 456 logging.debug('relative_dir: %s' % relative_dir) | 466 logging.debug('relative_dir: %s' % relative_dir) |
| 457 | 467 |
| 458 logging.debug( | 468 logging.debug( |
| 459 'variables: %s' % ', '.join( | 469 'variables: %s' % ', '.join( |
| 460 '%s=%s' % (k, v) for k, v in variables.iteritems())) | 470 '%s=%s' % (k, v) for k, v in variables.iteritems())) |
| 461 | 471 |
| 462 data = load_results(resultfile) | 472 data = load_results(resultfile) |
| 463 | 473 |
| 464 command, infiles, read_only = load_isolate( | 474 command, infiles, read_only = load_isolate( |
| 465 open(input_file, 'r').read(), variables, error) | 475 open(input_file, 'r').read(), variables, error) |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 data) | 555 data) |
| 546 except run_test_from_archive.MappingError, e: | 556 except run_test_from_archive.MappingError, e: |
| 547 print >> sys.stderr, str(e) | 557 print >> sys.stderr, str(e) |
| 548 return 1 | 558 return 1 |
| 549 save_results(options.result, data) | 559 save_results(options.result, data) |
| 550 return resultcode | 560 return resultcode |
| 551 | 561 |
| 552 | 562 |
| 553 if __name__ == '__main__': | 563 if __name__ == '__main__': |
| 554 sys.exit(main()) | 564 sys.exit(main()) |
| OLD | NEW |