aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorAdam Vandenberg2012-07-03 07:49:30 -0700
committerAdam Vandenberg2012-07-10 08:54:55 -0700
commite9dc02dbb6ae61f1ddebbaec30ec53d04a4e743d (patch)
treeff4628227c53250a447613c1100c119b0be5b298 /Library
parent8a0c94d4e01361617eaacae6f26348ad59410d4d (diff)
downloadbrew-e9dc02dbb6ae61f1ddebbaec30ec53d04a4e743d.tar.bz2
Refactor dependencies in preparation for autotools symbol support
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/dependencies.rb26
1 files changed, 21 insertions, 5 deletions
diff --git a/Library/Homebrew/dependencies.rb b/Library/Homebrew/dependencies.rb
index 1ca1298fb..adcd4f4ed 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