aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Vandenberg2010-07-07 13:15:59 -0700
committerAdam Vandenberg2010-07-09 23:06:57 -0700
commit164db800912c68245c9ad419091a46a6653ba123 (patch)
treee20f2448389403787727d5157715a0c20c9e496c
parent747bcf6fb0c72b74fc2ed0ff847817ce985762b4 (diff)
downloadhomebrew-164db800912c68245c9ad419091a46a6653ba123.tar.bz2
Tweaks to Python 3.x
Take features from Python (2.x) formula up to the Python 3.x formula.
-rw-r--r--Library/Formula/python3.rb78
1 files changed, 62 insertions, 16 deletions
diff --git a/Library/Formula/python3.rb b/Library/Formula/python3.rb
index 8de3c297f..7c75adec3 100644
--- a/Library/Formula/python3.rb
+++ b/Library/Formula/python3.rb
@@ -1,30 +1,56 @@
-# Lightly modified from the Python 2.6.5 formula.
require 'formula'
+<<-COMMENTS
+Versions
+--------
+This formula is currently tracking version 3.1.x.
+
+Python 2.x is available as a separate formula:
+ brew install python
+
+COMMENTS
+
+# Was a Framework build requested?
+def build_framework?; ARGV.include? '--framework'; end
+
+# Are we installed or installing as a Framework?
+def as_framework?
+ (self.installed? and File.exists? prefix+"Frameworks/Python.framework") or build_framework?
+end
+
class Python3 <Formula
url 'http://www.python.org/ftp/python/3.1.2/Python-3.1.2.tar.bz2'
homepage 'http://www.python.org/'
md5 '45350b51b58a46b029fb06c61257e350'
- depends_on 'readline' => :optional # Prefer over OS X's libedit.
- depends_on 'sqlite' => :optional # Prefer over OS X's copy.
- depends_on 'gdbm' => :optional
- # With all dependencies installed should only have ossaudiodev and spwd not
- # built from the stdlib.
+ depends_on 'readline' => :optional # Prefer over OS X's libedit
+ depends_on 'sqlite' => :optional # Prefer over OS X's older version
+ depends_on 'gdbm' => :optional
def options
[
["--framework", "Do a 'Framework' build instead of a UNIX-style build."],
- ["--universal", "Build for both 32 & 64 bit Intel."]
+ ["--universal", "Build for both 32 & 64 bit Intel."],
+ ["--static", "Build static libraries."]
]
end
- # XXX Overriding skip_clean? is deprecated
- def skip_clean? path
- # Need to keep the versioned binaries.
- # Also, don't strip out pre-compiled # bytecode files.
- path == bin+'python3' or path == bin+'python3.1' or
- path == lib+'python3.1'
+ skip_clean ['bin', 'lib']
+
+ def site_packages
+ # The Cellar location of site-packages
+ if as_framework?
+ # If we're installed or installing as a Framework, then use that location.
+ return prefix+"Frameworks/Python.framework/Versions/3.1/lib/python3.1/site-packages"
+ else
+ # Otherwise, use just the lib path.
+ return lib+"python3.1/site-packages"
+ end
+ end
+
+ def prefix_site_packages
+ # The HOMEBREW_PREFIX location of site-packages
+ HOMEBREW_PREFIX+"lib/python3.1/site-packages"
end
def install
@@ -32,13 +58,33 @@ class Python3 <Formula
# both gcc and LLVM support this, so switch it on.
args = ["--prefix=#{prefix}", "--with-computed-gotos"]
- args << "--enable-framework" if ARGV.include? '--framework'
if ARGV.include? '--universal'
- args.push "--enable-universalsdk=/", "--with-universal-archs=intel"
+ args << "--enable-universalsdk=/" << "--with-universal-archs=intel"
+ end
+
+ if build_framework?
+ args << "--enable-framework=#{prefix}/Frameworks"
+ else
+ args << "--enable-shared" unless ARGV.include? '--static'
end
-
+
system "./configure", *args
system "make"
+ ENV.j1 # Installs must be serialized
system "make install"
+
+ # Add the Homebrew prefix path to site-packages via a .pth
+ prefix_site_packages.mkpath
+ (site_packages+"homebrew.pth").write prefix_site_packages
+ end
+
+ def caveats
+ <<-EOS.undent
+ The site-packages folder for this Python is:
+ #{site_packages}
+
+ We've added a "homebrew.pth" file to also include:
+ #{prefix_site_packages}
+ EOS
end
end