From 2f5812c3fbc3ca3e0667c838654aa955da23ce96 Mon Sep 17 00:00:00 2001 From: Petr Ovtchenkov Date: Tue, 24 May 2016 10:04:34 +0300 Subject: [PATCH 1/2] Compilation modules for foreign target platform In compilation for foreign target platform (with arch different from build host's arch) pass -I/usr/include (and -I/usr/local/include) to compiler lead to usage host's headers. Let's try to avoid this unconditionally. --- setup.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/setup.py b/setup.py index 3d6a660..63c4af6 100644 --- a/setup.py +++ b/setup.py @@ -61,6 +61,10 @@ def add_dir_to_list(dirlist, dir): return dirlist.insert(0, dir) +def rm_dir_from_list(dirlist, dir): + if dir in dirlist: + dirlist.remove(dir) + def macosx_sdk_root(): """ Return the directory of the current OSX SDK, @@ -325,6 +329,9 @@ class PyBuildExt(build_ext): return try: + if cross_compiling: + rm_dir_from_list(self.compiler.include_dirs, '/usr/include') + rm_dir_from_list(self.compiler.include_dirs, '/usr/local/include') build_ext.build_extension(self, ext) except (CCompilerError, DistutilsError) as why: self.announce('WARNING: building of extension "%s" failed: %s' % @@ -420,10 +427,11 @@ class PyBuildExt(build_ext): 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) + if not cross_compiling: + 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) return if not find_executable('dpkg-architecture'): @@ -441,10 +449,11 @@ class PyBuildExt(build_ext): 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) + if not cross_compiling: + 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) finally: os.unlink(tmpfile) -- 2.7.1