comparison mxtool/mx.py @ 15892:079229f002a3

Merge with f4510fd9e8b3ad6965b3162b27edb476baa7140d
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Sat, 24 May 2014 10:48:18 -0700
parents 11bf5b8973c9
children a5c5b4aa79ca
comparison
equal deleted inserted replaced
15891:09ac9ac9c4fc 15892:079229f002a3
1512 stream.close() 1512 stream.close()
1513 stdout = out if not callable(out) else subprocess.PIPE 1513 stdout = out if not callable(out) else subprocess.PIPE
1514 stderr = err if not callable(err) else subprocess.PIPE 1514 stderr = err if not callable(err) else subprocess.PIPE
1515 p = subprocess.Popen(args, cwd=cwd, stdout=stdout, stderr=stderr, preexec_fn=preexec_fn, creationflags=creationflags, env=env) 1515 p = subprocess.Popen(args, cwd=cwd, stdout=stdout, stderr=stderr, preexec_fn=preexec_fn, creationflags=creationflags, env=env)
1516 sub = _addSubprocess(p, args) 1516 sub = _addSubprocess(p, args)
1517 joiners = []
1517 if callable(out): 1518 if callable(out):
1518 t = Thread(target=redirect, args=(p.stdout, out)) 1519 t = Thread(target=redirect, args=(p.stdout, out))
1519 # Don't make the reader thread a daemon otherwise output can be droppped 1520 # Don't make the reader thread a daemon otherwise output can be droppped
1520 t.start() 1521 t.start()
1522 joiners.append(t)
1521 if callable(err): 1523 if callable(err):
1522 t = Thread(target=redirect, args=(p.stderr, err)) 1524 t = Thread(target=redirect, args=(p.stderr, err))
1523 # Don't make the reader thread a daemon otherwise output can be droppped 1525 # Don't make the reader thread a daemon otherwise output can be droppped
1524 t.start() 1526 t.start()
1527 joiners.append(t)
1528 for t in joiners:
1529 t.join()
1525 if timeout is None or timeout == 0: 1530 if timeout is None or timeout == 0:
1526 retcode = waitOn(p) 1531 retcode = waitOn(p)
1527 else: 1532 else:
1528 if get_os() == 'windows': 1533 if get_os() == 'windows':
1529 abort('Use of timeout not (yet) supported on Windows') 1534 abort('Use of timeout not (yet) supported on Windows')
1671 self.jar = exe_suffix(join(self.jdk, 'bin', 'jar')) 1676 self.jar = exe_suffix(join(self.jdk, 'bin', 'jar'))
1672 self.java = exe_suffix(join(self.jdk, 'bin', 'java')) 1677 self.java = exe_suffix(join(self.jdk, 'bin', 'java'))
1673 self.javac = exe_suffix(join(self.jdk, 'bin', 'javac')) 1678 self.javac = exe_suffix(join(self.jdk, 'bin', 'javac'))
1674 self.javap = exe_suffix(join(self.jdk, 'bin', 'javap')) 1679 self.javap = exe_suffix(join(self.jdk, 'bin', 'javap'))
1675 self.javadoc = exe_suffix(join(self.jdk, 'bin', 'javadoc')) 1680 self.javadoc = exe_suffix(join(self.jdk, 'bin', 'javadoc'))
1681 self.pack200 = exe_suffix(join(self.jdk, 'bin', 'pack200'))
1676 self.toolsjar = join(self.jdk, 'lib', 'tools.jar') 1682 self.toolsjar = join(self.jdk, 'lib', 'tools.jar')
1677 self._bootclasspath = None 1683 self._bootclasspath = None
1678 self._extdirs = None 1684 self._extdirs = None
1679 self._endorseddirs = None 1685 self._endorseddirs = None
1680 1686
1845 if _opts.killwithsigquit: 1851 if _opts.killwithsigquit:
1846 _send_sigquit() 1852 _send_sigquit()
1847 1853
1848 def is_alive(p): 1854 def is_alive(p):
1849 if isinstance(p, subprocess.Popen): 1855 if isinstance(p, subprocess.Popen):
1850 return p.poll() is not None 1856 return p.poll() is None
1851 assert isinstance(p, multiprocessing.Process), p 1857 assert isinstance(p, multiprocessing.Process), p
1852 return p.is_alive() 1858 return p.is_alive()
1853 1859
1854 for p, args in _currentSubprocesses: 1860 for p, args in _currentSubprocesses:
1855 if is_alive(p): 1861 if is_alive(p):
3396 out.open('factorypath') 3402 out.open('factorypath')
3397 out.element('factorypathentry', {'kind' : 'PLUGIN', 'id' : 'org.eclipse.jst.ws.annotations.core', 'enabled' : 'true', 'runInBatchMode' : 'false'}) 3403 out.element('factorypathentry', {'kind' : 'PLUGIN', 'id' : 'org.eclipse.jst.ws.annotations.core', 'enabled' : 'true', 'runInBatchMode' : 'false'})
3398 for ap in p.annotation_processors(): 3404 for ap in p.annotation_processors():
3399 for dep in dependency(ap).all_deps([], True): 3405 for dep in dependency(ap).all_deps([], True):
3400 if dep.isLibrary(): 3406 if dep.isLibrary():
3401 if not hasattr(dep, 'eclipse.container') and not hasattr(dep, 'eclipse.project'): 3407 # Relative paths for "lib" class path entries have various semantics depending on the Eclipse
3402 # Relative paths for "lib" class path entries have various semantics depending on the Eclipse 3408 # version being used (e.g. see https://bugs.eclipse.org/bugs/show_bug.cgi?id=274737) so it's
3403 # version being used (e.g. see https://bugs.eclipse.org/bugs/show_bug.cgi?id=274737) so it's 3409 # safest to simply use absolute paths.
3404 # safest to simply use absolute paths. 3410 path = _make_absolute(dep.get_path(resolve=True), p.suite.dir)
3405 path = _make_absolute(dep.get_path(resolve=True), p.suite.dir) 3411 out.element('factorypathentry', {'kind' : 'EXTJAR', 'id' : path, 'enabled' : 'true', 'runInBatchMode' : 'false'})
3406 out.element('factorypathentry', {'kind' : 'EXTJAR', 'id' : path, 'enabled' : 'true', 'runInBatchMode' : 'false'}) 3412 files.append(path)
3407 files.append(path)
3408 elif dep.isProject(): 3413 elif dep.isProject():
3409 out.element('factorypathentry', {'kind' : 'WKSPJAR', 'id' : '/' + dep.name + '/' + dep.name + '.jar', 'enabled' : 'true', 'runInBatchMode' : 'false'}) 3414 out.element('factorypathentry', {'kind' : 'WKSPJAR', 'id' : '/' + dep.name + '/' + dep.name + '.jar', 'enabled' : 'true', 'runInBatchMode' : 'false'})
3410 out.close('factorypath') 3415 out.close('factorypath')
3411 update_file(join(p.dir, '.factorypath'), out.xml(indent='\t', newl='\n')) 3416 update_file(join(p.dir, '.factorypath'), out.xml(indent='\t', newl='\n'))
3412 files.append(join(p.dir, '.factorypath')) 3417 files.append(join(p.dir, '.factorypath'))