comparison mxtool/mx.py @ 18868:c3bb622095f1

Prompt to fill EXTRA_JAVA_HOMES like JAVA_HOME
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Wed, 14 Jan 2015 09:52:41 -0800
parents 869ee319c377
children c446d00f2cdf
comparison
equal deleted inserted replaced
18867:7f4cb7587f4c 18868:c3bb622095f1
1591 deps = [] 1591 deps = []
1592 for p in projects: 1592 for p in projects:
1593 p.all_deps(deps, includeLibs=includeLibs, includeJreLibs=includeJreLibs, includeAnnotationProcessors=includeAnnotationProcessors) 1593 p.all_deps(deps, includeLibs=includeLibs, includeJreLibs=includeJreLibs, includeAnnotationProcessors=includeAnnotationProcessors)
1594 return deps 1594 return deps
1595 1595
1596 def _handle_missing_java_home(): 1596 def _handle_lookup_java_home(jdk):
1597 return _handle_lookup_jdk(jdk, 'JAVA_HOME', '--java-home', False)
1598
1599 def _handle_lookup_extra_java_homes(jdk):
1600 return _handle_lookup_jdk(jdk, 'EXTRA_JAVA_HOMES', '--extra-java-homes', True)
1601
1602 def _handle_lookup_jdk(jdk, varName, flagName, allowMultiple):
1603 if jdk != None and jdk != '':
1604 return jdk
1605 jdk = os.environ.get(varName)
1606 if jdk != None and jdk != '':
1607 return jdk
1608
1597 if not sys.stdout.isatty(): 1609 if not sys.stdout.isatty():
1598 abort('Could not find bootstrap JDK. Use --java-home option or ensure JAVA_HOME environment variable is set.') 1610 abort('Could not find bootstrap {0}. Use {1} option or ensure {2} environment variable is set.'.format(varName, flagName, varName))
1599 1611
1600 candidateJdks = [] 1612 candidateJdks = []
1601 if get_os() == 'darwin': 1613 if get_os() == 'darwin':
1602 base = '/Library/Java/JavaVirtualMachines' 1614 base = '/Library/Java/JavaVirtualMachines'
1603 candidateJdks = [join(base, n, 'Contents/Home') for n in os.listdir(base) if exists(join(base, n, 'Contents/Home'))] 1615 candidateJdks = [join(base, n, 'Contents/Home') for n in os.listdir(base) if exists(join(base, n, 'Contents/Home'))]
1611 base = r'C:\Program Files\Java' 1623 base = r'C:\Program Files\Java'
1612 candidateJdks = [join(base, n) for n in os.listdir(base) if exists(join(base, n, r'jre\lib\rt.jar'))] 1624 candidateJdks = [join(base, n) for n in os.listdir(base) if exists(join(base, n, r'jre\lib\rt.jar'))]
1613 1625
1614 javaHome = None 1626 javaHome = None
1615 if len(candidateJdks) != 0: 1627 if len(candidateJdks) != 0:
1616 javaHome = select_items(candidateJdks + ['<other>'], allowMultiple=False) 1628 log('Missing value for {0}.'.format(varName))
1629 javaHome = select_items(candidateJdks + ['<other>'], allowMultiple=allowMultiple)
1617 if javaHome == '<other>': 1630 if javaHome == '<other>':
1618 javaHome = None 1631 javaHome = None
1632 if javaHome != None and allowMultiple:
1633 javaHome = os.pathsep.join(javaHome)
1619 1634
1620 while javaHome is None: 1635 while javaHome is None:
1621 javaHome = raw_input('Enter path of bootstrap JDK: ') 1636 javaHome = raw_input('Enter path of JDK for {0}: '.format(varName))
1622 rtJarPath = join(javaHome, 'jre', 'lib', 'rt.jar') 1637 rtJarPath = join(javaHome, 'jre', 'lib', 'rt.jar')
1623 if not exists(rtJarPath): 1638 if not exists(rtJarPath):
1624 log('Does not appear to be a valid JDK as ' + rtJarPath + ' does not exist') 1639 log('Does not appear to be a valid JDK as ' + rtJarPath + ' does not exist')
1625 javaHome = None 1640 javaHome = None
1626 else: 1641 else:
1627 break 1642 break
1628 1643
1629 envPath = join(_primary_suite.mxDir, 'env') 1644 envPath = join(_primary_suite.mxDir, 'env')
1630 if ask_yes_no('Persist this setting by adding "JAVA_HOME=' + javaHome + '" to ' + envPath, 'y'): 1645 if ask_yes_no('Persist this setting by adding "{0}={1}" to {2}'.format(varName, javaHome, envPath), 'y'):
1631 with open(envPath, 'a') as fp: 1646 with open(envPath, 'a') as fp:
1632 print >> fp, 'JAVA_HOME=' + javaHome 1647 print >> fp, varName + '=' + javaHome
1633 1648
1634 return javaHome 1649 return javaHome
1635 1650
1636 class ArgParser(ArgumentParser): 1651 class ArgParser(ArgumentParser):
1637 # Override parent to append the list of available commands 1652 # Override parent to append the list of available commands
1681 opts.__dict__.setdefault('ptimeout', 0) 1696 opts.__dict__.setdefault('ptimeout', 0)
1682 1697
1683 if opts.very_verbose: 1698 if opts.very_verbose:
1684 opts.verbose = True 1699 opts.verbose = True
1685 1700
1686 if opts.java_home is None: 1701 opts.java_home = _handle_lookup_java_home(opts.java_home)
1687 opts.java_home = os.environ.get('JAVA_HOME') 1702 opts.extra_java_homes = _handle_lookup_extra_java_homes(opts.extra_java_homes)
1688 if opts.extra_java_homes is None:
1689 opts.extra_java_homes = os.environ.get('EXTRA_JAVA_HOMES')
1690
1691 if opts.java_home is None or opts.java_home == '':
1692 opts.java_home = _handle_missing_java_home()
1693 1703
1694 if opts.user_home is None or opts.user_home == '': 1704 if opts.user_home is None or opts.user_home == '':
1695 abort('Could not find user home. Use --user-home option or ensure HOME environment variable is set.') 1705 abort('Could not find user home. Use --user-home option or ensure HOME environment variable is set.')
1696 1706
1697 os.environ['JAVA_HOME'] = opts.java_home 1707 os.environ['JAVA_HOME'] = opts.java_home