homebrew-core/Formula/git.rb
Dominyk Tiller 88de02367c git: fix broken svn option if no swig exists prior.
Resolves the bug where installing Git with brewed-svn wouldn't
automatically drag in the required Swig dependency and consequently
the build would instantly error out.

The error itself could be with the subversion formulae or Homebrew
itself, and this may just be a workaround. Given building git
with-brewed-svn specifies svn with perl, it should trigger a swig
download automatically prior to attempting to install the svn dep,
but for some reason it doesn't.

Both from-source and from-bottle installs error out in the same way:

```
==> Installing git dependency: subversion
Error: /usr/local/opt/swig not present or broken
Please reinstall swig. Sorry :(
```

For now, have resolved this bug by dragging in an explicit swig
dependency prior to the subversion one, if you choose to install
with-brewed-svn.

Closes Homebrew/homebrew#34554.

Closes Homebrew/homebrew#34576.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
2014-12-01 08:11:01 +00:00

156 lines
5.4 KiB
Ruby

require "formula"
class Git < Formula
homepage "http://git-scm.com"
url "https://www.kernel.org/pub/software/scm/git/git-2.2.0.tar.gz"
sha1 "b59ad3f9e9c933960b064e31d793757c145be83a"
head "https://github.com/git/git.git", :shallow => false
bottle do
revision 1
sha1 "9ccd3c8fd1bbc3697f96163c326e3451407ea72e" => :yosemite
sha1 "9cf798dacba7ee99d4fe5f1e76c65a7bc24b9f30" => :mavericks
sha1 "3f7838b0b24817db03266014bf23f7584c92a9ad" => :mountain_lion
end
resource "man" do
url "https://www.kernel.org/pub/software/scm/git/git-manpages-2.2.0.tar.gz"
sha1 "6d068b6526ef035f48505894de7452df22e6ed40"
end
resource "html" do
url "https://www.kernel.org/pub/software/scm/git/git-htmldocs-2.2.0.tar.gz"
sha1 "fef0a1944d9d94d5a97e2dae3e53b9818af7973d"
end
option "with-blk-sha1", "Compile with the block-optimized SHA1 implementation"
option "without-completions", "Disable bash/zsh completions from 'contrib' directory"
option "with-brewed-openssl", "Build with Homebrew OpenSSL instead of the system version"
option "with-brewed-curl", "Use Homebrew's version of cURL library"
option "with-brewed-svn", "Use Homebrew's version of SVN"
option "with-persistent-https", "Build git-remote-persistent-https from 'contrib' directory"
depends_on "pcre" => :optional
depends_on "gettext" => :optional
depends_on "openssl" if build.with? "brewed-openssl"
depends_on "curl" if build.with? "brewed-curl"
depends_on "go" => :build if build.with? "persistent-https"
# Trigger an install of swig before subversion, as the "swig" doesn't get pulled in otherwise
# See https://github.com/Homebrew/homebrew/issues/34554
if build.with? "brewed-svn"
depends_on "swig"
depends_on "subversion" => "perl"
end
def install
# If these things are installed, tell Git build system to not use them
ENV["NO_FINK"] = "1"
ENV["NO_DARWIN_PORTS"] = "1"
ENV["V"] = "1" # build verbosely
ENV["NO_R_TO_GCC_LINKER"] = "1" # pass arguments to LD correctly
ENV["PYTHON_PATH"] = which "python"
ENV["PERL_PATH"] = which "perl"
perl_version = /\d\.\d+/.match(`perl --version`)
if build.with? "brewed-svn"
ENV["PERLLIB_EXTRA"] = "#{Formula["subversion"].prefix}/Library/Perl/#{perl_version}/darwin-thread-multi-2level"
elsif MacOS.version >= :mavericks
ENV["PERLLIB_EXTRA"] = %W{
#{MacOS.active_developer_dir}
/Library/Developer/CommandLineTools
/Applications/Xcode.app/Contents/Developer
}.uniq.map { |p|
"#{p}/Library/Perl/#{perl_version}/darwin-thread-multi-2level"
}.join(":")
end
unless quiet_system ENV["PERL_PATH"], "-e", "use ExtUtils::MakeMaker"
ENV["NO_PERL_MAKEMAKER"] = "1"
end
ENV["BLK_SHA1"] = "1" if build.with? "blk-sha1"
if build.with? "pcre"
ENV["USE_LIBPCRE"] = "1"
ENV["LIBPCREDIR"] = Formula["pcre"].opt_prefix
end
ENV["NO_GETTEXT"] = "1" if build.without? "gettext"
ENV["GIT_DIR"] = cached_download/".git" if build.head?
system "make", "prefix=#{prefix}",
"sysconfdir=#{etc}",
"CC=#{ENV.cc}",
"CFLAGS=#{ENV.cflags}",
"LDFLAGS=#{ENV.ldflags}",
"install"
# Install the OS X keychain credential helper
cd "contrib/credential/osxkeychain" do
system "make", "CC=#{ENV.cc}",
"CFLAGS=#{ENV.cflags}",
"LDFLAGS=#{ENV.ldflags}"
bin.install "git-credential-osxkeychain"
system "make", "clean"
end
# Install git-subtree
cd "contrib/subtree" do
system "make", "CC=#{ENV.cc}",
"CFLAGS=#{ENV.cflags}",
"LDFLAGS=#{ENV.ldflags}"
bin.install "git-subtree"
end
if build.with? "persistent-https"
cd "contrib/persistent-https" do
system "make"
bin.install "git-remote-persistent-http",
"git-remote-persistent-https",
"git-remote-persistent-https--proxy"
end
end
if build.with? "completions"
# install the completion script first because it is inside "contrib"
bash_completion.install "contrib/completion/git-completion.bash"
bash_completion.install "contrib/completion/git-prompt.sh"
zsh_completion.install "contrib/completion/git-completion.zsh" => "_git"
cp "#{bash_completion}/git-completion.bash", zsh_completion
end
(share+"git-core").install "contrib"
# We could build the manpages ourselves, but the build process depends
# on many other packages, and is somewhat crazy, this way is easier.
man.install resource("man")
(share+"doc/git-doc").install resource("html")
# Make html docs world-readable
chmod 0644, Dir["#{share}/doc/git-doc/**/*.{html,txt}"]
chmod 0755, Dir["#{share}/doc/git-doc/{RelNotes,howto,technical}"]
# To avoid this feature hooking into the system OpenSSL, remove it.
# If you need it, install git --with-brewed-openssl.
rm "#{libexec}/git-core/git-imap-send" if build.without? "brewed-openssl"
end
def caveats; <<-EOS.undent
The OS X keychain credential helper has been installed to:
#{HOMEBREW_PREFIX}/bin/git-credential-osxkeychain
The "contrib" directory has been installed to:
#{HOMEBREW_PREFIX}/share/git-core/contrib
EOS
end
test do
HOMEBREW_REPOSITORY.cd do
assert_equal "bin/brew", `#{bin}/git ls-files -- bin`.strip
end
end
end