From fdaa267fb92e1652865083e1be11db06e8c94361 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Thu, 10 Sep 2009 14:11:04 +0100 Subject: [PATCH] Don't install dependencies that are already installed --- Library/Homebrew/brew.h.rb | 3 ++- bin/brew | 33 +++++++++++++++++++-------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb index 496e7afc06..de5048cc3f 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 6ce18a4ac9..b09c957b8a 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 - end - true + 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 + 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'