mirror of
https://github.com/kennethreitz-archive/python-build.git
synced 2026-06-05 23:30:18 +00:00
#21 support ubuntu 11.04(Natty)
This commit is contained in:
@@ -10,7 +10,7 @@ from pythonbrew.util import makedirs, symlink, Package, is_url, Link,\
|
||||
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_PYTHON27
|
||||
PATH_PATCHES_MACOSX_PYTHON26, PATH_PATCHES_MACOSX_PYTHON27, PATH_PATCHES_ALL
|
||||
from pythonbrew.downloader import get_python_version_url, Downloader,\
|
||||
get_headerinfo_from_url
|
||||
from pythonbrew.log import logger
|
||||
@@ -55,6 +55,7 @@ class PythonInstaller(object):
|
||||
self.options = options
|
||||
self.logfile = os.path.join(PATH_LOG, 'build.log')
|
||||
self.configure_options = ''
|
||||
self.patches = []
|
||||
|
||||
def install(self):
|
||||
if os.path.isdir(self.install_dir):
|
||||
@@ -111,8 +112,40 @@ class PythonInstaller(object):
|
||||
sys.exit(1)
|
||||
|
||||
def patch(self):
|
||||
pass
|
||||
|
||||
version = self.pkg.version
|
||||
if is_python25(version):
|
||||
patch_dir = os.path.join(PATH_PATCHES_ALL, "python25")
|
||||
self._add_patches_to_list(patch_dir, ['patch-setup.py.diff'])
|
||||
else:
|
||||
patch_dir = os.path.join(PATH_PATCHES_ALL, "common")
|
||||
self._add_patches_to_list(patch_dir, ['patch-setup.py.diff'])
|
||||
self._do_patch()
|
||||
|
||||
def _do_patch(self):
|
||||
try:
|
||||
s = Subprocess(log=self.logfile, cwd=self.build_dir)
|
||||
if self.patches:
|
||||
logger.info("Patching %s" % self.pkg.name)
|
||||
for patch in self.patches:
|
||||
if type(patch) is dict:
|
||||
for (ed, source) in patch.items():
|
||||
s.check_call('ed - %s < %s' % (source, ed))
|
||||
else:
|
||||
s.check_call("patch -p0 < %s" % patch)
|
||||
except:
|
||||
logger.error("Failed to patch `%s`" % self.build_dir)
|
||||
sys.exit(1)
|
||||
|
||||
def _add_patches_to_list(self, patch_dir, patch_files):
|
||||
for patch in patch_files:
|
||||
if type(patch) is dict:
|
||||
for key in patch.keys():
|
||||
patch[os.path.join(patch_dir, key)] = patch[key]
|
||||
del patch[key]
|
||||
self.patches.append(patch)
|
||||
else:
|
||||
self.patches.append(os.path.join(patch_dir, patch))
|
||||
|
||||
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))
|
||||
@@ -197,58 +230,44 @@ class PythonInstallerMacOSX(PythonInstaller):
|
||||
|
||||
def patch(self):
|
||||
version = self.pkg.version
|
||||
try:
|
||||
s = Subprocess(log=self.logfile, cwd=self.build_dir)
|
||||
patches = []
|
||||
eds = {}
|
||||
if is_python24(version):
|
||||
patch_dir = PATH_PATCHES_MACOSX_PYTHON24
|
||||
patches = ['patch-configure', 'patch-Makefile.pre.in',
|
||||
'patch-Lib-cgi.py.diff', 'patch-Lib-site.py.diff',
|
||||
'patch-setup.py.diff', 'patch-Include-pyport.h',
|
||||
'patch-Mac-OSX-Makefile.in', 'patch-Mac-OSX-IDLE-Makefile.in',
|
||||
'patch-Mac-OSX-PythonLauncher-Makefile.in', 'patch-configure-badcflags.diff',
|
||||
'patch-configure-arch_only.diff', 'patch-macosmodule.diff',
|
||||
'patch-mactoolboxglue.diff', 'patch-pymactoolbox.diff',
|
||||
'patch-gestaltmodule.c.diff']
|
||||
elif is_python25(version):
|
||||
patch_dir = PATH_PATCHES_MACOSX_PYTHON25
|
||||
patches = ['patch-Makefile.pre.in.diff',
|
||||
'patch-Lib-cgi.py.diff',
|
||||
'patch-Lib-distutils-dist.py.diff',
|
||||
'patch-setup.py.diff',
|
||||
'patch-configure-badcflags.diff',
|
||||
'patch-configure-arch_only.diff',
|
||||
'patch-64bit.diff',
|
||||
'patch-pyconfig.h.in.diff',
|
||||
'patch-gestaltmodule.c.diff']
|
||||
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',
|
||||
'patch-Lib-distutils-dist.py.diff',
|
||||
'patch-Mac-IDLE-Makefile.in.diff',
|
||||
'patch-Mac-Makefile.in.diff',
|
||||
'patch-Mac-PythonLauncher-Makefile.in.diff',
|
||||
'patch-Mac-Tools-Doc-setup.py.diff',
|
||||
'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',
|
||||
'locale.py.ed': 'Lib/locale.py'}
|
||||
elif is_python27(version):
|
||||
patch_dir = PATH_PATCHES_MACOSX_PYTHON27
|
||||
patches = ['patch-Modules-posixmodule.diff']
|
||||
|
||||
if patches or eds:
|
||||
logger.info("Patching %s" % self.pkg.name)
|
||||
for patch in patches:
|
||||
s.check_call("patch -p0 < %s" % os.path.join(patch_dir, patch))
|
||||
for (ed, source) in eds.items():
|
||||
ed = os.path.join(patch_dir, ed)
|
||||
s.check_call('ed - %s < %s' % (source, ed))
|
||||
except:
|
||||
logger.error("Failed to patch `%s`" % self.build_dir)
|
||||
sys.exit(1)
|
||||
|
||||
if is_python24(version):
|
||||
patch_dir = PATH_PATCHES_MACOSX_PYTHON24
|
||||
self._add_patches_to_list(patch_dir, ['patch-configure', 'patch-Makefile.pre.in',
|
||||
'patch-Lib-cgi.py.diff', 'patch-Lib-site.py.diff',
|
||||
'patch-setup.py.diff', 'patch-Include-pyport.h',
|
||||
'patch-Mac-OSX-Makefile.in', 'patch-Mac-OSX-IDLE-Makefile.in',
|
||||
'patch-Mac-OSX-PythonLauncher-Makefile.in', 'patch-configure-badcflags.diff',
|
||||
'patch-configure-arch_only.diff', 'patch-macosmodule.diff',
|
||||
'patch-mactoolboxglue.diff', 'patch-pymactoolbox.diff',
|
||||
'patch-gestaltmodule.c.diff'])
|
||||
elif is_python25(version):
|
||||
patch_dir = PATH_PATCHES_MACOSX_PYTHON25
|
||||
self._add_patches_to_list(patch_dir, ['patch-Makefile.pre.in.diff',
|
||||
'patch-Lib-cgi.py.diff',
|
||||
'patch-Lib-distutils-dist.py.diff',
|
||||
'patch-setup.py.diff',
|
||||
'patch-configure-badcflags.diff',
|
||||
'patch-configure-arch_only.diff',
|
||||
'patch-64bit.diff',
|
||||
'patch-pyconfig.h.in.diff',
|
||||
'patch-gestaltmodule.c.diff',
|
||||
{'_localemodule.c.ed': 'Modules/_localemodule.c'},
|
||||
{'locale.py.ed': 'Lib/locale.py'}])
|
||||
elif is_python26(version):
|
||||
patch_dir = PATH_PATCHES_MACOSX_PYTHON26
|
||||
self._add_patches_to_list(patch_dir, ['patch-Lib-cgi.py.diff',
|
||||
'patch-Lib-distutils-dist.py.diff',
|
||||
'patch-Mac-IDLE-Makefile.in.diff',
|
||||
'patch-Mac-Makefile.in.diff',
|
||||
'patch-Mac-PythonLauncher-Makefile.in.diff',
|
||||
'patch-Mac-Tools-Doc-setup.py.diff',
|
||||
'patch-setup.py-db46.diff',
|
||||
'patch-Lib-ctypes-macholib-dyld.py.diff',
|
||||
'patch-setup_no_tkinter.py.diff',
|
||||
{'_localemodule.c.ed': 'Modules/_localemodule.c'},
|
||||
{'locale.py.ed': 'Lib/locale.py'}])
|
||||
elif is_python27(version):
|
||||
patch_dir = PATH_PATCHES_MACOSX_PYTHON27
|
||||
self._add_patches_to_list(patch_dir, ['patch-Modules-posixmodule.diff'])
|
||||
|
||||
self._do_patch()
|
||||
|
||||
Reference in New Issue
Block a user