diff options
| -rw-r--r-- | Library/Formula/fish.rb | 2 | ||||
| -rw-r--r-- | Library/Formula/ghostscript.rb | 32 | ||||
| -rw-r--r-- | Library/Formula/imagemagick.rb | 61 | ||||
| -rw-r--r-- | Library/Formula/liblastfm.rb | 4 | ||||
| -rw-r--r-- | Library/Formula/libmusicbrainz.rb | 3 | ||||
| -rw-r--r-- | Library/Formula/libtiff.rb | 12 | ||||
| -rw-r--r-- | Library/Formula/libvorbis.rb | 2 | ||||
| -rw-r--r-- | Library/Formula/libwmf.rb | 16 | ||||
| -rw-r--r-- | Library/Formula/little-cms.rb | 12 | ||||
| -rw-r--r-- | Library/Formula/memcached.rb | 2 | ||||
| -rw-r--r-- | Library/Formula/mysql-connector-c.rb | 2 | ||||
| -rw-r--r-- | Library/Formula/mysql.rb | 3 | ||||
| -rw-r--r-- | Library/Formula/nginx.rb | 2 | ||||
| -rw-r--r-- | Library/Formula/playdar.rb | 4 | ||||
| -rw-r--r-- | Library/Formula/python.rb | 2 | ||||
| -rw-r--r-- | Library/Formula/scummvm.rb | 6 | ||||
| -rw-r--r-- | Library/Formula/sshfs.rb | 4 | ||||
| -rw-r--r-- | Library/Formula/taglib.rb | 4 | ||||
| -rw-r--r-- | Library/Formula/unp.rb | 2 | ||||
| -rw-r--r-- | Library/Formula/vorbis-tools.rb | 4 | ||||
| -rw-r--r-- | Library/Formula/yajl.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/brew.h.rb | 27 | ||||
| -rw-r--r-- | Library/Homebrew/formula.rb | 2 | ||||
| -rwxr-xr-x | Library/Homebrew/unittest.rb | 23 | ||||
| -rwxr-xr-x | bin/brew | 31 |
25 files changed, 150 insertions, 116 deletions
diff --git a/Library/Formula/fish.rb b/Library/Formula/fish.rb index c84bb8111..09246747e 100644 --- a/Library/Formula/fish.rb +++ b/Library/Formula/fish.rb @@ -6,7 +6,7 @@ class Fish <Formula @md5='4b2436843e63bebba467cc4add11428a' def deps - LibraryDep.new 'readline' + 'readline' end def install diff --git a/Library/Formula/ghostscript.rb b/Library/Formula/ghostscript.rb new file mode 100644 index 000000000..9f7ef7785 --- /dev/null +++ b/Library/Formula/ghostscript.rb @@ -0,0 +1,32 @@ +require 'brewkit' + +class GhostscriptFonts <Formula + @url='http://downloads.sourceforge.net/project/gs-fonts/gs-fonts/8.11%20%28base%2035%2C%20GPL%29/ghostscript-fonts-std-8.11.tar.gz' + @homepage='http://sourceforge.net/projects/gs-fonts/' + @md5='6865682b095f8c4500c54b285ff05ef6' +end + +class Ghostscript <Formula + @url='http://downloads.sourceforge.net/project/ghostscript/GPL%20Ghostscript/8.70/ghostscript-8.70.tar.bz2' + @homepage='http://www.ghostscript.com/' + @md5='526366f8cb4fda0d3d293597cc5b984b' + + def install + # ghostscript configure ignores LDFLAGs apparently + ENV['LIBS']="-L/usr/X11/lib" + system "./configure", "--prefix=#{prefix}", "--disable-debug", + # the cups component adamantly installs to /usr so fuck it + "--disable-cups" + # versioned stuff in main tree is pointless for us + inreplace 'Makefile', '/$(GS_DOT_VERSION)', '' + system "make install" + (prefix+'share'+'ghostscript'+'doc').rmtree + + GhostscriptFonts.new.brew do + Dir.chdir '..' + (prefix+'share'+'ghostscript').install 'fonts' + end + + (man+'de').rmtree + end +end diff --git a/Library/Formula/imagemagick.rb b/Library/Formula/imagemagick.rb index 5db518006..ee06a50ac 100644 --- a/Library/Formula/imagemagick.rb +++ b/Library/Formula/imagemagick.rb @@ -2,43 +2,13 @@ require 'brewkit' # some credit to http://github.com/maddox/magick-installer -class LibTIFF <Formula - @url='ftp://ftp.remotesensing.org/libtiff/tiff-3.8.2.tar.gz' - @homepage='http://www.libtiff.org/' - @md5='fbb6f446ea4ed18955e2714934e5b698' -end - -class Libwmf <Formula - @url='http://downloads.sourceforge.net/project/wvware/libwmf/0.2.8.4/libwmf-0.2.8.4.tar.gz' - @homepage='http://wvware.sourceforge.net/libwmf.html' - @md5='d1177739bf1ceb07f57421f0cee191e0' -end - -class LittleCMS <Formula - @url='http://www.littlecms.com/lcms-1.17.tar.gz' - @homepage='http://www.littlecms.com/' - @md5='07bdbb4cfb05d21caa58fe3d1c84ddc1' -end - -class Ghostscript <Formula - @url='http://downloads.sourceforge.net/project/ghostscript/GPL%20Ghostscript/8.70/ghostscript-8.70.tar.bz2' - @homepage='http://www.ghostscript.com/' - @md5='526366f8cb4fda0d3d293597cc5b984b' -end - -class GhostscriptFonts <Formula - @url='http://downloads.sourceforge.net/project/gs-fonts/gs-fonts/8.11%20%28base%2035%2C%20GPL%29/ghostscript-fonts-std-8.11.tar.gz' - @homepage='http://sourceforge.net/projects/gs-fonts/' - @md5='6865682b095f8c4500c54b285ff05ef6' -end - class Imagemagick <Formula @url='ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.5.5-4.tar.bz2' @md5='8cb7471a50428e4892ee46aa404e54c2' @homepage='http://www.imagemagick.org' def deps - LibraryDep.new 'jpeg' + { :required => 'jpeg', :optional => %w[libwmf libtiff little-cms ghostscript] } end def install @@ -47,33 +17,6 @@ class Imagemagick <Formula # TODO eventually these will be external optional dependencies # but for now I am lazy - LibTIFF.new.brew do - system "./configure", "--prefix=#{prefix}", "--disable-debug" - system "make install" - end - Libwmf.new.brew do - system "./configure", "--prefix=#{prefix}", "--disable-debug" - system "make install" - end - LittleCMS.new.brew do - system "./configure", "--prefix=#{prefix}", "--disable-debug" - system "make install" - end - Ghostscript.new.brew do - # ghostscript configure ignores LDFLAGs apparently - ENV['LIBS']="-L/usr/X11/lib" - system "./configure", "--prefix=#{prefix}", "--disable-debug", - # the cups component adamantly installs to /usr so fuck it - "--disable-cups" - # versioned stuff in main tree is pointless for us - inreplace 'Makefile', '/$(GS_DOT_VERSION)', '' - system "make install" - (prefix+'share'+'ghostscript'+'doc').rmtree - end - GhostscriptFonts.new.brew do - Dir.chdir '..' - (prefix+'share'+'ghostscript').install 'fonts' - end # versioned stuff in main tree is pointless for us inreplace 'configure', '${PACKAGE_NAME}-${PACKAGE_VERSION}', '${PACKAGE_NAME}' @@ -91,8 +34,6 @@ class Imagemagick <Formula (d+'NEWS.txt').unlink (d+'LICENSE').unlink (d+'ChangeLog').unlink - - (man+'de').rmtree end def caveats diff --git a/Library/Formula/liblastfm.rb b/Library/Formula/liblastfm.rb index 52444bdfa..ea6a61706 100644 --- a/Library/Formula/liblastfm.rb +++ b/Library/Formula/liblastfm.rb @@ -6,9 +6,7 @@ class Liblastfm <Formula @md5='3f73222ebc31635941832b01e7a494b6' def deps - BinaryDep.new 'qmake', 'qt' - LibraryDep.new 'fftw3f', 'fftw' - LibraryDep.new 'samplerate' + %w[qt fftw samplerate] end def install diff --git a/Library/Formula/libmusicbrainz.rb b/Library/Formula/libmusicbrainz.rb index d562ab12a..b9d5c1c45 100644 --- a/Library/Formula/libmusicbrainz.rb +++ b/Library/Formula/libmusicbrainz.rb @@ -6,8 +6,7 @@ class Libmusicbrainz <Formula @md5='648ecd43f7b80852419aaf73702bc23f' def deps - LibraryDep.new 'neon' - OptionalLibraryDep.new 'libdiscid' + { :required => 'neon', :optional => 'libdiscid' } end def install diff --git a/Library/Formula/libtiff.rb b/Library/Formula/libtiff.rb new file mode 100644 index 000000000..831491321 --- /dev/null +++ b/Library/Formula/libtiff.rb @@ -0,0 +1,12 @@ +require 'brewkit' + +class Libtiff <Formula + @url='ftp://ftp.remotesensing.org/libtiff/tiff-3.8.2.tar.gz' + @homepage='http://www.libtiff.org/' + @md5='fbb6f446ea4ed18955e2714934e5b698' + + def install + system "./configure", "--prefix=#{prefix}", "--disable-debug" + system "make install" + end +end diff --git a/Library/Formula/libvorbis.rb b/Library/Formula/libvorbis.rb index d597b1feb..cdd795437 100644 --- a/Library/Formula/libvorbis.rb +++ b/Library/Formula/libvorbis.rb @@ -6,7 +6,7 @@ class Libvorbis <Formula @homepage='http://vorbis.com' def deps - LibraryDep.new 'libogg' + 'libogg' end def install diff --git a/Library/Formula/libwmf.rb b/Library/Formula/libwmf.rb new file mode 100644 index 000000000..f1a3ba1a1 --- /dev/null +++ b/Library/Formula/libwmf.rb @@ -0,0 +1,16 @@ +require 'brewkit' + +class Libwmf <Formula + @url='http://downloads.sourceforge.net/project/wvware/libwmf/0.2.8.4/libwmf-0.2.8.4.tar.gz' + @homepage='http://wvware.sourceforge.net/libwmf.html' + @md5='d1177739bf1ceb07f57421f0cee191e0' + + def install + ENV.libpng + system "./configure", "--prefix=#{prefix}", "--disable-debug" + system "make" + + ENV.j1 # yet another rubbish Makefile + system "make install" + end +end diff --git a/Library/Formula/little-cms.rb b/Library/Formula/little-cms.rb new file mode 100644 index 000000000..a3efd783b --- /dev/null +++ b/Library/Formula/little-cms.rb @@ -0,0 +1,12 @@ +require 'brewkit' + +class LittleCms <Formula + @url='http://www.littlecms.com/lcms-1.17.tar.gz' + @homepage='http://www.littlecms.com/' + @md5='07bdbb4cfb05d21caa58fe3d1c84ddc1' + + def install + system "./configure", "--prefix=#{prefix}", "--disable-debug" + system "make install" + end +end diff --git a/Library/Formula/memcached.rb b/Library/Formula/memcached.rb index fda521f1d..0ad5681c3 100644 --- a/Library/Formula/memcached.rb +++ b/Library/Formula/memcached.rb @@ -6,7 +6,7 @@ class Memcached <Formula @md5='d7651ecb8bf345144cb17900d9a46c85' def deps - LibraryDep.new 'libevent' + 'libevent' end def install diff --git a/Library/Formula/mysql-connector-c.rb b/Library/Formula/mysql-connector-c.rb index f97945135..f135f7dc8 100644 --- a/Library/Formula/mysql-connector-c.rb +++ b/Library/Formula/mysql-connector-c.rb @@ -6,7 +6,7 @@ class MysqlConnectorC <Formula @md5='348a869fa72957062ea4e7ad3865623c' def deps - BinaryDep.new 'cmake' + 'cmake' end def install diff --git a/Library/Formula/mysql.rb b/Library/Formula/mysql.rb index 662d8320d..5cfb8be41 100644 --- a/Library/Formula/mysql.rb +++ b/Library/Formula/mysql.rb @@ -6,8 +6,7 @@ class Mysql <Formula @md5='7564d7759a8077b3a0e6190955422287' def deps - # --without-readline means use system's readline - LibraryDep.new 'readline' + 'readline' end def options diff --git a/Library/Formula/nginx.rb b/Library/Formula/nginx.rb index b2fe3e2fa..4863381e6 100644 --- a/Library/Formula/nginx.rb +++ b/Library/Formula/nginx.rb @@ -6,7 +6,7 @@ class Nginx <Formula @md5='6ebf89b9b00a3b82734e93c32da7df07' def deps - LibraryDep.new 'pcre' + 'pcre' end def install diff --git a/Library/Formula/playdar.rb b/Library/Formula/playdar.rb index 0d2669ea8..44b1f815d 100644 --- a/Library/Formula/playdar.rb +++ b/Library/Formula/playdar.rb @@ -5,9 +5,7 @@ class Playdar <Formula @head='git://github.com/mxcl/playdar.git' def deps - LibraryDep.new 'taglib' - LibraryDep.new 'boost' - BinaryDep.new 'cmake' + %w[taglib boost cmake] end def skip_clean? path diff --git a/Library/Formula/python.rb b/Library/Formula/python.rb index d1d058644..0624146bc 100644 --- a/Library/Formula/python.rb +++ b/Library/Formula/python.rb @@ -7,7 +7,7 @@ class Python <Formula def deps # You can build Python without readline, but you really don't want to. - LibraryDep.new 'readline' + 'readline' end def skip_clean? path diff --git a/Library/Formula/scummvm.rb b/Library/Formula/scummvm.rb index de0bd7bf1..adb1f1a48 100644 --- a/Library/Formula/scummvm.rb +++ b/Library/Formula/scummvm.rb @@ -14,11 +14,7 @@ prefer to use theirs. If so type `brew home scummvm' to visit their site. end def deps - LibraryDep.new 'sdl' - # Optional, but you want them anyway. - OptionalLibraryDep.new 'flac' - OptionalLibraryDep.new 'libogg' - OptionalLibraryDep.new 'libvorbis' + { :required => 'sdl', :recommended => %w[flac libogg libvorbis] } end def install diff --git a/Library/Formula/sshfs.rb b/Library/Formula/sshfs.rb index 67d94fae4..0ae3f40d9 100644 --- a/Library/Formula/sshfs.rb +++ b/Library/Formula/sshfs.rb @@ -14,9 +14,7 @@ class Sshfs <Formula end def deps - BinaryDep.new 'pkg-config' - LibraryDep.new 'glib' - LibraryDep.new 'macfuse' + %w[pkg-config glib macfuse] end def install diff --git a/Library/Formula/taglib.rb b/Library/Formula/taglib.rb index 59129a16a..ea92fa6df 100644 --- a/Library/Formula/taglib.rb +++ b/Library/Formula/taglib.rb @@ -11,13 +11,13 @@ class Taglib <Formula @homepage='http://developer.kde.org/~wheeler/taglib.html' def deps - BinaryDep.new 'cmake' + 'cmake' end def install system "./configure --disable-debug --prefix='#{prefix}'" system "make install" - + TaglibExtras.new.brew do system "cmake . #{std_cmake_parameters}" system "make install" diff --git a/Library/Formula/unp.rb b/Library/Formula/unp.rb index 50ab9ea8c..83cd639c2 100644 --- a/Library/Formula/unp.rb +++ b/Library/Formula/unp.rb @@ -6,7 +6,7 @@ class Unp <Formula @md5='ecea662bd7e7efe7f7e2213bf21d9646' def deps - BinaryDep.new 'p7zip' + 'p7zip' end def install diff --git a/Library/Formula/vorbis-tools.rb b/Library/Formula/vorbis-tools.rb index 4cd6613ac..b057cbe18 100644 --- a/Library/Formula/vorbis-tools.rb +++ b/Library/Formula/vorbis-tools.rb @@ -6,9 +6,7 @@ class VorbisTools <Formula @homepage='http://vorbis.com' def deps - LibraryDep.new 'ogg' - LibraryDep.new 'vorbis' - OptionalLibraryDep.new 'ao', 'ogg123' + { :required => %w[ogg vorbis], :optional => %w[ao ogg123] } end def install diff --git a/Library/Formula/yajl.rb b/Library/Formula/yajl.rb index 288e2fd39..19f47f2ff 100644 --- a/Library/Formula/yajl.rb +++ b/Library/Formula/yajl.rb @@ -6,7 +6,7 @@ class Yajl <Formula @md5='f4a3cbc764c43231ed1aedc54438b69b' def deps - BinaryDep.new 'cmake' + 'cmake' end def install @@ -18,4 +18,4 @@ class Yajl <Formula system "./configure --prefix '#{prefix}'" system "make install" end -end
\ No newline at end of file +end diff --git a/Library/Homebrew/brew.h.rb b/Library/Homebrew/brew.h.rb index 8b3939968..496e7afc0 100644 --- a/Library/Homebrew/brew.h.rb +++ b/Library/Homebrew/brew.h.rb @@ -144,6 +144,33 @@ def clean f end +# NOTE this is ugly code, and inefficient too, and can have infinite cycles +# I have no time currently to improve it, feel free to submit a more elegant +# solution. Thanks! --mxcl +def expand_deps fae + deps = [] + fae.each do |f| + case f.deps + when String, Array + f.deps.each do |name| + f = Formula.factory name + deps << expand_deps(f) if f.deps # hideous inefficient + deps << f + end + when Hash + # TODO implement optional and recommended + names = [] + f.deps.each_value {|v| names << v} + ff=names.flatten.collect {|name| Formula.factory name} + deps << expand_deps(ff) + end + deps << f + end + # TODO much more efficient to use a set and not recurse stuff already done + return deps.flatten.uniq +end + + def install f f.brew do if ARGV.flag? '--interactive' diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 7faabbae6..9c5123545 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -123,7 +123,7 @@ class Formula def brew validate_variable :name validate_variable :version - + stage do begin patch diff --git a/Library/Homebrew/unittest.rb b/Library/Homebrew/unittest.rb index ae8b0c1bc..2738755e4 100755 --- a/Library/Homebrew/unittest.rb +++ b/Library/Homebrew/unittest.rb @@ -41,7 +41,8 @@ class MostlyAbstractFormula <Formula end class TestBall <Formula - def initialize + # name parameter required for some Formula::factory + def initialize name=nil @url="file:///#{Pathname.new(ABS__FILE__).parent.realpath}/testball-0.1.tbz" super "testball" end @@ -98,9 +99,13 @@ def nostdout end module ExtendArgvPlusYeast - def stick_an_arg_in_thar + def reset @named=nil - unshift 'foo' + @formulae=nil + @kegs=nil + while ARGV.count > 0 + ARGV.shift + end end end ARGV.extend ExtendArgvPlusYeast @@ -347,8 +352,9 @@ class BeerTasting <Test::Unit::TestCase end def test_no_ARGV_dupes - ARGV.unshift'foo' - ARGV.unshift'foo' + ARGV.reset + ARGV.unshift 'foo' + ARGV.unshift 'foo' n=0 ARGV.named.each{|arg| n+=1 if arg == 'foo'} assert_equal 1, n @@ -360,9 +366,10 @@ class BeerTasting <Test::Unit::TestCase assert_raises(UsageError) { ARGV.kegs } assert ARGV.named_empty? - (HOMEBREW_CELLAR+'foo'+'0.1').mkpath + (HOMEBREW_CELLAR+'mxcl'+'10.0').mkpath - ARGV.stick_an_arg_in_thar + ARGV.reset + ARGV.unshift 'mxcl' assert_equal 1, ARGV.named.length assert_equal 1, ARGV.kegs.length assert_raises(FormulaUnavailableError) { ARGV.formulae } @@ -395,7 +402,7 @@ class BeerTasting <Test::Unit::TestCase nostdout do assert_nothing_raised do f=TestBall.new - make 'http://example.com/testball-0.1.tbz' + make f.url info f.name clean f prune @@ -95,20 +95,24 @@ begin raise "We cannot find a c compiler, have you installed the latest Xcode?" end - require 'beer_events' - - watch_out_for_spill do - ARGV.formulae.each 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 - next + 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 + end + end + + fae=expand_deps ARGV.formulae + require 'beer_events' + + watch_out_for_spill do + fae.each do |f| # we need to ensure a pristine ENV for each process or the formula # will start with the ENV from the previous build pid=fork @@ -162,9 +166,6 @@ begin when 'unlink' ARGV.kegs.each {|keg| puts "#{keg.unlink} links removed for #{keg}"} - when 'unlink' - ARGV.kegs.each {|keg| puts "#{keg.unlink} links removed for #{keg}"} - when 'rm', 'uninstall', 'remove' ARGV.kegs.each do |keg| puts "Uninstalling #{keg}..." |
