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-Makefile_pre_in | 41 ++++++ .../python3/patches/patch-Modules__io__iomodule_h | 14 ++ package/python3/patches/patch-configure | 34 +++++ package/python3/patches/patch-setup_py | 146 +++++++++++++++++++++ 4 files changed, 235 insertions(+) create mode 100644 package/python3/patches/patch-Makefile_pre_in create mode 100644 package/python3/patches/patch-Modules__io__iomodule_h create mode 100644 package/python3/patches/patch-configure create mode 100644 package/python3/patches/patch-setup_py (limited to 'package/python3/patches') diff --git a/package/python3/patches/patch-Makefile_pre_in b/package/python3/patches/patch-Makefile_pre_in new file mode 100644 index 000000000..894666d10 --- /dev/null +++ b/package/python3/patches/patch-Makefile_pre_in @@ -0,0 +1,41 @@ +--- Python-3.3.2.orig/Makefile.pre.in 2013-05-15 18:32:57.000000000 +0200 ++++ Python-3.3.2/Makefile.pre.in 2013-10-26 09:45:42.000000000 +0200 +@@ -70,9 +70,9 @@ MAKESETUP= $(srcdir)/Modules/makese + OPT= @OPT@ + BASECFLAGS= @BASECFLAGS@ + BASECPPFLAGS= @BASECPPFLAGS@ +-CONFIGURE_CFLAGS= @CFLAGS@ +-CONFIGURE_CPPFLAGS= @CPPFLAGS@ +-CONFIGURE_LDFLAGS= @LDFLAGS@ ++CONFIGURE_CFLAGS= ++CONFIGURE_CPPFLAGS= ++CONFIGURE_LDFLAGS= + # Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the + # command line to append to these values without stomping the pre-set + # values. +@@ -249,6 +249,7 @@ LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ + ########################################################################## + # Parser + PGEN= Parser/pgen$(EXE) ++HOSTPGEN?= ./Parser/pgen$(EXE) + + PSRCS= \ + Parser/acceler.c \ +@@ -493,7 +494,7 @@ sharedmods: $(BUILDPYTHON) pybuilddir.tx + *) quiet="";; \ + esac; \ + $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \ +- $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build ++ $(PYTHON_FOR_BUILD) $(srcdir)/setup.py build + + # Build static library + # avoid long command lines, same as LIBRARY_OBJS +@@ -669,7 +670,7 @@ $(IO_OBJS): $(IO_H) + $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS) + @$(MKDIR_P) Include + $(MAKE) $(PGEN) +- $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) ++ $(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) + $(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS) + $(MAKE) $(GRAMMAR_H) + touch $(GRAMMAR_C) diff --git a/package/python3/patches/patch-Modules__io__iomodule_h b/package/python3/patches/patch-Modules__io__iomodule_h new file mode 100644 index 000000000..64ac4ffaf --- /dev/null +++ b/package/python3/patches/patch-Modules__io__iomodule_h @@ -0,0 +1,14 @@ +--- Python-3.1.1.orig/Modules/_io/_iomodule.h 2009-06-12 04:07:12.000000000 +0200 ++++ Python-3.1.1/Modules/_io/_iomodule.h 2009-09-16 22:02:30.000000000 +0200 +@@ -99,7 +99,10 @@ typedef off_t Py_off_t; + # define PY_OFF_T_MAX LONG_MAX + # define PY_OFF_T_MIN LONG_MIN + #else +-# error off_t does not match either size_t, long, or long long! ++# define PyLong_AsOff_t PyLong_AsSsize_t ++# define PyLong_FromOff_t PyLong_FromSsize_t ++# define PY_OFF_T_MAX PY_SSIZE_T_MAX ++# define PY_OFF_T_MIN PY_SSIZE_T_MIN + #endif + + #endif diff --git a/package/python3/patches/patch-configure b/package/python3/patches/patch-configure new file mode 100644 index 000000000..12bdfbcc8 --- /dev/null +++ b/package/python3/patches/patch-configure @@ -0,0 +1,34 @@ +--- Python-3.3.2.orig/configure 2013-05-15 18:33:00.000000000 +0200 ++++ Python-3.3.2/configure 2013-10-24 16:05:44.000000000 +0200 +@@ -6214,10 +6214,6 @@ then + if test "$CC" != 'g++' ; then + STRICT_PROTO="-Wstrict-prototypes" + fi +- # For gcc 4.x we need to use -fwrapv so lets check if its supported +- if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then +- WRAP="-fwrapv" +- fi + + # Clang also needs -fwrapv + case $CC in +@@ -6225,20 +6221,6 @@ then + ;; + esac + +- case $ac_cv_prog_cc_g in +- yes) +- if test "$Py_DEBUG" = 'true' ; then +- # Optimization messes up debuggers, so turn it off for +- # debug builds. +- OPT="-g -O0 -Wall $STRICT_PROTO" +- else +- OPT="-g $WRAP -O3 -Wall $STRICT_PROTO" +- fi +- ;; +- *) +- OPT="-O3 -Wall $STRICT_PROTO" +- ;; +- esac + case $ac_sys_system in + SCO_SV*) OPT="$OPT -m486 -DSCO5" + ;; 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