mirror of
https://github.com/kennethreitz-archive/python-build.git
synced 2026-06-05 23:30:18 +00:00
Add patch to fix _environ symbol missing bug in python27, see http://bugs.python.org/issue1602133
This commit is contained in:
@@ -5,13 +5,13 @@ import re
|
||||
import mimetypes
|
||||
from pythonbrew.util import makedirs, symlink, Package, is_url, Link,\
|
||||
unlink, is_html, Subprocess, rm_r,\
|
||||
is_python25, is_python24, is_python26,\
|
||||
is_python25, is_python24, is_python26, is_python27,\
|
||||
unpack_downloadfile, is_archive_file, path_to_fileurl, is_file,\
|
||||
fileurl_to_path
|
||||
from pythonbrew.define import PATH_BUILD, PATH_DISTS, PATH_PYTHONS,\
|
||||
ROOT, PATH_LOG, DISTRIBUTE_SETUP_DLSITE,\
|
||||
PATH_PATCHES_MACOSX_PYTHON25, PATH_PATCHES_MACOSX_PYTHON24,\
|
||||
PATH_PATCHES_MACOSX_PYTHON26
|
||||
PATH_PATCHES_MACOSX_PYTHON26, PATH_PATCHES_MACOSX_PYTHON27
|
||||
from pythonbrew.downloader import get_python_version_url, Downloader,\
|
||||
get_headerinfo_from_url
|
||||
from pythonbrew.log import logger
|
||||
@@ -21,7 +21,7 @@ from pythonbrew.exceptions import UnknownVersionException,\
|
||||
class PythonInstaller(object):
|
||||
"""Python installer
|
||||
"""
|
||||
|
||||
|
||||
def __init__(self, arg, options):
|
||||
if is_url(arg):
|
||||
name = arg
|
||||
@@ -31,7 +31,7 @@ class PythonInstaller(object):
|
||||
name = path_to_fileurl(arg)
|
||||
else:
|
||||
name = arg
|
||||
|
||||
|
||||
if is_url(name):
|
||||
self.download_url = name
|
||||
filename = Link(self.download_url).filename
|
||||
@@ -56,7 +56,7 @@ class PythonInstaller(object):
|
||||
self.options = options
|
||||
self.logfile = os.path.join(PATH_LOG, 'build.log')
|
||||
self.configure_options = ''
|
||||
|
||||
|
||||
def install(self):
|
||||
if os.path.isdir(self.install_dir):
|
||||
logger.info("You are already installed `%s`" % self.pkg.name)
|
||||
@@ -82,7 +82,7 @@ class PythonInstaller(object):
|
||||
logger.info("Installed %(pkgname)s successfully. Run the following command to switch to %(pkgname)s."
|
||||
% {"pkgname":self.pkg.name})
|
||||
logger.info(" pythonbrew switch %s" % self.pkg.alias)
|
||||
|
||||
|
||||
def download_unpack(self):
|
||||
content_type = self.content_type
|
||||
if is_html(content_type):
|
||||
@@ -110,14 +110,14 @@ class PythonInstaller(object):
|
||||
# unpack
|
||||
if not unpack_downloadfile(self.content_type, self.download_file, self.build_dir):
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def patch(self):
|
||||
pass
|
||||
|
||||
|
||||
def configure(self):
|
||||
s = Subprocess(log=self.logfile, cwd=self.build_dir)
|
||||
s.check_call("./configure --prefix=%s %s %s" % (self.install_dir, self.options.configure, self.configure_options))
|
||||
|
||||
|
||||
def make(self):
|
||||
jobs = self.options.jobs
|
||||
make = ((jobs > 0 and 'make -j%s' % jobs) or 'make')
|
||||
@@ -127,14 +127,14 @@ class PythonInstaller(object):
|
||||
else:
|
||||
s.check_call(make)
|
||||
s.check_call("make test")
|
||||
|
||||
|
||||
def make_install(self):
|
||||
version = self.pkg.version
|
||||
if version == "1.5.2" or version == "1.6.1":
|
||||
makedirs(self.install_dir)
|
||||
s = Subprocess(log=self.logfile, cwd=self.build_dir)
|
||||
s.check_call("make install")
|
||||
|
||||
|
||||
def symlink(self):
|
||||
install_dir = os.path.realpath(self.install_dir)
|
||||
path_python = os.path.join(install_dir,'bin','python')
|
||||
@@ -145,7 +145,7 @@ class PythonInstaller(object):
|
||||
symlink(path_python3, path_python)
|
||||
elif os.path.isfile(path_python3_0):
|
||||
symlink(path_python3_0, path_python)
|
||||
|
||||
|
||||
def install_setuptools(self):
|
||||
options = self.options
|
||||
pkgname = self.pkg.name
|
||||
@@ -159,10 +159,10 @@ class PythonInstaller(object):
|
||||
download_url = DISTRIBUTE_SETUP_DLSITE
|
||||
filename = Link(download_url).filename
|
||||
download_file = os.path.join(PATH_DISTS, filename)
|
||||
|
||||
|
||||
dl = Downloader()
|
||||
dl.download(filename, download_url, download_file)
|
||||
|
||||
|
||||
install_dir = os.path.join(PATH_PYTHONS, pkgname)
|
||||
path_python = os.path.join(install_dir,"bin","python")
|
||||
try:
|
||||
@@ -195,7 +195,9 @@ class PythonInstallerMacOSX(PythonInstaller):
|
||||
self.configure_options = '--with-universal-archs="intel" MACOSX_DEPLOYMENT_TARGET=10.6 CPPFLAGS="-D_DARWIN_C_SOURCE"'
|
||||
elif is_python26(version):
|
||||
self.configure_options = '--with-universal-archs="intel" --enable-universalsdk=/ MACOSX_DEPLOYMENT_TARGET=10.6'
|
||||
|
||||
elif is_python27(version):
|
||||
self.configure_options = '--with-universal-archs="intel" --enable-universalsdk=/ MACOSX_DEPLOYMENT_TARGET=10.6'
|
||||
|
||||
def patch(self):
|
||||
version = self.pkg.version
|
||||
try:
|
||||
@@ -214,20 +216,20 @@ class PythonInstallerMacOSX(PythonInstaller):
|
||||
'patch-gestaltmodule.c.diff']
|
||||
elif is_python25(version):
|
||||
patch_dir = PATH_PATCHES_MACOSX_PYTHON25
|
||||
patches = ['patch-Makefile.pre.in.diff',
|
||||
patches = ['patch-Makefile.pre.in.diff',
|
||||
'patch-Lib-cgi.py.diff',
|
||||
'patch-Lib-distutils-dist.py.diff',
|
||||
'patch-Lib-distutils-dist.py.diff',
|
||||
'patch-setup.py.diff',
|
||||
'patch-configure-badcflags.diff',
|
||||
'patch-configure-badcflags.diff',
|
||||
'patch-configure-arch_only.diff',
|
||||
'patch-64bit.diff',
|
||||
'patch-64bit.diff',
|
||||
'patch-pyconfig.h.in.diff',
|
||||
'patch-gestaltmodule.c.diff']
|
||||
eds = {'_localemodule.c.ed': 'Modules/_localemodule.c',
|
||||
eds = {'_localemodule.c.ed': 'Modules/_localemodule.c',
|
||||
'locale.py.ed': 'Lib/locale.py'}
|
||||
elif is_python26(version):
|
||||
patch_dir = PATH_PATCHES_MACOSX_PYTHON26
|
||||
patches = ['patch-Lib-cgi.py.diff',
|
||||
patches = ['patch-Lib-cgi.py.diff',
|
||||
'patch-Lib-distutils-dist.py.diff',
|
||||
'patch-Mac-IDLE-Makefile.in.diff',
|
||||
'patch-Mac-Makefile.in.diff',
|
||||
@@ -236,9 +238,14 @@ class PythonInstallerMacOSX(PythonInstaller):
|
||||
'patch-setup.py-db46.diff',
|
||||
'patch-Lib-ctypes-macholib-dyld.py.diff',
|
||||
'patch-setup_no_tkinter.py.diff']
|
||||
eds = {'_localemodule.c.ed': 'Modules/_localemodule.c',
|
||||
eds = {'_localemodule.c.ed': 'Modules/_localemodule.c',
|
||||
'locale.py.ed': 'Lib/locale.py'}
|
||||
|
||||
elif is_python27(version):
|
||||
patch_dir = PATH_PATCHES_MACOSX_PYTHON27
|
||||
patches = ['patch-Modules-posixmodule.diff']
|
||||
#eds = {'_localemodule.c.ed': 'Modules/_localemodule.c',
|
||||
#'locale.py.ed': 'Lib/locale.py'}
|
||||
|
||||
if patches or eds:
|
||||
logger.info("Patching %s" % self.pkg.name)
|
||||
for patch in patches:
|
||||
|
||||
Reference in New Issue
Block a user