Do not look at host headers/libraries in cross-compile mode When we are cross-compiling, setup.py should never look in /usr or /usr/local to find headers or libraries. A later patch adds a mechanism to tell setup.py to look in a specific directory for headers and libraries. Signed-off-by: Thomas Petazzoni --- setup.py | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) Index: Python-2.7.2/setup.py =================================================================== --- Python-2.7.2.orig/setup.py +++ Python-2.7.2/setup.py @@ -373,9 +373,10 @@ def detect_modules(self): # Ensure that /usr/local is always used - add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') - add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') - self.add_multiarch_paths() + if os.environ.get('CROSS_COMPILING') != 'yes': + add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') + self.add_multiarch_paths() # Add paths specified in the environment variables LDFLAGS and # CPPFLAGS for header and library files. @@ -383,10 +384,7 @@ # directly since an inconsistently reproducible issue comes up where # the environment variable is not set even though the value were passed # into configure and stored in the Makefile (issue found on OS X 10.3). - for env_var, arg_name, dir_list in ( - ('LDFLAGS', '-R', self.compiler.runtime_library_dirs), - ('LDFLAGS', '-L', self.compiler.library_dirs), - ('CPPFLAGS', '-I', self.compiler.include_dirs)): + for env_var, arg_name, dir_list in (): env_val = sysconfig.get_config_var(env_var) if env_val: # To prevent optparse from raising an exception about any @@ -411,17 +409,6 @@ for directory in reversed(options.dirs): add_dir_to_list(dir_list, directory) - if os.path.normpath(sys.prefix) != '/usr' \ - and not sysconfig.get_config_var('PYTHONFRAMEWORK'): - # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework - # (PYTHONFRAMEWORK is set) to avoid # linking problems when - # 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")) - add_dir_to_list(self.compiler.include_dirs, - sysconfig.get_config_var("INCLUDEDIR")) - try: have_unicode = unicode except NameError: @@ -430,11 +417,16 @@ # lib_dirs and inc_dirs are used to search for files; # if a file is found in one of those directories, it can # be assumed that no additional -I,-L directives are needed. - lib_dirs = self.compiler.library_dirs + [ - '/lib64', '/usr/lib64', - '/lib', '/usr/lib', - ] - inc_dirs = self.compiler.include_dirs + ['/usr/include'] + lib_dirs = self.compiler.library_dirs + inc_dirs = self.compiler.include_dirs + + if os.environ.get('CROSS_COMPILING') != 'yes': + lib_dirs += [ + '/lib64', '/usr/lib64', + '/lib', '/usr/lib', + ] + inc_dirs += ['/usr/include'] + exts = [] missing = [] @@ -867,6 +859,9 @@ db_inc_paths.append('/pkg/db-3.%d/include' % x) db_inc_paths.append('/opt/db-3.%d/include' % x) + if os.environ.get('CROSS_COMPILING') == 'yes': + db_inc_paths = [] + # Add some common subdirectories for Sleepycat DB to the list, # based on the standard include directories. This way DB3/4 gets # picked up when it is installed in a non-standard prefix and @@ -1019,6 +1014,9 @@ MIN_SQLITE_VERSION = ".".join([str(x) for x in MIN_SQLITE_VERSION_NUMBER]) + if os.environ.get('CROSS_COMPILING') == 'yes': + sqlite_inc_paths = [] + # Scan the default include directories before the SQLite specific # ones. This allows one to override the copy of sqlite on OSX, # where /usr/include contains an old version of sqlite. @@ -1118,6 +1116,8 @@ # the more recent berkeleydb's db.h file first in the include path # when attempting to compile and it will fail. f = "/usr/include/db.h" + if os.environ.get('CROSS_COMPILING') == 'yes': + f = '' if sys.platform == 'darwin': if is_macosx_sdk_path(f):