aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Howell2009-09-10 14:11:04 +0100
committerMax Howell2009-09-10 19:23:03 +0100
commitfdaa267fb92e1652865083e1be11db06e8c94361 (patch)
tree13152933d452d9ff9c3121a3921fab99793af1a0
parent0a31190fdca5fd8619263e66212d74d4c2f56a74 (diff)
downloadbrew-fdaa267fb92e1652865083e1be11db06e8c94361.tar.bz2
Don't install dependencies that are already installed
-rw-r--r--Library/Homebrew/brew.h.rb3
-rwxr-xr-xbin/brew31
2 files changed, 20 insertions, 14 deletions
diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb
index 496e7afc0..de5048cc3 100644
--- a/Library/Homebrew/brew.h.rb
+++ b/Library/Homebrew/brew.h.rb
@@ -155,7 +155,7 @@ def expand_deps fae
f.deps.each do |name|
f = Formula.factory name
deps << expand_deps(f) if f.deps # hideous inefficient
- deps << f
+ deps << f unless f.installed?
end
when Hash
# TODO implement optional and recommended
@@ -166,6 +166,7 @@ def expand_deps fae
end
deps << f
end
+
# TODO much more efficient to use a set and not recurse stuff already done
return deps.flatten.uniq
end
diff --git a/bin/brew b/bin/brew
index 6ce18a4ac..b09c957b8 100755
--- a/bin/brew
+++ b/bin/brew
@@ -91,23 +91,28 @@ begin
end
end
- unless system "which #{ENV['CC'] or 'cc'} &> /dev/null" and $?.success?
- raise "We cannot find a c compiler, have you installed the latest Xcode?"
- end
-
- fae = ARGV.formulae.reject do |f|
- if f.installed? and not ARGV.force?
- message = "Formula already installed: #{f.prefix}"
- if ARGV.formulae.count > 1
- opoo message
- else
- puts message # if only one is being installed a warning looks severe
+ unless ARGV.force?
+ unless system "which #{ENV['CC'] or 'cc'} &> /dev/null" and $?.success?
+ raise "We cannot find a c compiler, have you installed the latest Xcode?"
+ end
+ fae = ARGV.formulae.reject do |f|
+ if f.installed?
+ message = "Formula already installed: #{f.prefix}"
+ if ARGV.formulae.count > 1
+ opoo message
+ else
+ puts message # if only one is being installed a warning looks severe
+ end
+ true
end
- true
end
+ exit 0 if fae.empty?
+ else
+ fae=ARGV.formulae
end
- fae=expand_deps ARGV.formulae
+ # the resulting order will be optimal for super-deps and deps
+ fae=expand_deps fae
require 'beer_events'