blob: b3dbf4aa22d5756cc70de22c2d7c9cd46e64a33c [file] [log] [blame]
Mike Frysinger682d0652012-07-30 11:38:25 -04001Change setup.py to respect the SYSROOT environment variable
2
3--- a/setup.py
4+++ b/setup.py
Mike Frysinger51f0d522015-11-21 00:11:17 +00005@@ -455,10 +455,14 @@
Mike Frysinger682d0652012-07-30 11:38:25 -04006
7 def detect_modules(self):
8 global disable_ssl
9+
10+ # We must respect the user specified sysroot!
11+ sysroot = os.getenv('SYSROOT', '')
12+
13 # Ensure that /usr/local is always used
Mike Frysinger51f0d522015-11-21 00:11:17 +000014 if not cross_compiling:
15- add_dir_to_list(self.compiler.library_dirs, '/usr/local/@@GENTOO_LIBDIR@@')
16- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
17+ add_dir_to_list(self.compiler.library_dirs, sysroot + '/usr/local/@@GENTOO_LIBDIR@@')
18+ add_dir_to_list(self.compiler.include_dirs, sysroot + '/usr/local/include')
19 if cross_compiling:
20 self.add_gcc_paths()
Mike Frysinger4cfb44a2013-03-18 22:37:33 -040021 self.add_multiarch_paths()
Mike Frysinger51f0d522015-11-21 00:11:17 +000022@@ -504,9 +508,15 @@
Mike Frysinger4cfb44a2013-03-18 22:37:33 -040023 # building a framework with different architectures than
24 # the one that is currently installed (issue #7473)
Mike Frysinger682d0652012-07-30 11:38:25 -040025 add_dir_to_list(self.compiler.library_dirs,
Mike Frysinger4cfb44a2013-03-18 22:37:33 -040026- sysconfig.get_config_var("LIBDIR"))
27+ sysroot + sysconfig.get_config_var("LIBDIR"))
Mike Frysinger682d0652012-07-30 11:38:25 -040028 add_dir_to_list(self.compiler.include_dirs,
Mike Frysinger4cfb44a2013-03-18 22:37:33 -040029- sysconfig.get_config_var("INCLUDEDIR"))
30+ sysroot + sysconfig.get_config_var("INCLUDEDIR"))
Mike Frysinger51f0d522015-11-21 00:11:17 +000031+
Mike Frysinger682d0652012-07-30 11:38:25 -040032+ # We should always look into sysroot/usr/include and consider
33+ # also the lib dirs there for searching for files
34+ add_dir_to_list(self.compiler.include_dirs, sysroot + '/usr/include')
35+ add_dir_to_list(self.compiler.library_dirs, sysroot + '/@@GENTOO_LIBDIR@@')
36+ add_dir_to_list(self.compiler.library_dirs, sysroot + '/usr/@@GENTOO_LIBDIR@@')
Mike Frysinger51f0d522015-11-21 00:11:17 +000037
Mike Frysinger682d0652012-07-30 11:38:25 -040038 try:
39 have_unicode = unicode
Mike Frysinger51f0d522015-11-21 00:11:17 +000040@@ -527,6 +537,9 @@
41 '/@@GENTOO_LIBDIR@@', '/usr/@@GENTOO_LIBDIR@@',
42 ):
43 add_dir_to_list(lib_dirs, d)
Mike Frysinger682d0652012-07-30 11:38:25 -040044+ # Ignore previous settings.
45+ lib_dirs = self.compiler.library_dirs
46+ inc_dirs = self.compiler.include_dirs
47 exts = []
48 missing = []
49
Mike Frysinger51f0d522015-11-21 00:11:17 +000050@@ -778,11 +791,11 @@
Mike Frysinger4cfb44a2013-03-18 22:37:33 -040051 elif curses_library:
52 readline_libs.append(curses_library)
Mike Frysinger682d0652012-07-30 11:38:25 -040053 elif self.compiler.find_library_file(lib_dirs +
Mike Frysinger4cfb44a2013-03-18 22:37:33 -040054- ['/usr/@@GENTOO_LIBDIR@@/termcap'],
55+ [sysroot + '/usr/@@GENTOO_LIBDIR@@/termcap'],
56 'termcap'):
Mike Frysinger682d0652012-07-30 11:38:25 -040057 readline_libs.append('termcap')
58 exts.append( Extension('readline', ['readline.c'],
59- library_dirs=['/usr/@@GENTOO_LIBDIR@@/termcap'],
60+ library_dirs=[sysroot + '/usr/@@GENTOO_LIBDIR@@/termcap'],
61 extra_link_args=readline_extra_link_args,
62 libraries=readline_libs) )
63 else:
Mike Frysinger51f0d522015-11-21 00:11:17 +000064@@ -805,20 +818,20 @@
65 libraries=math_libs) )
Mike Frysinger682d0652012-07-30 11:38:25 -040066 # Detect SSL support for the socket module (via _ssl)
67 search_for_ssl_incs_in = [
68- '/usr/local/ssl/include',
69- '/usr/contrib/ssl/include/'
70+ sysroot + '/usr/local/ssl/include',
71+ sysroot + '/usr/contrib/ssl/include/'
72 ]
73 ssl_incs = find_file('openssl/ssl.h', inc_dirs,
74 search_for_ssl_incs_in
75 )
76 if ssl_incs is not None and not disable_ssl:
77 krb5_h = find_file('krb5.h', inc_dirs,
78- ['/usr/kerberos/include'])
79+ [sysroot + '/usr/kerberos/include'])
80 if krb5_h:
81 ssl_incs += krb5_h
82 ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
83- ['/usr/local/ssl/lib',
84- '/usr/contrib/ssl/lib/'
85+ [sysroot + '/usr/local/ssl/lib',
86+ sysroot + '/usr/contrib/ssl/lib/'
87 ] )
88
89 if (ssl_incs is not None and
Mike Frysinger51f0d522015-11-21 00:11:17 +000090@@ -968,6 +981,7 @@
Mike Frysinger682d0652012-07-30 11:38:25 -040091 db_inc_paths.append('/usr/local/include/db3%d' % x)
92 db_inc_paths.append('/pkg/db-3.%d/include' % x)
93 db_inc_paths.append('/opt/db-3.%d/include' % x)
94+ db_inc_paths = [sysroot + x for x in db_inc_paths]
95
Mike Frysinger51f0d522015-11-21 00:11:17 +000096 if cross_compiling:
97 db_inc_paths = []
98@@ -1121,6 +1135,7 @@
Mike Frysinger682d0652012-07-30 11:38:25 -040099 ]
Mike Frysinger51f0d522015-11-21 00:11:17 +0000100 if cross_compiling:
101 sqlite_inc_paths = []
Mike Frysinger682d0652012-07-30 11:38:25 -0400102+ sqlite_inc_paths = [sysroot + x for x in sqlite_inc_paths]
103 MIN_SQLITE_VERSION_NUMBER = (3, 0, 8)
104 MIN_SQLITE_VERSION = ".".join([str(x)
Mike Frysinger51f0d522015-11-21 00:11:17 +0000105 for x in MIN_SQLITE_VERSION_NUMBER])
106@@ -1222,7 +1237,7 @@
Mike Frysinger682d0652012-07-30 11:38:25 -0400107 # we do not build this one. Otherwise this build will pick up
108 # the more recent berkeleydb's db.h file first in the include path
109 # when attempting to compile and it will fail.
110- f = "/usr/include/db.h"
111+ f = sysroot + "/usr/include/db.h"
112
Mike Frysinger51f0d522015-11-21 00:11:17 +0000113 if host_platform == 'darwin':
Mike Frysinger682d0652012-07-30 11:38:25 -0400114 if is_macosx_sdk_path(f):
Mike Frysinger51f0d522015-11-21 00:11:17 +0000115@@ -1835,7 +1850,7 @@
Mike Frysinger682d0652012-07-30 11:38:25 -0400116 # For 8.4a2, the X11 headers are not included. Rather than include a
117 # complicated search, this is a hard-coded path. It could bail out
118 # if X11 libs are not found...
119- include_dirs.append('/usr/X11R6/include')
120+ include_dirs.append(sysroot + '/usr/X11R6/include')
121 frameworks = ['-framework', 'Tcl', '-framework', 'Tk']
122
123 # All existing framework builds of Tcl/Tk don't support 64-bit
Mike Frysinger51f0d522015-11-21 00:11:17 +0000124@@ -1879,6 +1894,9 @@
125 if self.detect_tkinter_explicitly():
126 return
Mike Frysinger682d0652012-07-30 11:38:25 -0400127
128+ # We must respect the user specified sysroot!
129+ sysroot = os.getenv('SYSROOT', '')
130+
131 # Rather than complicate the code below, detecting and building
132 # AquaTk is a separate method. Only one Tkinter will be built on
133 # Darwin - either AquaTk, if it is found, or X11 based Tk.
Mike Frysinger51f0d522015-11-21 00:11:17 +0000134@@ -1934,16 +1952,16 @@
135 if host_platform == 'sunos5':
Mike Frysinger682d0652012-07-30 11:38:25 -0400136 include_dirs.append('/usr/openwin/include')
137 added_lib_dirs.append('/usr/openwin/lib')
138- elif os.path.exists('/usr/X11R6/include'):
139- include_dirs.append('/usr/X11R6/include')
Mike Frysinger51f0d522015-11-21 00:11:17 +0000140- added_lib_dirs.append('/usr/X11R6/@@GENTOO_LIBDIR@@')
Mike Frysinger682d0652012-07-30 11:38:25 -0400141- elif os.path.exists('/usr/X11R5/include'):
142- include_dirs.append('/usr/X11R5/include')
Mike Frysinger51f0d522015-11-21 00:11:17 +0000143- added_lib_dirs.append('/usr/X11R5/@@GENTOO_LIBDIR@@')
Mike Frysinger682d0652012-07-30 11:38:25 -0400144+ elif os.path.exists(sysroot + '/usr/X11R6/include'):
145+ include_dirs.append(sysroot + '/usr/X11R6/include')
Mike Frysinger51f0d522015-11-21 00:11:17 +0000146+ added_lib_dirs.append(sysroot + '/usr/X11R6/@@GENTOO_LIBDIR@@')
Mike Frysinger682d0652012-07-30 11:38:25 -0400147+ elif os.path.exists(sysroot + '/usr/X11R5/include'):
148+ include_dirs.append(sysroot + '/usr/X11R5/include')
Mike Frysinger51f0d522015-11-21 00:11:17 +0000149+ added_lib_dirs.append(sysroot + '/usr/X11R5/@@GENTOO_LIBDIR@@')
Mike Frysinger682d0652012-07-30 11:38:25 -0400150 else:
151 # Assume default location for X11
152- include_dirs.append('/usr/X11/include')
Mike Frysinger51f0d522015-11-21 00:11:17 +0000153- added_lib_dirs.append('/usr/X11/@@GENTOO_LIBDIR@@')
Mike Frysinger682d0652012-07-30 11:38:25 -0400154+ include_dirs.append(sysroot + '/usr/X11/include')
Mike Frysinger51f0d522015-11-21 00:11:17 +0000155+ added_lib_dirs.append(sysroot + '/usr/X11/@@GENTOO_LIBDIR@@')
Mike Frysinger682d0652012-07-30 11:38:25 -0400156
157 # If Cygwin, then verify that X is installed before proceeding
Mike Frysinger51f0d522015-11-21 00:11:17 +0000158 if host_platform == 'cygwin':