Mercurial > hg > graal-compiler
changeset 11301:8bcae501c51b
added dialogue for determining JAVA_HOME if it's not set
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 13 Aug 2013 19:07:41 +0200 |
parents | ee5ef0e132ce |
children | fcb4cf14a3c3 28da427847c5 |
files | mxtool/mx.py |
diffstat | 1 files changed, 42 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mxtool/mx.py Tue Aug 13 18:18:17 2013 +0200 +++ b/mxtool/mx.py Tue Aug 13 19:07:41 2013 +0200 @@ -870,6 +870,47 @@ p.all_deps(deps, includeLibs=includeLibs, includeAnnotationProcessors=includeAnnotationProcessors) return deps +def _handle_missing_java_home(): + if not sys.stdout.isatty(): + abort('Could not find bootstrap JDK. Use --java-home option or ensure JAVA_HOME environment variable is set.') + + candidateJdks = [] + if get_os() == 'darwin': + base = '/Library/Java/JavaVirtualMachines' + candidateJdks = [join(base, n, 'Contents/Home') for n in os.listdir(base) if exists(join(base, n, 'Contents/Home'))] + elif get_os() == 'linux': + base = '/usr/lib/jvm' + candidateJdks = [join(base, n) for n in os.listdir(base) if exists(join(base, n, 'jre/lib/rt.jar'))] + elif get_os() == 'solaris': + base = '/usr/jdk/instances' + candidateJdks = [join(base, n) for n in os.listdir(base) if exists(join(base, n, 'jre/lib/rt.jar'))] + elif get_os() == 'windows': + base = r'C:\Program Files\Java' + candidateJdks = [join(base, n) for n in os.listdir(base) if exists(join(base, n, r'jre\lib\rt.jar'))] + + javaHome = None + if len(candidateJdks) != 0: + javaHome = select_items(candidateJdks + ['<other>'], allowMultiple=False) + if javaHome == '<other>': + javaHome = None + + while javaHome is None: + javaHome = raw_input('Enter path of bootstrap JDK: ') + rtJarPath = join(javaHome, 'jre', 'lib', 'rt.jar') + if not exists(rtJarPath): + log('Does not appear to be a valid JDK as ' + rtJarPath + ' does not exist') + javaHome = None + else: + break + + envPath = join(_mainSuite.dir, 'mx', 'env') + answer = raw_input('Persist this setting by adding "JAVA_HOME=' + javaHome + '" to ' + envPath + '? [Yn]: ') + if not answer.lower().startswith('n'): + with open(envPath, 'a') as fp: + print >> fp, 'JAVA_HOME=' + javaHome + + return javaHome + class ArgParser(ArgumentParser): # Override parent to append the list of available commands @@ -917,7 +958,7 @@ opts.java_home = os.environ.get('JAVA_HOME') if opts.java_home is None or opts.java_home == '': - abort('Could not find Java home. Use --java-home option or ensure JAVA_HOME environment variable is set.') + opts.java_home = _handle_missing_java_home() if opts.user_home is None or opts.user_home == '': abort('Could not find user home. Use --user-home option or ensure HOME environment variable is set.')