Fix installing a local bottle from source

Factor Utils::Bottles.formula_contents out of BottleLoader.
This commit is contained in:
Shaun Jackman 2017-09-25 22:46:51 -07:00
parent 3ed832d4f0
commit 2e77de3b58
2 changed files with 15 additions and 1 deletions

View File

@ -308,7 +308,12 @@ class FormulaInstaller
clean clean
# Store the formula used to build the keg in the keg. # Store the formula used to build the keg in the keg.
s = formula.path.read.gsub(/ bottle do.+?end\n\n?/m, "") formula_contents = if formula.local_bottle_path
Utils::Bottles.formula_contents formula.local_bottle_path, name: formula.name
else
formula.path.read
end
s = formula_contents.gsub(/ bottle do.+?end\n\n?/m, "")
brew_prefix = formula.prefix/".brew" brew_prefix = formula.prefix/".brew"
brew_prefix.mkdir brew_prefix.mkdir
Pathname(brew_prefix/"#{formula.name}.rb").atomic_write(s) Pathname(brew_prefix/"#{formula.name}.rb").atomic_write(s)

View File

@ -54,6 +54,15 @@ module Utils
def resolve_version(bottle_file) def resolve_version(bottle_file)
PkgVersion.parse receipt_path(bottle_file).split("/")[1] PkgVersion.parse receipt_path(bottle_file).split("/")[1]
end end
def formula_contents(bottle_file,
name: resolve_formula_names(bottle_file)[0])
bottle_version = resolve_version bottle_file
formula_path = "#{name}/#{bottle_version}/.brew/#{name}.rb"
contents = Utils.popen_read "tar", "-xOzf", bottle_file, formula_path
raise BottleFormulaUnavailableError.new(bottle_file, formula_path) unless $CHILD_STATUS.success?
contents
end
end end
class Bintray class Bintray