diff options
| author | Second Planet | 2011-11-05 19:40:21 -0400 |
|---|---|---|
| committer | Adam Vandenberg | 2012-02-25 10:19:59 -0800 |
| commit | c4027c4051cd7d8896b95e1f9271a50c683222d8 (patch) | |
| tree | 55dd08674acda5f4042b04bfb7b9a9fa2671d118 /Library/Homebrew | |
| parent | 34215a613dd6b90315c4649ad9f5fd18288330e4 (diff) | |
| download | homebrew-c4027c4051cd7d8896b95e1f9271a50c683222d8.tar.bz2 | |
Add more external dep options
* Chicken Scheme
* Node.js
* Rubinius
Closes #8466.
Signed-off-by: Adam Vandenberg <flangy@gmail.com>
Diffstat (limited to 'Library/Homebrew')
| -rw-r--r-- | Library/Homebrew/exceptions.rb | 10 | ||||
| -rw-r--r-- | Library/Homebrew/formula.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 5 | ||||
| -rw-r--r-- | Library/Homebrew/test/test_external_deps.rb | 75 |
4 files changed, 90 insertions, 4 deletions
diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index cd5103963..ee4c2477d 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -76,8 +76,10 @@ class UnsatisfiedExternalDependencyError < Homebrew::InstallationError def tool case type when :python then 'easy_install' - when :ruby, :jruby then 'rubygems' + when :ruby, :jruby, :rbx then 'rubygems' when :perl then 'cpan' + when :node then 'npm' + when :chicken then 'chicken-install' end end @@ -91,6 +93,12 @@ class UnsatisfiedExternalDependencyError < Homebrew::InstallationError "cpan -i" when :jruby "jruby -S gem install" + when :rbx + "rbx gem install" + when :node + "npm install" + when :chicken + "chicken-install" end end end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 7335afd24..ebe858897 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -740,7 +740,7 @@ EOF def depends_on name @deps ||= [] - @external_deps ||= {:python => [], :perl => [], :ruby => [], :jruby => []} + @external_deps ||= {:python => [], :perl => [], :ruby => [], :jruby => [], :chicken => [], :rbx => [], :node => []} case name when String, Formula @@ -748,7 +748,7 @@ EOF when Hash key, value = name.shift case value - when :python, :perl, :ruby, :jruby + when :python, :perl, :ruby, :jruby, :chicken, :rbx, :node @external_deps[value] << key when :optional, :recommended, :build @deps << key diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 44cb6986c..979cf02e3 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -319,7 +319,10 @@ def external_dep_check dep, type when :python then %W{/usr/bin/env python -c import\ #{dep}} when :jruby then %W{/usr/bin/env jruby -rubygems -e require\ '#{dep}'} when :ruby then %W{/usr/bin/env ruby -rubygems -e require\ '#{dep}'} + when :rbx then %W{/usr/bin/env rbx -rubygems -e require\ '#{dep}'} when :perl then %W{/usr/bin/env perl -e use\ #{dep}} + when :chicken then %W{/usr/bin/env csi -e (use #{dep})} + when :node then %W{/usr/bin/env node -e require('#{dep}');} end end @@ -343,7 +346,7 @@ class Formula end def check_external_deps - [:ruby, :python, :perl, :jruby].each do |type| + [:ruby, :python, :perl, :jruby, :rbx, :chicken, :node].each do |type| self.external_deps[type].each do |dep| unless quiet_system(*external_dep_check(dep, type)) raise UnsatisfiedExternalDependencyError.new(dep, type) diff --git a/Library/Homebrew/test/test_external_deps.rb b/Library/Homebrew/test/test_external_deps.rb index 052617712..ae41ccc7c 100644 --- a/Library/Homebrew/test/test_external_deps.rb +++ b/Library/Homebrew/test/test_external_deps.rb @@ -73,6 +73,54 @@ class GoodJRubyBall <TestBall end end +class BadChickenBall <TestBall + depends_on "notapackage" => :chicken + + def initialize name=nil + super "uses_chicken_ball" + end +end + +class GoodChickenBall <TestBall + depends_on "extras" => :chicken + + def initialize name=nil + super "uses_chicken_ball" + end +end + +class BadRubiniusBall <TestBall + depends_on "notapackage" => :rbx + + def initialize name=nil + super "uses_rubinius_ball" + end +end + +class GoodRubiniusBall <TestBall + depends_on "date" => :rbx + + def intialize + super "uses_rubinius_ball" + end +end + +class BadNodeBall <TestBall + depends_on "notapackage" => :node + + def initialize + super "uses_node_ball" + end +end + +class GoodNodeBall <TestBall + depends_on "util" => :node + + def initialize + super "uses_node_balls" + end +end + class ExternalDepsTests < Test::Unit::TestCase def check_deps_fail f @@ -120,4 +168,31 @@ class ExternalDepsTests < Test::Unit::TestCase def test_good_jruby_deps check_deps_pass GoodJRubyBall unless `/usr/bin/which jruby`.chomp.empty? end + + # Only run these next two tests if rubinius is installed. + def test_bad_rubinius_deps + check_deps_fail BadRubiniusBall unless `/usr/bin/which rbx`.chomp.empty? + end + + def test_good_rubinius_deps + check_deps_pass GoodRubiniusBall unless `/usr/bin/which rbx`.chomp.empty? + end + + # Only run these next two tests if chicken scheme is installed. + def test_bad_chicken_deps + check_deps_fail BadChickenBall unless `/usr/bin/which csc`.chomp.empty? + end + + def test_good_chicken_deps + check_deps_pass GoodChickenBall unless `/usr/bin/which csc`.chomp.empty? + end + + # Only run these next two tests if node.js is installed. + def test_bad_node_deps + check_deps_fail BadNodeBall unless `/usr/bin/which node`.chomp.empty? + end + + def test_good_node_deps + check_deps_pass GoodNodeBall unless `/usr/bin/which node`.chomp.empty? + end end |
