diff --git a/Library/Contributions/examples/brew-missing.rb b/Library/Contributions/examples/brew-missing.rb index b3f2875412c1..50fae12e4ea0 100755 --- a/Library/Contributions/examples/brew-missing.rb +++ b/Library/Contributions/examples/brew-missing.rb @@ -29,7 +29,7 @@ def main unless missing_deps.empty? print "#{f.name}: " if formulae_to_check.size > 1 - puts "#{missing_deps * ', '}" + puts "#{missing_deps * ' '}" end end end diff --git a/Library/Formula/android-sdk.rb b/Library/Formula/android-sdk.rb index e2dc71a755fa..44c7f56e863c 100644 --- a/Library/Formula/android-sdk.rb +++ b/Library/Formula/android-sdk.rb @@ -7,7 +7,7 @@ class AndroidSdk < Formula version 'r16' def self.var_dirs - %w[platforms samples temp add-ons bin] + %w[platforms samples temp add-ons] # TODO docs, google-market_licensing and platform-tools # See the long comment below for the associated problems end @@ -60,13 +60,10 @@ def caveats; <<-EOS.undent EOS end - # The `android' tool insists on deleting /usr/local/Cellar/android-sdl/rx/platform-tools + # The `android' tool insists on deleting #{prefix}/platform-tools # and then installing the new one. So it is impossible for us to redirect # the SDK location to var so that the platform-tools don't have to be - # freshly installed EVERY FUCKING time the base SDK updates. - # My disgust at Google's ineptitude here knows NO bounds. I can only LOL. - # And I do LOL. A lot. In Google's general direction. I can't stop LOLing. - # In fact, I may have LOLd myself into insanity. + # freshly installed EVERY DANG time the base SDK updates. # Ideas: make android a script that calls the actual android tool, but after # that tool exits it repairs the directory locations? diff --git a/Library/Formula/aria2.rb b/Library/Formula/aria2.rb index 2490a932e978..bc99325dcb16 100644 --- a/Library/Formula/aria2.rb +++ b/Library/Formula/aria2.rb @@ -1,10 +1,11 @@ require 'formula' class Aria2 < Formula - url 'http://downloads.sourceforge.net/project/aria2/stable/aria2-1.14.1/aria2-1.14.1.tar.bz2' - md5 '3a23844ab3e1460eb7e6dac9b5dd798c' - homepage 'http://aria2.sourceforge.net/' + url 'http://downloads.sourceforge.net/project/aria2/stable/aria2-1.14.2/aria2-1.14.2.tar.bz2' + md5 '19b1a9f83a09c6ef5c7ab87e4e0f7974' + + depends_on 'pkg-config' => :build def install system "./configure", "--disable-dependency-tracking", diff --git a/Library/Formula/asymptote.rb b/Library/Formula/asymptote.rb index 07907c96a338..19b536be7850 100644 --- a/Library/Formula/asymptote.rb +++ b/Library/Formula/asymptote.rb @@ -1,7 +1,5 @@ require 'formula' -def TeX_installed?; return `which latex`.chomp != ''; end - class Asymptote < Formula homepage 'http://asymptote.sourceforge.net/' url 'http://downloads.sourceforge.net/asymptote/asymptote-2.15.src.tgz' @@ -11,7 +9,7 @@ class Asymptote < Formula depends_on 'bdw-gc' def install - unless TeX_installed? + unless which 'latex' onoe <<-EOS.undent Asymptote requires a TeX/LaTeX installation; aborting now. You can obtain the TeX distribution for Mac OS X from diff --git a/Library/Formula/attica.rb b/Library/Formula/attica.rb deleted file mode 100644 index 08ddf82633c7..000000000000 --- a/Library/Formula/attica.rb +++ /dev/null @@ -1,14 +0,0 @@ -require 'formula' - -class Attica < Formula - homepage 'http://www.kde.org/' - url 'ftp://ftp.kde.org/pub/kde/stable/attica/attica-0.2.0.tar.bz2' - md5 'df3dcea0229cfa31539bdd427976e15b' - - depends_on 'cmake' => :build - - def install - system "cmake #{std_cmake_parameters} ." - system "make install" - end -end diff --git a/Library/Formula/auctex.rb b/Library/Formula/auctex.rb index bd500f3bf7a9..d36b3df3c354 100644 --- a/Library/Formula/auctex.rb +++ b/Library/Formula/auctex.rb @@ -21,8 +21,7 @@ def which_emacs end def install - # based on the asymtote formula LaTeX check - if `which latex`.chomp == '' + unless which 'latex' onoe <<-EOS.undent AUCTeX requires a TeX/LaTeX installation; aborting now. You can obtain the TeX distribution for Mac OS X from diff --git a/Library/Formula/auto-scaling.rb b/Library/Formula/auto-scaling.rb index b590727a9052..f0bb931b5e08 100644 --- a/Library/Formula/auto-scaling.rb +++ b/Library/Formula/auto-scaling.rb @@ -1,8 +1,5 @@ require 'formula' -# Require ec2-api-tools to get the base class -require "#{File.dirname __FILE__}/ec2-api-tools.rb" - class AutoScaling < AmazonWebServicesFormula version '1.0.49.1' homepage 'http://aws.amazon.com/developertools/2535' diff --git a/Library/Formula/automake.rb b/Library/Formula/automake.rb index f2ed853979e4..fcbb3808f1f5 100644 --- a/Library/Formula/automake.rb +++ b/Library/Formula/automake.rb @@ -16,9 +16,10 @@ def install system "./configure", "--prefix=#{prefix}" system "make install" + # our aclocal must go first: https://github.com/mxcl/homebrew/issues/10618 (share/"aclocal/dirlist").write <<-EOS.undent - /usr/share/aclocal #{HOMEBREW_PREFIX}/share/aclocal + /usr/share/aclocal EOS end diff --git a/Library/Formula/aws-cfn-tools.rb b/Library/Formula/aws-cfn-tools.rb index c7b1fbaa3ffd..5b70af404ce4 100644 --- a/Library/Formula/aws-cfn-tools.rb +++ b/Library/Formula/aws-cfn-tools.rb @@ -1,8 +1,5 @@ require 'formula' -# Require ec2-api-tools to get the base class -require "#{File.dirname __FILE__}/ec2-api-tools.rb" - class AwsCfnTools < AmazonWebServicesFormula homepage 'http://aws.amazon.com/developertools/AWS-CloudFormation/2555753788650372' url 'https://s3.amazonaws.com/cloudformation-cli/AWSCloudFormation-cli.zip' diff --git a/Library/Formula/aws-elasticache.rb b/Library/Formula/aws-elasticache.rb index 6609fb954c88..1e95428ab607 100644 --- a/Library/Formula/aws-elasticache.rb +++ b/Library/Formula/aws-elasticache.rb @@ -1,8 +1,5 @@ require 'formula' -# Require ec2-api-tools to get the base class -require "#{File.dirname __FILE__}/ec2-api-tools.rb" - class AwsElasticache < AmazonWebServicesFormula homepage 'http://aws.amazon.com/developertools/2310261897259567' url 'https://s3.amazonaws.com/elasticache-downloads/AmazonElastiCacheCli-2011-07-15-1.5.000.zip' diff --git a/Library/Formula/aws-iam-tools.rb b/Library/Formula/aws-iam-tools.rb index 06ad76ba5d22..b93c9eba5245 100644 --- a/Library/Formula/aws-iam-tools.rb +++ b/Library/Formula/aws-iam-tools.rb @@ -1,8 +1,5 @@ require 'formula' -# Require ec2-api-tools to get the base class -require "#{File.dirname __FILE__}/ec2-api-tools.rb" - class AwsIamTools < AmazonWebServicesFormula url 'http://awsiammedia.s3.amazonaws.com/public/tools/cli/latest/IAMCli.zip' homepage 'http://developer.amazonwebservices.com/connect/entry.jspa?externalID=4143&categoryID=322' @@ -13,33 +10,32 @@ def install standard_install end - def caveats - <<-EOS.undent - Before you can use these tools you must export some variables to your $SHELL - and create a file containing your aws credentials. + def caveats; <<-EOS.undent + Before you can use these tools you must export some variables to your $SHELL + and create a file containing your aws credentials. - You can access your AWS access ID and AWS secret key: - http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key + You can access your AWS access ID and AWS secret key: + http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key - You must create the file $HOME/.aws-credentials-master, here is a template: + You must create the file $HOME/.aws-credentials-master, here is a template: - # Enter the AWS Keys without the < or > - # You can either use the AWS Accounts access keys and they can be found at - # http://aws.amazon.com under Account->Security Credentials - # or you can use the access keys of a user created with IAM - AWSAccessKeyId= - AWSSecretKey= + # Enter the AWS Keys without the < or > + # You can either use the AWS Accounts access keys and they can be found at + # http://aws.amazon.com under Account->Security Credentials + # or you can use the access keys of a user created with IAM + AWSAccessKeyId= + AWSSecretKey= - To preserve your credentials don't forget to: - chmod 600 $HOME/.aws-credentials-master + To preserve your credentials don't forget to: + chmod 600 $HOME/.aws-credentials-master - To export the needed variables, add them to your dotfiles. - * On Bash, add them to `~/.bash_profile`. - * On Zsh, add them to `~/.zprofile` instead. + To export the needed variables, add them to your dotfiles. + * On Bash, add them to `~/.bash_profile`. + * On Zsh, add them to `~/.zprofile` instead. - export JAVA_HOME="$(/usr/libexec/java_home)" - export AWS_IAM_HOME="#{prefix}/jars" - export AWS_CREDENTIAL_FILE=$HOME/.aws-credentials-master + export JAVA_HOME="$(/usr/libexec/java_home)" + export AWS_IAM_HOME="#{prefix}/jars" + export AWS_CREDENTIAL_FILE=$HOME/.aws-credentials-master EOS end end diff --git a/Library/Formula/beanstalk.rb b/Library/Formula/beanstalk.rb index 08ab09218619..921ae75c86d3 100644 --- a/Library/Formula/beanstalk.rb +++ b/Library/Formula/beanstalk.rb @@ -1,9 +1,16 @@ require 'formula' class Beanstalk < Formula + homepage 'http://kr.github.com/beanstalkd/' url 'https://github.com/downloads/kr/beanstalkd/beanstalkd-1.5.tar.gz' md5 'd75a0a93e6b80b57fea61136f6da57eb' - homepage 'http://kr.github.com/beanstalkd/' + + # fix cpu use on freebsd and darwin + # bug report: https://github.com/kr/beanstalkd/issues/96 + # Will be in next release + def patches + {:p1 => "http://github.com/kr/beanstalkd/commit/80da772efeeaabb12893f52a93da74ca9e69206d.patch"} + end def install system "make install PREFIX=#{prefix}" diff --git a/Library/Formula/cloud-watch.rb b/Library/Formula/cloud-watch.rb index 048600f515bb..0f6cf8bdb0d5 100644 --- a/Library/Formula/cloud-watch.rb +++ b/Library/Formula/cloud-watch.rb @@ -1,8 +1,5 @@ require 'formula' -# Require ec2-api-tools to get the base class -require "#{File.dirname __FILE__}/ec2-api-tools.rb" - class CloudWatch < AmazonWebServicesFormula version '1.0.12.1' homepage 'http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2534&categoryID=251' diff --git a/Library/Formula/dbslayer.rb b/Library/Formula/dbslayer.rb index 8ddeb4d519aa..2b2e32cb4267 100644 --- a/Library/Formula/dbslayer.rb +++ b/Library/Formula/dbslayer.rb @@ -7,7 +7,7 @@ class Dbslayer < Formula md5 'a529ea503c244d723166f78c75df3bb3' def install - unless `/usr/bin/which mysql_config`.size > 0 + unless which 'mysql_config' opoo "No MySQL client library detected" puts "This formula may fail to build, see caveats for more information." end diff --git a/Library/Formula/dotless.rb b/Library/Formula/dotless.rb index 6c5f861065d4..67132e756d52 100644 --- a/Library/Formula/dotless.rb +++ b/Library/Formula/dotless.rb @@ -6,11 +6,12 @@ class Dotless < Formula md5 "dd06170b2e6a8f943f715977cfcd254d" def install - mono_path = `/usr/bin/which mono`.strip - if mono_path.size == 0 + mono_path = which 'mono' + unless mono_path opoo "mono not found in path" puts "You need to install Mono to run this software:" puts "http://www.go-mono.com/mono-downloads/download.html" + exit 1 end (bin+'dotless').write <<-EOF.undent diff --git a/Library/Formula/easy-tag.rb b/Library/Formula/easy-tag.rb index fdcd066b246b..4d453aafcc1f 100644 --- a/Library/Formula/easy-tag.rb +++ b/Library/Formula/easy-tag.rb @@ -1,23 +1,23 @@ require 'formula' class EasyTag < Formula - url 'http://archive.ubuntu.com/ubuntu/pool/universe/e/easytag/easytag_2.1.6.orig.tar.gz' - homepage 'http://easytag.sf.net' - md5 '91b57699ac30c1764af33cc389a64c71' + homepage 'http://easytag.sourceforge.net' + url 'http://sourceforge.net/projects/easytag/files/easytag%20%28gtk%202%29/2.1/easytag-2.1.7.tar.bz2' + md5 '9df3e800d80e754670642f2ba5e03539' depends_on 'pkg-config' => :build depends_on 'glib' depends_on 'gtk+' - depends_on 'id3lib' depends_on 'libid3tag' - depends_on 'mp4v2' + depends_on 'id3lib' => :optional + depends_on 'libvorbis' => :optional + depends_on 'speex' => :optional + depends_on 'flac' => :optional + depends_on 'mp4v2' => :optional + depends_on 'wavpack' => :optional def install - # Use mp4v2 instead of mp4 - inreplace ['configure', 'src/mp4_header.c', 'src/mp4_tag.c'], - "#include ", "#include " - - system "./configure", "--disable-debug", "--disable-dependency-tracking", + system "./configure", "--disable-dependency-tracking", "--prefix=#{prefix}" system "make" ENV.deparallelize # make install fails in parallel diff --git a/Library/Formula/ec2-ami-tools.rb b/Library/Formula/ec2-ami-tools.rb index 656298cc9be4..3ca720900ae9 100644 --- a/Library/Formula/ec2-ami-tools.rb +++ b/Library/Formula/ec2-ami-tools.rb @@ -1,8 +1,5 @@ require 'formula' -# Require ec2-api-tools to get the base class -require "#{File.dirname __FILE__}/ec2-api-tools.rb" - class Ec2AmiTools < AmazonWebServicesFormula homepage 'http://developer.amazonwebservices.com/connect/entry.jspa?externalID=368' url 'http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.3-45758.zip' diff --git a/Library/Formula/ec2-api-tools.rb b/Library/Formula/ec2-api-tools.rb index d179ae5c622b..58fbc8db8c60 100644 --- a/Library/Formula/ec2-api-tools.rb +++ b/Library/Formula/ec2-api-tools.rb @@ -1,44 +1,5 @@ require 'formula' -# This formula serves as the base class for several very similar -# formulae for Amazon Web Services related tools. - -class AmazonWebServicesFormula < Formula - # Use this method to peform a standard install for Java-based tools, - # keeping the .jars out of HOMEBREW_PREFIX/lib - def standard_install - rm Dir['bin/*.cmd'] # Remove Windows versions - prefix.install "bin" - # Put the .jars in prefix/jars/lib, which isn't linked to the Cellar - # This will prevent conflicts with other versions of these jars. - (prefix+'jars').install 'lib' - (prefix+'jars/bin').make_symlink '../bin' - end - - # Use this method to generate standard caveats. - def standard_instructions var_name, var_value=prefix+'jars' - <<-EOS.undent - Before you can use these tools you must export some variables to your $SHELL - and download your X.509 certificate and private key from Amazon Web Services. - - Your certificate and private key are available at: - http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key - - Download two ".pem" files, one starting with `pk-`, and one starting with `cert-`. - You need to put both into a folder in your home directory, `~/.ec2`. - - To export the needed variables, add them to your dotfiles. - * On Bash, add them to `~/.bash_profile`. - * On Zsh, add them to `~/.zprofile` instead. - - export JAVA_HOME="$(/usr/libexec/java_home)" - export EC2_PRIVATE_KEY="$(/bin/ls $HOME/.ec2/pk-*.pem)" - export EC2_CERT="$(/bin/ls $HOME/.ec2/cert-*.pem)" - export #{var_name}="#{var_value}" - EOS - end -end - class Ec2ApiTools < AmazonWebServicesFormula homepage 'http://aws.amazon.com/developertools/351' url 'http://ec2-downloads.s3.amazonaws.com/ec2-api-tools-1.5.2.3.zip' diff --git a/Library/Formula/elb-tools.rb b/Library/Formula/elb-tools.rb index 8a0abfd3c7d0..2c757ff3560d 100644 --- a/Library/Formula/elb-tools.rb +++ b/Library/Formula/elb-tools.rb @@ -1,8 +1,5 @@ require 'formula' -# Require ec2-api-tools to get the base class -require "#{File.dirname __FILE__}/ec2-api-tools.rb" - class ElbTools < AmazonWebServicesFormula homepage 'http://developer.amazonwebservices.com/connect/entry.jspa?categoryID=251&externalID=2536' url 'http://ec2-downloads.s3.amazonaws.com/ElasticLoadBalancing.zip' diff --git a/Library/Formula/fantom.rb b/Library/Formula/fantom.rb index 8d092d180535..6cd07c1f3eac 100644 --- a/Library/Formula/fantom.rb +++ b/Library/Formula/fantom.rb @@ -2,8 +2,8 @@ class Fantom < Formula homepage 'http://fantom.org' - url 'http://fan.googlecode.com/files/fantom-1.0.61.zip' - md5 '4ead834efae383be885401a747edc6af' + url 'http://fan.googlecode.com/files/fantom-1.0.62.zip' + md5 '253acd05563b58b41f8381435586e3d6' def options [['--with-src', 'Also install fantom source'], @@ -15,8 +15,8 @@ def install rm_rf "examples" unless ARGV.include? '--with-examples' rm_rf "src" unless ARGV.include? '--with-src' - libexec.install Dir['*'] - + libexec.install Dir['*'] + system "chmod 0755 #{libexec}/bin/*" bin.install_symlink Dir["#{libexec}/bin/*"] end end diff --git a/Library/Formula/fftw.rb b/Library/Formula/fftw.rb index 9fc39547d8a6..655c0e80f0cd 100644 --- a/Library/Formula/fftw.rb +++ b/Library/Formula/fftw.rb @@ -13,7 +13,7 @@ def install "--disable-dependency-tracking"] # check for gfortran - args << "--disable-fortran" if `/usr/bin/which gfortran`.chomp.empty? + args << "--disable-fortran" unless which 'gfortran' # single precision # enable-sse only works with single diff --git a/Library/Formula/git-flow.rb b/Library/Formula/git-flow.rb index b4536bed5d2f..6f852b3516f5 100644 --- a/Library/Formula/git-flow.rb +++ b/Library/Formula/git-flow.rb @@ -22,6 +22,7 @@ def install GitFlowCompletion.new.brew do (prefix+'etc/bash_completion.d').install "git-flow-completion.bash" + (share+'zsh/functions').install "git-flow-completion.zsh" end end end diff --git a/Library/Formula/git-hg.rb b/Library/Formula/git-hg.rb index ac2a4b6d9e2f..153062fee812 100644 --- a/Library/Formula/git-hg.rb +++ b/Library/Formula/git-hg.rb @@ -5,7 +5,7 @@ class GitHg < Formula homepage 'http://offbytwo.com/git-hg/' def install - unless `/usr/bin/which hg`.size > 0 + unless which 'hg' puts "You may need to install Mercurial before using this software:" puts " brew install mercurial" end diff --git a/Library/Formula/git.rb b/Library/Formula/git.rb index cb9bf96b8406..411514cd0b45 100644 --- a/Library/Formula/git.rb +++ b/Library/Formula/git.rb @@ -32,7 +32,7 @@ def install ENV['NO_R_TO_GCC_LINKER'] = '1' # pass arguments to LD correctly ENV['NO_GETTEXT'] = '1' # workaround for users of perlbrew - ENV['PERL_PATH'] = `/usr/bin/which perl`.chomp + ENV['PERL_PATH'] = which 'perl' # Clean XCode 4.x installs don't include Perl MakeMaker ENV['NO_PERL_MAKEMAKER']='1' if MacOS.lion? diff --git a/Library/Formula/groovy.rb b/Library/Formula/groovy.rb index 9adf3718c62f..512047ad55ee 100644 --- a/Library/Formula/groovy.rb +++ b/Library/Formula/groovy.rb @@ -11,7 +11,7 @@ def install rm_f Dir["bin/*.bat","bin/groovy.{icns,ico}"] prefix.install %w{ LICENSE.txt NOTICE.txt } - libexec.install %w[bin conf lib] + libexec.install %w[bin conf lib embeddable] bin.install_symlink Dir["#{libexec}/bin/*"] end diff --git a/Library/Formula/kde-phonon.rb b/Library/Formula/kde-phonon.rb deleted file mode 100644 index 691b1c2bd9fc..000000000000 --- a/Library/Formula/kde-phonon.rb +++ /dev/null @@ -1,21 +0,0 @@ -require 'formula' - -class KdePhonon < Formula - homepage 'http://phonon.kde.org/' - url 'ftp://ftp.kde.org/pub/kde/stable/phonon/4.5.0/src/phonon-4.5.0.tar.bz2' - md5 '32f8d388c18fde2e23dea7bb103f9713' - - depends_on 'cmake' => :build - depends_on 'automoc4' => :build - depends_on 'qt' - depends_on 'glib' => :build - - keg_only "This package is already supplied by Qt and is only needed by KDE packages." - - def install - inreplace 'cmake/FindPhononInternal.cmake', - 'BAD_ALLOCATOR AND NOT WIN32', 'BAD_ALLOCATOR AND NOT APPLE' - system "cmake #{std_cmake_parameters} ." - system "make install" - end -end diff --git a/Library/Formula/kdebase-runtime.rb b/Library/Formula/kdebase-runtime.rb deleted file mode 100644 index 476e01358b23..000000000000 --- a/Library/Formula/kdebase-runtime.rb +++ /dev/null @@ -1,17 +0,0 @@ -require 'formula' - -class KdebaseRuntime < Formula - homepage 'http://www.kde.org/' - url 'ftp://ftp.kde.org/pub/kde/stable/4.6.0/src/kdebase-runtime-4.6.0.tar.bz2' - md5 '1f9d6bc64d7b84a74dd3ab06615c71ce' - - depends_on 'cmake' => :build - depends_on 'kde-phonon' - depends_on 'oxygen-icons' - - def install - phonon = Formula.factory 'kde-phonon' - system "cmake #{std_cmake_parameters} -DPHONON_INCLUDE_DIR=#{phonon.include} -DPHONON_LIBRARY=#{phonon.lib}/libphonon.dylib -DBUNDLE_INSTALL_DIR=#{bin} ." - system "make install" - end -end diff --git a/Library/Formula/kdelibs.rb b/Library/Formula/kdelibs.rb deleted file mode 100644 index 1dc8bb01708b..000000000000 --- a/Library/Formula/kdelibs.rb +++ /dev/null @@ -1,41 +0,0 @@ -require 'formula' - -class Kdelibs < Formula - homepage 'http://www.kde.org/' - url 'ftp://www.mirrorservice.org/sites/ftp.kde.org/pub/kde/stable/4.6.0/src/kdelibs-4.6.0.tar.bz2' - md5 '9ee32f375809a42a4a8d512bd06a612b' - - depends_on 'cmake' => :build - depends_on 'automoc4' => :build - depends_on 'gettext' - depends_on 'pcre' - depends_on 'jpeg' - depends_on 'giflib' - depends_on 'strigi' - depends_on 'soprano' - depends_on 'shared-desktop-ontologies' - depends_on 'shared-mime-info' - depends_on 'attica' - depends_on 'docbook' - depends_on 'd-bus' - depends_on 'qt' - depends_on 'libdbusmenu-qt' - - def patches - # To fix https://bugs.kde.org/show_bug.cgi?id=209903. Committed upstream. - "https://projects.kde.org/projects/kde/kdelibs/repository/revisions/f04c3a64885c652ab3dfb6f5dd2106409b027360/diff.diff" - "https://projects.kde.org/projects/kde/kdelibs/repository/revisions/19f4bf0c212a28e79ef9b8d0cb35068951e58a85/diff.diff" - end - - def install - ENV.x11 - gettext_prefix = Formula.factory('gettext').prefix - docbook_prefix = Formula.factory('docbook').prefix - docbook_dtd = "#{docbook_prefix}/docbook/xml/4.5" - docbook_xsl = Dir.glob("#{docbook_prefix}/docbook/xsl/*").first - mkdir 'build' do - system "cmake #{std_cmake_parameters} -DCMAKE_PREFIX_PATH=#{gettext_prefix} -DDOCBOOKXML_CURRENTDTD_DIR=#{docbook_dtd} -DDOCBOOKXSL_DIR=#{docbook_xsl} -DBUILD_doc=FALSE -DBUNDLE_INSTALL_DIR=#{bin} .." - system "make install" - end - end -end diff --git a/Library/Formula/kdepimlibs.rb b/Library/Formula/kdepimlibs.rb deleted file mode 100644 index 8fd1b19e8ee9..000000000000 --- a/Library/Formula/kdepimlibs.rb +++ /dev/null @@ -1,18 +0,0 @@ -require 'formula' - -class Kdepimlibs < Formula - homepage 'http://www.kde.org/' - url 'ftp://ftp.kde.org/pub/kde/stable/4.6.0/src/kdepimlibs-4.6.0.tar.bz2' - md5 'bfcc74fff5c6d0803d43cf13033660ab' - - depends_on 'cmake' => :build - depends_on 'gpgme' - depends_on 'akonadi' - depends_on 'libical' - depends_on 'kdelibs' - - def install - system "cmake #{std_cmake_parameters} -DBUNDLE_INSTALL_DIR=#{bin} ." - system "make install" - end -end diff --git a/Library/Formula/lilypond.rb b/Library/Formula/lilypond.rb index 0f26540baa6f..bbc78b119f44 100644 --- a/Library/Formula/lilypond.rb +++ b/Library/Formula/lilypond.rb @@ -17,7 +17,7 @@ class Lilypond < Formula skip_clean :all def install - abort caveats unless quiet_system "/usr/bin/which -s mpost" + abort caveats unless which "mpost" gs = Formula.factory('ghostscript') system "./configure", "--prefix=#{prefix}", diff --git a/Library/Formula/luarocks.rb b/Library/Formula/luarocks.rb index a16071ad28fc..c152a1ad1a50 100644 --- a/Library/Formula/luarocks.rb +++ b/Library/Formula/luarocks.rb @@ -4,8 +4,8 @@ def use_luajit?; ARGV.include? '--with-luajit'; end class Luarocks < Formula homepage 'http://luarocks.org' - url 'http://luarocks.org/releases/luarocks-2.0.7.1.tar.gz' - md5 '37003e5c78792e353acde684426bdeac' + url 'http://luarocks.org/releases/luarocks-2.0.8.tar.gz' + md5 '07cf84e352d86fe161f7b2ec43f360cc' depends_on use_luajit? ? 'luajit' : 'lua' diff --git a/Library/Formula/mercurial.rb b/Library/Formula/mercurial.rb index 5b7c281a12a0..4b33e61d38a8 100644 --- a/Library/Formula/mercurial.rb +++ b/Library/Formula/mercurial.rb @@ -23,6 +23,9 @@ def install # System-provided Python. ENV.minimal_optimization + # install the completion script + (prefix + 'etc/bash_completion.d').install 'contrib/bash_completion' => 'hg-completion.bash' + # Force the binary install path to the Cellar inreplace "Makefile", "setup.py $(PURE) install", diff --git a/Library/Formula/mod_wsgi.rb b/Library/Formula/mod_wsgi.rb index 696c42dec6f7..df0abe9095be 100644 --- a/Library/Formula/mod_wsgi.rb +++ b/Library/Formula/mod_wsgi.rb @@ -1,24 +1,11 @@ require 'formula' class ModWsgi < Formula + homepage 'http://code.google.com/p/modwsgi/' url 'http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz' sha1 'f32d38e5d3ed5de1efd5abefb52678f833dc9166' - homepage 'http://code.google.com/p/modwsgi/' - head "http://modwsgi.googlecode.com/svn/trunk/mod_wsgi" - - def caveats - <<-EOS.undent - NOTE: "brew install -v mod_wsgi" will fail! You must install - in non-verbose mode for this to succeed. Patches to fix this - are welcome. - * You must manually edit /etc/apache2/httpd.conf to load - #{libexec}/mod_wsgi.so - - * On 10.5, you must run Apache in 32-bit mode: - http://code.google.com/p/modwsgi/wiki/InstallationOnMacOSX - EOS - end + head 'http://modwsgi.googlecode.com/svn/trunk/mod_wsgi' def install # Remove a flag added when homebrew isn't in /usr/local @@ -27,7 +14,13 @@ def install system "./configure", "--prefix=#{prefix}", "--disable-debug", "--disable-dependency-tracking" + # We need apxs to specify the right compiler to its libtool, but + # doing so causes libtool to die unless this flag is also set + ENV['LTFLAGS'] = '--tag=CC' + inreplace 'Makefile' do |s| + # APXS uses just "gcc" unless we specify CC this way + s.gsub! '$(APXS)', "$(APXS) -S CC=#{ENV.cc}" # Remove 'ppc' support, so we can pass Intel-optimized CFLAGS. cflags = s.get_make_var("CFLAGS") cflags.gsub! "-Wc,'-arch ppc7400'", "" @@ -43,4 +36,14 @@ def install system "make install" end + + def caveats + <<-EOS.undent + You must manually edit /etc/apache2/httpd.conf to load + #{libexec}/mod_wsgi.so + + On 10.5, you must run Apache in 32-bit mode: + http://code.google.com/p/modwsgi/wiki/InstallationOnMacOSX + EOS + end end diff --git a/Library/Formula/mydumper.rb b/Library/Formula/mydumper.rb index 36b5039d49cc..5e897c05144c 100644 --- a/Library/Formula/mydumper.rb +++ b/Library/Formula/mydumper.rb @@ -11,8 +11,8 @@ class Mydumper < Formula depends_on 'pcre' def install - if `which mysql_config`.chomp.empty? - opoo "`mysql_config` not found" + unless which 'mysql_config' + opoo "`mysql_config` was not found" puts "This software requires the MySQL client libraries." puts "You can install them via Homebrew with one of these:" puts " brew install mysql-connector-c" diff --git a/Library/Formula/mysql-proxy.rb b/Library/Formula/mysql-proxy.rb index f46c8a578a5f..eadffe616a5b 100644 --- a/Library/Formula/mysql-proxy.rb +++ b/Library/Formula/mysql-proxy.rb @@ -11,8 +11,8 @@ class MysqlProxy < Formula depends_on 'lua' def install - if `which mysql_config`.chomp.empty? - opoo "`mysql_config` not found" + unless which 'mysql_config' + opoo "`mysql_config` was not found" puts "This software requires the MySQL client libraries." puts "You can install them via Homebrew with one of these:" puts " brew install mysql-connector-c" diff --git a/Library/Formula/nginx.rb b/Library/Formula/nginx.rb index 969769f65447..c5b22650247a 100644 --- a/Library/Formula/nginx.rb +++ b/Library/Formula/nginx.rb @@ -2,8 +2,8 @@ class Nginx < Formula homepage 'http://nginx.org/' - url 'http://nginx.org/download/nginx-1.0.12.tar.gz' - md5 'd0ceefeb2a68ecb19e78ee894a5b52a3' + url 'http://nginx.org/download/nginx-1.0.13.tar.gz' + md5 '58360774e4875e8fc4c4286448cb54d0' devel do url 'http://nginx.org/download/nginx-1.1.16.tar.gz' diff --git a/Library/Formula/noweb.rb b/Library/Formula/noweb.rb index 783a566f3a45..60d1057be715 100644 --- a/Library/Formula/noweb.rb +++ b/Library/Formula/noweb.rb @@ -13,13 +13,12 @@ def install system "bash", "awkname", "awk" system "make LIBSRC=icon ICONC=icont CFLAGS='-U_POSIX_C_SOURCE -D_POSIX_C_SOURCE=1'" - kpse = `which kpsewhich` - if kpse == '' - ohai 'No TeX installation found. Installing TeX support files in the noweb Cellar.' - texmf = "#{prefix}" - else + if which 'kpsewhich' ohai 'TeX installation found. Installing TeX support files there might fail if your user does not have permission' texmf = "`kpsewhich -var-value=TEXMFLOCAL`" + else + ohai 'No TeX installation found. Installing TeX support files in the noweb Cellar.' + texmf = "#{prefix}" end bin.mkpath diff --git a/Library/Formula/oxygen-icons.rb b/Library/Formula/oxygen-icons.rb deleted file mode 100644 index 6ffea5dadff3..000000000000 --- a/Library/Formula/oxygen-icons.rb +++ /dev/null @@ -1,14 +0,0 @@ -require 'formula' - -class OxygenIcons < Formula - homepage 'http://www.oxygen-icons.org/' - url 'ftp://ftp.kde.org/pub/kde/stable/4.6.0/src/oxygen-icons-4.6.0.tar.bz2' - md5 '47b943e1b8bc2c1cef10fd791ac70091' - - depends_on 'cmake' => :build - - def install - system "cmake #{std_cmake_parameters} ." - system "make install" - end -end diff --git a/Library/Formula/pg_top.rb b/Library/Formula/pg_top.rb index 762fd8758e8c..4d88b1ed4532 100644 --- a/Library/Formula/pg_top.rb +++ b/Library/Formula/pg_top.rb @@ -1,12 +1,12 @@ require 'formula' class PgTop < Formula - url 'http://pgfoundry.org/frs/download.php/1781/pg_top-3.6.2.tar.gz' homepage 'http://ptop.projects.postgresql.org/' + url 'http://pgfoundry.org/frs/download.php/1781/pg_top-3.6.2.tar.gz' md5 '12ddb50cf83e3027d182a1381d388f1d' def install - unless `/usr/bin/which pg_config`.size > 0 + unless which 'pg_config' opoo "No pg_config was detected." puts <<-EOS.undent pg_top requires postgresql in order to compile, but pg_config was not diff --git a/Library/Formula/pgtap.rb b/Library/Formula/pgtap.rb index 42b13253ca64..16415304a16a 100644 --- a/Library/Formula/pgtap.rb +++ b/Library/Formula/pgtap.rb @@ -8,7 +8,7 @@ class Pgtap < Formula skip_clean :all def install - unless `/usr/bin/which pg_config`.size > 0 + unless which 'pg_config' opoo "No pg_config was detected." puts <<-EOS.undent pg_top requires postgresql in order to compile, but pg_config was not diff --git a/Library/Formula/portmidi.rb b/Library/Formula/portmidi.rb index 4ce9764af699..eb2017d230cf 100644 --- a/Library/Formula/portmidi.rb +++ b/Library/Formula/portmidi.rb @@ -1,19 +1,12 @@ require 'formula' class Portmidi < Formula - url 'http://downloads.sourceforge.net/project/portmedia/portmidi/200/portmidi-src-200.zip' homepage 'http://sourceforge.net/apps/trac/portmedia/wiki/portmidi' + url 'http://downloads.sourceforge.net/project/portmedia/portmidi/200/portmidi-src-200.zip' md5 '26053a105d938395227bb6ae1d78643b' depends_on 'cmake' => :build - def caveats - <<-EOS.undent - NOTE: "brew install -v portmidi" will fail! You must install - in non-verbose mode for this to succeed. - EOS - end - def install # PATCH for Snow Leopard, see https://github.com/halfbyte/portmidi # hopefully not needed anymore in the next version of portmidi diff --git a/Library/Formula/pure-ftpd.rb b/Library/Formula/pure-ftpd.rb index feb52a2ed601..4b5f5f4c7784 100644 --- a/Library/Formula/pure-ftpd.rb +++ b/Library/Formula/pure-ftpd.rb @@ -7,7 +7,9 @@ class PureFtpd < Formula def install args = ["--disable-dependency-tracking", - "--prefix=#{prefix}", "--mandir=#{man}", "--sysconfdir=#{etc}", + "--prefix=#{prefix}", + "--mandir=#{man}", + "--sysconfdir=#{etc}", "--with-pam", "--with-altlog", "--with-puredb", @@ -22,8 +24,8 @@ def install "--with-tls", "--with-bonjour"] - args << "--with-pgsql" if `/usr/bin/which pg_config`.size > 0 - args << "--with-mysql" if `/usr/bin/which mysql`.size > 0 + args << "--with-pgsql" if which 'pg_config' + args << "--with-mysql" if which 'mysql' system "./configure", *args system "make install" @@ -31,25 +33,23 @@ def install plist_path.chmod 0644 end - def caveats - <<-EOS.undent + def caveats; <<-EOS.undent If this is your first install, automatically load on login with: - mkdir -p ~/Library/LaunchAgents - cp #{plist_path} ~/Library/LaunchAgents/ - launchctl load -w ~/Library/LaunchAgents/#{plist_path.basename} + mkdir -p ~/Library/LaunchAgents + cp #{plist_path} ~/Library/LaunchAgents/ + launchctl load -w ~/Library/LaunchAgents/#{plist_path.basename} If this is an upgrade and you already have the #{plist_path.basename} loaded: - launchctl unload -w ~/Library/LaunchAgents/#{plist_path.basename} - cp #{plist_path} ~/Library/LaunchAgents/ - launchctl load -w ~/Library/LaunchAgents/#{plist_path.basename} + launchctl unload -w ~/Library/LaunchAgents/#{plist_path.basename} + cp #{plist_path} ~/Library/LaunchAgents/ + launchctl load -w ~/Library/LaunchAgents/#{plist_path.basename} - To start pure-ftpd manually: - pure-ftpd + To start pure-ftpd manually: + pure-ftpd EOS end - def startup_plist - return <<-EOPLIST + def startup_plist; <<-EOPLIST diff --git a/Library/Formula/qimageblitz.rb b/Library/Formula/qimageblitz.rb deleted file mode 100644 index ba42d1c57eac..000000000000 --- a/Library/Formula/qimageblitz.rb +++ /dev/null @@ -1,15 +0,0 @@ -require 'formula' - -class Qimageblitz < Formula - homepage 'http://www.kde.org' - url 'ftp://ftp.kde.org/pub/kde/stable/qimageblitz/qimageblitz-0.0.6.tar.bz2' - md5 '0ae2f7d4e0876764a97ca73799f61df4' - - depends_on 'cmake' => :build - depends_on 'qt' - - def install - system "cmake #{std_cmake_parameters} ." - system "make install" - end -end diff --git a/Library/Formula/rds-command-line-tools.rb b/Library/Formula/rds-command-line-tools.rb index 865f22c6ca97..7c3c72e58b2e 100644 --- a/Library/Formula/rds-command-line-tools.rb +++ b/Library/Formula/rds-command-line-tools.rb @@ -1,8 +1,5 @@ require 'formula' -# Require ec2-api-tools to get the base class -require "#{File.dirname __FILE__}/ec2-api-tools.rb" - class RdsCommandLineTools < AmazonWebServicesFormula homepage 'http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2928' url 'http://s3.amazonaws.com/rds-downloads/RDSCli-1.3.003.zip' @@ -17,7 +14,6 @@ def caveats s += <<-EOS.undent To check that your setup works properly, run the following command: - rds-describe-db-instances --headers You should see a header line. If you have database instances already configured, diff --git a/Library/Formula/redland.rb b/Library/Formula/redland.rb deleted file mode 100644 index 43c0f09826d7..000000000000 --- a/Library/Formula/redland.rb +++ /dev/null @@ -1,23 +0,0 @@ -require 'formula' - -class Redland < Formula - url 'http://download.librdf.org/source/redland-1.0.15.tar.gz' - homepage 'http://librdf.org/' - md5 'b0deb87f3c7d3237a3d587c1e0f2f266' - - depends_on 'pkg-config' => :build - depends_on 'raptor' - depends_on 'rasqal' - depends_on 'berkeley-db' => :optional - - fails_with_llvm :build => 2334 - - def install - system "./configure", "--disable-debug", "--disable-dependency-tracking", - "--prefix=#{prefix}", - "--with-sqlite=yes", - "--with-mysql=no", - "--with-bdb=#{HOMEBREW_PREFIX}" - system "make install" - end -end diff --git a/Library/Formula/shared-desktop-ontologies.rb b/Library/Formula/shared-desktop-ontologies.rb deleted file mode 100644 index 1bfd7040d315..000000000000 --- a/Library/Formula/shared-desktop-ontologies.rb +++ /dev/null @@ -1,14 +0,0 @@ -require 'formula' - -class SharedDesktopOntologies < Formula - homepage 'http://sourceforge.net/apps/trac/oscaf/' - url 'http://downloads.sourceforge.net/project/oscaf/shared-desktop-ontologies/0.5/shared-desktop-ontologies-0.5.tar.bz2' - md5 '067ec9023c4a48e0d53fb15484d78971' - - depends_on 'cmake' => :build - - def install - system "cmake #{std_cmake_parameters} ." - system "make install" - end -end diff --git a/Library/Formula/shen.rb b/Library/Formula/shen.rb index 84e9f28cb2f8..ffe8fbfc839f 100644 --- a/Library/Formula/shen.rb +++ b/Library/Formula/shen.rb @@ -3,7 +3,7 @@ class Shen < Formula homepage 'http://www.shenlanguage.org/' url 'http://www.shenlanguage.org/download/Shen3.1.zip' - md5 'af5cf93107ead37373e2e520bccd3b08' + md5 'ecc1ed39c499417b9408157982559319' if ARGV.include? "--sbcl" depends_on 'sbcl' @@ -16,8 +16,7 @@ def options end def install - case - when ARGV.include?("--sbcl") then + if ARGV.include?("--sbcl") then system "cp K\\ Lambda/* Platforms/SBCL" safe_system "cd Platforms/SBCL; sbcl --load install.lsp" system "mv Platforms/SBCL/Shen.exe shen" diff --git a/Library/Formula/signing-party.rb b/Library/Formula/signing-party.rb index bef945bbffa4..3e97774f7c7d 100644 --- a/Library/Formula/signing-party.rb +++ b/Library/Formula/signing-party.rb @@ -5,7 +5,7 @@ class SigningParty < Formula url 'http://ftp.debian.org/debian/pool/main/s/signing-party/signing-party_1.1.4.orig.tar.gz' md5 '675f8f1edd01baa8b58a743927d13750' - depends_on 'gnupg' unless system "/usr/bin/which -s gpg" + depends_on 'gnupg' unless which 'gpg' depends_on 'dialog' depends_on 'qprint' depends_on 'MIME::Tools' => :perl diff --git a/Library/Formula/skytools.rb b/Library/Formula/skytools.rb index 63aae8851b47..34572dec5cea 100644 --- a/Library/Formula/skytools.rb +++ b/Library/Formula/skytools.rb @@ -6,7 +6,7 @@ class Skytools < Formula md5 '94f3391d5b3c3ac6c2edcbfbda705573' def install - unless `/usr/bin/which pg_config`.size > 0 + unless which 'pg_config' opoo "No pg_config was detected." puts <<-EOS.undent pg_top requires postgresql in order to compile, but pg_config was not diff --git a/Library/Formula/soprano.rb b/Library/Formula/soprano.rb deleted file mode 100644 index ed1e6e065874..000000000000 --- a/Library/Formula/soprano.rb +++ /dev/null @@ -1,20 +0,0 @@ -require 'formula' - -class Soprano < Formula - homepage 'http://soprano.sourceforge.net/' - url 'http://downloads.sourceforge.net/project/soprano/Soprano/2.6.0/soprano-2.6.0.tar.bz2' - md5 '03ae49e87c6ec99e57d0433c2650846f' - - depends_on 'cmake' => :build - depends_on 'qt' - depends_on 'clucene' => :optional - depends_on 'raptor' => :optional - depends_on 'redland' => :optional - - def install - ENV['CLUCENE_HOME'] = HOMEBREW_PREFIX - - system "cmake #{std_cmake_parameters} ." - system "make install" - end -end diff --git a/Library/Formula/sphinx.rb b/Library/Formula/sphinx.rb index bf585b80f822..1dcd7b20b349 100644 --- a/Library/Formula/sphinx.rb +++ b/Library/Formula/sphinx.rb @@ -9,10 +9,11 @@ class Libstemmer < Formula end class Sphinx < Formula + homepage 'http://www.sphinxsearch.com' url 'http://sphinxsearch.com/files/sphinx-2.0.3-release.tar.gz' version '2.0.3' - homepage 'http://www.sphinxsearch.com' md5 'a1293aecd5034aa797811610beb7ba89' + head 'http://sphinxsearch.googlecode.com/svn/trunk/' fails_with_llvm "ld: rel32 out of range in _GetPrivateProfileString from /usr/lib/libodbc.a(SQLGetPrivateProfileString.o)", @@ -20,8 +21,7 @@ class Sphinx < Formula def install lstem = Pathname.pwd+'libstemmer_c' - lstem.mkpath - Libstemmer.new.brew { mv Dir['*'], lstem } + Libstemmer.new.brew { lstem.install Dir['*'] } args = ["--prefix=#{prefix}", "--disable-debug", @@ -32,15 +32,14 @@ def install args << "--with-libstemmer" # configure script won't auto-select PostgreSQL - args << "--with-pgsql" if `/usr/bin/which pg_config`.size > 0 - args << "--without-mysql" unless `/usr/bin/which mysql`.size > 0 + args << "--with-pgsql" if which 'pg_config' + args << "--without-mysql" unless which 'mysql' system "./configure", *args system "make install" end - def caveats - <<-EOS.undent + def caveats; <<-EOS.undent Sphinx has been compiled with libstemmer support. Sphinx depends on either MySQL or PostreSQL as a datasource. diff --git a/Library/Formula/strigi.rb b/Library/Formula/strigi.rb deleted file mode 100644 index d2f886801002..000000000000 --- a/Library/Formula/strigi.rb +++ /dev/null @@ -1,19 +0,0 @@ -require 'formula' - -class Strigi < Formula - homepage 'http://strigi.sourceforge.net/' - url 'http://www.vandenoever.info/software/strigi/strigi-0.7.2.tar.bz2' - md5 'ca09ba176cf3ffe9afce4d92f38f9a85' - - depends_on 'cmake' => :build - depends_on 'clucene' - depends_on 'exiv2' => :optional - - def install - ENV['CLUCENE_HOME'] = HOMEBREW_PREFIX - ENV['EXPAT_HOME'] = '/usr/' - - system "cmake #{std_cmake_parameters} -DENABLE_EXPAT:BOOL=ON -DENABLE_DBUS:BOOL=OFF ." - system "make install" - end -end diff --git a/Library/Formula/youtube-dl.rb b/Library/Formula/youtube-dl.rb index 116d74c68b65..6dc3b708d0ab 100644 --- a/Library/Formula/youtube-dl.rb +++ b/Library/Formula/youtube-dl.rb @@ -1,8 +1,8 @@ require 'formula' class YoutubeDl < ScriptFileFormula - url 'https://github.com/rg3/youtube-dl/raw/2012.01.08b/youtube-dl' + url 'https://github.com/rg3/youtube-dl/raw/2012.02.27/youtube-dl' homepage 'http://rg3.github.com/youtube-dl/' - sha256 '5bfd6ed0e692c9047c81498b70dbe4929a2079c2dfa4018862bb3d34175e988c' - version '2012.01.08b' + sha256 '98146a510fed3d39a34a686e1100d6df4efa2b9b9e194649e615afc1ff646834' + version '2012.02.27' end diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index 76763208f180..ad24bb958c2c 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -718,7 +718,9 @@ def check_missing_deps s = [] `brew missing`.each_line do |line| line =~ /(.*): (.*)/ - s << $2 unless s.include? $2 + $2.split.each do |dep| + s << dep unless s.include? dep + end end if s.length > 0 then <<-EOS.undent Some installed formula are missing dependencies. @@ -782,6 +784,17 @@ def check_for_enthought_python end end +def check_for_bad_python_symlink + return unless system "/usr/bin/which -s python" + # Indeed Python --version outputs to stderr (WTF?) + `python --version 2>&1` =~ /Python (\d+)\./ + unless $1 == "2" then <<-EOS.undent + python is symlinked to python#$1 + This will confuse build scripts and in general lead to subtle breakage. + EOS + end +end + end # end class Checks module Homebrew extend self diff --git a/Library/Homebrew/cmd/uninstall.rb b/Library/Homebrew/cmd/uninstall.rb index 6f0025c48715..cddb8ac65c0b 100644 --- a/Library/Homebrew/cmd/uninstall.rb +++ b/Library/Homebrew/cmd/uninstall.rb @@ -1,27 +1,34 @@ require 'keg' +require 'formula' module Homebrew extend self def uninstall raise KegUnspecifiedError if ARGV.named.empty? - unless ARGV.force? + if not ARGV.force? ARGV.kegs.each do |keg| puts "Uninstalling #{keg}..." keg.unlink keg.uninstall end else - ARGV.formulae.each do |f| - if f.rack.directory? - puts "Uninstalling #{f}..." - f.rack.children.each do |keg| + ARGV.named.each do |name| + name = Formula.canonical_name(name) + + # FIXME canonical_name is insane + raise "Invalid usage" if name.include? '/' + + rack = HOMEBREW_CELLAR/name + if rack.directory? + puts "Uninstalling #{name}..." + rack.children.each do |keg| if keg.directory? keg = Keg.new(keg) keg.unlink keg.rmtree end end - f.rack.rmtree + rack.rmtree end end end diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index 47c770ecd0d4..24d70cb1f8b5 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -17,20 +17,26 @@ def kegs require 'keg' require 'formula' @kegs ||= downcased_unique_named.collect do |name| - n = Formula.canonical_name(name) - rack = HOMEBREW_CELLAR + if n.include? "/" + canonical_name = Formula.canonical_name(name) + rack = HOMEBREW_CELLAR + if canonical_name.include? "/" # canonical_name returns a path if it was a formula installed via a # URL. And we only want the name. FIXME that function is insane. - Pathname.new(n).stem + Pathname.new(canonical_name).stem else - n + canonical_name end dirs = rack.children.select{ |pn| pn.directory? } rescue [] raise NoSuchKegError.new(name) if not rack.directory? or dirs.length == 0 - raise MultipleVersionsInstalledError.new(name) if dirs.length > 1 - Keg.new dirs.first + + linked_keg_ref = HOMEBREW_REPOSITORY/"Library/LinkedKegs"/name + + if not linked_keg_ref.symlink? + raise MultipleVersionsInstalledError.new(name) if dirs.length > 1 + Keg.new(dirs.first) + else + Keg.new(linked_keg_ref.realpath) + end end - return @kegs end # self documenting perhaps? diff --git a/Library/Homebrew/extend/fileutils.rb b/Library/Homebrew/extend/fileutils.rb new file mode 100644 index 000000000000..89c7de2feb40 --- /dev/null +++ b/Library/Homebrew/extend/fileutils.rb @@ -0,0 +1,40 @@ +require 'fileutils' + +# We enhance FileUtils to make our Formula code more readable. +module Homebrew::FileUtils + include FileUtils + + # Create a temporary directory then yield. When the block returns, + # recursively delete the temporary directory. + def mktemp + # I used /tmp rather than `mktemp -td` because that generates a directory + # name with exotic characters like + in it, and these break badly written + # scripts that don't escape strings before trying to regexp them :( + + # If the user has FileVault enabled, then we can't mv symlinks from the + # /tmp volume to the other volume. So we let the user override the tmp + # prefix if they need to. + tmp_prefix = ENV['HOMEBREW_TEMP'] || '/tmp' + tmp=Pathname.new `/usr/bin/mktemp -d #{tmp_prefix}/homebrew-#{name}-#{version}-XXXX`.strip + raise "Couldn't create build sandbox" if not tmp.directory? or $? != 0 + begin + wd=Dir.pwd + chdir tmp + yield + ensure + chdir wd + tmp.rmtree + end + end + + # A version of mkdir that also changes to that folder in a block. + def mkdir name, &block + super(name) + if block_given? + chdir name do + yield + end + end + end + +end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 961077c09821..0e2e96e50871 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1,12 +1,12 @@ require 'download_strategy' -require 'fileutils' require 'formula_support' require 'hardware' +require 'extend/fileutils' # Derive and define at least @url, see Library/Formula for examples class Formula - include FileUtils + include Homebrew::FileUtils attr_reader :name, :path, :url, :version, :homepage, :specs, :downloader attr_reader :standard, :unstable @@ -128,16 +128,6 @@ def var; HOMEBREW_PREFIX+'var' end def plist_name; 'homebrew.mxcl.'+name end def plist_path; prefix+(plist_name+'.plist') end - # A version of mkdir that also changes to that folder in a block - def mkdir name, &block - FileUtils.mkdir name - if block_given? - FileUtils.chdir name do - yield - end - end - end - # Use the @spec_to_use to detect the download strategy. # Can be overriden to force a custom download strategy def download_strategy @@ -198,7 +188,7 @@ def brew validate_variable :name validate_variable :version - handle_llvm_failure(fails_with_llvm?) if fails_with_llvm? + fails_with_llvm?.handle_failure if fails_with_llvm? stage do begin @@ -263,40 +253,6 @@ def std_cmake_parameters "-DCMAKE_INSTALL_PREFIX='#{prefix}' -DCMAKE_BUILD_TYPE=None -Wno-dev" end - def handle_llvm_failure llvm - if ENV.compiler == :llvm - # version 2336 is the latest version as of Xcode 4.2, so it is the - # latest version we have tested against so we will switch to GCC and - # bump this integer when Xcode 4.3 is released. TODO do that! - if llvm.build.to_i >= 2336 - if MacOS.xcode_version < "4.2" - opoo "Formula will not build with LLVM, using GCC" - ENV.gcc - else - opoo "Formula will not build with LLVM, trying Clang" - ENV.clang - end - return - end - opoo "Building with LLVM, but this formula is reported to not work with LLVM:" - puts - puts llvm.reason - puts - puts <<-EOS.undent - We are continuing anyway so if the build succeeds, please open a ticket with - the following information: #{MacOS.llvm_build_version}-#{MACOS_VERSION}. So - that we can update the formula accordingly. Thanks! - EOS - puts - if MacOS.xcode_version < "4.2" - puts "If it doesn't work you can: brew install --use-gcc" - else - puts "If it doesn't work you can try: brew install --use-clang" - end - puts - end - end - def self.class_s name #remove invalid characters and then camelcase it name.capitalize.gsub(/[-_.\s]([a-zA-Z0-9])/) { $1.upcase } \ @@ -441,6 +397,7 @@ def self.expand_deps f end protected + # Pretty titles the command and buffers stdout/stderr # Throws if there's an error def system cmd, *args @@ -485,33 +442,8 @@ def system cmd, *args raise BuildError.new(self, cmd, args, $?) end -private - # Create a temporary directory then yield. When the block returns, - # recursively delete the temporary directory. - def mktemp - # I used /tmp rather than `mktemp -td` because that generates a directory - # name with exotic characters like + in it, and these break badly written - # scripts that don't escape strings before trying to regexp them :( - - # If the user has FileVault enabled, then we can't mv symlinks from the - # /tmp volume to the other volume. So we let the user override the tmp - # prefix if they need to. - tmp_prefix = ENV['HOMEBREW_TEMP'] || '/tmp' - tmp=Pathname.new `/usr/bin/mktemp -d #{tmp_prefix}/homebrew-#{name}-#{version}-XXXX`.strip - raise "Couldn't create build sandbox" if not tmp.directory? or $? != 0 - begin - wd=Dir.pwd - Dir.chdir tmp - yield - ensure - Dir.chdir wd - tmp.rmtree - end - end - - CHECKSUM_TYPES=[:md5, :sha1, :sha256].freeze +public - public # For brew-fetch and others. def fetch downloader = @downloader @@ -571,7 +503,9 @@ def verify_download_integrity fn, *args end end - private +private + + CHECKSUM_TYPES=[:md5, :sha1, :sha256].freeze def stage fetched, downloader = fetch @@ -660,10 +594,9 @@ def validate_variable name end def set_instance_variable(type) - unless instance_variable_defined? "@#{type}" - class_value = self.class.send(type) - instance_variable_set("@#{type}", class_value) if class_value - end + return if instance_variable_defined? "@#{type}" + class_value = self.class.send(type) + instance_variable_set("@#{type}", class_value) if class_value end def method_added method @@ -710,11 +643,8 @@ def stable &block def devel &block raise "url and md5 must be specified in a block" unless block_given? - if ARGV.build_devel? - # clear out mirrors from the stable release - @mirrors = nil - + @mirrors = nil # clear out mirrors from the stable release instance_eval &block end end @@ -797,17 +727,4 @@ def fails_with_llvm msg=nil, data=nil end end -# See youtube-dl.rb for an example -class ScriptFileFormula < Formula - def install - bin.install Dir['*'] - end -end - -# See flac.rb for an example -class GithubGistFormula < ScriptFileFormula - def initialize name='__UNKNOWN__', path=nil - super name, path - @version=File.basename(File.dirname(url))[0,6] - end -end +require 'formula_specialties' diff --git a/Library/Homebrew/formula_specialties.rb b/Library/Homebrew/formula_specialties.rb new file mode 100644 index 000000000000..330b51c3e577 --- /dev/null +++ b/Library/Homebrew/formula_specialties.rb @@ -0,0 +1,54 @@ +# Base classes for specialized types of formulae. + +# See youtube-dl.rb for an example +class ScriptFileFormula < Formula + def install + bin.install Dir['*'] + end +end + +# See flac.rb for an example +class GithubGistFormula < ScriptFileFormula + def initialize name='__UNKNOWN__', path=nil + super name, path + @version=File.basename(File.dirname(url))[0,6] + end +end + +# This formula serves as the base class for several very similar +# formulae for Amazon Web Services related tools. +class AmazonWebServicesFormula < Formula + # Use this method to peform a standard install for Java-based tools, + # keeping the .jars out of HOMEBREW_PREFIX/lib + def standard_install + rm Dir['bin/*.cmd'] # Remove Windows versions + prefix.install "bin" + # Put the .jars in prefix/jars/lib, which isn't linked to the Cellar + # This will prevent conflicts with other versions of these jars. + (prefix+'jars').install 'lib' + (prefix+'jars/bin').make_symlink '../bin' + end + + # Use this method to generate standard caveats. + def standard_instructions var_name, var_value=prefix+'jars' + <<-EOS.undent + Before you can use these tools you must export some variables to your $SHELL + and download your X.509 certificate and private key from Amazon Web Services. + + Your certificate and private key are available at: + http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key + + Download two ".pem" files, one starting with `pk-`, and one starting with `cert-`. + You need to put both into a folder in your home directory, `~/.ec2`. + + To export the needed variables, add them to your dotfiles. + * On Bash, add them to `~/.bash_profile`. + * On Zsh, add them to `~/.zprofile` instead. + + export JAVA_HOME="$(/usr/libexec/java_home)" + export EC2_PRIVATE_KEY="$(/bin/ls $HOME/.ec2/pk-*.pem)" + export EC2_CERT="$(/bin/ls $HOME/.ec2/cert-*.pem)" + export #{var_name}="#{var_value}" + EOS + end +end diff --git a/Library/Homebrew/formula_support.rb b/Library/Homebrew/formula_support.rb index 6314f2951846..df98f3cb4d62 100644 --- a/Library/Homebrew/formula_support.rb +++ b/Library/Homebrew/formula_support.rb @@ -92,4 +92,38 @@ def reason s += "\n" return s end + + def handle_failure + return unless ENV.compiler == :llvm + + # version 2336 is the latest version as of Xcode 4.2, so it is the + # latest version we have tested against so we will switch to GCC and + # bump this integer when Xcode 4.3 is released. TODO do that! + if build.to_i >= 2336 + if MacOS.xcode_version < "4.2" + opoo "Formula will not build with LLVM, using GCC" + ENV.gcc + else + opoo "Formula will not build with LLVM, trying Clang" + ENV.clang + end + return + end + opoo "Building with LLVM, but this formula is reported to not work with LLVM:" + puts + puts reason + puts + puts <<-EOS.undent + We are continuing anyway so if the build succeeds, please open a ticket with + the following information: #{MacOS.llvm_build_version}-#{MACOS_VERSION}. So + that we can update the formula accordingly. Thanks! + EOS + puts + if MacOS.xcode_version < "4.2" + puts "If it doesn't work you can: brew install --use-gcc" + else + puts "If it doesn't work you can try: brew install --use-clang" + end + puts + end end diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index e469260632dd..c0888774037b 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -138,6 +138,15 @@ def puts_columns items, star_items=[] end end +def which cmd + path = `/usr/bin/which #{cmd}`.chomp + if path.empty? + nil + else + Pathname.new(path) + end +end + def which_editor editor = ENV['HOMEBREW_EDITOR'] || ENV['EDITOR'] # If an editor wasn't set, try to pick a sane default