| 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 shutil | 11 import shutil |
| 11 import subprocess | 12 import subprocess |
| 12 import sys | 13 import sys |
| 13 import utils | 14 import utils |
| 14 | 15 |
| 15 HOST_OS = utils.GuessOS() | 16 HOST_OS = utils.GuessOS() |
| 16 HOST_CPUS = utils.GuessCpus() | 17 HOST_CPUS = utils.GuessCpus() |
| 17 armcompilerlocation = '/opt/codesourcery/arm-2009q1' | 18 armcompilerlocation = '/opt/codesourcery/arm-2009q1' |
| 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, '..')) |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 term = os.getenv('TERM', 'dumb') | 267 term = os.getenv('TERM', 'dumb') |
| 267 # The capability "clr_eol" means clear the line from cursor to end | 268 # The capability "clr_eol" means clear the line from cursor to end |
| 268 # of line. See man pages for tput and terminfo. | 269 # of line. See man pages for tput and terminfo. |
| 269 try: | 270 try: |
| 270 clr_eol = subprocess.check_output(['tput', '-T' + term, 'el'], | 271 clr_eol = subprocess.check_output(['tput', '-T' + term, 'el'], |
| 271 stderr=subprocess.STDOUT) | 272 stderr=subprocess.STDOUT) |
| 272 if clr_eol: | 273 if clr_eol: |
| 273 is_fancy_tty = True | 274 is_fancy_tty = True |
| 274 except subprocess.CalledProcessError: | 275 except subprocess.CalledProcessError: |
| 275 is_fancy_tty = False | 276 is_fancy_tty = False |
| 277 pattern = re.compile(r'=== BUILD .* TARGET (.*) OF PROJECT (.*) WITH ' + |
| 278 r'CONFIGURATION (.*) ===') |
| 276 has_interesting_info = False | 279 has_interesting_info = False |
| 277 for line in unbuffered(process.stdout.readline): | 280 for line in unbuffered(process.stdout.readline): |
| 278 line = line.rstrip() | 281 line = line.rstrip() |
| 279 if line.startswith('=== BUILD ') or line.startswith('** BUILD '): | 282 if line.startswith('=== BUILD ') or line.startswith('** BUILD '): |
| 280 has_interesting_info = False | 283 has_interesting_info = False |
| 281 section = line | 284 section = line |
| 282 if is_fancy_tty: | 285 if is_fancy_tty: |
| 286 match = re.match(pattern, section) |
| 287 if match: |
| 288 section = '%s/%s/%s' % ( |
| 289 match.group(3), match.group(2), match.group(1)) |
| 290 # Truncate to avoid extending beyond 80 columns. |
| 291 section = section[:80] |
| 283 # If stdout is a terminal, emit "progress" information. The | 292 # If stdout is a terminal, emit "progress" information. The |
| 284 # progress information is the first line of the current chunk. | 293 # progress information is the first line of the current chunk. |
| 285 # After printing the line, move the cursor back to the | 294 # After printing the line, move the cursor back to the |
| 286 # beginning of the line. This has two effects: First, if the | 295 # beginning of the line. This has two effects: First, if the |
| 287 # chunk isn't empty, the first line will be overwritten | 296 # chunk isn't empty, the first line will be overwritten |
| 288 # (avoiding duplication). Second, the next segment line will | 297 # (avoiding duplication). Second, the next segment line will |
| 289 # overwrite it too avoid long scrollback. clr_eol ensures | 298 # overwrite it too avoid long scrollback. clr_eol ensures |
| 290 # that there is no trailing garbage when a shorter line | 299 # that there is no trailing garbage when a shorter line |
| 291 # overwrites a longer line. | 300 # overwrites a longer line. |
| 292 print '%s%s\r' % (clr_eol, section), | 301 print '%s%s\r' % (clr_eol, section), |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 process.wait() | 423 process.wait() |
| 415 if process.returncode != 0: | 424 if process.returncode != 0: |
| 416 print "BUILD FAILED" | 425 print "BUILD FAILED" |
| 417 return 1 | 426 return 1 |
| 418 | 427 |
| 419 return 0 | 428 return 0 |
| 420 | 429 |
| 421 | 430 |
| 422 if __name__ == '__main__': | 431 if __name__ == '__main__': |
| 423 sys.exit(Main()) | 432 sys.exit(Main()) |
| OLD | NEW |