From 76dcad7c82247e1c342cecda67fda11555788f0d Mon Sep 17 00:00:00 2001 From: William Woodruff Date: Tue, 23 Jun 2015 19:21:55 -0400 Subject: [PATCH] Split compute_and_install_dependencies This is so so that check_dependencies_bottled can be called when bottles are being poured; implement check_dependencies_bottled --- Library/Homebrew/formula_installer.rb | 37 +++++++++++++++++++-------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 5855297eec..bb1ed74f78 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -147,7 +147,11 @@ class FormulaInstaller check_conflicts - compute_and_install_dependencies unless ignore_deps? + if !ignore_deps? + deps = compute_dependencies + check_dependencies_bottled(deps) if pour_bottle? + install_dependencies(deps) + end return if only_deps? @@ -217,18 +221,28 @@ class FormulaInstaller raise FormulaConflictError.new(formula, conflicts) unless conflicts.empty? end - def compute_and_install_dependencies + def compute_dependencies req_map, req_deps = expand_requirements - check_requirements(req_map) - deps = expand_dependencies(req_deps + formula.deps) - if deps.empty? && only_deps? - puts "All dependencies for #{formula.full_name} are satisfied." - else - install_dependencies(deps) + deps + end + + def check_dependencies_bottled(deps) + unbottled = [] + + unbottled = deps.select do |dep, _| + formula = dep.to_formula + !formula.pour_bottle? && !MacOS.can_build? end + + raise BuildToolsError.new(unbottled) unless unbottled.empty? + end + + def compute_and_install_dependencies + deps = compute_dependencies + install_dependencies(deps) end def check_requirements(req_map) @@ -319,12 +333,13 @@ class FormulaInstaller end def install_dependencies(deps) - if deps.length > 1 + if deps.empty? && only_deps? + puts "All dependencies for #{formula.full_name} are satisfied." + else oh1 "Installing dependencies for #{formula.full_name}: #{Tty.green}#{deps.map(&:first)*", "}#{Tty.reset}" + deps.each { |dep, options| install_dependency(dep, options) } end - deps.each { |dep, options| install_dependency(dep, options) } - @show_header = true unless deps.empty? end