Merge pull request #7124 from MichelleNguy/brew-upgrade
Fetch formula resources before unlinking during upgrade.
This commit is contained in:
commit
806bdee516
@ -368,6 +368,7 @@ module Cask
|
|||||||
fi.installed_on_request = false
|
fi.installed_on_request = false
|
||||||
fi.show_header = true
|
fi.show_header = true
|
||||||
fi.verbose = verbose?
|
fi.verbose = verbose?
|
||||||
|
fi.fetch
|
||||||
fi.prelude
|
fi.prelude
|
||||||
fi.install
|
fi.install
|
||||||
fi.finish
|
fi.finish
|
||||||
|
|||||||
@ -325,6 +325,7 @@ module Homebrew
|
|||||||
fi.build_bottle = args.build_bottle?
|
fi.build_bottle = args.build_bottle?
|
||||||
fi.interactive = args.interactive?
|
fi.interactive = args.interactive?
|
||||||
fi.git = args.git?
|
fi.git = args.git?
|
||||||
|
fi.fetch
|
||||||
fi.prelude
|
fi.prelude
|
||||||
fi.install
|
fi.install
|
||||||
fi.finish
|
fi.finish
|
||||||
|
|||||||
@ -183,7 +183,6 @@ module Homebrew
|
|||||||
fi.installed_as_dependency = tab.installed_as_dependency
|
fi.installed_as_dependency = tab.installed_as_dependency
|
||||||
fi.installed_on_request ||= tab.installed_on_request
|
fi.installed_on_request ||= tab.installed_on_request
|
||||||
end
|
end
|
||||||
fi.prelude
|
|
||||||
|
|
||||||
upgrade_version = if f.optlinked?
|
upgrade_version = if f.optlinked?
|
||||||
"#{Keg.new(f.opt_prefix).version} -> #{f.pkg_version}"
|
"#{Keg.new(f.opt_prefix).version} -> #{f.pkg_version}"
|
||||||
@ -192,6 +191,9 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
oh1 "Upgrading #{Formatter.identifier(f.full_specified_name)} #{upgrade_version} #{fi.options.to_a.join(" ")}"
|
oh1 "Upgrading #{Formatter.identifier(f.full_specified_name)} #{upgrade_version} #{fi.options.to_a.join(" ")}"
|
||||||
|
|
||||||
|
fi.fetch
|
||||||
|
fi.prelude
|
||||||
|
|
||||||
# first we unlink the currently active keg for this formula otherwise it is
|
# first we unlink the currently active keg for this formula otherwise it is
|
||||||
# possible for the existing build to interfere with the build we are about to
|
# possible for the existing build to interfere with the build we are about to
|
||||||
# do! Seriously, it happens!
|
# do! Seriously, it happens!
|
||||||
|
|||||||
@ -1160,6 +1160,7 @@ class Formula
|
|||||||
# @private
|
# @private
|
||||||
def brew
|
def brew
|
||||||
@prefix_returns_versioned_prefix = true
|
@prefix_returns_versioned_prefix = true
|
||||||
|
active_spec.fetch
|
||||||
stage do |staging|
|
stage do |staging|
|
||||||
staging.retain! if Homebrew.args.keep_tmp?
|
staging.retain! if Homebrew.args.keep_tmp?
|
||||||
prepare_patches
|
prepare_patches
|
||||||
|
|||||||
@ -561,6 +561,18 @@ class FormulaInstaller
|
|||||||
@show_header = true unless deps.empty?
|
@show_header = true unless deps.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def fetch_dependency(dep)
|
||||||
|
df = dep.to_formula
|
||||||
|
fi = FormulaInstaller.new(df)
|
||||||
|
|
||||||
|
fi.build_from_source = Homebrew.args.build_formula_from_source?(df)
|
||||||
|
fi.force_bottle = false
|
||||||
|
fi.verbose = verbose?
|
||||||
|
fi.quiet = quiet?
|
||||||
|
fi.debug = debug?
|
||||||
|
fi.fetch
|
||||||
|
end
|
||||||
|
|
||||||
def install_dependency(dep, inherited_options)
|
def install_dependency(dep, inherited_options)
|
||||||
df = dep.to_formula
|
df = dep.to_formula
|
||||||
tab = Tab.for_formula(df)
|
tab = Tab.for_formula(df)
|
||||||
@ -946,14 +958,33 @@ class FormulaInstaller
|
|||||||
@show_summary_heading = true
|
@show_summary_heading = true
|
||||||
end
|
end
|
||||||
|
|
||||||
def pour
|
def fetch_dependencies
|
||||||
if (bottle_path = formula.local_bottle_path)
|
deps = compute_dependencies
|
||||||
downloader = LocalBottleDownloadStrategy.new(bottle_path)
|
|
||||||
else
|
return if deps.empty? || ignore_deps?
|
||||||
downloader = formula.bottle
|
|
||||||
|
deps.each { |dep, _options| fetch_dependency(dep) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def fetch
|
||||||
|
fetch_dependencies
|
||||||
|
|
||||||
|
return if only_deps?
|
||||||
|
|
||||||
downloader.fetch
|
downloader.fetch
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def downloader
|
||||||
|
if (bottle_path = formula.local_bottle_path)
|
||||||
|
LocalBottleDownloadStrategy.new(bottle_path)
|
||||||
|
elsif pour_bottle?
|
||||||
|
formula.bottle
|
||||||
|
else
|
||||||
|
formula.downloader
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def pour
|
||||||
HOMEBREW_CELLAR.cd do
|
HOMEBREW_CELLAR.cd do
|
||||||
downloader.stage
|
downloader.stage
|
||||||
end
|
end
|
||||||
|
|||||||
@ -35,6 +35,7 @@ module Homebrew
|
|||||||
fi.installed_as_dependency = tab.installed_as_dependency
|
fi.installed_as_dependency = tab.installed_as_dependency
|
||||||
fi.installed_on_request = tab.installed_on_request
|
fi.installed_on_request = tab.installed_on_request
|
||||||
end
|
end
|
||||||
|
fi.fetch
|
||||||
fi.prelude
|
fi.prelude
|
||||||
|
|
||||||
oh1 "Reinstalling #{Formatter.identifier(f.full_name)} #{options.to_a.join " "}"
|
oh1 "Reinstalling #{Formatter.identifier(f.full_name)} #{options.to_a.join " "}"
|
||||||
|
|||||||
@ -70,8 +70,8 @@ class Resource
|
|||||||
def stage(target = nil, &block)
|
def stage(target = nil, &block)
|
||||||
raise ArgumentError, "target directory or block is required" unless target || block
|
raise ArgumentError, "target directory or block is required" unless target || block
|
||||||
|
|
||||||
fetch
|
|
||||||
prepare_patches
|
prepare_patches
|
||||||
|
|
||||||
unpack(target, &block)
|
unpack(target, &block)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,10 @@ describe FormulaInstaller do
|
|||||||
stub_formula_loader formula("gcc") { url "gcc-1.0" }
|
stub_formula_loader formula("gcc") { url "gcc-1.0" }
|
||||||
stub_formula_loader formula("patchelf") { url "patchelf-1.0" }
|
stub_formula_loader formula("patchelf") { url "patchelf-1.0" }
|
||||||
allow(Formula["patchelf"]).to receive(:latest_version_installed?).and_return(true)
|
allow(Formula["patchelf"]).to receive(:latest_version_installed?).and_return(true)
|
||||||
described_class.new(formula).install
|
|
||||||
|
fi = FormulaInstaller.new(formula)
|
||||||
|
fi.fetch
|
||||||
|
fi.install
|
||||||
|
|
||||||
keg = Keg.new(formula.prefix)
|
keg = Keg.new(formula.prefix)
|
||||||
|
|
||||||
|
|||||||
@ -21,6 +21,7 @@ describe FormulaInstaller do
|
|||||||
|
|
||||||
installer = described_class.new(formula)
|
installer = described_class.new(formula)
|
||||||
|
|
||||||
|
installer.fetch
|
||||||
installer.install
|
installer.install
|
||||||
|
|
||||||
keg = Keg.new(formula.prefix)
|
keg = Keg.new(formula.prefix)
|
||||||
@ -158,6 +159,7 @@ describe FormulaInstaller do
|
|||||||
|
|
||||||
it "shows audit problems if HOMEBREW_DEVELOPER is set" do
|
it "shows audit problems if HOMEBREW_DEVELOPER is set" do
|
||||||
ENV["HOMEBREW_DEVELOPER"] = "1"
|
ENV["HOMEBREW_DEVELOPER"] = "1"
|
||||||
|
formula_installer.fetch
|
||||||
formula_installer.install
|
formula_installer.install
|
||||||
expect(formula_installer).to receive(:audit_installed).and_call_original
|
expect(formula_installer).to receive(:audit_installed).and_call_original
|
||||||
formula_installer.caveats
|
formula_installer.caveats
|
||||||
|
|||||||
@ -149,6 +149,7 @@ describe Formulary do
|
|||||||
let(:installer) { FormulaInstaller.new(installed_formula) }
|
let(:installer) { FormulaInstaller.new(installed_formula) }
|
||||||
|
|
||||||
it "returns a Formula when given a rack" do
|
it "returns a Formula when given a rack" do
|
||||||
|
installer.fetch
|
||||||
installer.install
|
installer.install
|
||||||
|
|
||||||
f = described_class.from_rack(installed_formula.rack)
|
f = described_class.from_rack(installed_formula.rack)
|
||||||
@ -156,6 +157,7 @@ describe Formulary do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "returns a Formula when given a Keg" do
|
it "returns a Formula when given a Keg" do
|
||||||
|
installer.fetch
|
||||||
installer.install
|
installer.install
|
||||||
|
|
||||||
keg = Keg.new(installed_formula.prefix)
|
keg = Keg.new(installed_formula.prefix)
|
||||||
|
|||||||
@ -176,6 +176,7 @@ RSpec.shared_context "integration test" do
|
|||||||
setup_test_formula(name, content)
|
setup_test_formula(name, content)
|
||||||
fi = FormulaInstaller.new(Formula[name])
|
fi = FormulaInstaller.new(Formula[name])
|
||||||
fi.build_bottle = build_bottle
|
fi.build_bottle = build_bottle
|
||||||
|
fi.fetch
|
||||||
fi.prelude
|
fi.prelude
|
||||||
fi.install
|
fi.install
|
||||||
fi.finish
|
fi.finish
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user