Unverified Commit 92cf9047 authored by Bo Anderson's avatar Bo Anderson Committed by GitHub
Browse files

Merge pull request #11362 from Bo98/json-tab-write

formula_installer: write tab when pouring local --only-json-tab bottles
parents ef000d0c 33e1255f
......@@ -1142,21 +1142,9 @@ class FormulaInstaller
downloader.stage
end
keg = Keg.new(formula.prefix)
Tab.clear_cache
tab = if (tab_attributes = formula.bottle_tab_attributes.presence)
Tab.from_file_content(tab_attributes.to_json, keg/Tab::FILENAME)
else
Tab.for_keg(keg)
end
skip_linkage = formula.bottle_specification.skip_relocation?
# TODO: Remove `with_env` when bottles are built with RPATH relocation enabled
# https://github.com/Homebrew/brew/issues/11329
with_env(HOMEBREW_RELOCATE_RPATHS: "1") do
keg.replace_placeholders_with_locations tab.changed_files, skip_linkage: skip_linkage
end
tab = Utils::Bottles.load_tab(formula)
# fill in missing/outdated parts of the tab
# keep in sync with Tab#to_bottle_json
......@@ -1175,6 +1163,14 @@ class FormulaInstaller
tab.source["tap_git_head"] = formula.tap&.git_head
tab.tap = formula.tap
tab.write
keg = Keg.new(formula.prefix)
skip_linkage = formula.bottle_specification.skip_relocation?
# TODO: Remove `with_env` when bottles are built with RPATH relocation enabled
# https://github.com/Homebrew/brew/issues/11329
with_env(HOMEBREW_RELOCATE_RPATHS: "1") do
keg.replace_placeholders_with_locations tab.changed_files, skip_linkage: skip_linkage
end
end
sig { params(output: T.nilable(String)).void }
......
......@@ -92,6 +92,23 @@ module Utils
end
end
def load_tab(formula)
keg = Keg.new(formula.prefix)
tabfile = keg/Tab::FILENAME
bottle_json_path = formula.local_bottle_path&.sub(/\.tar\.gz$/, ".json")
if (tab_attributes = formula.bottle_tab_attributes.presence)
Tab.from_file_content(tab_attributes.to_json, tabfile)
elsif !tabfile.exist? && bottle_json_path&.exist?
_, tag, = Utils::Bottles.extname_tag_rebuild(formula.local_bottle_path)
bottle_hash = JSON.parse(File.read(bottle_json_path))
tab_json = bottle_hash[formula.full_name]["bottle"]["tags"][tag]["tab"].to_json
Tab.from_file_content(tab_json, tabfile)
else
Tab.for_keg(keg)
end
end
private
def bottle_file_list(bottle_file)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment