Java: add spack external find support (#18006)

This commit is contained in:
Adam J. Stewart 2020-08-18 13:17:08 -05:00 committed by GitHub
parent 1ed70d0e2c
commit 00e9e1b3c7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 4 deletions

View file

@ -3,11 +3,11 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.util.prefix import Prefix
from spack import *
import os
import re
import llnl.util.tty as tty
import os
from spack.util.prefix import Prefix
class Jdk(Package):
@ -79,6 +79,19 @@ class Jdk(Package):
# can symlink all *.jar files to `prefix.lib.ext`
extendable = True
executables = ['^java$']
@classmethod
def determine_version(cls, exe):
output = Executable(exe)('-version', output=str, error=str)
# Make sure this is actually Oracle JDK, not OpenJDK
if 'openjdk' in output:
return None
match = re.search(r'\(build (\S+)\)', output)
return match.group(1).replace('+', '_') if match else None
@property
def home(self):
"""Most of the time, ``JAVA_HOME`` is simply ``spec['java'].prefix``.

View file

@ -3,9 +3,9 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
import os
import platform
import re
# If you need to add a new version, please be aware that:
@ -60,6 +60,19 @@ class Openjdk(Package):
# can symlink all *.jar files to `prefix.lib.ext`
extendable = True
executables = ['^java$']
@classmethod
def determine_version(cls, exe):
output = Executable(exe)('-version', output=str, error=str)
# Make sure this is actually OpenJDK, not Oracle JDK
if 'openjdk' not in output:
return None
match = re.search(r'\(build (\S+)\)', output)
return match.group(1).replace('+', '_') if match else None
@property
def home(self):
"""Most of the time, ``JAVA_HOME`` is simply ``spec['java'].prefix``.