diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py index a90ddff904919ff77cefb4ec489d7ab841ca96fe..31510d739e7efebafc9d348e7aab0699ec4de5db 100644 --- a/var/spack/repos/builtin/packages/jdk/package.py +++ b/var/spack/repos/builtin/packages/jdk/package.py @@ -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``. diff --git a/var/spack/repos/builtin/packages/openjdk/package.py b/var/spack/repos/builtin/packages/openjdk/package.py index 9b520ded996a8823981bbe4f1c4bf149f85bc763..4c50bdfc2c5004acbc175d6854ee39d3f179ac2d 100644 --- a/var/spack/repos/builtin/packages/openjdk/package.py +++ b/var/spack/repos/builtin/packages/openjdk/package.py @@ -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``.