| 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 |