diff --git a/Library/Homebrew/dependencies.rb b/Library/Homebrew/dependencies.rb index 1ca1298fbc..adcd4f4ede 100644 --- a/Library/Homebrew/dependencies.rb +++ b/Library/Homebrew/dependencies.rb @@ -28,11 +28,20 @@ class DependencyCollector tag = nil spec, tag = spec.shift if spec.is_a? Hash - dep = case spec - when :x11, :libpng - X11Dependency.new(tag) + dep = parse_spec(spec, tag) + # Some symbol specs are conditional, and resolve to nil if there is no + # dependency needed for the current platform. + return if dep.nil? + # Add dep to the correct bucket + (dep.is_a?(Requirement) ? @external_deps : @deps) << dep + end + +private + + def parse_spec spec, tag + case spec when Symbol - raise "Unsupported special dependency #{spec}" + parse_symbol_spec(spec, tag) when String if LANGUAGE_MODULES.include? tag LanguageModuleDependency.new(tag, spec) @@ -46,8 +55,15 @@ class DependencyCollector else raise "Unsupported type #{spec.class} for #{spec}" end + end - (dep.is_a?(Requirement) ? @external_deps : @deps) << dep + def parse_symbol_spec spec, tag + case spec + when :x11, :libpng + X11Dependency.new(tag) + else + raise "Unsupported special dependency #{spec}" + end end end