Merge pull request #12334 from carlocab/java-relocation

keg_relocate: handle `JAVA_HOME`
This commit is contained in:
Carlo Cabrera 2021-10-28 17:02:26 +08:00 committed by GitHub
commit d810f4aa72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 0 deletions

View File

@ -172,6 +172,11 @@ class Keg
end end
relocation.add_replacement_pair(:perl, PERL_PLACEHOLDER, perl_path) relocation.add_replacement_pair(:perl, PERL_PLACEHOLDER, perl_path)
if (openjdk = openjdk_dep_name_if_applicable)
openjdk_path = HOMEBREW_PREFIX/"opt"/openjdk/"libexec/openjdk.jdk/Contents/Home"
relocation.add_replacement_pair(:java, JAVA_PLACEHOLDER, openjdk_path.to_s)
end
relocation relocation
end end

View File

@ -7,6 +7,7 @@ class Keg
REPOSITORY_PLACEHOLDER = "@@HOMEBREW_REPOSITORY@@" REPOSITORY_PLACEHOLDER = "@@HOMEBREW_REPOSITORY@@"
LIBRARY_PLACEHOLDER = "@@HOMEBREW_LIBRARY@@" LIBRARY_PLACEHOLDER = "@@HOMEBREW_LIBRARY@@"
PERL_PLACEHOLDER = "@@HOMEBREW_PERL@@" PERL_PLACEHOLDER = "@@HOMEBREW_PERL@@"
JAVA_PLACEHOLDER = "@@HOMEBREW_JAVA@@"
class Relocation class Relocation
extend T::Sig extend T::Sig
@ -82,6 +83,8 @@ class Keg
[] []
end end
JAVA_REGEX = %r{#{HOMEBREW_PREFIX}/opt/openjdk(@\d+(\.\d+)*)?/libexec(/openjdk\.jdk/Contents/Home)?}.freeze
def prepare_relocation_to_placeholders def prepare_relocation_to_placeholders
relocation = Relocation.new relocation = Relocation.new
relocation.add_replacement_pair(:prefix, HOMEBREW_PREFIX.to_s, PREFIX_PLACEHOLDER, path: true) relocation.add_replacement_pair(:prefix, HOMEBREW_PREFIX.to_s, PREFIX_PLACEHOLDER, path: true)
@ -95,6 +98,8 @@ class Keg
relocation.add_replacement_pair(:perl, relocation.add_replacement_pair(:perl,
%r{\A#!(?:/usr/bin/perl\d\.\d+|#{HOMEBREW_PREFIX}/opt/perl/bin/perl)( |$)}o, %r{\A#!(?:/usr/bin/perl\d\.\d+|#{HOMEBREW_PREFIX}/opt/perl/bin/perl)( |$)}o,
"#!#{PERL_PLACEHOLDER}\\1") "#!#{PERL_PLACEHOLDER}\\1")
# TODO: Enable relocation upon bottling when relocation upon pouring is in a brew release tag.
# relocation.add_replacement_pair(:java, JAVA_REGEX, JAVA_PLACEHOLDER)
relocation relocation
end end
alias generic_prepare_relocation_to_placeholders prepare_relocation_to_placeholders alias generic_prepare_relocation_to_placeholders prepare_relocation_to_placeholders
@ -112,6 +117,10 @@ class Keg
relocation.add_replacement_pair(:repository, REPOSITORY_PLACEHOLDER, HOMEBREW_REPOSITORY.to_s) relocation.add_replacement_pair(:repository, REPOSITORY_PLACEHOLDER, HOMEBREW_REPOSITORY.to_s)
relocation.add_replacement_pair(:library, LIBRARY_PLACEHOLDER, HOMEBREW_LIBRARY.to_s) relocation.add_replacement_pair(:library, LIBRARY_PLACEHOLDER, HOMEBREW_LIBRARY.to_s)
relocation.add_replacement_pair(:perl, PERL_PLACEHOLDER, "#{HOMEBREW_PREFIX}/opt/perl/bin/perl") relocation.add_replacement_pair(:perl, PERL_PLACEHOLDER, "#{HOMEBREW_PREFIX}/opt/perl/bin/perl")
if (openjdk = openjdk_dep_name_if_applicable)
relocation.add_replacement_pair(:java, JAVA_PLACEHOLDER, "#{HOMEBREW_PREFIX}/opt/#{openjdk}/libexec")
end
relocation relocation
end end
alias generic_prepare_relocation_to_locations prepare_relocation_to_locations alias generic_prepare_relocation_to_locations prepare_relocation_to_locations
@ -122,6 +131,14 @@ class Keg
replace_text_in_files(relocation, files: files) replace_text_in_files(relocation, files: files)
end end
def openjdk_dep_name_if_applicable
deps = runtime_dependencies
return if deps.blank?
dep_names = deps.map { |d| d["full_name"] }
dep_names.find { |d| d.match? Version.formula_optionally_versioned_regex(:openjdk) }
end
def replace_text_in_files(relocation, files: nil) def replace_text_in_files(relocation, files: nil)
files ||= text_files | libtool_files files ||= text_files | libtool_files