blob: e416acdb0f226418410d08682f41852806932b30 [file] [edit]
Change setup.py to respect the SYSROOT environment variable
--- a/setup.py
+++ b/setup.py
@@ -467,12 +467,16 @@ class PyBuildExt(build_ext):
def detect_modules(self):
global disable_ssl
+
+ # We must respect the user specified sysroot!
+ sysroot = os.getenv('SYSROOT', '')
+
# Ensure that /usr/local is always used, but the local build
# directories (i.e. '.' and 'Include') must be first. See issue
# 10520.
if not cross_compiling:
- add_dir_to_list(self.compiler.library_dirs, '/usr/local/@@GENTOO_LIBDIR@@')
- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+ add_dir_to_list(self.compiler.library_dirs, sysroot + '/usr/local/@@GENTOO_LIBDIR@@')
+ add_dir_to_list(self.compiler.include_dirs, sysroot + '/usr/local/include')
# only change this for cross builds for 3.3, issues on Mageia
if cross_compiling:
self.add_gcc_paths()
@@ -519,9 +523,15 @@ class PyBuildExt(build_ext):
# building a framework with different architectures than
# the one that is currently installed (issue #7473)
add_dir_to_list(self.compiler.library_dirs,
- sysconfig.get_config_var("LIBDIR"))
+ sysroot + sysconfig.get_config_var("LIBDIR"))
add_dir_to_list(self.compiler.include_dirs,
- sysconfig.get_config_var("INCLUDEDIR"))
+ sysroot + sysconfig.get_config_var("INCLUDEDIR"))
+
+ # We should always look into sysroot/usr/include and consider
+ # also the lib dirs there for searching for files
+ add_dir_to_list(self.compiler.include_dirs, sysroot + '/usr/include')
+ add_dir_to_list(self.compiler.library_dirs, sysroot + '/@@GENTOO_LIBDIR@@')
+ add_dir_to_list(self.compiler.library_dirs, sysroot + '/usr/@@GENTOO_LIBDIR@@')
# lib_dirs and inc_dirs are used to search for files;
# if a file is found in one of those directories, it can
@@ -534,6 +544,9 @@ class PyBuildExt(build_ext):
else:
lib_dirs = self.compiler.library_dirs[:]
inc_dirs = self.compiler.include_dirs[:]
+ # Ignore previous settings.
+ lib_dirs = self.compiler.library_dirs
+ inc_dirs = self.compiler.include_dirs
exts = []
missing = []
@@ -749,11 +762,11 @@ class PyBuildExt(build_ext):
elif curses_library:
readline_libs.append(curses_library)
elif self.compiler.find_library_file(lib_dirs +
- ['/usr/@@GENTOO_LIBDIR@@/termcap'],
+ [sysroot + '/usr/@@GENTOO_LIBDIR@@/termcap'],
'termcap'):
readline_libs.append('termcap')
exts.append( Extension('readline', ['readline.c'],
- library_dirs=['/usr/@@GENTOO_LIBDIR@@/termcap'],
+ library_dirs=[sysroot + '/usr/@@GENTOO_LIBDIR@@/termcap'],
extra_link_args=readline_extra_link_args,
libraries=readline_libs) )
else:
@@ -778,20 +791,20 @@ class PyBuildExt(build_ext):
depends = ['socketmodule.h']) )
# Detect SSL support for the socket module (via _ssl)
search_for_ssl_incs_in = [
- '/usr/local/ssl/include',
- '/usr/contrib/ssl/include/'
+ sysroot + '/usr/local/ssl/include',
+ sysroot + '/usr/contrib/ssl/include/'
]
ssl_incs = find_file('openssl/ssl.h', inc_dirs,
search_for_ssl_incs_in
)
if ssl_incs is not None and not disable_ssl:
krb5_h = find_file('krb5.h', inc_dirs,
- ['/usr/kerberos/include'])
+ [sysroot + '/usr/kerberos/include'])
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/'
+ [sysroot + '/usr/local/ssl/lib',
+ sysroot + '/usr/contrib/ssl/lib/'
] )
if (ssl_incs is not None and
@@ -930,6 +943,7 @@ class PyBuildExt(build_ext):
db_inc_paths.append('/usr/local/include/db3%d' % x)
db_inc_paths.append('/pkg/db-3.%d/include' % x)
db_inc_paths.append('/opt/db-3.%d/include' % x)
+ db_inc_paths = [sysroot + x for x in db_inc_paths]
if cross_compiling:
db_inc_paths = []
@@ -1080,6 +1094,7 @@ class PyBuildExt(build_ext):
]
if cross_compiling:
sqlite_inc_paths = []
+ sqlite_inc_paths = [sysroot + x for x in sqlite_inc_paths]
MIN_SQLITE_VERSION_NUMBER = (3, 0, 8)
MIN_SQLITE_VERSION = ".".join([str(x)
for x in MIN_SQLITE_VERSION_NUMBER])
@@ -1662,7 +1677,7 @@ class PyBuildExt(build_ext):
# For 8.4a2, the X11 headers are not included. Rather than include a
# complicated search, this is a hard-coded path. It could bail out
# if X11 libs are not found...
- include_dirs.append('/usr/X11R6/include')
+ include_dirs.append(sysroot + '/usr/X11R6/include')
frameworks = ['-framework', 'Tcl', '-framework', 'Tk']
# All existing framework builds of Tcl/Tk don't support 64-bit
@@ -1713,6 +1728,9 @@ class PyBuildExt(build_ext):
if self.detect_tkinter_explicitly():
return
+ # We must respect the user specified sysroot!
+ sysroot = os.getenv('SYSROOT', '')
+
# Rather than complicate the code below, detecting and building
# AquaTk is a separate method. Only one Tkinter will be built on
# Darwin - either AquaTk, if it is found, or X11 based Tk.
@@ -1768,16 +1786,16 @@ class PyBuildExt(build_ext):
if host_platform == 'sunos5':
include_dirs.append('/usr/openwin/include')
added_lib_dirs.append('/usr/openwin/lib')
- elif os.path.exists('/usr/X11R6/include'):
- include_dirs.append('/usr/X11R6/include')
- added_lib_dirs.append('/usr/X11R6/@@GENTOO_LIBDIR@@')
- elif os.path.exists('/usr/X11R5/include'):
- include_dirs.append('/usr/X11R5/include')
- added_lib_dirs.append('/usr/X11R5/@@GENTOO_LIBDIR@@')
+ elif os.path.exists(sysroot + '/usr/X11R6/include'):
+ include_dirs.append(sysroot + '/usr/X11R6/include')
+ added_lib_dirs.append(sysroot + '/usr/X11R6/@@GENTOO_LIBDIR@@')
+ elif os.path.exists(sysroot + '/usr/X11R5/include'):
+ include_dirs.append(sysroot + '/usr/X11R5/include')
+ added_lib_dirs.append(sysroot + '/usr/X11R5/@@GENTOO_LIBDIR@@')
else:
# Assume default location for X11
- include_dirs.append('/usr/X11/include')
- added_lib_dirs.append('/usr/X11/@@GENTOO_LIBDIR@@')
+ include_dirs.append(sysroot + '/usr/X11/include')
+ added_lib_dirs.append(sysroot + '/usr/X11/@@GENTOO_LIBDIR@@')
# If Cygwin, then verify that X is installed before proceeding
if host_platform == 'cygwin':