aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rwxr-xr-xLibrary/Contributions/cmds/git51
l---------Library/Contributions/cmds/svn1
-rw-r--r--Library/Homebrew/cmd/--env.rb2
-rw-r--r--Library/Homebrew/download_strategy.rb23
4 files changed, 57 insertions, 20 deletions
diff --git a/Library/Contributions/cmds/git b/Library/Contributions/cmds/git
new file mode 100755
index 000000000..7539ecfc0
--- /dev/null
+++ b/Library/Contributions/cmds/git
@@ -0,0 +1,51 @@
+#!/usr/bin/ruby -W0
+# This script because we support $GIT, $HOMEBREW_SVN, etc. and Xcode-only
+# configurations. Order is careful to be what the user would want.
+
+F = File.basename(__FILE__).freeze
+D = File.expand_path(File.dirname(__FILE__)).freeze
+
+def exec *args
+ # prevent fork-bombs
+ arg0 = if args.size == 1
+ args.first.split(' ')
+ else
+ args
+ end.first
+ return if arg0 =~ /^#{F}/i
+ return if File.expand_path(arg0) == File.expand_path(__FILE__)
+
+ if args[1] == '-print-path' and File.executable? args[0]
+ puts args[0]
+ exit 0
+ else
+ Kernel.exec *args
+ end
+end
+
+case F.downcase
+ when 'git' then %W{HOMEBREW_GIT GIT}
+ when 'svn' then "HOMEBREW_SVN"
+ else []
+end.each do |key|
+ exec ENV[key], *ARGV if ENV[key] and File.executable? ENV[key]
+end
+
+brew_version = File.expand_path("#{D}/../../../bin/#{F}")
+exec brew_version, *ARGV if File.executable? brew_version
+
+`/usr/bin/which -a #{F} 2>/dev/null`.split("\n").each do |path|
+ exec path, *ARGV
+end
+
+# xcrun hangs if xcode-select is set to "/"
+path = `/usr/bin/xcode-select -print-path 2>/dev/null`.chomp
+if path != "/"
+ path = `/usr/bin/xcrun -find #{F} 2>/dev/null`.chomp
+ exec path, *ARGV if File.executable? path
+end
+
+path = "/Applications/Xcode.app/Contents/Developer/usr/bin/#{F}"
+exec path, *ARGV if File.executable? path
+
+abort "You must: brew install #{F}"
diff --git a/Library/Contributions/cmds/svn b/Library/Contributions/cmds/svn
new file mode 120000
index 000000000..0899c2993
--- /dev/null
+++ b/Library/Contributions/cmds/svn
@@ -0,0 +1 @@
+git \ No newline at end of file
diff --git a/Library/Homebrew/cmd/--env.rb b/Library/Homebrew/cmd/--env.rb
index df458fc87..f45386d0c 100644
--- a/Library/Homebrew/cmd/--env.rb
+++ b/Library/Homebrew/cmd/--env.rb
@@ -23,7 +23,7 @@ module Homebrew extend self
CMAKE_PREFIX_PATH CMAKE_INCLUDE_PATH CMAKE_FRAMEWORK_PATH MAKEFLAGS
MACOSX_DEPLOYMENT_TARGET PKG_CONFIG_PATH HOMEBREW_BUILD_FROM_SOURCE
HOMEBREW_DEBUG HOMEBREW_MAKE_JOBS HOMEBREW_VERBOSE HOMEBREW_USE_CLANG
- HOMEBREW_USE_GCC HOMEBREW_USE_LLVM HOMEBREW_SVN
+ HOMEBREW_USE_GCC HOMEBREW_USE_LLVM HOMEBREW_SVN HOMEBREW_GIT
MAKE GIT CPP
ACLOCAL_PATH OBJC PATH ].select{ |key| env[key] }
end
diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb
index bd7512a36..68a91d0a4 100644
--- a/Library/Homebrew/download_strategy.rb
+++ b/Library/Homebrew/download_strategy.rb
@@ -210,7 +210,7 @@ end
class SubversionDownloadStrategy < AbstractDownloadStrategy
def initialize name, package
super
- @@svn ||= find_svn
+ @@svn ||= 'svn'
@unique_token="#{name}--svn" unless name.to_s.empty? or name == '__UNKNOWN__'
@unique_token += "-HEAD" if ARGV.include? '--HEAD'
@co=HOMEBREW_CACHE+@unique_token
@@ -269,20 +269,12 @@ class SubversionDownloadStrategy < AbstractDownloadStrategy
args << '--ignore-externals' if ignore_externals
quiet_safe_system(*args)
end
-
- # Try HOMEBREW_SVN, a Homebrew-built svn, and finally the OS X system svn.
- # Not all features are available in the 10.5 system-provided svn.
- def find_svn
- return ENV['HOMEBREW_SVN'] if ENV['HOMEBREW_SVN']
- return "#{HOMEBREW_PREFIX}/bin/svn" if File.exist? "#{HOMEBREW_PREFIX}/bin/svn"
- return MacOS.locate 'svn'
- end
end
# Require a newer version of Subversion than 1.4.x (Leopard-provided version)
class StrictSubversionDownloadStrategy < SubversionDownloadStrategy
def find_svn
- exe = super
+ exe = `svn -print-path`
`#{exe} --version` =~ /version (\d+\.\d+(\.\d+)*)/
svn_version = $1
version_tuple=svn_version.split(".").collect {|v|Integer(v)}
@@ -316,7 +308,7 @@ end
class GitDownloadStrategy < AbstractDownloadStrategy
def initialize name, package
super
- @@git ||= find_git
+ @@git ||= 'git'
@unique_token="#{name}--git" unless name.to_s.empty? or name == '__UNKNOWN__'
@clone=HOMEBREW_CACHE+@unique_token
end
@@ -334,7 +326,7 @@ class GitDownloadStrategy < AbstractDownloadStrategy
end
def fetch
- raise "You must install Git: brew install git" unless which "git"
+ raise "You must: brew install git" unless which "git"
ohai "Cloning #{@url}"
@@ -405,13 +397,6 @@ class GitDownloadStrategy < AbstractDownloadStrategy
end
end
end
-
- # Try GIT, a Homebrew-built Git, and finally the OS X system Git.
- def find_git
- return ENV['GIT'] if ENV['GIT']
- return "#{HOMEBREW_PREFIX}/bin/git" if File.exist? "#{HOMEBREW_PREFIX}/bin/git"
- return MacOS.locate 'git'
- end
end
class CVSDownloadStrategy < AbstractDownloadStrategy