From b2c9625d780277f021c63e21cac4a7c954170784 Mon Sep 17 00:00:00 2001 From: ilovezfs Date: Thu, 2 Jun 2016 02:09:35 -0700 Subject: [PATCH] formula_installer: accumulate inherited options When a given dependency appears multiple times in a formula's dependency tree, the inherited options for that dependency should accumulate rather than being overwritten each time that dependency is considered by expand_dependencies. In particular, this impacts "universal" since the dependency should be built with universal unless all of its instances in the dependency tree don't have "universal" as opposed to only if the last instance considered has "universal." Closes Homebrew/homebrew-core#1604. Closes #308. Signed-off-by: ilovezfs --- Library/Homebrew/formula_installer.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index c9d1f42d65..ab0e36029e 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -341,10 +341,10 @@ class FormulaInstaller end def expand_dependencies(deps) - inherited_options = {} + inherited_options = Hash.new { |hash, key| hash[key] = Options.new } expanded_deps = Dependency.expand(formula, deps) do |dependent, dep| - options = inherited_options[dep.name] = inherited_options_for(dep) + inherited_options[dep.name] |= inherited_options_for(dep) build = effective_build_options_for( dependent, inherited_options.fetch(dependent.name, []) @@ -354,7 +354,7 @@ class FormulaInstaller Dependency.prune elsif dep.build? && install_bottle_for?(dependent, build) Dependency.prune - elsif dep.satisfied?(options) + elsif dep.satisfied?(inherited_options[dep.name]) Dependency.skip end end