aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/formula.rb
diff options
context:
space:
mode:
authorAdam Vandenberg2012-02-28 19:56:35 -0800
committerAdam Vandenberg2012-03-10 09:24:10 -0800
commitcef5429f9373526ed1fe523bcbbbb42b5cf65ea9 (patch)
treef5c0965e9288ef1bb36be60872cdd167a0fc2186 /Library/Homebrew/formula.rb
parentfee00469f61e14e7dd9503a7b3381a95eb49ad81 (diff)
downloadbrew-cef5429f9373526ed1fe523bcbbbb42b5cf65ea9.tar.bz2
Use new Requirements code in Homebrew
Diffstat (limited to 'Library/Homebrew/formula.rb')
-rw-r--r--Library/Homebrew/formula.rb49
1 files changed, 13 insertions, 36 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index b1cb3dc0e..4c0634d06 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -1,4 +1,5 @@
require 'download_strategy'
+require 'dependencies'
require 'formula_support'
require 'hardware'
require 'bottles'
@@ -357,17 +358,10 @@ class Formula
HOMEBREW_REPOSITORY+"Library/Formula/#{name.downcase}.rb"
end
- def mirrors
- self.class.mirrors or []
- end
+ def mirrors; self.class.mirrors or []; end
- def deps
- self.class.deps or []
- end
-
- def external_deps
- self.class.external_deps or {}
- end
+ def deps; self.class.dependencies.deps; end
+ def external_deps; self.class.dependencies.external_deps; end
# deps are in an installable order
# which means if a depends on b then b will be ordered before a in this list
@@ -377,8 +371,8 @@ class Formula
def self.expand_deps f
f.deps.map do |dep|
- dep = Formula.factory dep
- expand_deps(dep) << dep
+ f_dep = Formula.factory dep.to_s
+ expand_deps(f_dep) << f_dep
end
end
@@ -603,7 +597,7 @@ private
end
end
- attr_rw :version, :homepage, :mirrors, :specs, :deps, :external_deps
+ attr_rw :version, :homepage, :mirrors, :specs
attr_rw :keg_only_reason, :fails_with_llvm_reason, :skip_clean_all
attr_rw :bottle_url, :bottle_sha1
attr_rw(*CHECKSUM_TYPES)
@@ -659,29 +653,12 @@ private
@mirrors.uniq!
end
- def depends_on name
- @deps ||= []
- @external_deps ||= {:python => [], :perl => [], :ruby => [], :jruby => [], :chicken => [], :rbx => [], :node => [], :lua => []}
-
- case name
- when String, Formula
- @deps << name
- when Hash
- key, value = name.shift
- case value
- when :python, :perl, :ruby, :jruby, :chicken, :rbx, :node, :lua
- @external_deps[value] << key
- when :optional, :recommended, :build
- @deps << key
- else
- raise "Unsupported dependency type #{value}"
- end
- when Symbol
- opoo "#{self.name} -- #{name}: Using symbols for deps is deprecated; use a string instead"
- @deps << name.to_s
- else
- raise "Unsupported type #{name.class}"
- end
+ def dependencies
+ @dependencies ||= DependencyCollector.new
+ end
+
+ def depends_on dep
+ dependencies.add(dep)
end
def skip_clean paths