mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-05 18:50:09 +02:00
choose the most recent available version of Java
This came about testing on OSX, where there are often multiple versions of the JDK installed. This was choosing the oldest version. It should choose the most recent version.
This commit is contained in:
parent
43b990505d
commit
e0df6d2479
@ -75,6 +75,8 @@ install:
|
|||||||
sudo pip3 install --quiet --editable . ;
|
sudo pip3 install --quiet --editable . ;
|
||||||
sudo rm -rf fdroidserver.egg-info;
|
sudo rm -rf fdroidserver.egg-info;
|
||||||
|
|
||||||
|
ls -l /System/Library/Java/JavaVirtualMachines || true;
|
||||||
|
ls -l /Library/Java/JavaVirtualMachines || true;
|
||||||
echo $PATH;
|
echo $PATH;
|
||||||
echo $JAVA_HOME;
|
echo $JAVA_HOME;
|
||||||
jenv versions;
|
jenv versions;
|
||||||
|
@ -132,6 +132,41 @@ def setup_global_opts(parser):
|
|||||||
help=_("Restrict output to warnings and errors"))
|
help=_("Restrict output to warnings and errors"))
|
||||||
|
|
||||||
|
|
||||||
|
def _add_java_paths_to_config(pathlist, thisconfig):
|
||||||
|
def path_version_key(s):
|
||||||
|
versionlist = []
|
||||||
|
for u in re.split('[^0-9]+', s):
|
||||||
|
try:
|
||||||
|
versionlist.append(int(u))
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
return versionlist
|
||||||
|
|
||||||
|
for d in sorted(pathlist, key=path_version_key):
|
||||||
|
if os.path.islink(d):
|
||||||
|
continue
|
||||||
|
j = os.path.basename(d)
|
||||||
|
# the last one found will be the canonical one, so order appropriately
|
||||||
|
for regex in [
|
||||||
|
r'^1\.([6-9])\.0\.jdk$', # OSX
|
||||||
|
r'^jdk1\.([6-9])\.0_[0-9]+.jdk$', # OSX and Oracle tarball
|
||||||
|
r'^jdk1\.([6-9])\.0_[0-9]+$', # Oracle Windows
|
||||||
|
r'^jdk([6-9])-openjdk$', # Arch
|
||||||
|
r'^java-([6-9])-openjdk$', # Arch
|
||||||
|
r'^java-([6-9])-jdk$', # Arch (oracle)
|
||||||
|
r'^java-1\.([6-9])\.0-.*$', # RedHat
|
||||||
|
r'^java-([6-9])-oracle$', # Debian WebUpd8
|
||||||
|
r'^jdk-([6-9])-oracle-.*$', # Debian make-jpkg
|
||||||
|
r'^java-([6-9])-openjdk-[^c][^o][^m].*$', # Debian
|
||||||
|
]:
|
||||||
|
m = re.match(regex, j)
|
||||||
|
if not m:
|
||||||
|
continue
|
||||||
|
for p in [d, os.path.join(d, 'Contents', 'Home')]:
|
||||||
|
if os.path.exists(os.path.join(p, 'bin', 'javac')):
|
||||||
|
thisconfig['java_paths'][m.group(1)] = p
|
||||||
|
|
||||||
|
|
||||||
def fill_config_defaults(thisconfig):
|
def fill_config_defaults(thisconfig):
|
||||||
for k, v in default_config.items():
|
for k, v in default_config.items():
|
||||||
if k not in thisconfig:
|
if k not in thisconfig:
|
||||||
@ -167,29 +202,7 @@ def fill_config_defaults(thisconfig):
|
|||||||
pathlist.append(os.getenv('JAVA_HOME'))
|
pathlist.append(os.getenv('JAVA_HOME'))
|
||||||
if os.getenv('PROGRAMFILES') is not None:
|
if os.getenv('PROGRAMFILES') is not None:
|
||||||
pathlist += glob.glob(os.path.join(os.getenv('PROGRAMFILES'), 'Java', 'jdk1.[6-9].*'))
|
pathlist += glob.glob(os.path.join(os.getenv('PROGRAMFILES'), 'Java', 'jdk1.[6-9].*'))
|
||||||
for d in sorted(pathlist):
|
_add_java_paths_to_config(pathlist, thisconfig)
|
||||||
if os.path.islink(d):
|
|
||||||
continue
|
|
||||||
j = os.path.basename(d)
|
|
||||||
# the last one found will be the canonical one, so order appropriately
|
|
||||||
for regex in [
|
|
||||||
r'^1\.([6-9])\.0\.jdk$', # OSX
|
|
||||||
r'^jdk1\.([6-9])\.0_[0-9]+.jdk$', # OSX and Oracle tarball
|
|
||||||
r'^jdk1\.([6-9])\.0_[0-9]+$', # Oracle Windows
|
|
||||||
r'^jdk([6-9])-openjdk$', # Arch
|
|
||||||
r'^java-([6-9])-openjdk$', # Arch
|
|
||||||
r'^java-([6-9])-jdk$', # Arch (oracle)
|
|
||||||
r'^java-1\.([6-9])\.0-.*$', # RedHat
|
|
||||||
r'^java-([6-9])-oracle$', # Debian WebUpd8
|
|
||||||
r'^jdk-([6-9])-oracle-.*$', # Debian make-jpkg
|
|
||||||
r'^java-([6-9])-openjdk-[^c][^o][^m].*$', # Debian
|
|
||||||
]:
|
|
||||||
m = re.match(regex, j)
|
|
||||||
if not m:
|
|
||||||
continue
|
|
||||||
for p in [d, os.path.join(d, 'Contents', 'Home')]:
|
|
||||||
if os.path.exists(os.path.join(p, 'bin', 'javac')):
|
|
||||||
thisconfig['java_paths'][m.group(1)] = p
|
|
||||||
|
|
||||||
for java_version in ('7', '8', '9'):
|
for java_version in ('7', '8', '9'):
|
||||||
if java_version not in thisconfig['java_paths']:
|
if java_version not in thisconfig['java_paths']:
|
||||||
|
@ -92,6 +92,41 @@ class CommonTest(unittest.TestCase):
|
|||||||
else:
|
else:
|
||||||
print('no build-tools found: ' + build_tools)
|
print('no build-tools found: ' + build_tools)
|
||||||
|
|
||||||
|
def test_find_java_root_path(self):
|
||||||
|
tmptestsdir = tempfile.mkdtemp(prefix='test_find_java_root_path', dir=self.tmpdir)
|
||||||
|
os.chdir(tmptestsdir)
|
||||||
|
|
||||||
|
all_pathlists = [
|
||||||
|
([ # Debian
|
||||||
|
'/usr/lib/jvm/java-1.5.0-gcj-5-amd64',
|
||||||
|
'/usr/lib/jvm/java-8-openjdk-amd64',
|
||||||
|
'/usr/lib/jvm/java-1.8.0-openjdk-amd64',
|
||||||
|
], '/usr/lib/jvm/java-8-openjdk-amd64'),
|
||||||
|
([ # OSX
|
||||||
|
'/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk',
|
||||||
|
'/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk',
|
||||||
|
'/System/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk',
|
||||||
|
], '/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk'),
|
||||||
|
]
|
||||||
|
|
||||||
|
for pathlist, choice in all_pathlists:
|
||||||
|
# strip leading / to make relative paths to test without root
|
||||||
|
pathlist = [p[1:] for p in pathlist]
|
||||||
|
|
||||||
|
# create test file used in common._add_java_paths_to_config()
|
||||||
|
for p in pathlist:
|
||||||
|
if p.startswith('/System') or p.startswith('/Library'):
|
||||||
|
basedir = os.path.join(p, 'Contents', 'Home', 'bin')
|
||||||
|
else:
|
||||||
|
basedir = os.path.join(p, 'bin')
|
||||||
|
os.makedirs(basedir)
|
||||||
|
open(os.path.join(basedir, 'javac'), 'w').close()
|
||||||
|
|
||||||
|
config = dict()
|
||||||
|
config['java_paths'] = dict()
|
||||||
|
fdroidserver.common._add_java_paths_to_config(pathlist, config)
|
||||||
|
self.assertEqual(config['java_paths']['8'], choice[1:])
|
||||||
|
|
||||||
def testIsApkDebuggable(self):
|
def testIsApkDebuggable(self):
|
||||||
config = dict()
|
config = dict()
|
||||||
fdroidserver.common.fill_config_defaults(config)
|
fdroidserver.common.fill_config_defaults(config)
|
||||||
@ -177,7 +212,7 @@ class CommonTest(unittest.TestCase):
|
|||||||
|
|
||||||
def test_prepare_sources_refresh(self):
|
def test_prepare_sources_refresh(self):
|
||||||
packageName = 'org.fdroid.ci.test.app'
|
packageName = 'org.fdroid.ci.test.app'
|
||||||
testdir = tempfile.mkdtemp(prefix='test_verify_apks', dir=self.tmpdir)
|
testdir = tempfile.mkdtemp(prefix='test_prepare_sources_refresh', dir=self.tmpdir)
|
||||||
print('testdir', testdir)
|
print('testdir', testdir)
|
||||||
os.chdir(testdir)
|
os.chdir(testdir)
|
||||||
os.mkdir('build')
|
os.mkdir('build')
|
||||||
@ -462,4 +497,4 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
newSuite = unittest.TestSuite()
|
newSuite = unittest.TestSuite()
|
||||||
newSuite.addTest(unittest.makeSuite(CommonTest))
|
newSuite.addTest(unittest.makeSuite(CommonTest))
|
||||||
unittest.main()
|
unittest.main(failfast=False)
|
||||||
|
Loading…
Reference in New Issue
Block a user