mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Pass args
to FormulaInstaller
instead of using global args
.
This commit is contained in:
parent
6c050492ee
commit
8a1f8ab858
@ -94,7 +94,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
def install
|
def install
|
||||||
install_args.parse
|
args = install_args.parse
|
||||||
|
|
||||||
args.named.each do |name|
|
args.named.each do |name|
|
||||||
next if File.exist?(name)
|
next if File.exist?(name)
|
||||||
@ -263,7 +263,7 @@ module Homebrew
|
|||||||
Cleanup.install_formula_clean!(f)
|
Cleanup.install_formula_clean!(f)
|
||||||
end
|
end
|
||||||
|
|
||||||
check_installed_dependents
|
check_installed_dependents(args: args)
|
||||||
|
|
||||||
Homebrew.messages.display_messages
|
Homebrew.messages.display_messages
|
||||||
rescue FormulaUnreadableError, FormulaClassUnavailableError,
|
rescue FormulaUnreadableError, FormulaClassUnavailableError,
|
||||||
@ -323,13 +323,18 @@ module Homebrew
|
|||||||
f.print_tap_action
|
f.print_tap_action
|
||||||
build_options = f.build
|
build_options = f.build
|
||||||
|
|
||||||
fi = FormulaInstaller.new(f)
|
fi = FormulaInstaller.new(f, force_bottle: args.force_bottle?, include_test: args.include_test?)
|
||||||
fi.options = build_options.used_options
|
fi.options = build_options.used_options
|
||||||
|
fi.env = args.env
|
||||||
|
fi.force = args.force?
|
||||||
|
fi.keep_tmp = args.keep_tmp?
|
||||||
fi.ignore_deps = args.ignore_dependencies?
|
fi.ignore_deps = args.ignore_dependencies?
|
||||||
fi.only_deps = args.only_dependencies?
|
fi.only_deps = args.only_dependencies?
|
||||||
fi.build_bottle = args.build_bottle?
|
fi.build_bottle = args.build_bottle?
|
||||||
|
fi.bottle_arch = args.bottle_arch
|
||||||
fi.interactive = args.interactive?
|
fi.interactive = args.interactive?
|
||||||
fi.git = args.git?
|
fi.git = args.git?
|
||||||
|
fi.cc = args.cc
|
||||||
fi.prelude
|
fi.prelude
|
||||||
fi.fetch
|
fi.fetch
|
||||||
fi.install
|
fi.install
|
||||||
|
@ -22,11 +22,12 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
def postinstall
|
def postinstall
|
||||||
postinstall_args.parse
|
args = postinstall_args.parse
|
||||||
|
|
||||||
args.resolved_formulae.each do |f|
|
args.resolved_formulae.each do |f|
|
||||||
ohai "Postinstalling #{f}"
|
ohai "Postinstalling #{f}"
|
||||||
fi = FormulaInstaller.new(f)
|
fi = FormulaInstaller.new(f)
|
||||||
|
fi.force = args.force?
|
||||||
fi.post_install
|
fi.post_install
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -54,7 +54,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
def reinstall
|
def reinstall
|
||||||
reinstall_args.parse
|
args = reinstall_args.parse
|
||||||
|
|
||||||
FormulaInstaller.prevent_build_flags unless DevelopmentTools.installed?
|
FormulaInstaller.prevent_build_flags unless DevelopmentTools.installed?
|
||||||
|
|
||||||
@ -67,11 +67,11 @@ module Homebrew
|
|||||||
next
|
next
|
||||||
end
|
end
|
||||||
Migrator.migrate_if_needed(f)
|
Migrator.migrate_if_needed(f)
|
||||||
reinstall_formula(f)
|
reinstall_formula(f, args: args)
|
||||||
Cleanup.install_formula_clean!(f)
|
Cleanup.install_formula_clean!(f)
|
||||||
end
|
end
|
||||||
|
|
||||||
check_installed_dependents
|
check_installed_dependents(args: args)
|
||||||
|
|
||||||
Homebrew.messages.display_messages
|
Homebrew.messages.display_messages
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
def upgrade
|
def upgrade
|
||||||
upgrade_args.parse
|
args = upgrade_args.parse
|
||||||
|
|
||||||
FormulaInstaller.prevent_build_flags unless DevelopmentTools.installed?
|
FormulaInstaller.prevent_build_flags unless DevelopmentTools.installed?
|
||||||
|
|
||||||
@ -109,9 +109,9 @@ module Homebrew
|
|||||||
puts formulae_upgrades.join("\n")
|
puts formulae_upgrades.join("\n")
|
||||||
end
|
end
|
||||||
|
|
||||||
upgrade_formulae(formulae_to_install)
|
upgrade_formulae(formulae_to_install, args: args)
|
||||||
|
|
||||||
check_installed_dependents
|
check_installed_dependents(args: args)
|
||||||
|
|
||||||
Homebrew.messages.display_messages
|
Homebrew.messages.display_messages
|
||||||
end
|
end
|
||||||
|
@ -38,25 +38,31 @@ class FormulaInstaller
|
|||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :formula
|
attr_reader :formula
|
||||||
attr_accessor :options, :build_bottle, :installed_as_dependency, :installed_on_request, :link_keg
|
attr_accessor :cc, :env, :options, :build_bottle, :bottle_arch,
|
||||||
|
:installed_as_dependency, :installed_on_request, :link_keg
|
||||||
|
|
||||||
mode_attr_accessor :show_summary_heading, :show_header
|
mode_attr_accessor :show_summary_heading, :show_header
|
||||||
mode_attr_accessor :build_from_source, :force_bottle, :include_test
|
mode_attr_accessor :build_from_source, :force_bottle, :include_test
|
||||||
mode_attr_accessor :ignore_deps, :only_deps, :interactive, :git
|
mode_attr_accessor :ignore_deps, :only_deps, :interactive, :git, :force, :keep_tmp
|
||||||
mode_attr_accessor :verbose, :debug, :quiet
|
mode_attr_accessor :verbose, :debug, :quiet
|
||||||
|
|
||||||
def initialize(formula)
|
def initialize(formula, force_bottle: false, include_test: false, build_from_source: false, cc: nil)
|
||||||
@formula = formula
|
@formula = formula
|
||||||
|
@env = nil
|
||||||
|
@force = false
|
||||||
|
@keep_tmp = false
|
||||||
@link_keg = !formula.keg_only?
|
@link_keg = !formula.keg_only?
|
||||||
@show_header = false
|
@show_header = false
|
||||||
@ignore_deps = false
|
@ignore_deps = false
|
||||||
@only_deps = false
|
@only_deps = false
|
||||||
@build_from_source = Homebrew.args.build_from_source?
|
@build_from_source = build_from_source
|
||||||
@build_bottle = false
|
@build_bottle = false
|
||||||
@force_bottle = Homebrew.args.force_bottle?
|
@bottle_arch = nil
|
||||||
@include_test = Homebrew.args.include_test?
|
@force_bottle = force_bottle
|
||||||
|
@include_test = include_test
|
||||||
@interactive = false
|
@interactive = false
|
||||||
@git = false
|
@git = false
|
||||||
|
@cc = cc
|
||||||
@verbose = Homebrew.args.verbose?
|
@verbose = Homebrew.args.verbose?
|
||||||
@quiet = Homebrew.args.quiet?
|
@quiet = Homebrew.args.quiet?
|
||||||
@debug = Homebrew.args.debug?
|
@debug = Homebrew.args.debug?
|
||||||
@ -108,7 +114,7 @@ class FormulaInstaller
|
|||||||
return false if !formula.bottled? && !formula.local_bottle_path
|
return false if !formula.bottled? && !formula.local_bottle_path
|
||||||
return true if force_bottle?
|
return true if force_bottle?
|
||||||
return false if build_from_source? || build_bottle? || interactive?
|
return false if build_from_source? || build_bottle? || interactive?
|
||||||
return false if Homebrew.args.cc
|
return false if cc
|
||||||
return false unless options.empty?
|
return false unless options.empty?
|
||||||
return false if formula.bottle_disabled?
|
return false if formula.bottle_disabled?
|
||||||
|
|
||||||
@ -280,7 +286,7 @@ class FormulaInstaller
|
|||||||
|
|
||||||
return if only_deps?
|
return if only_deps?
|
||||||
|
|
||||||
if build_bottle? && (arch = Homebrew.args.bottle_arch) && !Hardware::CPU.optimization_flags.include?(arch.to_sym)
|
if build_bottle? && (arch = bottle_arch) && !Hardware::CPU.optimization_flags.include?(arch.to_sym)
|
||||||
raise "Unrecognized architecture for --bottle-arch: #{arch}"
|
raise "Unrecognized architecture for --bottle-arch: #{arch}"
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -367,7 +373,7 @@ class FormulaInstaller
|
|||||||
end
|
end
|
||||||
|
|
||||||
def check_conflicts
|
def check_conflicts
|
||||||
return if Homebrew.args.force?
|
return if force?
|
||||||
|
|
||||||
conflicts = formula.conflicts.select do |c|
|
conflicts = formula.conflicts.select do |c|
|
||||||
f = Formulary.factory(c.name)
|
f = Formulary.factory(c.name)
|
||||||
@ -576,11 +582,12 @@ class FormulaInstaller
|
|||||||
|
|
||||||
def fetch_dependency(dep)
|
def fetch_dependency(dep)
|
||||||
df = dep.to_formula
|
df = dep.to_formula
|
||||||
fi = FormulaInstaller.new(df)
|
fi = FormulaInstaller.new(df, force_bottle: false,
|
||||||
|
include_test: Homebrew.args.include_formula_test_deps?(df),
|
||||||
|
build_from_source: Homebrew.args.build_formula_from_source?(df))
|
||||||
|
|
||||||
fi.build_from_source = Homebrew.args.build_formula_from_source?(df)
|
fi.force = force?
|
||||||
fi.force_bottle = false
|
fi.keep_tmp = keep_tmp?
|
||||||
fi.include_test = Homebrew.args.include_formula_test_deps?(df)
|
|
||||||
fi.verbose = verbose?
|
fi.verbose = verbose?
|
||||||
fi.quiet = quiet?
|
fi.quiet = quiet?
|
||||||
fi.debug = debug?
|
fi.debug = debug?
|
||||||
@ -616,14 +623,16 @@ class FormulaInstaller
|
|||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
fi = FormulaInstaller.new(df)
|
fi = FormulaInstaller.new(df, force_bottle: false,
|
||||||
|
include_test: Homebrew.args.include_formula_test_deps?(df),
|
||||||
|
build_from_source: Homebrew.args.build_formula_from_source?(df))
|
||||||
|
|
||||||
fi.options |= tab.used_options
|
fi.options |= tab.used_options
|
||||||
fi.options |= Tab.remap_deprecated_options(df.deprecated_options, dep.options)
|
fi.options |= Tab.remap_deprecated_options(df.deprecated_options, dep.options)
|
||||||
fi.options |= inherited_options
|
fi.options |= inherited_options
|
||||||
fi.options &= df.options
|
fi.options &= df.options
|
||||||
fi.build_from_source = Homebrew.args.build_formula_from_source?(df)
|
fi.force = force?
|
||||||
fi.force_bottle = false
|
fi.keep_tmp = keep_tmp?
|
||||||
fi.include_test = Homebrew.args.include_formula_test_deps?(df)
|
|
||||||
fi.verbose = verbose?
|
fi.verbose = verbose?
|
||||||
fi.quiet = quiet?
|
fi.quiet = quiet?
|
||||||
fi.debug = debug?
|
fi.debug = debug?
|
||||||
@ -732,18 +741,18 @@ class FormulaInstaller
|
|||||||
|
|
||||||
if build_bottle?
|
if build_bottle?
|
||||||
args << "--build-bottle"
|
args << "--build-bottle"
|
||||||
args << "--bottle-arch=#{Homebrew.args.bottle_arch}" if Homebrew.args.bottle_arch
|
args << "--bottle-arch=#{bottle_arch}" if bottle_arch
|
||||||
end
|
end
|
||||||
|
|
||||||
args << "--git" if git?
|
args << "--git" if git?
|
||||||
args << "--interactive" if interactive?
|
args << "--interactive" if interactive?
|
||||||
args << "--verbose" if verbose?
|
args << "--verbose" if verbose?
|
||||||
args << "--debug" if debug?
|
args << "--debug" if debug?
|
||||||
args << "--cc=#{Homebrew.args.cc}" if Homebrew.args.cc
|
args << "--cc=#{cc}" if cc
|
||||||
args << "--keep-tmp" if Homebrew.args.keep_tmp?
|
args << "--keep-tmp" if keep_tmp?
|
||||||
|
|
||||||
if Homebrew.args.env.present?
|
if env.present?
|
||||||
args << "--env=#{Homebrew.args.env}"
|
args << "--env=#{env}"
|
||||||
elsif formula.env.std? || formula.deps.select(&:build?).any? { |d| d.name == "scons" }
|
elsif formula.env.std? || formula.deps.select(&:build?).any? { |d| d.name == "scons" }
|
||||||
args << "--env=std"
|
args << "--env=std"
|
||||||
end
|
end
|
||||||
@ -789,7 +798,7 @@ class FormulaInstaller
|
|||||||
sandbox = Sandbox.new
|
sandbox = Sandbox.new
|
||||||
formula.logs.mkpath
|
formula.logs.mkpath
|
||||||
sandbox.record_log(formula.logs/"build.sandbox.log")
|
sandbox.record_log(formula.logs/"build.sandbox.log")
|
||||||
sandbox.allow_write_path(ENV["HOME"]) if Homebrew.args.interactive?
|
sandbox.allow_write_path(ENV["HOME"]) if interactive?
|
||||||
sandbox.allow_write_temp_and_cache
|
sandbox.allow_write_temp_and_cache
|
||||||
sandbox.allow_write_log(formula)
|
sandbox.allow_write_log(formula)
|
||||||
sandbox.allow_cvs
|
sandbox.allow_cvs
|
||||||
|
@ -7,7 +7,7 @@ require "messages"
|
|||||||
module Homebrew
|
module Homebrew
|
||||||
module_function
|
module_function
|
||||||
|
|
||||||
def reinstall_formula(f, build_from_source: false)
|
def reinstall_formula(f, build_from_source: false, args:)
|
||||||
return if args.dry_run?
|
return if args.dry_run?
|
||||||
|
|
||||||
if f.opt_prefix.directory?
|
if f.opt_prefix.directory?
|
||||||
@ -23,11 +23,13 @@ module Homebrew
|
|||||||
options |= f.build.used_options
|
options |= f.build.used_options
|
||||||
options &= f.options
|
options &= f.options
|
||||||
|
|
||||||
fi = FormulaInstaller.new(f)
|
fi = FormulaInstaller.new(f, force_bottle: args.force_bottle?, include_test: args.include_test?)
|
||||||
fi.options = options
|
fi.options = options
|
||||||
fi.build_bottle = Homebrew.args.build_bottle?
|
fi.force = args.force?
|
||||||
fi.interactive = Homebrew.args.interactive?
|
fi.keep_tmp = args.keep_tmp?
|
||||||
fi.git = Homebrew.args.git?
|
fi.build_bottle = args.build_bottle?
|
||||||
|
fi.interactive = args.interactive?
|
||||||
|
fi.git = args.git?
|
||||||
fi.link_keg ||= keg_was_linked if keg_had_linked_opt
|
fi.link_keg ||= keg_was_linked if keg_had_linked_opt
|
||||||
fi.build_from_source = true if build_from_source
|
fi.build_from_source = true if build_from_source
|
||||||
if tab
|
if tab
|
||||||
|
@ -17,10 +17,10 @@ describe FormulaInstaller do
|
|||||||
match(&:poured_from_bottle)
|
match(&:poured_from_bottle)
|
||||||
end
|
end
|
||||||
|
|
||||||
def temporary_install(formula)
|
def temporary_install(formula, **options)
|
||||||
expect(formula).not_to be_latest_version_installed
|
expect(formula).not_to be_latest_version_installed
|
||||||
|
|
||||||
installer = described_class.new(formula)
|
installer = described_class.new(formula, **options)
|
||||||
|
|
||||||
installer.fetch
|
installer.fetch
|
||||||
installer.install
|
installer.install
|
||||||
@ -89,9 +89,7 @@ describe FormulaInstaller do
|
|||||||
end
|
end
|
||||||
|
|
||||||
specify "Formula is not poured from bottle when compiler specified" do
|
specify "Formula is not poured from bottle when compiler specified" do
|
||||||
expect(Homebrew.args.cc).to be nil
|
temporary_install(TestballBottle.new, cc: "clang") do |f|
|
||||||
Homebrew.install_args.parse(["--cc=clang", "testball_bottle"])
|
|
||||||
temporary_install(TestballBottle.new) do |f|
|
|
||||||
tab = Tab.for_formula(f)
|
tab = Tab.for_formula(f)
|
||||||
expect(tab.compiler).to eq("clang")
|
expect(tab.compiler).to eq("clang")
|
||||||
end
|
end
|
||||||
|
@ -9,7 +9,7 @@ require "cleanup"
|
|||||||
module Homebrew
|
module Homebrew
|
||||||
module_function
|
module_function
|
||||||
|
|
||||||
def upgrade_formulae(formulae_to_install)
|
def upgrade_formulae(formulae_to_install, args:)
|
||||||
return if formulae_to_install.empty?
|
return if formulae_to_install.empty?
|
||||||
return if args.dry_run?
|
return if args.dry_run?
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ module Homebrew
|
|||||||
formulae_to_install.each do |f|
|
formulae_to_install.each do |f|
|
||||||
Migrator.migrate_if_needed(f)
|
Migrator.migrate_if_needed(f)
|
||||||
begin
|
begin
|
||||||
upgrade_formula(f)
|
upgrade_formula(f, args: args)
|
||||||
Cleanup.install_formula_clean!(f)
|
Cleanup.install_formula_clean!(f)
|
||||||
rescue UnsatisfiedRequirements => e
|
rescue UnsatisfiedRequirements => e
|
||||||
Homebrew.failed = true
|
Homebrew.failed = true
|
||||||
@ -37,7 +37,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def upgrade_formula(f)
|
def upgrade_formula(f, args:)
|
||||||
return if args.dry_run?
|
return if args.dry_run?
|
||||||
|
|
||||||
if f.opt_prefix.directory?
|
if f.opt_prefix.directory?
|
||||||
@ -63,8 +63,10 @@ module Homebrew
|
|||||||
options |= f.build.used_options
|
options |= f.build.used_options
|
||||||
options &= f.options
|
options &= f.options
|
||||||
|
|
||||||
fi = FormulaInstaller.new(f)
|
fi = FormulaInstaller.new(f, force_bottle: args.force_bottle?, include_test: args.include_test?)
|
||||||
fi.options = options
|
fi.options = options
|
||||||
|
fi.force = args.force?
|
||||||
|
fi.keep_tmp = args.keep_tmp?
|
||||||
fi.build_bottle = args.build_bottle?
|
fi.build_bottle = args.build_bottle?
|
||||||
fi.installed_on_request = args.named.present?
|
fi.installed_on_request = args.named.present?
|
||||||
fi.link_keg ||= keg_was_linked if keg_had_linked_opt
|
fi.link_keg ||= keg_was_linked if keg_had_linked_opt
|
||||||
@ -112,7 +114,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_installed_dependents
|
def check_installed_dependents(args:)
|
||||||
installed_formulae = FormulaInstaller.installed.to_a
|
installed_formulae = FormulaInstaller.installed.to_a
|
||||||
return if installed_formulae.empty?
|
return if installed_formulae.empty?
|
||||||
|
|
||||||
@ -156,7 +158,7 @@ module Homebrew
|
|||||||
puts formulae_upgrades.join(", ")
|
puts formulae_upgrades.join(", ")
|
||||||
end
|
end
|
||||||
|
|
||||||
upgrade_formulae(upgradeable_dependents)
|
upgrade_formulae(upgradeable_dependents, args: args)
|
||||||
|
|
||||||
# Assess the dependents tree again now we've upgraded.
|
# Assess the dependents tree again now we've upgraded.
|
||||||
oh1 "Checking for dependents of upgraded formulae..." unless args.dry_run?
|
oh1 "Checking for dependents of upgraded formulae..." unless args.dry_run?
|
||||||
@ -213,7 +215,7 @@ module Homebrew
|
|||||||
return if args.dry_run?
|
return if args.dry_run?
|
||||||
|
|
||||||
reinstallable_broken_dependents.each do |f|
|
reinstallable_broken_dependents.each do |f|
|
||||||
reinstall_formula(f, build_from_source: true)
|
reinstall_formula(f, build_from_source: true, args: args)
|
||||||
rescue FormulaInstallationAlreadyAttemptedError
|
rescue FormulaInstallationAlreadyAttemptedError
|
||||||
# We already attempted to reinstall f as part of the dependency tree of
|
# We already attempted to reinstall f as part of the dependency tree of
|
||||||
# another formula. In that case, don't generate an error, just move on.
|
# another formula. In that case, don't generate an error, just move on.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user