| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # | 2 # |
| 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 4 # for details. All rights reserved. Use of this source code is governed by a | 4 # for details. All rights reserved. Use of this source code is governed by a |
| 5 # BSD-style license that can be found in the LICENSE file. | 5 # BSD-style license that can be found in the LICENSE file. |
| 6 # | 6 # |
| 7 | 7 |
| 8 import optparse | 8 import optparse |
| 9 import os | 9 import os |
| 10 import re | 10 import re |
| 11 import shutil | 11 import shutil |
| 12 import subprocess | 12 import subprocess |
| 13 import sys | 13 import sys |
| 14 import time |
| 14 import utils | 15 import utils |
| 15 | 16 |
| 16 HOST_OS = utils.GuessOS() | 17 HOST_OS = utils.GuessOS() |
| 17 HOST_CPUS = utils.GuessCpus() | 18 HOST_CPUS = utils.GuessCpus() |
| 18 SCRIPT_DIR = os.path.dirname(sys.argv[0]) | 19 SCRIPT_DIR = os.path.dirname(sys.argv[0]) |
| 19 DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..')) | 20 DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..')) |
| 20 THIRD_PARTY_ROOT = os.path.join(DART_ROOT, 'third_party') | 21 THIRD_PARTY_ROOT = os.path.join(DART_ROOT, 'third_party') |
| 21 | 22 |
| 22 arm_cc_error = """ | 23 arm_cc_error = """ |
| 23 Couldn't find the arm cross compiler. | 24 Couldn't find the arm cross compiler. |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 has_interesting_info = True | 296 has_interesting_info = True |
| 296 if has_interesting_info: | 297 if has_interesting_info: |
| 297 print '\n'.join(chunk) | 298 print '\n'.join(chunk) |
| 298 chunk = [] | 299 chunk = [] |
| 299 else: | 300 else: |
| 300 chunk.append(line) | 301 chunk.append(line) |
| 301 if not is_empty_chunk(chunk): | 302 if not is_empty_chunk(chunk): |
| 302 print '\n'.join(chunk) | 303 print '\n'.join(chunk) |
| 303 | 304 |
| 304 | 305 |
| 305 def NotifyBuildDone(build_config, success): | 306 def NotifyBuildDone(build_config, success, start): |
| 306 if not success: | 307 if not success: |
| 307 print "BUILD FAILED" | 308 print "BUILD FAILED" |
| 308 | 309 |
| 309 sys.stdout.flush() | 310 sys.stdout.flush() |
| 310 | 311 |
| 312 # Display a notification if build time exceeded DART_BUILD_NOTIFICATION_DELAY. |
| 313 notification_delay = float( |
| 314 os.getenv('DART_BUILD_NOTIFICATION_DELAY', default=sys.float_info.max)) |
| 315 if (time.time() - start) < notification_delay: |
| 316 return |
| 317 |
| 311 if success: | 318 if success: |
| 312 message = 'Build succeeded.' | 319 message = 'Build succeeded.' |
| 313 else: | 320 else: |
| 314 message = 'Build failed.' | 321 message = 'Build failed.' |
| 315 title = build_config | 322 title = build_config |
| 316 | 323 |
| 317 command = None | 324 command = None |
| 318 if HOST_OS == 'macos': | 325 if HOST_OS == 'macos': |
| 319 # Use AppleScript to display a UI non-modal notification. | 326 # Use AppleScript to display a UI non-modal notification. |
| 320 script = 'display notification "%s" with title "%s" sound name "Glass"' % ( | 327 script = 'display notification "%s" with title "%s" sound name "Glass"' % ( |
| (...skipping 27 matching lines...) Expand all Loading... |
| 348 targets = ['all'] | 355 targets = ['all'] |
| 349 else: | 356 else: |
| 350 targets = args | 357 targets = args |
| 351 | 358 |
| 352 filter_xcodebuild_output = False | 359 filter_xcodebuild_output = False |
| 353 # Build all targets for each requested configuration. | 360 # Build all targets for each requested configuration. |
| 354 for target in targets: | 361 for target in targets: |
| 355 for target_os in options.os: | 362 for target_os in options.os: |
| 356 for mode in options.mode: | 363 for mode in options.mode: |
| 357 for arch in options.arch: | 364 for arch in options.arch: |
| 365 start_time = time.time() |
| 358 os.environ['DART_BUILD_MODE'] = mode | 366 os.environ['DART_BUILD_MODE'] = mode |
| 359 build_config = utils.GetBuildConf(mode, arch, target_os) | 367 build_config = utils.GetBuildConf(mode, arch, target_os) |
| 360 if HOST_OS == 'macos': | 368 if HOST_OS == 'macos': |
| 361 filter_xcodebuild_output = True | 369 filter_xcodebuild_output = True |
| 362 project_file = 'dart.xcodeproj' | 370 project_file = 'dart.xcodeproj' |
| 363 if os.path.exists('dart-%s.gyp' % CurrentDirectoryBaseName()): | 371 if os.path.exists('dart-%s.gyp' % CurrentDirectoryBaseName()): |
| 364 project_file = 'dart-%s.xcodeproj' % CurrentDirectoryBaseName() | 372 project_file = 'dart-%s.xcodeproj' % CurrentDirectoryBaseName() |
| 365 args = ['xcodebuild', | 373 args = ['xcodebuild', |
| 366 '-project', | 374 '-project', |
| 367 project_file, | 375 project_file, |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 process = subprocess.Popen(args, | 436 process = subprocess.Popen(args, |
| 429 stdin=None, | 437 stdin=None, |
| 430 bufsize=1, # Line buffered. | 438 bufsize=1, # Line buffered. |
| 431 stdout=subprocess.PIPE, | 439 stdout=subprocess.PIPE, |
| 432 stderr=subprocess.STDOUT) | 440 stderr=subprocess.STDOUT) |
| 433 FilterEmptyXcodebuildSections(process) | 441 FilterEmptyXcodebuildSections(process) |
| 434 else: | 442 else: |
| 435 process = subprocess.Popen(args, stdin=None) | 443 process = subprocess.Popen(args, stdin=None) |
| 436 process.wait() | 444 process.wait() |
| 437 if process.returncode != 0: | 445 if process.returncode != 0: |
| 438 NotifyBuildDone(build_config, success=False) | 446 NotifyBuildDone(build_config, success=False, start=start_time) |
| 439 return 1 | 447 return 1 |
| 440 else: | 448 else: |
| 441 NotifyBuildDone(build_config, success=True) | 449 NotifyBuildDone(build_config, success=True, start=start_time) |
| 442 | 450 |
| 443 return 0 | 451 return 0 |
| 444 | 452 |
| 445 | 453 |
| 446 if __name__ == '__main__': | 454 if __name__ == '__main__': |
| 447 sys.exit(Main()) | 455 sys.exit(Main()) |
| OLD | NEW |