blob: 3581420f85f8b5f2ddeb827c6f2dbf11809e0f0c [file] [log] [blame] [edit]
diff -Naur Python-2.7.9-orig/configure.ac Python-2.7.9/configure.ac
--- Python-2.7.9-orig/configure.ac 2014-12-11 13:51:08.234600000 +0300
+++ Python-2.7.9/configure.ac 2014-12-11 13:51:16.409000000 +0300
@@ -641,6 +641,17 @@
CONFIGURE_MACOSX_DEPLOYMENT_TARGET=
EXPORT_MACOSX_DEPLOYMENT_TARGET='#'
+# There are certain cases where we don't want build machine's
+# sysroot folders (/usr/include, /usr/lib, /usr/lib64 etc) to
+# be used. An example of where this is needed is if running
+# on a 64bit machine via linux32 running a 32bit targetting GCC.
+# Without this, 64bit libs will cause the linker to fail.
+# This also prevents add_multiarch_paths from being called.
+# You can specify this multiple times to add more prefixes.
+AC_MSG_CHECKING(for --with-build-sysroot)
+AC_ARG_WITH([build-sysroot],
+AS_HELP_STRING([--with-build-sysroot], [Select sysroot and ignore multilibs, even when not cross-compiling]))
+
# checks for alternative programs
# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just
diff -Naur Python-2.7.9-orig/setup.py Python-2.7.9/setup.py
--- Python-2.7.9-orig/setup.py 2014-12-11 13:51:11.495000000 +0300
+++ Python-2.7.9/setup.py 2014-12-11 13:51:16.409000000 +0300
@@ -43,6 +43,16 @@
# Were we compiled --with-pydebug or with #define Py_DEBUG?
COMPILED_WITH_PYDEBUG = ('--with-pydebug' in sysconfig.get_config_var("CONFIG_ARGS"))
+with_build_sysroot_args = [arg.split('=')[-1] for arg in sysconfig.get_config_var("CONFIG_ARGS").split()
+ if ('--with-build-sysroot' in arg)]
+
+if len(with_build_sysroot_args):
+ with_build_sysroot_specified = True
+ with_build_sysroots = [arg.replace("'",'') for arg in with_build_sysroot_args]
+else:
+ with_build_sysroot_specified = False
+ with_build_sysroots = ['/usr']
+
# This global variable is used to hold the list of modules to be disabled.
disabled_module_list = []
@@ -391,10 +401,11 @@
os.unlink(tmpfile)
if multiarch_path_component != '':
- add_dir_to_list(self.compiler.library_dirs,
- '/usr/lib/' + multiarch_path_component)
- add_dir_to_list(self.compiler.include_dirs,
- '/usr/include/' + multiarch_path_component)
+ for sysroot in with_build_sysroots:
+ add_dir_to_list(self.compiler.library_dirs,
+ sysroot + '/lib/' + multiarch_path_component)
+ add_dir_to_list(self.compiler.include_dirs,
+ sysroot + '/include/' + multiarch_path_component)
return
if not find_executable('dpkg-architecture'):
@@ -412,10 +423,11 @@
if ret >> 8 == 0:
with open(tmpfile) as fp:
multiarch_path_component = fp.readline().strip()
- add_dir_to_list(self.compiler.library_dirs,
- '/usr/lib/' + multiarch_path_component)
- add_dir_to_list(self.compiler.include_dirs,
- '/usr/include/' + multiarch_path_component)
+ for sysroot in with_build_sysroots:
+ add_dir_to_list(self.compiler.library_dirs,
+ sysroot + '/lib/' + multiarch_path_component)
+ add_dir_to_list(self.compiler.include_dirs,
+ sysroot + '/include/' + multiarch_path_component)
finally:
os.unlink(tmpfile)
@@ -453,7 +465,7 @@
def detect_modules(self):
# Ensure that /usr/local is always used
- if not cross_compiling:
+ if not cross_compiling and not with_build_sysroot_specified:
add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
if cross_compiling:
@@ -516,7 +528,7 @@
# be assumed that no additional -I,-L directives are needed.
inc_dirs = self.compiler.include_dirs[:]
lib_dirs = self.compiler.library_dirs[:]
- if not cross_compiling:
+ if not cross_compiling and not with_build_sysroot_specified:
for d in (
'/usr/include',
):
@@ -804,11 +816,11 @@
elif curses_library:
readline_libs.append(curses_library)
elif self.compiler.find_library_file(lib_dirs +
- ['/usr/lib/termcap'],
+ [sr + '/lib/termcap' for sr in with_build_sysroots],
'termcap'):
readline_libs.append('termcap')
exts.append( Extension('readline', ['readline.c'],
- library_dirs=['/usr/lib/termcap'],
+ library_dirs=[sr + '/lib/termcap' for sr in with_build_sysroots],
extra_link_args=readline_extra_link_args,
libraries=readline_libs) )
else:
@@ -837,20 +849,20 @@
libraries=_socket_libs) )
# Detect SSL support for the socket module (via _ssl)
search_for_ssl_incs_in = [
- '/usr/local/ssl/include',
- '/usr/contrib/ssl/include/'
+ sr + sslinc for sr in with_build_sysroots
+ for sslinc in ('/local/ssl/include', '/contrib/ssl/include')
]
ssl_incs = find_file('openssl/ssl.h', inc_dirs,
search_for_ssl_incs_in
)
if ssl_incs is not None:
krb5_h = find_file('krb5.h', inc_dirs,
- ['/usr/kerberos/include'])
+ [sr + '/kerberos/include' for sr in with_build_sysroots])
if krb5_h:
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
- ['/usr/local/ssl/lib',
- '/usr/contrib/ssl/lib/'
+ [sr + ssllib for sr in with_build_sysroots
+ for ssllib in ('/local/ssl/lib', '/contrib/ssl/lib')
] )
if (ssl_incs is not None and