Skip to content
Snippets Groups Projects
Commit b2c9625d authored by ilovezfs's avatar ilovezfs
Browse files

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: default avatarilovezfs <ilovezfs@icloud.com>
parent 5b1372e7
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment