diff --git a/Cellar/homebrew/brew b/Cellar/homebrew/brew index d857c60687a555e323489d8c327d7ebbb2e87619..9782c4edd4a33e34c26af5871eb740b400593336 100755 --- a/Cellar/homebrew/brew +++ b/Cellar/homebrew/brew @@ -3,7 +3,10 @@ # Licensed as per the GPL version 3 require 'find' require 'pathname' -$root = Pathname.new(__FILE__).realpath.dirname.parent.parent +$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" +$root=Pathname.new(__FILE__).realpath.dirname.parent.parent +$formula=$root+'Formula' +$cellar=$root+'Cellar' def prune n=0 @@ -25,95 +28,224 @@ def prune end end # entries lists '.' and '..' so 2 is minimum basically - dirs.sort.reverse_each { |d| d.rmdir if d.children.length == 0 } + dirs.sort.reverse_each do |d| + if d.children.length == 0 + d.rmdir + n+=1 + end + end return n end -case ARGV[0] - when 'brew', 'install' then - abort "You must specify a Formula" unless ARGV[1] - ARGV.shift - file="#{$root}/Formula/#{ARGV.shift}" - file+='.rb' unless File.exist? file - system "ruby #{file} #{ARGV.join ' '}" - - when 'rm', 'uninstall' then - path=$root+'Cellar'+ARGV[1] - abort "#{ARGV[1]} is not installed" unless path.directory? - path.rmtree - prune - puts "#{path} removed" - - when 'ln' then - target=Pathname.new(ARGV[1]) - target=$root+'Cellar'+target unless target.exist? - - abort "#{target} is not a directory" unless target.directory? - - target=target.realpath - - if target.parent.parent == $root - # we are one dir too high - kids=target.children - abort "#{target} is empty :(" if kids.length == 0 - abort "There are multiple versions of #{target.basename} installed please specify one" if kids.length > 1 - target=target.children.first - abort "#{target} is not a directory!" unless target.directory? - elsif target.parent.parent.parent != $root - abort '#{target} is not a keg' - end +def shift_formulae + name=Pathname.new ARGV.shift - #TODO you should mkdirs as you find them and symlink files otherwise - #TODO consider using hardlinks + return name if name.directory? and name.parent.realpath == $cellar + return File.basename(name, '.rb') if name.file? and name.extname == '.rb' and name.parent.realpath == $formula - n=0 - target.find do |from| - next if from == ARGV[1] #rubysucks + name=name.to_s + raise "#{name} is an invalid name for a formula" if name.include? '/' - to=$root+from.relative_path_from(target) + return name if ($formula+(name+'.rb')).file? + return name if ($cellar+name).directory? - if from.directory? - to.mkpath unless to.exist? - elsif from.file? - tod=to.dirname - Dir.chdir(tod) do - `ln -sf "#{from.relative_path_from tod}"` - n+=1 - end - end + raise "No formula or keg for #{name} found" +end + +def __class name + #remove invalid characters and camelcase + name.capitalize.gsub(/[-_\s]([a-zA-Z0-9])/) { $1.upcase } +end + +def __rb name + $formula+(name+'.rb') +end + +def __obj name + require "#{__rb name}" + o=eval(__class(name)).new + o.name=name + return o +end + +def rm keg + #TODO if multiple versions don't rm all unless --force + path=$cellar+keg + path.rmtree + puts "#{path} removed (#{prune} files)" +end + +def ln name + keg=$cellar+name + keg=keg.realpath + + if keg.parent.parent == $root + # we are one dir too high + kids=keg.children + raise "#{keg} is empty :(" if kids.length == 0 + raise "There are multiple versions of #{keg.basename} installed please specify one" if kids.length > 1 + keg=keg.children.first + raise "#{keg} is not a directory" unless keg.directory? + elsif keg.parent.parent.parent != $root + raise '#{keg} is not a keg' + end + + #TODO consider using hardlinks + + # yeah indeed, you have to force anything you want in the main tree into + # these directories :P + $n=0 + lnd(keg, 'etc') {nil} + lnd(keg, 'include') {nil} + + lnd(keg, 'lib') do |path| + :mkpath if ['pkgconfig','php'].include? path.to_s + end + + lnd(keg, 'bin') do |path| + if path.extname.to_s == '.app' + # no need to put .app bundles in the path, just use spotlight, or the + # open command + :skip + else + :mkpath end - puts "Created #{n} links" - - when 'abv', 'stats', 'statistics' - cellar=$root+'Cellar' - print `find #{cellar} -type f | wc -l`.strip+' files, '+`du -hd0 #{cellar} | cut -d"\t" -f1`.strip - - when 'prune', 'pasteurize' then - puts "Pruned #{prune} files" - - when 'prefix' - # Get the clean path to $prefix/Cellar/homebrew/brew/../../../ - # Don't resolve any symlinks of that final result. - # Rationale: if the user calls /usr/local/bin/brew but that will resolve - # to /Brewery/Cellar/homebrew/brew we should give /usr/local and not - # /Brewery because the user probably has chosen /usr/local as the Homebrew - # to expose to the system. - if File.symlink? __FILE__ - # using pathname as it will handle readlink returning abs or rel paths - d=Pathname.new(__FILE__).dirname - puts File.expand_path(d+File.readlink(__FILE__)+'../../../') + end + + lnd(keg, 'share') do |path| + path=path.to_s + if ['man','doc','locale','info'].include? path + :mkpath else - # Dir.pwd resolves the symlink :P #rubysucks - # we use the cwd because __FILE__ can be relative and expand_path - # resolves the symlink for the working directory if fed a relative path - # SIGH - cwd=Pathname.new `pwd`.strip - puts File.expand_path(cwd+__FILE__+'../../../') + mans=(1..9).collect {|x| "man/man#{x}"} + :mkpath if mans.include? path + end + end + + return $n +end + +def symlink_relative_to from, to + tod=to.dirname + tod.mkpath + Dir.chdir(tod) do + #TODO use ruby function so we get exceptions + `ln -sf "#{from.relative_path_from tod}"` + $n+=1 + end +end + +# symlinks a directory recursively into our FHS tree +def lnd keg, start + start=keg+start + return unless start.directory? + + start.find do |from| + next if from == start + + prune=false + relative_path=from.relative_path_from keg + to=$root+relative_path + + if from.directory? + cmd=yield from.relative_path_from(start) + + if :skip == cmd + Find.prune + elsif :mkpath == cmd + to.mkpath + $n+=1 + else + symlink_relative_to from, to + Find.prune + end + elsif from.file? + symlink_relative_to from, to end + end +end + +def prefix + # Get the clean path to $prefix/Cellar/homebrew/brew/../../../ + # Don't resolve any symlinks of that final result. + # Rationale: if the user calls /usr/local/bin/brew but that will resolve + # to /Brewery/Cellar/homebrew/brew we should give /usr/local and not + # /Brewery because the user probably has chosen /usr/local as the Homebrew + # to expose to the system. + if File.symlink? __FILE__ + # using pathname as it will handle readlink returning abs or rel paths + d=Pathname.new(__FILE__).dirname + File.expand_path(d+File.readlink(__FILE__)+'../../../') + else + # Dir.pwd resolves the symlink :P #rubysucks + # we use the cwd because __FILE__ can be relative and expand_path + # resolves the symlink for the working directory if fed a relative path + # SIGH + cwd=Pathname.new `pwd`.strip + File.expand_path(cwd+__FILE__+'../../../') + end +end + +def usage + name=File.basename $0 + <<-EOS +Usage: #{name} [abv] [prune] [--prefix] [--cache] +Usage: #{name} [install] [ln] [rm] [info] [list] beverage + EOS +end - when 'cache' - puts File.expand_path('~/Library/Application Support/Homebrew') +######################################################################### impl +begin + #TODO proper options parsing so --options can go first if necessary + + case ARGV.shift + when 'abv' + `find #{$cellar} -type f | wc -l`.strip+' files, '+`du -hd0 #{$cellar} | cut -d"\t" -f1`.strip + when 'prune' + puts "Pruned #{prune} files" + when '--prefix' + puts prefix + when '--cache' + puts File.expand_path('~/Library/Application Support/Homebrew') + when '-h', '--help', '--usage', '-?' + puts usage + when '-v', '--version' + puts HOMEBREW_VERSION + when 'list' + puts `find #{$cellar+shift_formulae}` + when 'install' + name=shift_formulae + beginning = Time.now + o=__obj(name) + raise "#{o.prefix} already exists!" if o.prefix.exist? + o.brew { o.install } + ln name + puts "#{o.prefix}: "+`find #{o.prefix} -type f | wc -l`.strip+ + ' files, '+ + `du -hd0 #{o.prefix} | cut -d"\t" -f1`.strip+ + ", built in #{Time.now - beginning} seconds" + when 'ln' + puts "Created #{ln shift_formulae} links" + when 'rm' + rm shift_formulae + when 'info' + o=__obj shift_formulae + puts "#{o.name} #{o.version}" + puts o.homepage + else + puts usage + end +rescue StandardError, Interrupt => e + if ARGV.include? '--verbose' or ENV['HOMEBREW_DEBUG'] + raise + elsif e.kind_of? Interrupt + puts # seeimgly a newline is typical + exit 130 + elsif e.kind_of? StandardError and not e.kind_of? NameError + puts "\033[1;31mError\033[0;0m: #{e}" + exit 1 else - puts "usage: #{$0} [prune] [ln path] [install pkg]" + raise + end end \ No newline at end of file diff --git a/Cellar/homebrew/brewkit.rb b/Cellar/homebrew/brewkit.rb index f0daa48c82e08236e12ffb13b112def2581eb835..b19cfcf66b187d0144882f23ede0411c361aa8a9 100644 --- a/Cellar/homebrew/brewkit.rb +++ b/Cellar/homebrew/brewkit.rb @@ -2,8 +2,7 @@ # Licensed as per the GPL version 3 require 'pathname' -$agent = "Homebrew 0.1 (Ruby; Mac OS X 10.5 Leopard)" -$cellar = Pathname.new(__FILE__).dirname.parent.realpath +HOMEBREW_VERSION='0.1' # optimise all the way to eleven, references: # http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel @@ -18,9 +17,9 @@ ENV['CC']='gcc-4.2' ENV['CXX']='g++-4.2' ENV['MAKEFLAGS']='-j2' -unless $cellar.parent.to_s == '/usr/local' - ENV['CPPFLAGS']="-I#{$cellar.parent}/include" - ENV['LDFLAGS']="-L#{$cellar.parent}/lib" +unless $root.to_s == '/usr/local' + ENV['CPPFLAGS']='-I'+$root+'include' + ENV['LDFLAGS']='-L'+$root+'lib' end @@ -35,21 +34,59 @@ def appsupport return appsupport end + +# make our code neater +class Pathname + def mv dst + FileUtils.mv to_s, dst + end + def cp dst + if file? + FileUtils.cp to_s, dst + else + FileUtils.cp_r to_s, dst + end + end +end + + class Formula require 'find' require 'fileutils' - # if you reimplement, assign @name, @version, @url and @md5 - def initialize(url, md5) - @name = File.basename $0, '.rb' #original script that the interpreter started - @url = url - @md5 = md5 + # fuck knows, ruby is weird + def self.url + @url + end + def url + self.class.url + end + def self.md5 + @md5 + end + def md5 + self.class.md5 + end + def self.homepage + @homepage + end + def homepage + self.class.homepage + end + # end ruby is weird section + + def initialize + # fuck knows, ruby is weird + @url=url if @url.nil? + raise "@url.nil?" if @url.nil? + @md5=md5 if @md5.nil? + # end ruby is weird section # pls improve this version extraction crap - filename=File.basename url + filename=File.basename @url i=filename.index /[-_]\d/ unless i.nil? - /^((\d+[._])*(\d+-)?\d+)/.match filename[i+1,1000] #1000 because rubysucks + /^((\d+[._])*(\d+-)?\d+[abc]?)/.match filename[i+1,1000] #1000 because rubysucks @version=$1 # if there are no dots replace underscores, boost do this, the bastards! @version.gsub!('_', '.') unless @version.include? '.' @@ -59,26 +96,57 @@ class Formula @version = $1 end end + +private + def maybe_mkpath path + path.mkpath unless path.exist? + return path + end - #yields a Pathname object for the installation prefix - def brew - raise "@name.nil?" if @name.nil? +public + def prefix + raise "@name.nil!" if @name.nil? raise "@version.nil?" if @version.nil? + $cellar+@name+@version + end + def bin + maybe_mkpath prefix+'bin' + end + def doc + maybe_mkpath prefix+'share'+'doc'+name + end + def man + maybe_mkpath prefix+'share'+'man' + end + def lib + maybe_mkpath prefix+'lib' + end + def include + maybe_mkpath prefix+'include' + end - # disabled until the regexp makes sense :P - #raise "@name does not validate to our regexp" unless /^\w+$/ =~ @name + def name=name + raise "Name assigned twice, I'm not letting you do that!" if @name + @name=name + end - beginning = Time.now +protected + def caveats + nil + end - prefix=$cellar+@name+@version - raise "#{prefix} already exists!" if prefix.exist? +public + #yields a Pathname object for the installation prefix + def brew + # disabled until the regexp makes sense :P + #raise "@name does not validate to our regexp" unless /^\w+$/ =~ @name ohai "Downloading #{@url}" Dir.chdir appsupport do tgz=Pathname.new(fetch()).realpath md5=`md5 -q "#{tgz}"`.strip - raise "MD5 mismatch: #{md5}" unless md5 == @md5.downcase + raise "MD5 mismatch: #{md5}" unless md5 and md5 == @md5.downcase # we make an additional subdirectory so know exactly what we are # recursively deleting later @@ -86,26 +154,27 @@ class Formula # can't handle being built in a directory with spaces in it :P tmp=nil begin - tmp=`mktemp -dt #{@name}-#{@version}`.strip + tmp=`mktemp -dt #{File.basename @url}`.strip Dir.chdir tmp do Dir.chdir uncompress(tgz) do - caveats = yield prefix + prefix.mkpath + yield self if caveats ohai "Caveats" puts caveats - ohai "Summary" end #TODO copy changelog or CHANGES file to pkg root, #TODO maybe README, etc. to versioned root end end - rescue + rescue Interrupt, RuntimeError if ARGV.include? '--debug' # debug mode allows the packager to intercept a failed build and # investigate the problems puts "Rescued build at: #{tmp}" exit! 1 else + FileUtils.rm_rf prefix raise end ensure @@ -115,27 +184,26 @@ class Formula ohai 'Finishing up' - # stay in appsupport in case any odd files gets created etc. - `#{$cellar}/homebrew/brew ln #{prefix}` if prefix.exist? - prefix.find do |path| if path==prefix #rubysucks next elsif path.file? - fo=`file -h #{path}` - args=nil - args='-SxX' if fo =~ /Mach-O dynamically linked shared library/ - args='' if fo =~ /Mach-O executable/ #defaults strip everything - if args - puts "Stripping: #{path}" if ARGV.include? '--verbose' - `strip #{args} #{path}` + if path.extname == '.la' + path.unlink + else + fo=`file -h #{path}` + args=nil + args='-SxX' if fo =~ /Mach-O dynamically linked shared library/ + args='' if fo =~ /Mach-O executable/ #defaults strip everything + if args + puts "Stripping: #{path}" if ARGV.include? '--verbose' + `strip #{args} #{path}` + end end elsif path.directory? and path!=prefix+'bin' and path!=prefix+'lib' Find.prune end end - - puts "#{prefix}: "+`find #{prefix} -type f | wc -l`.strip+' files, '+`du -hd0 #{prefix} | cut -d"\t" -f1`.strip+", built in #{Time.now - beginning} seconds" end end @@ -159,8 +227,10 @@ protected tgz=File.expand_path File.basename(@url) end + agent="Homebrew #{HOMEBREW_VERSION} (Ruby #{VERSION}; Mac OS X 10.5 Leopard)" + unless File.exists? tgz - `curl -#LA "#{$agent}" #{oarg} "#{@url}"` + `curl -#LA "#{agent}" #{oarg} "#{@url}"` raise "Download failed" unless $? == 0 else puts "File already downloaded and cached" @@ -178,9 +248,15 @@ protected raise "Compression tool failed" if $? != 0 entries=Dir['*'] - raise "Empty tar!" if entries.nil? or entries.length == 0 - raise "Too many folders in uncompressed result. You need to reimplement the Recipe.uncompress function." if entries.length > 1 - return entries.first + if entries.nil? or entries.length == 0 + raise "Empty tarball!" + elsif entries.length == 1 + # if one dir enter it as that will be where the build is + entries.first + else + # if there's more than one dir, then this is the build directory already + Dir.pwd + end end def cache? @@ -193,22 +269,21 @@ private end end -# you have to reimplement initialize to set the version, for example usage -# see the ack script -class UncompressedScriptFormula < Formula - def initialize(url) - @url=url - @name=File.basename url - end +# see ack.rb for an example usage +class UncompressedScriptFormula <Formula def uncompress path path.dirname end def cache? false end + def install + FileUtils.cp name, bin + (bin+name).chmod 0544 + end end -class GithubGistFormula < Formula +class GithubGistFormula <Formula def initialize(url, md5) @url=url @name=File.basename url @@ -225,7 +300,7 @@ class GithubGistFormula < Formula end def uncompress path - File.dirname path + path.dirname end end @@ -259,19 +334,6 @@ def system cmd end end -# force a prettier exception handler unless --verbose or HOMEBREW_DEBUG -Kernel.at_exit { - if $! and not (ARGV.include? '--verbose' or ENV['HOMEBREW_DEBUG']) - if $!.kind_of? Interrupt #control-c - puts # seeimgly a newline is more typical - exit! 130 - elsif $!.kind_of? StandardError - puts "\033[1;31mError\033[0;0m: #{$!}" - exit! 1 - end - end -} - ########################################################################script if $0 == __FILE__ d=$cellar.parent+'bin' diff --git a/Cellar/homebrew/unittest.rb b/Cellar/homebrew/unittest.rb index 8e1e01cb3ac0b3b358dbe42e737b7e4764dffed3..1982faefc12661f99ab5fa7a2db34613fe607cf3 100755 --- a/Cellar/homebrew/unittest.rb +++ b/Cellar/homebrew/unittest.rb @@ -1,64 +1,77 @@ #!/usr/bin/ruby -cwd=File.dirname(__FILE__) -$:.unshift cwd #rubysucks +$:.unshift File.dirname(__FILE__) +require 'pathname' +$root=Pathname.new(__FILE__).realpath.dirname.parent.parent +$cellar=$root+'Cellar' require 'brewkit' require 'test/unit' -$cellar=Pathname.new(cwd).parent.realpath -class BeerTasting < Test::Unit::TestCase + +class TestFormula <Formula + def initialize url, md5 + @url=url + @md5=md5 + @name='test' + super() + end +end + + +class BeerTasting <Test::Unit::TestCase def test_version_all_dots - r=Formula.new "http://example.com/foo.bar.la.1.14.zip", 'nomd5' + r=TestFormula.new "http://example.com/foo.bar.la.1.14.zip", 'nomd5' assert_equal '1.14', r.version end def test_version_underscore_separator - r=Formula.new "http://example.com/grc_1.1.tar.gz", 'nomd5' + r=TestFormula.new "http://example.com/grc_1.1.tar.gz", 'nomd5' assert_equal '1.1', r.version end def test_version_underscores_all_the_way - r=Formula.new "http://example.com/boost_1_39_0.tar.bz2", 'nomd5' + r=TestFormula.new "http://example.com/boost_1_39_0.tar.bz2", 'nomd5' assert_equal '1.39.0', r.version end def test_version_internal_dash - r=Formula.new "http://example.com/foo-arse-1.1-2.tar.gz", 'nomd5' + r=TestFormula.new "http://example.com/foo-arse-1.1-2.tar.gz", 'nomd5' assert_equal '1.1-2', r.version end def test_version_single_digit - r=Formula.new "http://example.com/foo_bar.45.tar.gz", 'nomd5' + r=TestFormula.new "http://example.com/foo_bar.45.tar.gz", 'nomd5' assert_equal '45', r.version end def test_noseparator_single_digit - r=Formula.new "http://example.com/foo_bar45.tar.gz", 'nomd5' + r=TestFormula.new "http://example.com/foo_bar45.tar.gz", 'nomd5' assert_equal '45', r.version end def test_version_developer_that_hates_us_format - r=Formula.new "http://example.com/foo-bar-la.1.2.3.tar.gz", 'nomd5' + r=TestFormula.new "http://example.com/foo-bar-la.1.2.3.tar.gz", 'nomd5' assert_equal '1.2.3', r.version end def test_version_regular - r=Formula.new "http://example.com/foo_bar-1.21.tar.gz", 'nomd5' + r=TestFormula.new "http://example.com/foo_bar-1.21.tar.gz", 'nomd5' assert_equal '1.21', r.version end + def test_yet_another_version + r=TestFormula.new "http://example.com/mad-0.15.1b.tar.gz", 'nomd5' + assert_equal '0.15.1b', r.version + end + def test_prefix url='http://www.methylblue.com/test-0.1.tar.gz' md5='d496ea538a21dc4bb8524a8888baf88c' - begin #rubysyntaxFAIL - Formula.new(url, md5).brew do |prefix| - # we test for +/unittest/0.1 because we derive @name from $0 - assert_equal File.expand_path(prefix), ($cellar+'unittest'+'0.1').to_s - assert_kind_of Pathname, prefix - end - rescue IOError => e - # this is not an error, cook will throw as nothing was installed - raise unless e.errno == Errno::ENOENT + TestFormula.new(url, md5).brew do |f| + prefix=f.prefix + # we test for +/unittest/0.1 because we derive @name from $0 + assert_equal File.expand_path(prefix), ($cellar+'test'+'0.1').to_s + assert_kind_of Pathname, prefix end end end \ No newline at end of file diff --git a/Formula/__template.rb b/Formula/__template.rb deleted file mode 100644 index 2d7ba24070bd61e5ea9984ac5375196433940188..0000000000000000000000000000000000000000 --- a/Formula/__template.rb +++ /dev/null @@ -1,11 +0,0 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks -require 'brewkit' - -homepage='' -url='' -md5='' # leave this blank and brewkit will error out, but show you the md5 - -Formula.new(url, md5).brew do |prefix| - system "./configure --disable-debug --prefix='#{prefix}'" - system "make install" # if this fails, split into two steps -end \ No newline at end of file diff --git a/Formula/ack.rb b/Formula/ack.rb index b27d827ac23c4163b0214128157f185051f92aa2..4bab09c89ee23fc4c7df08daf27b267215538ca0 100644 --- a/Formula/ack.rb +++ b/Formula/ack.rb @@ -1,22 +1,10 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -require 'fileutils' -homepage='http://betterthangrep.com/' - -class AckFormula < UncompressedScriptFormula +class Ack <UncompressedScriptFormula def initialize - super('http://ack.googlecode.com/svn/tags/1.88/ack') @version='1.88' + @url="http://ack.googlecode.com/svn/tags/#{@version}/ack" @md5='8009a13ab0fc66047bea0ea2ad89419c' + @homepage='http://betterthangrep.com/' end -end - -ack=AckFormula.new -ack.brew do |prefix| - bin=prefix+'bin' - bin.mkpath - FileUtils.cp ack.name, bin - (bin+ack.name).chmod 0544 - nil end \ No newline at end of file diff --git a/Formula/asciidoc.rb b/Formula/asciidoc.rb new file mode 100644 index 0000000000000000000000000000000000000000..6b53ff83c13c4804620907b83a6f0ddb9f08a189 --- /dev/null +++ b/Formula/asciidoc.rb @@ -0,0 +1,12 @@ +require 'brewkit' + +class Asciidoc <Formula + @url='http://www.methods.co.nz/asciidoc/asciidoc-8.4.4.tar.gz' + @md5='579bcd5762b177ee0ddccece8c34724b' + @homepage='http://www.methods.co.nz/asciidoc' + + def install + system "./configure --disable-debug --prefix='#{prefix}'" + system "make install" + end +end \ No newline at end of file diff --git a/Formula/boost.rb b/Formula/boost.rb index 91a875a9b372bf969f2d8552bb7df133360bcb99..2022ef952ca7e6a9514ca56729482b338e73532b 100644 --- a/Formula/boost.rb +++ b/Formula/boost.rb @@ -1,17 +1,16 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://www.boost.org' -url='http://kent.dl.sourceforge.net/sourceforge/boost/boost_1_39_0.tar.bz2' -md5='a17281fd88c48e0d866e1a12deecbcc0' +class Boost <Formula + @homepage='http://www.boost.org' + @url='http://kent.dl.sourceforge.net/sourceforge/boost/boost_1_39_0.tar.bz2' + @md5='a17281fd88c48e0d866e1a12deecbcc0' -Formula.new(url, md5).brew do |prefix| - lib=prefix+'lib' - # we specify libdir too because the script is apparently broken - - #TODO we can save 6300 links if we just had the intelligence to symlink the - # include/boost dir and not more - - system "./bootstrap.sh --prefix='#{prefix}' --libdir='#{lib}'" - system "./bjam --layout=system --prefix='#{prefix}' --libdir='#{lib}' install" + def install + #TODO we can save 6300 links if we just had the intelligence to symlink + #the include/boost dir and not more + + # we specify libdir too because the script is apparently broken + system "./bootstrap.sh --prefix='#{prefix}' --libdir='#{lib}'" + system "./bjam --layout=system --prefix='#{prefix}' --libdir='#{lib}' install" + end end \ No newline at end of file diff --git a/Formula/cmake.rb b/Formula/cmake.rb index 2f3a3af1fcc8830ef3a54a4b92ff069cf4a82f07..ee35e3eef5e9afc9118056322501c79889925a69 100644 --- a/Formula/cmake.rb +++ b/Formula/cmake.rb @@ -1,19 +1,13 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -require 'fileutils' -url='http://www.cmake.org/files/v2.6/cmake-2.6.3.tar.gz' -md5='5ba47a94ce276f326abca1fd72a7e7c6' +class Cmake <Formula + @url='http://www.cmake.org/files/v2.6/cmake-2.6.3.tar.gz' + @md5='5ba47a94ce276f326abca1fd72a7e7c6' -Formula.new(url, md5).brew do |prefix| - system "./bootstrap --prefix=#{prefix} --system-libs" - system "make" - system "make install" - - # the people who develop cmake are just idiots - share=prefix+'share' - FileUtils.mv prefix+'man', share - FileUtils.mv prefix+'doc', share - - nil + def install + system "./bootstrap --prefix=#{prefix} --system-libs" + system "make install" + + ['man','doc'].each { |d| (prefix+d).mv prefix+'share' } + end end \ No newline at end of file diff --git a/Formula/dmd.rb b/Formula/dmd.rb index 2ca36a7572c01164190b8f36a1d48f1c0b7f4ccd..9ad5784be3ac9c8fd1f1589f259efe46bc738d6d 100644 --- a/Formula/dmd.rb +++ b/Formula/dmd.rb @@ -1,29 +1,42 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://www.digitalmars.com/d/' -url='http://ftp.digitalmars.com/dmd.1.043.zip' -md5='6c83b7296cb84090a9ebc11ab0fb94a2' +class Dmd <Formula + @homepage='http://www.digitalmars.com/d/' + @url='http://ftp.digitalmars.com/dmd.1.043.zip' + @md5='6c83b7296cb84090a9ebc11ab0fb94a2' -Formula.new(url, md5).brew do |prefix| - ohai "make" - prefix.mkpath - FileUtils.cp_r 'osx/bin', prefix - FileUtils.cp_r 'osx/lib', prefix - FileUtils.cp_r 'man', prefix - FileUtils.cp_r 'src', prefix + def doc + #use d and not dmd, rationale: meh + prefix+'share'+'doc'+'d' + end - share=prefix+'share'+'doc'+'d' - html=share+'html' - samples=share+'examples' #examples is the more typical directory name - html.mkpath - samples.mkpath + def install + ohai "install" + FileUtils.cp_r 'osx/bin', prefix + FileUtils.cp_r 'osx/lib', prefix + FileUtils.cp_r 'man/man1', man + FileUtils.cp_r 'src', prefix - FileUtils.cp_r Dir['html/d/*'], html unless ARGV.include? '--no-html' - FileUtils.cp_r Dir['samples/d/*'], samples unless ARGV.include? '--no-samples' - - # zip files suck - Dir.chdir(prefix+'bin') { `chmod u+x dmd dumpobj obj2asm` } + #lol + man5=man+'man5' + man5.mkpath + (man+'man1'+'dmd.conf.5').mv man5 + #lol ends + + html=doc+'html' + samples=doc+'examples' #examples is the more typical directory name + html.mkpath + samples.mkpath + + FileUtils.cp_r Dir['html/d/*'], html unless ARGV.include? '--no-html' + FileUtils.cp_r Dir['samples/d/*'], samples unless ARGV.include? '--no-samples' - nil + # zip files suck TODO FileUtils.chmod + Dir.chdir(bin) { `chmod u+x dmd dumpobj obj2asm` } + + (prefix+'bin'+'dmd.conf').open('w') do |f| + f.puts "[Environment]" + f.puts "DFLAGS=-I#{prefix}/src/phobos -L-L#{prefix}/lib" + end + end end \ No newline at end of file diff --git a/Formula/fftw.rb b/Formula/fftw.rb index 2220270f2843655ba9f26ae0bdbaa714cdc9e222..e79002fc4b875a8bf7b8568d030ad64083b42eaf 100644 --- a/Formula/fftw.rb +++ b/Formula/fftw.rb @@ -1,17 +1,21 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://www.fftw.org' -url='http://www.fftw.org/fftw-3.2.1.tar.gz' -md5='712d3f33625a0a76f5758648d4b925f7' +class Fftw <Formula + @homepage='http://www.fftw.org' + @url='http://www.fftw.org/fftw-3.2.1.tar.gz' + @md5='712d3f33625a0a76f5758648d4b925f7' -Formula.new(url, md5).brew do |prefix| - configure=<<-EOS - ./configure --enable-shared --disable-debug --prefix='#{prefix}' - --enable-threads --enable-single --enable-sse - --disable-dependency-tracking - --disable-fortran - EOS - system configure.gsub("\n", ' ').strip.squeeze(' ') - system "make install" + def install + configure=<<-EOS + ./configure --enable-shared --disable-debug --prefix='#{prefix}' + --enable-threads --enable-single --enable-sse + --disable-dependency-tracking + --disable-fortran + EOS + system configure.gsub("\n", ' ').strip.squeeze(' ') + system "make install" + + #wtf file? + (prefix+'share'+'info'+'dir').unlink + end end \ No newline at end of file diff --git a/Formula/git.rb b/Formula/git.rb index e0ec8d34d611c064eac2b0db5354737f5624d56d..0f0620f407ebea2b81efe0458a9e0843c9b697fd 100644 --- a/Formula/git.rb +++ b/Formula/git.rb @@ -1,12 +1,20 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://git-scm.com' -url='http://kernel.org/pub/software/scm/git/git-1.6.3.1.tar.bz2' -md5='c1f4aab741359c29f0fbf28563ac7387' +class GitManuals <Formula + @url='http://kernel.org/pub/software/scm/git/git-manpages-1.6.3.1.tar.bz2' + @md5='971d573e8f261feb83290a59728c2b33' +end -Formula.new(url, md5).brew do |prefix| - system "./configure --disable-debug --prefix='#{prefix}'" - system "make" - system "make install" +class Git <Formula + @url='http://kernel.org/pub/software/scm/git/git-1.6.3.1.tar.bz2' + @md5='c1f4aab741359c29f0fbf28563ac7387' + @homepage='http://git-scm.com' + + def install + system "./configure --prefix='#{prefix}' --disable-debug" + system "make install" + + # the manuals come separately, well sort of, it's easier this way though + GitManuals.new.brew { FileUtils.mv Dir['*'], man } + end end \ No newline at end of file diff --git a/Formula/grc.rb b/Formula/grc.rb index c80cabf9620c4953763b7377ca487a20acdb409b..7f6db90b0d2640af26d57280148e41b98a8dd047 100644 --- a/Formula/grc.rb +++ b/Formula/grc.rb @@ -1,6 +1,4 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -require 'fileutils' def profile_string <<-sput @@ -33,36 +31,40 @@ case ARGV[0] end ######################################################################### cook -homepage='http://korpus.juls.savba.sk/~garabik/software/grc.html' -url='http://korpus.juls.savba.sk/~garabik/software/grc/grc_1.1.tar.gz' -md5='eeb612aba2fff14cbaf1f3bec7e1eb60' +class Grc <Formula + @homepage='http://korpus.juls.savba.sk/~garabik/software/grc.html' + @url='http://korpus.juls.savba.sk/~garabik/software/grc/grc_1.1.tar.gz' + @md5='eeb612aba2fff14cbaf1f3bec7e1eb60' -Formula.new(url, md5).brew do |prefix| - ohai "make" - #TODO we should deprefixify since it's python and thus possible - inreplace 'grc', '/etc', prefix+'etc' - inreplace 'grc.1', '/etc', prefix+'etc' - inreplace 'grcat', '/usr/local', prefix - inreplace 'grcat.1', '/usr/local', prefix + def install + ohai "make" + #TODO we should deprefixify since it's python and thus possible + inreplace 'grc', '/etc', prefix+'etc' + inreplace 'grc.1', '/etc', prefix+'etc' + inreplace 'grcat', '/usr/local', prefix + inreplace 'grcat.1', '/usr/local', prefix - FileUtils.mkpath prefix - Dir.chdir prefix do - FileUtils.mkpath 'bin' - FileUtils.mkpath 'share/grc' - FileUtils.mkpath 'share/man/man1' - FileUtils.mkpath 'etc' - end - - `cp -fv grc grcat #{prefix}/bin` - `cp -fv conf.* #{prefix}/share/grc` - `cp -fv grc.conf #{prefix}/etc` - `cp -fv grc.1 grcat.1 #{prefix}/share/man/man1` + FileUtils.mkpath prefix + Dir.chdir prefix do + FileUtils.mkpath 'bin' + FileUtils.mkpath 'share/grc' + FileUtils.mkpath 'share/man/man1' + FileUtils.mkpath 'etc' + end - <<-nruter -grc won't work as is. One option is to add some aliases to your ~/.profile -file. Homebrew can do that for you, just execute this command: + `cp -fv grc grcat #{prefix}/bin` + `cp -fv conf.* #{prefix}/share/grc` + `cp -fv grc.conf #{prefix}/etc` + `cp -fv grc.1 grcat.1 #{prefix}/share/man/man1` + end + + def caveats + <<-EOS + grc won't work as is. One option is to add some aliases to your ~/.profile + file. Homebrew can do that for you, just execute this command: - ruby #{$0} --profile >> ~/.profile + ruby #{$0} --profile >> ~/.profile -nruter -end + EOS + end +end \ No newline at end of file diff --git a/Formula/lame.rb b/Formula/lame.rb index 8bbf7b3d8f794693308ba2d2796cbe32125e671a..2c248285c5157cf5979d1a4be1dcd3188dd292a7 100644 --- a/Formula/lame.rb +++ b/Formula/lame.rb @@ -1,11 +1,12 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://lame.sourceforge.net/' -url='http://kent.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz' -md5='719dae0ee675d0c16e0e89952930ed35' +class Lame <Formula + @homepage='http://lame.sourceforge.net/' + @url='http://kent.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz' + @md5='719dae0ee675d0c16e0e89952930ed35' -Formula.new(url, md5).brew do |prefix| - system "./configure --disable-debug --prefix='#{prefix}' --enable-nasm" - system "make install" # if this fails, split into two steps + def install + system "./configure --disable-debug --prefix='#{prefix}' --enable-nasm" + system "make install" + end end \ No newline at end of file diff --git a/Formula/liblastfm.rb b/Formula/liblastfm.rb index fe0d67ba3c51fc2995bb244d58c6e5879e76089c..5d1999172b8f7983a72b9dcd00e225f8fb6cba31 100644 --- a/Formula/liblastfm.rb +++ b/Formula/liblastfm.rb @@ -1,14 +1,19 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://github.com/mxcl/liblastfm/' -url='http://github.com/mxcl/liblastfm/tarball/0.3.0' -md5='b348917689b90f3f40125d0968f0b643' +class Liblastfm <Formula + @homepage='http://github.com/mxcl/liblastfm/' + @url='http://github.com/mxcl/liblastfm/tarball/0.3.0' + @md5='08e90275ccd06476426a5002d1dad762' -external_deps=['qmake'] + def deps + dep_test_bin 'qmake' or 'qt' + dep_test_lib 'fftw3f' or 'fftw' + dep_test_lib 'samplerate' or 'libsamplerate' + end -Formula.new(url, md5).brew do |prefix| - system "./configure --release --prefix '#{prefix}'" - system "make" - system "make install" + def install + system "./configure --release --prefix '#{prefix}'" + system "make" + system "make install" + end end \ No newline at end of file diff --git a/Formula/libogg.rb b/Formula/libogg.rb index 28a1d84d1c6919dd606ec6e016fd2f8d19382484..178835342d34a773aba9090faa58bf0ea5ea669e 100644 --- a/Formula/libogg.rb +++ b/Formula/libogg.rb @@ -1,11 +1,12 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://www.xiph.org/ogg/' -url='http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz' -md5='eaf7dc6ebbff30975de7527a80831585' +class Libogg <Formula + @homepage='http://www.xiph.org/ogg/' + @url='http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz' + @md5='eaf7dc6ebbff30975de7527a80831585' -Formula.new(url, md5).brew do |prefix| - system "./configure --disable-debug --prefix='#{prefix}'" - system "make install" + def install + system "./configure --disable-debug --prefix='#{prefix}'" + system "make install" + end end \ No newline at end of file diff --git a/Formula/libsamplerate.rb b/Formula/libsamplerate.rb index 7c9a9c5ec87d1e47b87135f05de889ceea7921f3..d6dedc6c7518ad2912b128f5dfb9918845dc67d3 100644 --- a/Formula/libsamplerate.rb +++ b/Formula/libsamplerate.rb @@ -1,11 +1,12 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://www.mega-nerd.com/SRC' -url='http://www.mega-nerd.com/SRC/libsamplerate-0.1.7.tar.gz' -md5='ad093e60ec44f0a60de8e29983ddbc0f' +class Libsamplerate <Formula + @homepage='http://www.mega-nerd.com/SRC' + @url='http://www.mega-nerd.com/SRC/libsamplerate-0.1.7.tar.gz' + @md5='ad093e60ec44f0a60de8e29983ddbc0f' -Formula.new(url, md5).brew do |prefix| - system "./configure --disable-debug --prefix='#{prefix}'" - system "make install" + def install + system "./configure --disable-debug --prefix='#{prefix}'" + system "make install" + end end \ No newline at end of file diff --git a/Formula/mad.rb b/Formula/mad.rb index ba11fe33c6726cc21c9b436d637b101856b0e3c7..0bbcab8f985b3a6c58e0481f91f821e0ee655cf0 100644 --- a/Formula/mad.rb +++ b/Formula/mad.rb @@ -1,12 +1,12 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://www.underbit.com/products/mad/' -url='http://kent.dl.sourceforge.net/sourceforge/mad/libmad-0.15.1b.tar.gz' -md5='1be543bc30c56fb6bea1d7bf6a64e66c' +class Mad <Formula + @homepage='http://www.underbit.com/products/mad/' + @url='http://kent.dl.sourceforge.net/sourceforge/mad/libmad-0.15.1b.tar.gz' + @md5='1be543bc30c56fb6bea1d7bf6a64e66c' -Formula.new(url, md5).brew do |prefix| - system "./configure --disable-debugging --enable-fpm=intel --prefix='#{prefix}'" - system "make" - system "make install" + def install + system "./configure --disable-debugging --enable-fpm=intel --prefix='#{prefix}'" + system "make install" + end end \ No newline at end of file diff --git a/Formula/pkg-config.rb b/Formula/pkg-config.rb index 18c321090370b7f3efda7ba8842e218a33deb69c..9254c5a657633de51cbbfd5b04cde12df50f95f8 100644 --- a/Formula/pkg-config.rb +++ b/Formula/pkg-config.rb @@ -1,15 +1,14 @@ -require 'pathname' -$root=Pathname.new(__FILE__).dirname.parent -$:.unshift "#{$root}/Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://pkgconfig.freedesktop.org' -url='http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz' -md5='d922a88782b64441d06547632fd85744' +class PkgConfig <Formula + @homepage='http://pkgconfig.freedesktop.org' + @url='http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz' + @md5='d922a88782b64441d06547632fd85744' -#TODO depend on our glib? --with-installed-glib + #TODO depend on our glib? --with-installed-glib -Formula.new(url, md5).brew do |prefix| - system "./configure --with-pc-path=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:#{$root}/lib/pkgconfig --disable-debug --prefix='#{prefix}'" - system "make install" + def install + system "./configure --with-pc-path=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:#{$root}/lib/pkgconfig --disable-debug --prefix='#{prefix}'" + system "make install" + end end \ No newline at end of file diff --git a/Formula/pngcrush.rb b/Formula/pngcrush.rb index 0a60781f31bf027d04d7ad154ceb808cb814ff09..00a889403c77335ab620ea63d9108652fc89f1a2 100644 --- a/Formula/pngcrush.rb +++ b/Formula/pngcrush.rb @@ -1,13 +1,12 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://pmt.sourceforge.net/pngcrush/' -url='http://kent.dl.sourceforge.net/sourceforge/pmt/pngcrush-1.6.17.tar.bz2' -md5='8ba31ae9b1b14e7648df320fd1ed27c7' +class Pngcrush <Formula + @homepage='http://pmt.sourceforge.net/pngcrush/' + @url='http://kent.dl.sourceforge.net/sourceforge/pmt/pngcrush-1.6.17.tar.bz2' + @md5='8ba31ae9b1b14e7648df320fd1ed27c7' -Formula.new(url, md5).brew do |prefix| - system "make" - bin=prefix+'bin' - bin.mkpath - FileUtils.cp 'pngcrush', bin + def install + system "make" + FileUtils.cp 'pngcrush', bin + end end \ No newline at end of file diff --git a/Formula/qt.rb b/Formula/qt.rb new file mode 100644 index 0000000000000000000000000000000000000000..9ce82d6003d52261c89d9ec20ba472fd8c5ae11d --- /dev/null +++ b/Formula/qt.rb @@ -0,0 +1,43 @@ +require 'brewkit' + +class Qt <Formula + @url='http://get.qtsoftware.com/qt/source/qt-mac-opensource-src-4.5.1.tar.gz' + @md5='9fc0e96197df6db48a0628ac4d63e0dd' + @homepage='http://www.qtsoftware.com' + + def install + if version == '4.5.1' + # Reported 6 months ago (at 4.5.0-rc1), still not fixed in the this release! :( + makefiles=['plugins/sqldrivers/sqlite/sqlite.pro', '3rdparty/webkit/WebCore/WebCore.pro'] + makefiles.each { |makefile| `echo 'LIBS += -lsqlite3' >> src/#{makefile}` } + end + + configure=<<-EOS + ./configure -prefix '#{prefix}' + -system-sqlite -system-libpng -system-zlib + -nomake demos -nomake examples -no-qt3support + -release -cocoa -arch x86 + -confirm-license -opensource + -I /usr/X11R6/include -L /usr/X11R6/lib + -fast + EOS + + system configure.gsub("\n", ' ').strip.squeeze(' ') + system "make install" + + # fuck weird prl files + `find #{lib} -name \*.prl -delete` + # fuck crazy disk usage + `rm -r #{prefix+'doc'+'html'} #{prefix+'doc'+'src'}` + # wtf are these anyway? + `rm -r #{bin}/Assistant_adp.app #{bin}/pixeltool.app #{bin}/qhelpconverter.app` + # we specified no debug already! :P + `rm #{lib}/libQtUiTools_debug.a` + # meh + `rm #{prefix}/q3porting.xml` + end + + def caveats + "We agreed to the Qt opensource license for you.\nIf this is unacceptable you should uninstall :P" + end +end \ No newline at end of file diff --git a/Formula/taglib.rb b/Formula/taglib.rb index 48e76b5d778491901a51cbab8bcded7c8d98f7dc..2811decec2821fb822503e362519acde1d3e80ca 100644 --- a/Formula/taglib.rb +++ b/Formula/taglib.rb @@ -1,12 +1,12 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://developer.kde.org/~wheeler/taglib.html' -url='http://developer.kde.org/~wheeler/files/src/taglib-1.5.tar.gz' -md5='7b557dde7425c6deb7bbedd65b4f2717' +class Taglib <Formula + @url='http://developer.kde.org/~wheeler/files/src/taglib-1.5.tar.gz' + @md5='7b557dde7425c6deb7bbedd65b4f2717' + @homepage='http://developer.kde.org/~wheeler/taglib.html' -Formula.new(url, md5).brew do |prefix| - system "./configure --disable-debug --prefix='#{prefix}'" - system "make" - system "make install" + def install + system "./configure --disable-debug --prefix='#{prefix}'" + system "make install" + end end \ No newline at end of file diff --git a/Formula/term.rb b/Formula/term.rb index fb8149a3cf1eca6ef14f72baf29240b78708d5d8..427d3607a546f9a85917a6dc9ea5c47140dcea61 100644 --- a/Formula/term.rb +++ b/Formula/term.rb @@ -1,21 +1,10 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -require 'fileutils' -homepage='http://gist.github.com/116587' - -class TermFormula < UncompressedScriptFormula +class Term <UncompressedScriptFormula def initialize - super('http://github.com/liyanage/macosx-shell-scripts/raw/e29f7eaa1eb13d78056dec85dc517626ab1d93e3/term') + @url='http://github.com/liyanage/macosx-shell-scripts/raw/e29f7eaa1eb13d78056dec85dc517626ab1d93e3/term' @md5='1bbf4509a50224b27ac8c20d3fe8682e' @version='2.1' + @homepage='http://gist.github.com/116587' end -end - -term=TermFormula.new -term.brew do |prefix| - bin=(prefix+'bin') - bin.mkpath - FileUtils.cp term.name, bin - nil end \ No newline at end of file diff --git a/Formula/wget.rb b/Formula/wget.rb index 0f5a02362720f87667892d873c28a7363f885853..2ba5722e02cd39797f2217265223995c7af02781 100644 --- a/Formula/wget.rb +++ b/Formula/wget.rb @@ -1,12 +1,13 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://www.gnu.org/software/wget/' -url='http://ftp.gnu.org/gnu/wget/wget-1.11.4.tar.bz2' -md5='f5076a8c2ec2b7f334cb6e3059820f9c' +class Wget <Formula + @homepage='http://www.gnu.org/software/wget/' + @url='http://ftp.gnu.org/gnu/wget/wget-1.11.4.tar.bz2' + @md5='f5076a8c2ec2b7f334cb6e3059820f9c' -Formula.new(url, md5).brew do |prefix| - system "./configure --disable-debug --prefix='#{prefix}'" - system "make" - system "make install" + def install + system "./configure --disable-debug --prefix='#{prefix}'" + system "make" + system "make install" + end end \ No newline at end of file diff --git a/Formula/xmlrpc-c.rb b/Formula/xmlrpc-c.rb index 2d0fba3b71d85134c44538468142c9d06dafebbf..27d6f3a1ed747f6071a8c36f6ae15777011275ec 100644 --- a/Formula/xmlrpc-c.rb +++ b/Formula/xmlrpc-c.rb @@ -1,16 +1,16 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://xmlrpc-c.sourceforge.net/' -url='http://kent.dl.sourceforge.net/sourceforge/xmlrpc-c/xmlrpc-c-1.06.33.tgz' -md5='7dda4d8c5d26ae877d3809e428ce7962' +class XmlrpcC <Formula + @url='http://kent.dl.sourceforge.net/sourceforge/xmlrpc-c/xmlrpc-c-1.06.33.tgz' + @md5='7dda4d8c5d26ae877d3809e428ce7962' + @homepage='http://xmlrpc-c.sourceforge.net/' -Formula.new(url, md5).brew do |prefix| - ENV['MAKEFLAGS']='' #parallel build doesn't work - # choosing --enable-libxml2-backend to lose some weight and not statically - # link in expat - #NOTE seemingly it isn't possible to build dylibs with this thing - system "./configure --disable-debug --enable-libxml2-backend --prefix='#{prefix}'" - system "make" - system "make install" + def install + ENV['MAKEFLAGS']='' #parallel build doesn't work + # choosing --enable-libxml2-backend to lose some weight and not statically + # link in expat + #NOTE seemingly it isn't possible to build dylibs with this thing + system "./configure --disable-debug --enable-libxml2-backend --prefix='#{prefix}'" + system "make install" + end end \ No newline at end of file diff --git a/Formula/yajl.rb b/Formula/yajl.rb index a4784d71578b9330ae352645fee1865dcac4f6f9..f72432dda00f1d1ca8a4d745a7ed78263fe4cd70 100644 --- a/Formula/yajl.rb +++ b/Formula/yajl.rb @@ -1,16 +1,21 @@ -$:.unshift "#{File.dirname __FILE__}/../Cellar/homebrew" #rubysucks require 'brewkit' -homepage='http://lloyd.github.com/yajl/' -url='http://github.com/lloyd/yajl/tarball/1.0.5' -md5='f4a3cbc764c43231ed1aedc54438b69b' +class Yajl <Formula + @homepage='http://lloyd.github.com/yajl/' + @url='http://github.com/lloyd/yajl/tarball/1.0.5' + @md5='f4a3cbc764c43231ed1aedc54438b69b' -deps=['cmake'] + def deps + dep_test_bin 'cmake' + end -Formula.new(url, md5).brew do |prefix| - - inreplace 'configure', 'cmake \.\.', "cmake -DCMAKE_INSTALL_PREFIX='#{prefix}' \.\." - - system "./configure --prefix '#{prefix}'" - system "make install" + def install + ENV['MAKEFLAGS']='' # can't do parallel builds + + # I have pushed this fix upstream + inreplace 'configure', 'cmake \.\.', "cmake -DCMAKE_INSTALL_PREFIX='#{prefix}' \.\." if @version == "1.0.5" + + system "./configure --prefix '#{prefix}'" + system "make install" + end end \ No newline at end of file diff --git a/README b/README index de4f0e93804000b7dd13115b3093f85d84d2ff5f..8687df8d57c4a0e7f2357bde131a3a61480ae55b 100644 --- a/README +++ b/README @@ -128,12 +128,15 @@ Congratulations, you have contributed to an open source project! Contributing ============ -New Formulas +New Formulae ------------ Relative to every other stupid packaging system ever, this is trivial. Just fork it at: http://github.com/mxcl/homebrew and create a new recipe. Then ask me to pull. Using git made all this so much easier. +HomeBrew is not an Autarky so any dependencies outside of OS X that a package +may require may be installed separately. We have functions to help with that. + Code ---- Yes please! Fork and improve :)