diff options
| author | Max Howell | 2009-07-31 02:51:17 +0100 |
|---|---|---|
| committer | Max Howell | 2009-07-31 04:59:02 +0100 |
| commit | 118b41bfcdb13a4fec8da48e35de162ac62fe65c (patch) | |
| tree | c9fdffd72da6a8a53b5fac4529aefaf7f7df4129 /Library | |
| parent | 1d4e18988019e14e90646018072f83e988531820 (diff) | |
| download | homebrew-118b41bfcdb13a4fec8da48e35de162ac62fe65c.tar.bz2 | |
Refactor $foo into HOMEBREW_FOO
CONSTANTS are the far saner choice for these important parameters.
Split env up so I can redefine the CONSTANTS in unittest.rb.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Formula/pkg-config.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/brewkit.rb | 14 | ||||
| -rw-r--r-- | Library/Homebrew/env.rb | 101 | ||||
| -rw-r--r-- | Library/Homebrew/formula.rb | 6 | ||||
| -rw-r--r-- | Library/Homebrew/keg.rb | 12 | ||||
| -rw-r--r-- | Library/Homebrew/pathname+yeast.rb | 100 | ||||
| -rwxr-xr-x | Library/Homebrew/unittest.rb | 13 | ||||
| -rw-r--r-- | Library/Homebrew/utils.rb | 21 |
8 files changed, 151 insertions, 118 deletions
diff --git a/Library/Formula/pkg-config.rb b/Library/Formula/pkg-config.rb index d95229e4c..eb08fc5f5 100644 --- a/Library/Formula/pkg-config.rb +++ b/Library/Formula/pkg-config.rb @@ -8,7 +8,7 @@ class PkgConfig <Formula #TODO depend on our glib if available. --with-installed-glib def install - system "./configure --with-pc-path=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:#{$root}/lib/pkgconfig --disable-debug --prefix='#{prefix}'" + system "./configure --with-pc-path=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:#{HOMEBREW_PREFIX}/lib/pkgconfig --disable-debug --prefix='#{prefix}'" system "make install" end end
\ No newline at end of file diff --git a/Library/Homebrew/brewkit.rb b/Library/Homebrew/brewkit.rb index 94cb8a014..1ff6e0af2 100644 --- a/Library/Homebrew/brewkit.rb +++ b/Library/Homebrew/brewkit.rb @@ -31,18 +31,18 @@ ENV['CC']='gcc-4.2' ENV['CXX']='g++-4.2' ENV['MAKEFLAGS']="-j#{OSX::NSProcessInfo.processInfo.processorCount}" -unless $root.to_s == '/usr/local' - ENV['CPPFLAGS']='-I'+$root+'include' - ENV['LDFLAGS']='-L'+$root+'lib' +unless HOMEBREW_PREFIX == '/usr/local' + ENV['CPPFLAGS']="-I#{HOMEBREW_PREFIX}/include" + ENV['LDFLAGS']="-L#{HOMEBREW_PREFIX}/lib" end def inreplace(path, before, after) before=Regexp.escape before.to_s after=Regexp.escape after.to_s - before=before.gsub "/", "\\\/" - after=after.gsub "/", "\\\/" - before=before.gsub "'", '\'' - after=after.gsub "'", '\'' + before.gsub! "/", "\\\/" + after.gsub! "/", "\\\/" + before.gsub! "'", '\'' + after.gsub! "'", '\'' # TODO this sucks # either use 'ed', or allow regexp and use a proper ruby function diff --git a/Library/Homebrew/env.rb b/Library/Homebrew/env.rb index dbba19e8a..7ff57071e 100644 --- a/Library/Homebrew/env.rb +++ b/Library/Homebrew/env.rb @@ -15,103 +15,10 @@ # You should have received a copy of the GNU General Public License # along with Homebrew. If not, see <http://www.gnu.org/licenses/>. -require 'pathname' - -$root=Pathname.new(__FILE__).dirname.parent.parent.realpath -$formula=$root+'Library'+'Formula' -$cellar=$root+'Cellar' +require 'pathname+yeast' +require 'utils' HOMEBREW_VERSION='0.3' HOMEBREW_CACHE=File.expand_path "~/Library/Caches/Homebrew" - - -######################################################################## utils -def ohai title - n=`tput cols`.strip.to_i-4 - puts "\033[0;34m==>\033[0;0;1m #{title[0,n]}\033[0;0m" -end - - -############################################################### class Pathname -# we enhance Pathname to make our code more legible -# of course this kind of thing is evil, but meh -class Pathname - def mv dst - FileUtils.mv to_s, dst - end - - def rename dst - dst=Pathname.new dst - dst.unlink if dst.exist? - mv dst - end - - def install src - if src.is_a? Array - src.each {|src| install src } - elsif File.exist? src - mkpath - if File.symlink? src - # we use the BSD mv command because FileUtils copies the target and - # not the link! I'm beginning to wish I'd used Python quite honestly! - `mv #{src} #{to_s}` - else - # we mv when possible as it is faster and you should only be using - # this function when installing from the temporary build directory - FileUtils.mv src, to_s - end - end - end - - def cp dst - if file? - FileUtils.cp to_s, dst - else - FileUtils.cp_r to_s, dst - end - end - - # extended to support the double extensions .tar.gz and .tar.bz2 - def extname - /(\.tar\.(gz|bz2))$/.match to_s - return $1 if $1 - return File.extname(to_s) - end - - # for filetypes we support, basename without extension - def stem - return File.basename(to_s, extname) - end - - def version - # eg. boost_1_39_0 - /((\d+_)+\d+)$/.match stem - return $1.gsub('_', '.') if $1 - - # eg. foobar-4.5.1-1 - /-((\d+\.)*\d+-\d+)$/.match stem - return $1 if $1 - - # eg. foobar-4.5.1 - /-((\d+\.)*\d+)$/.match stem - return $1 if $1 - - # eg. foobar-4.5.1b - /-((\d+\.)*\d+([abc]|rc\d))$/.match stem - return $1 if $1 - - # eg foobar-4.5.0-beta1 - /-((\d+\.)*\d+-beta\d+)$/.match stem - return $1 if $1 - - # eg. foobar4.5.1 - /((\d+\.)*\d+)$/.match stem - return $1 if $1 - - # eg. otp_src_R13B (this is erlang's style) - # eg. astyle_1.23_macosx.tar.gz - stem.scan /_([^_]+)/ do |match| - return match.first if /\d/.match $1 - end - end -end +HOMEBREW_PREFIX=Pathname.new(__FILE__).dirname.parent.parent.realpath +HOMEBREW_CELLAR=HOMEBREW_PREFIX+'Cellar' diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index ad975ef00..f2763f899 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -15,8 +15,6 @@ # You should have received a copy of the GNU General Public License # along with Homebrew. If not, see <http://www.gnu.org/licenses/>. -require 'env' - class BuildError <RuntimeError def initialize cmd super "Build failed during: #{cmd}" @@ -76,7 +74,7 @@ class AbstractFormula def prefix raise "@name.nil!" if @name.nil? raise "@version.nil?" if @version.nil? - $cellar+@name+@version + HOMEBREW_CELLAR+@name+@version end def bin prefix+'bin' @@ -239,7 +237,7 @@ class Formula <UnidentifiedFormula end def self.path name - $formula+(name.downcase+'.rb') + Pathanme.new(HOMEBREW_PREFIX)+'Formula'+(name.downcase+'.rb') end def self.create name diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index 72768ee02..f5c856a95 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -15,7 +15,6 @@ # You should have received a copy of the GNU General Public License # along with Homebrew. If not, see <http://www.gnu.org/licenses/>. -require 'env' require 'formula' class Keg @@ -29,7 +28,7 @@ class Keg elsif formula.is_a? Pathname # TODO elsif formula.is_a? String - path=$cellar+formula + path=HOMEBREW_CELLAR+formula kids=path.children raise "Empty installation: #{path}" if kids.length < 1 raise "Multiple versions installed" if kids.length > 1 @@ -83,12 +82,12 @@ class Keg def rm # don't rmtree shit if we aren't positive about our location! - raise "Bad stuff!" unless path.parent.parent == $cellar + raise "Bad stuff!" unless path.parent.parent == HOMEBREW_CELLAR if path.directory? FileUtils.chmod_R 0777, path # ensure we have permission to delete - path.rmtree # $cellar/foo/1.2.0 - path.parent.rmdir if path.parent.children.length == 0 # $cellar/foo + path.rmtree # HOMEBREW_CELLAR/foo/1.2.0 + path.parent.rmdir if path.parent.children.length == 0 # HOMEBREW_CELLAR/foo end end @@ -109,13 +108,14 @@ private start=path+start return unless start.directory? + root=Pathname.new HOMEBREW_PREFIX start.find do |from| next if from == start prune=false relative_path=from.relative_path_from path - to=$root+relative_path + to=root+relative_path if from.file? __symlink_relative_to from, to diff --git a/Library/Homebrew/pathname+yeast.rb b/Library/Homebrew/pathname+yeast.rb new file mode 100644 index 000000000..75eb98bba --- /dev/null +++ b/Library/Homebrew/pathname+yeast.rb @@ -0,0 +1,100 @@ +# Copyright 2009 Max Howell <max@methylblue.com> +# +# This file is part of Homebrew. +# +# Homebrew is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Homebrew is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Homebrew. If not, see <http://www.gnu.org/licenses/>. + +require 'pathname' + +# we enhance pathname to make our code more readable +class Pathname + def mv dst + FileUtils.mv to_s, dst + end + + def rename dst + dst=Pathname.new dst + dst.unlink if dst.exist? + mv dst + end + + def install src + if src.is_a? Array + src.each {|src| install src } + elsif File.exist? src + mkpath + if File.symlink? src + # we use the BSD mv command because FileUtils copies the target and + # not the link! I'm beginning to wish I'd used Python quite honestly! + `mv #{src} #{to_s}` + else + # we mv when possible as it is faster and you should only be using + # this function when installing from the temporary build directory + FileUtils.mv src, to_s + end + end + end + + def cp dst + if file? + FileUtils.cp to_s, dst + else + FileUtils.cp_r to_s, dst + end + end + + # extended to support the double extensions .tar.gz and .tar.bz2 + def extname + /(\.tar\.(gz|bz2))$/.match to_s + return $1 if $1 + return File.extname(to_s) + end + + # for filetypes we support, basename without extension + def stem + return File.basename(to_s, extname) + end + + def version + # eg. boost_1_39_0 + /((\d+_)+\d+)$/.match stem + return $1.gsub('_', '.') if $1 + + # eg. foobar-4.5.1-1 + /-((\d+\.)*\d+-\d+)$/.match stem + return $1 if $1 + + # eg. foobar-4.5.1 + /-((\d+\.)*\d+)$/.match stem + return $1 if $1 + + # eg. foobar-4.5.1b + /-((\d+\.)*\d+([abc]|rc\d))$/.match stem + return $1 if $1 + + # eg foobar-4.5.0-beta1 + /-((\d+\.)*\d+-beta\d+)$/.match stem + return $1 if $1 + + # eg. foobar4.5.1 + /((\d+\.)*\d+)$/.match stem + return $1 if $1 + + # eg. otp_src_R13B (this is erlang's style) + # eg. astyle_1.23_macosx.tar.gz + stem.scan /_([^_]+)/ do |match| + return match.first if /\d/.match $1 + end + end +end diff --git a/Library/Homebrew/unittest.rb b/Library/Homebrew/unittest.rb index 7b15b2949..dcaf036de 100755 --- a/Library/Homebrew/unittest.rb +++ b/Library/Homebrew/unittest.rb @@ -1,9 +1,16 @@ #!/usr/bin/ruby - $:.unshift File.dirname(__FILE__) -require 'test/unit' require 'formula' +require 'pathname+yeast' require 'stringio' +require 'test/unit' +require 'utils' + +# these are defined in env usually, but we want a fake place for everything init +HOMEBREW_VERSION='1t' +HOMEBREW_CACHE="/tmp/testbrew" +HOMEBREW_PREFIX=Pathname.new(HOMEBREW_CACHE)+'prefix' +HOMEBREW_CELLAR=Pathname.new(HOMEBREW_CACHE)+'cellar' class TestFormula <Formula def initialize url, md5='nomd5' @@ -112,7 +119,7 @@ class BeerTasting <Test::Unit::TestCase nostdout do TestFormula.new(url, md5).brew do |f| - assert_equal File.expand_path(f.prefix), ($cellar+f.name+'0.1').to_s + assert_equal File.expand_path(f.prefix), (HOMEBREW_CELLAR+f.name+'0.1').to_s assert_kind_of Pathname, f.prefix end end diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb new file mode 100644 index 000000000..87ffb1473 --- /dev/null +++ b/Library/Homebrew/utils.rb @@ -0,0 +1,21 @@ +# Copyright 2009 Max Howell <max@methylblue.com> +# +# This file is part of Homebrew. +# +# Homebrew is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Homebrew is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Homebrew. If not, see <http://www.gnu.org/licenses/>. + +def ohai title + n=`tput cols`.strip.to_i-4 + puts "\033[0;34m==>\033[0;0;1m #{title[0,n]}\033[0;0m" +end |
