Adds: depends_on 'simplejson' => :python
So far we only added python, but we can add more. Fixes Homebrew/homebrew#401
This commit is contained in:
parent
df79d74e13
commit
9f871c9955
@ -289,6 +289,10 @@ class Formula
|
||||
self.class.deps or []
|
||||
end
|
||||
|
||||
def external_deps
|
||||
self.class.external_deps
|
||||
end
|
||||
|
||||
protected
|
||||
# Pretty titles the command and buffers stdout/stderr
|
||||
# Throws if there's an error
|
||||
@ -460,7 +464,7 @@ private
|
||||
end
|
||||
end
|
||||
|
||||
attr_rw :url, :version, :homepage, :specs, :deps, :aliases, *CHECKSUM_TYPES
|
||||
attr_rw :url, :version, :homepage, :specs, :deps, :external_deps, :aliases, *CHECKSUM_TYPES
|
||||
|
||||
def head val=nil, specs=nil
|
||||
if specs
|
||||
@ -474,26 +478,31 @@ private
|
||||
args.each { |item| @aliases << item.to_s }
|
||||
end
|
||||
|
||||
def depends_on name, *args
|
||||
def depends_on name
|
||||
@deps ||= []
|
||||
@external_deps ||= {:python => [], :ruby => [], :perl => []}
|
||||
|
||||
case name
|
||||
when String
|
||||
# noop
|
||||
when Hash
|
||||
name = name.keys.first # indeed, we only support one mapping
|
||||
key, value = name.shift
|
||||
case value
|
||||
when :python, :ruby, :perl
|
||||
@external_deps[value] << key
|
||||
return
|
||||
when :optional, :recommended
|
||||
name = key
|
||||
end
|
||||
when Symbol
|
||||
name = name.to_s
|
||||
when Formula
|
||||
@deps << name
|
||||
return # we trust formula dev to not dupe their own instantiations
|
||||
# noop
|
||||
else
|
||||
raise "Unsupported type #{name.class}"
|
||||
end
|
||||
|
||||
# we get duplicates because every new fork of this process repeats this
|
||||
# step for some reason I am not sure about
|
||||
@deps << name unless @deps.include? name
|
||||
@deps << name
|
||||
end
|
||||
|
||||
def skip_clean paths
|
||||
|
||||
@ -20,10 +20,27 @@ class FormulaInstaller
|
||||
end
|
||||
deps
|
||||
end
|
||||
def pyerr dep
|
||||
brew_pip = ' brew install pip &&' unless Formula.factory('pip').installed?
|
||||
<<-EOS
|
||||
Unsatisfied dependency, #{dep}
|
||||
Homebrew does not provide formula for Python dependencies, pip does:
|
||||
|
||||
def install f
|
||||
#{brew_pip} pip install #{dep}
|
||||
|
||||
EOS
|
||||
end
|
||||
|
||||
def check_external_deps f
|
||||
f.external_deps[:python].each do |dep|
|
||||
raise pyerr(dep) unless quiet_system "/usr/bin/python", "-c", "import #{dep}"
|
||||
end if f.external_deps
|
||||
end
|
||||
|
||||
def install f
|
||||
expand_deps(f).each do |dep|
|
||||
begin
|
||||
check_external_deps f
|
||||
install_private dep unless dep.installed?
|
||||
rescue
|
||||
#TODO continue if this is an optional dep
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user