language/java: add support for OpenJDK formula
This commit is contained in:
parent
67c843b91e
commit
cd93d4e38a
@ -4,17 +4,25 @@ module Language
|
|||||||
module Java
|
module Java
|
||||||
def self.system_java_home_cmd(version = nil)
|
def self.system_java_home_cmd(version = nil)
|
||||||
version_flag = " --version #{version}" if version
|
version_flag = " --version #{version}" if version
|
||||||
"/usr/libexec/java_home#{version_flag}"
|
"/usr/libexec/java_home#{version_flag} --failfast 2>/dev/null"
|
||||||
end
|
end
|
||||||
private_class_method :system_java_home_cmd
|
private_class_method :system_java_home_cmd
|
||||||
|
|
||||||
def self.java_home(version = nil)
|
def self.java_home(version = nil)
|
||||||
|
f = find_openjdk_formula(version)
|
||||||
|
return f.opt_libexec/"openjdk.jdk/Contents/Home" if f
|
||||||
|
|
||||||
cmd = system_java_home_cmd(version)
|
cmd = system_java_home_cmd(version)
|
||||||
Pathname.new Utils.popen_read(cmd).chomp
|
path = Utils.popen_read(cmd).chomp
|
||||||
|
|
||||||
|
Pathname.new path if path.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
# @private
|
# @private
|
||||||
def self.java_home_shell(version = nil)
|
def self.java_home_shell(version = nil)
|
||||||
|
f = find_openjdk_formula(version)
|
||||||
|
return (f.opt_libexec/"openjdk.jdk/Contents/Home").to_s if f
|
||||||
|
|
||||||
"$(#{system_java_home_cmd(version)})"
|
"$(#{system_java_home_cmd(version)})"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -2,7 +2,31 @@
|
|||||||
|
|
||||||
module Language
|
module Language
|
||||||
module Java
|
module Java
|
||||||
|
def self.find_openjdk_formula(version = nil)
|
||||||
|
can_be_newer = version&.end_with?("+")
|
||||||
|
version = version.to_i
|
||||||
|
|
||||||
|
openjdk = Formula["openjdk"]
|
||||||
|
[openjdk, *openjdk.versioned_formulae].find do |f|
|
||||||
|
next false unless f.any_version_installed?
|
||||||
|
|
||||||
|
unless version.zero?
|
||||||
|
major = f.version.to_s[/\d+/].to_i
|
||||||
|
next false if major < version
|
||||||
|
next false if major > version && !can_be_newer
|
||||||
|
end
|
||||||
|
|
||||||
|
true
|
||||||
|
end
|
||||||
|
rescue FormulaUnavailableError
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
private_class_method :find_openjdk_formula
|
||||||
|
|
||||||
def self.java_home(version = nil)
|
def self.java_home(version = nil)
|
||||||
|
f = find_openjdk_formula(version)
|
||||||
|
return f.opt_libexec if f
|
||||||
|
|
||||||
req = JavaRequirement.new [*version]
|
req = JavaRequirement.new [*version]
|
||||||
raise UnsatisfiedRequirements, req.message unless req.satisfied?
|
raise UnsatisfiedRequirements, req.message unless req.satisfied?
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user