(MODULES-2637) Checks java actually installed
The other method for running which java doesn't work on OSX, as java is installed as an empty shim when not installed in the base OSX image: ``` vagrant:~ vagrant$ java No Java runtime present, requesting install. vagrant:~ vagrant$ /usr/libexec/java_home --failfast Unable to find any JVMs matching version "(null)". vagrant:~ vagrant$ ``` We can use the `/usr/libexec/java_home --failfast` command to check if java is actually present first. Originally-by: Peter Souter <peter.souter@puppetlabs.com>
This commit is contained in:
@@ -12,12 +12,23 @@
|
||||
# Notes:
|
||||
# None
|
||||
Facter.add(:java_version) do
|
||||
# the OS-specific overrides need to be able to return nil,
|
||||
# to indicate "no java available". Usually returning nil
|
||||
# would mean that facter falls back to a lower priority
|
||||
# resolution, which would then trigger MODULES-2637. To
|
||||
# avoid that, we confine the "default" here to not run
|
||||
# on those OS.
|
||||
# Additionally, facter versions prior to 2.0.1 only support
|
||||
# positive matches, so this needs to be done manually in setcode.
|
||||
setcode do
|
||||
if Facter::Util::Resolution.which('java')
|
||||
Facter::Util::Resolution.exec('java -Xmx8m -version 2>&1').lines.first.split(/"/)[1].strip
|
||||
unless [ 'openbsd', 'darwin' ].include? Facter.value(:operatingsystem).downcase
|
||||
if Facter::Util::Resolution.which('java')
|
||||
Facter::Util::Resolution.exec('java -Xmx8m -version 2>&1').lines.first.split(/"/)[1].strip
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Facter.add(:java_version) do
|
||||
confine :operatingsystem => 'OpenBSD'
|
||||
has_weight 100
|
||||
@@ -29,3 +40,13 @@ Facter.add(:java_version) do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Facter.add(:java_version) do
|
||||
confine :operatingsystem => 'Darwin'
|
||||
has_weight 100
|
||||
setcode do
|
||||
unless /Unable to find any JVMs matching version/ =~ Facter::Util::Resolution.exec('/usr/libexec/java_home --failfast 2>&1')
|
||||
Facter::Util::Resolution.exec('java -Xmx8m -version 2>&1').lines.first.split(/"/)[1].strip
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user