From 333245969917c94a03900881cc9ac5c1c401ab86 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Mon, 28 Oct 2013 16:31:39 +0100 Subject: update python3 to new host build style --- package/python3/patches/patch-setup_py | 146 +++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 package/python3/patches/patch-setup_py (limited to 'package/python3/patches/patch-setup_py') diff --git a/package/python3/patches/patch-setup_py b/package/python3/patches/patch-setup_py new file mode 100644 index 000000000..6c42cc30d --- /dev/null +++ b/package/python3/patches/patch-setup_py @@ -0,0 +1,146 @@ +--- Python-3.3.2.orig/setup.py 2013-05-15 18:33:00.000000000 +0200 ++++ Python-3.3.2/setup.py 2013-10-27 13:54:34.000000000 +0100 +@@ -80,7 +80,7 @@ def find_file(filename, std_dirs, paths) + 'paths' is a list of additional locations to check; if the file is + found in one of them, the resulting list will contain the directory. + """ +- if host_platform == 'darwin': ++ if host_platform == 'darwin' and not cross_compiling: + # Honor the MacOSX SDK setting when one was specified. + # An SDK is a directory with the same structure as a real + # system, but with only header files and libraries. +@@ -90,7 +90,7 @@ def find_file(filename, std_dirs, paths) + for dir in std_dirs: + f = os.path.join(dir, filename) + +- if host_platform == 'darwin' and is_macosx_sdk_path(dir): ++ if host_platform == 'darwin' and is_macosx_sdk_path(dir) and not cross_compiling: + f = os.path.join(sysroot, dir[1:], filename) + + if os.path.exists(f): return [] +@@ -99,7 +99,7 @@ def find_file(filename, std_dirs, paths) + for dir in paths: + f = os.path.join(dir, filename) + +- if host_platform == 'darwin' and is_macosx_sdk_path(dir): ++ if host_platform == 'darwin' and is_macosx_sdk_path(dir) and not cross_compiling: + f = os.path.join(sysroot, dir[1:], filename) + + if os.path.exists(f): +@@ -113,7 +113,7 @@ def find_library_file(compiler, libname, + if result is None: + return None + +- if host_platform == 'darwin': ++ if host_platform == 'darwin' and not cross_compiling: + sysroot = macosx_sdk_root() + + # Check whether the found file is in one of the standard directories +@@ -122,7 +122,7 @@ def find_library_file(compiler, libname, + # Ensure path doesn't end with path separator + p = p.rstrip(os.sep) + +- if host_platform == 'darwin' and is_macosx_sdk_path(p): ++ if host_platform == 'darwin' and is_macosx_sdk_path(p) and not cross_compiling: + if os.path.join(sysroot, p[1:]) == dirname: + return [ ] + +@@ -135,7 +135,7 @@ def find_library_file(compiler, libname, + # Ensure path doesn't end with path separator + p = p.rstrip(os.sep) + +- if host_platform == 'darwin' and is_macosx_sdk_path(p): ++ if host_platform == 'darwin' and is_macosx_sdk_path(p) and not cross_compiling: + if os.path.join(sysroot, p[1:]) == dirname: + return [ p ] + +@@ -168,6 +168,7 @@ class PyBuildExt(build_ext): + + def build_extensions(self): + ++ self.compiler.library_dirs = [] + # Detect which modules should be compiled + missing = self.detect_modules() + +@@ -444,7 +445,8 @@ class PyBuildExt(build_ext): + # only change this for cross builds for 3.3, issues on Mageia + if cross_compiling: + self.add_gcc_paths() +- self.add_multiarch_paths() ++ if not cross_compiling: ++ self.add_multiarch_paths() + + # Add paths specified in the environment variables LDFLAGS and + # CPPFLAGS for header and library files. +@@ -481,7 +483,8 @@ class PyBuildExt(build_ext): + add_dir_to_list(dir_list, directory) + + if os.path.normpath(sys.base_prefix) != '/usr' \ +- and not sysconfig.get_config_var('PYTHONFRAMEWORK'): ++ and not sysconfig.get_config_var('PYTHONFRAMEWORK') \ ++ and not cross_compiling: + # 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 +@@ -494,6 +497,9 @@ class PyBuildExt(build_ext): + # 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. ++ if cross_compiling: ++ add_dir_to_list(self.compiler.library_dirs, ++ sysconfig.get_config_var('srcdir')) + if not cross_compiling: + lib_dirs = self.compiler.library_dirs + [ + '/lib64', '/usr/lib64', +@@ -520,23 +526,26 @@ class PyBuildExt(build_ext): + if host_platform == 'hp-ux11': + lib_dirs += ['/usr/lib/hpux64', '/usr/lib/hpux32'] + +- if host_platform == 'darwin': +- # This should work on any unixy platform ;-) +- # If the user has bothered specifying additional -I and -L flags +- # in OPT and LDFLAGS we might as well use them here. +- # +- # NOTE: using shlex.split would technically be more correct, but +- # also gives a bootstrap problem. Let's hope nobody uses +- # directories with whitespace in the name to store libraries. +- cflags, ldflags = sysconfig.get_config_vars( +- 'CFLAGS', 'LDFLAGS') +- for item in cflags.split(): +- if item.startswith('-I'): +- inc_dirs.append(item[2:]) ++ # This should work on any unixy platform ;-) ++ # If the user has bothered specifying additional -I and -L flags ++ # in OPT and LDFLAGS we might as well use them here. ++ # ++ # NOTE: using shlex.split would technically be more correct, but ++ # also gives a bootstrap problem. Let's hope nobody uses ++ # directories with whitespace in the name to store libraries. ++ cppflags, cflags, ldflags = sysconfig.get_config_vars( ++ 'CPPFLAGS', 'CFLAGS', 'LDFLAGS') ++ for item in cppflags.split(): ++ if item.startswith('-I'): ++ inc_dirs.append(item[2:]) + +- for item in ldflags.split(): +- if item.startswith('-L'): +- lib_dirs.append(item[2:]) ++ for item in cflags.split(): ++ if item.startswith('-I'): ++ inc_dirs.append(item[2:]) ++ ++ for item in ldflags.split(): ++ if item.startswith('-L'): ++ lib_dirs.append(item[2:]) + + # Check for MacOS X, which doesn't need libm.a at all + math_libs = ['m'] +@@ -1355,7 +1364,7 @@ class PyBuildExt(build_ext): + + # Gustavo Niemeyer's bz2 module. + if (self.compiler.find_library_file(lib_dirs, 'bz2')): +- if host_platform == "darwin": ++ if host_platform == "darwin" and not cross_compiling: + bz2_extra_link_args = ('-Wl,-search_paths_first',) + else: + bz2_extra_link_args = () -- cgit v1.2.3