OLD | NEW |
1 # Copyright 2009 Google Inc. All Rights Reserved. | 1 # Copyright 2009 Google Inc. All Rights Reserved. |
2 # | 2 # |
3 # Licensed under the Apache License, Version 2.0 (the "License"); | 3 # Licensed under the Apache License, Version 2.0 (the "License"); |
4 # you may not use this file except in compliance with the License. | 4 # you may not use this file except in compliance with the License. |
5 # You may obtain a copy of the License at | 5 # You may obtain a copy of the License at |
6 # | 6 # |
7 # http://www.apache.org/licenses/LICENSE-2.0 | 7 # http://www.apache.org/licenses/LICENSE-2.0 |
8 # | 8 # |
9 # Unless required by applicable law or agreed to in writing, software | 9 # Unless required by applicable law or agreed to in writing, software |
10 # distributed under the License is distributed on an "AS IS" BASIS, | 10 # distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 logging.debug(u'%s, cwd=%s' % (u' '.join(args), kwargs.get('cwd', ''))) | 66 logging.debug(u'%s, cwd=%s' % (u' '.join(args), kwargs.get('cwd', ''))) |
67 if not 'env' in kwargs: | 67 if not 'env' in kwargs: |
68 # It's easier to parse the stdout if it is always in English. | 68 # It's easier to parse the stdout if it is always in English. |
69 kwargs['env'] = os.environ.copy() | 69 kwargs['env'] = os.environ.copy() |
70 kwargs['env']['LANGUAGE'] = 'en' | 70 kwargs['env']['LANGUAGE'] = 'en' |
71 if not 'shell' in kwargs: | 71 if not 'shell' in kwargs: |
72 # *Sigh*: Windows needs shell=True, or else it won't search %PATH% for the | 72 # *Sigh*: Windows needs shell=True, or else it won't search %PATH% for the |
73 # executable, but shell=True makes subprocess on Linux fail when it's called | 73 # executable, but shell=True makes subprocess on Linux fail when it's called |
74 # with a list because it only tries to execute the first item in the list. | 74 # with a list because it only tries to execute the first item in the list. |
75 kwargs['shell'] = (sys.platform=='win32') | 75 kwargs['shell'] = (sys.platform=='win32') |
76 return subprocess.Popen(args, **kwargs) | 76 try: |
| 77 return subprocess.Popen(args, **kwargs) |
| 78 except OSError, e: |
| 79 if e.errno == errno.EAGAIN and sys.platform == 'cygwin': |
| 80 raise Error( |
| 81 'Visit ' |
| 82 'http://code.google.com/p/chromium/wiki/CygwinDllRemappingFailure to ' |
| 83 'learn how to fix this error; you need to rebase your cygwin dlls') |
| 84 raise |
77 | 85 |
78 | 86 |
79 def CheckCall(command, cwd=None, print_error=True): | 87 def CheckCall(command, cwd=None, print_error=True): |
80 """Similar subprocess.check_call() but redirects stdout and | 88 """Similar subprocess.check_call() but redirects stdout and |
81 returns (stdout, stderr). | 89 returns (stdout, stderr). |
82 | 90 |
83 Works on python 2.4 | 91 Works on python 2.4 |
84 """ | 92 """ |
85 try: | 93 try: |
86 stderr = None | 94 stderr = None |
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 logging.info('Caught exception in thread %s' % self.item.name) | 647 logging.info('Caught exception in thread %s' % self.item.name) |
640 logging.info(str(sys.exc_info())) | 648 logging.info(str(sys.exc_info())) |
641 work_queue.exceptions.put(sys.exc_info()) | 649 work_queue.exceptions.put(sys.exc_info()) |
642 logging.info('Task %s done' % self.item.name) | 650 logging.info('Task %s done' % self.item.name) |
643 | 651 |
644 work_queue.ready_cond.acquire() | 652 work_queue.ready_cond.acquire() |
645 try: | 653 try: |
646 work_queue.ready_cond.notifyAll() | 654 work_queue.ready_cond.notifyAll() |
647 finally: | 655 finally: |
648 work_queue.ready_cond.release() | 656 work_queue.ready_cond.release() |
OLD | NEW |