aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMax Howell2009-07-31 02:51:17 +0100
committerMax Howell2009-07-31 04:59:02 +0100
commit118b41bfcdb13a4fec8da48e35de162ac62fe65c (patch)
treec9fdffd72da6a8a53b5fac4529aefaf7f7df4129 /Library
parent1d4e18988019e14e90646018072f83e988531820 (diff)
downloadhomebrew-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.rb2
-rw-r--r--Library/Homebrew/brewkit.rb14
-rw-r--r--Library/Homebrew/env.rb101
-rw-r--r--Library/Homebrew/formula.rb6
-rw-r--r--Library/Homebrew/keg.rb12
-rw-r--r--Library/Homebrew/pathname+yeast.rb100
-rwxr-xr-xLibrary/Homebrew/unittest.rb13
-rw-r--r--Library/Homebrew/utils.rb21
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