aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Howell2009-09-10 14:11:04 +0100
committerMax Howell2009-09-10 19:23:03 +0100
commitfcd62ce1eb8ac4ed775515f7e877946a62508d65 (patch)
tree804513c087ec8fa6742dfcbd7f386b1c5dfe4b38
parentd366b28923ed31aafe914a3f27873b2b7605e903 (diff)
downloadhomebrew-fcd62ce1eb8ac4ed775515f7e877946a62508d65.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'