From b7b8b88cea98ed4b24b813f13d7b06b538090fa6 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Mon, 11 Aug 2014 17:48:30 -0500 Subject: [PATCH] Replace the build object rather than mutate it --- Library/Homebrew/build_options.rb | 3 +-- Library/Homebrew/dependency.rb | 7 +++---- Library/Homebrew/formula_installer.rb | 12 +++--------- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/Library/Homebrew/build_options.rb b/Library/Homebrew/build_options.rb index e104a870a4..58348da8a5 100644 --- a/Library/Homebrew/build_options.rb +++ b/Library/Homebrew/build_options.rb @@ -1,7 +1,6 @@ require 'options' class BuildOptions - attr_accessor :args attr_accessor :universal def initialize(args, options) @@ -15,7 +14,7 @@ class BuildOptions end def include? name - args.include? '--' + name + @args.include?("--#{name}") end def with? val diff --git a/Library/Homebrew/dependency.rb b/Library/Homebrew/dependency.rb index d3e8b607af..dfb3374460 100644 --- a/Library/Homebrew/dependency.rb +++ b/Library/Homebrew/dependency.rb @@ -29,10 +29,9 @@ class Dependency end def to_formula - f = Formulary.factory(name) - # Add this dependency's options to the formula's build args - f.build.args = f.build.args.concat(options) - f + formula = Formulary.factory(name) + formula.build = BuildOptions.new(options, formula.options) + formula end def installed? diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 63b7fa0dfb..266d005a2d 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -303,15 +303,9 @@ class FormulaInstaller end def effective_build_options_for(dependent, inherited_options=[]) - if dependent == f - build = dependent.build.dup - build.args |= options - build - else - build = dependent.build.dup - build.args |= inherited_options - build - end + args = dependent.build.used_options + args |= dependent == f ? options : inherited_options + BuildOptions.new(args, dependent.options) end def inherited_options_for(dep)