265 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			265 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff -ur Python-2.7.3.orig/configure Python-2.7.3-Source/configure
 | |
| --- Python-2.7.3.orig/configure	2012-04-09 19:07:36.000000000 -0400
 | |
| +++ Python-2.7.3-Source/configure	2012-10-23 14:10:45.305220393 -0400
 | |
| @@ -13697,7 +13697,7 @@
 | |
|    $as_echo_n "(cached) " >&6
 | |
|  else
 | |
|    if test "$cross_compiling" = yes; then :
 | |
| -  ac_cv_have_long_long_format=no
 | |
| +  ac_cv_have_long_long_format="cross -- assuming yes"
 | |
|  else
 | |
|    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 | |
|  /* end confdefs.h.  */
 | |
| @@ -13749,7 +13749,7 @@
 | |
|  $as_echo "$ac_cv_have_long_long_format" >&6; }
 | |
|  fi
 | |
|  
 | |
| -if test "$ac_cv_have_long_long_format" = yes
 | |
| +if test "$ac_cv_have_long_long_format" != no
 | |
|  then
 | |
|  
 | |
|  $as_echo "#define PY_FORMAT_LONG_LONG \"ll\"" >>confdefs.h
 | |
| diff -ur Python-2.7.3.orig/Makefile.pre.in Python-2.7.3-Source/Makefile.pre.in
 | |
| --- Python-2.7.3.orig/Makefile.pre.in	2012-04-09 19:07:33.000000000 -0400
 | |
| +++ Python-2.7.3-Source/Makefile.pre.in	2012-10-23 14:10:45.305220393 -0400
 | |
| @@ -182,6 +182,7 @@
 | |
|  
 | |
|  PYTHON=		python$(EXE)
 | |
|  BUILDPYTHON=	python$(BUILDEXE)
 | |
| +HOSTPYTHON=     ./$(BUILDPYTHON)
 | |
|  
 | |
|  # The task to run while instrument when building the profile-opt target
 | |
|  PROFILE_TASK=	$(srcdir)/Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck
 | |
| @@ -215,6 +216,8 @@
 | |
|  # Parser
 | |
|  PGEN=		Parser/pgen$(EXE)
 | |
|  
 | |
| +HOSTPGEN=   $(PGEN)
 | |
| +
 | |
|  POBJS=		\
 | |
|  		Parser/acceler.o \
 | |
|  		Parser/grammar1.o \
 | |
| @@ -408,8 +411,8 @@
 | |
|  # Build the shared modules
 | |
|  sharedmods: $(BUILDPYTHON)
 | |
|  	@case $$MAKEFLAGS in \
 | |
| -	*s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \
 | |
| -	*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
 | |
| +	*s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' PYTHONXCPREFIX='$(DESTDIR)$(prefix)' $(HOSTPYTHON) -E $(srcdir)/setup.py -q build;; \
 | |
| +	*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' PYTHONXCPREFIX='$(DESTDIR)$(prefix)' $(HOSTPYTHON) -E $(srcdir)/setup.py build;; \
 | |
|  	esac
 | |
|  
 | |
|  # Build static library
 | |
| @@ -543,7 +546,7 @@
 | |
|  $(GRAMMAR_H) $(GRAMMAR_C): Parser/pgen.stamp
 | |
|  Parser/pgen.stamp: $(PGEN) $(GRAMMAR_INPUT)
 | |
|  		-@$(INSTALL) -d Include
 | |
| -		$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
 | |
| +		-$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
 | |
|  		-touch Parser/pgen.stamp
 | |
|  
 | |
|  $(PGEN):	$(PGENOBJS)
 | |
| @@ -938,26 +941,26 @@
 | |
|  		$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
 | |
|  			$(DESTDIR)$(LIBDEST)/distutils/tests ; \
 | |
|  	fi
 | |
| -	PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
 | |
| -		./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
 | |
| +	-PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
 | |
| +		./$(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
 | |
|  		-d $(LIBDEST) -f \
 | |
|  		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
 | |
|  		$(DESTDIR)$(LIBDEST)
 | |
| -	PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
 | |
| -		./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
 | |
| +	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
 | |
| +		./$(HOSTPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
 | |
|  		-d $(LIBDEST) -f \
 | |
|  		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
 | |
|  		$(DESTDIR)$(LIBDEST)
 | |
|  	-PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
 | |
| -		./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
 | |
| +		./$(HOSTPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
 | |
|  		-d $(LIBDEST)/site-packages -f \
 | |
|  		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
 | |
|  	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
 | |
| -		./$(BUILDPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
 | |
| +		./$(HOSTPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
 | |
|  		-d $(LIBDEST)/site-packages -f \
 | |
|  		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
 | |
|  	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
 | |
| -		./$(BUILDPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
 | |
| +		./$(HOSTPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"
 | |
|  
 | |
|  # Create the PLATDIR source directory, if one wasn't distributed..
 | |
|  $(srcdir)/Lib/$(PLATDIR):
 | |
| @@ -1062,7 +1065,9 @@
 | |
|  # Install the dynamically loadable modules
 | |
|  # This goes into $(exec_prefix)
 | |
|  sharedinstall: sharedmods
 | |
| -	$(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \
 | |
| +	CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
 | |
| +	$(RUNSHARED) $(HOSTPYTHON) -E $(srcdir)/setup.py install \
 | |
| +		--skip-build \
 | |
|  	   	--prefix=$(prefix) \
 | |
|  		--install-scripts=$(BINDIR) \
 | |
|  		--install-platlib=$(DESTSHARED) \
 | |
| diff -ur Python-2.7.3.orig/setup.py Python-2.7.3-Source/setup.py
 | |
| --- Python-2.7.3.orig/setup.py	2012-04-09 19:07:36.000000000 -0400
 | |
| +++ Python-2.7.3-Source/setup.py	2012-10-23 14:10:56.085220237 -0400
 | |
| @@ -145,6 +145,7 @@
 | |
|      def __init__(self, dist):
 | |
|          build_ext.__init__(self, dist)
 | |
|          self.failed = []
 | |
| +        self.cross_compile = os.environ.get('CROSS_COMPILE_TARGET') == 'yes'
 | |
|  
 | |
|      def build_extensions(self):
 | |
|  
 | |
| @@ -278,6 +279,14 @@
 | |
|                            (ext.name, sys.exc_info()[1]))
 | |
|              self.failed.append(ext.name)
 | |
|              return
 | |
| +
 | |
| +        # Import check will not work when cross-compiling.
 | |
| +        if os.environ.has_key('PYTHONXCPREFIX'):
 | |
| +            self.announce(
 | |
| +                'WARNING: skipping import check for cross-compiled: "%s"' %
 | |
| +                ext.name)
 | |
| +            return
 | |
| +
 | |
|          # Workaround for Mac OS X: The Carbon-based modules cannot be
 | |
|          # reliably imported into a command-line Python
 | |
|          if 'Carbon' in ext.extra_link_args:
 | |
| @@ -369,9 +378,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 not self.cross_compile:
 | |
| +            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.
 | |
| @@ -408,7 +418,8 @@
 | |
|                          add_dir_to_list(dir_list, directory)
 | |
|  
 | |
|          if os.path.normpath(sys.prefix) != '/usr' \
 | |
| -                and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
 | |
| +                and not sysconfig.get_config_var('PYTHONFRAMEWORK') \
 | |
| +                and not self.cross_compile:
 | |
|              # 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
 | |
| @@ -426,11 +437,23 @@
 | |
|          # 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 not self.cross_compile:
 | |
| +            lib_dirs += [
 | |
| +                '/lib64', '/usr/lib64',
 | |
| +                '/lib', '/usr/lib',
 | |
| +                ]
 | |
| +            inc_dirs += ['/usr/include']
 | |
| +        else:
 | |
| +            # The common install prefix of 3rd party libraries used during
 | |
| +            # cross compilation
 | |
| +            mydir = os.environ.get('PYTHON_XCOMPILE_DEPENDENCIES_PREFIX')
 | |
| +            if mydir:
 | |
| +                inc_dirs += [mydir + '/include' ]
 | |
| +                inc_dirs += [mydir + '/lib/libffi-3.0.10/include']
 | |
| +                lib_dirs += [mydir + '/lib' ]
 | |
| +
 | |
|          exts = []
 | |
|          missing = []
 | |
|  
 | |
| @@ -1004,13 +1027,24 @@
 | |
|          # We hunt for #define SQLITE_VERSION "n.n.n"
 | |
|          # We need to find >= sqlite version 3.0.8
 | |
|          sqlite_incdir = sqlite_libdir = None
 | |
| -        sqlite_inc_paths = [ '/usr/include',
 | |
| -                             '/usr/include/sqlite',
 | |
| -                             '/usr/include/sqlite3',
 | |
| -                             '/usr/local/include',
 | |
| -                             '/usr/local/include/sqlite',
 | |
| -                             '/usr/local/include/sqlite3',
 | |
| -                           ]
 | |
| +
 | |
| +        if not self.cross_compile:
 | |
| +            sqlite_inc_paths = [ '/usr/include',
 | |
| +                                 '/usr/include/sqlite',
 | |
| +                                 '/usr/include/sqlite3',
 | |
| +                                 '/usr/local/include',
 | |
| +                                 '/usr/local/include/sqlite',
 | |
| +                                 '/usr/local/include/sqlite3',
 | |
| +                                ]
 | |
| +        else:
 | |
| +            # The common install prefix of 3rd party headers used during
 | |
| +            # cross compilation
 | |
| +            mydir = os.environ.get('PYTHON_XCOMPILE_DEPENDENCIES_PREFIX')
 | |
| +            if mydir:
 | |
| +                sqlite_inc_paths = [mydir + '/include' ]
 | |
| +            else:
 | |
| +                sqlite_inc_paths = []
 | |
| +
 | |
|          MIN_SQLITE_VERSION_NUMBER = (3, 0, 8)
 | |
|          MIN_SQLITE_VERSION = ".".join([str(x)
 | |
|                                      for x in MIN_SQLITE_VERSION_NUMBER])
 | |
| @@ -1050,12 +1084,22 @@
 | |
|                      print "sqlite: %s had no SQLITE_VERSION"%(f,)
 | |
|  
 | |
|          if sqlite_incdir:
 | |
| -            sqlite_dirs_to_check = [
 | |
| -                os.path.join(sqlite_incdir, '..', 'lib64'),
 | |
| -                os.path.join(sqlite_incdir, '..', 'lib'),
 | |
| -                os.path.join(sqlite_incdir, '..', '..', 'lib64'),
 | |
| -                os.path.join(sqlite_incdir, '..', '..', 'lib'),
 | |
| -            ]
 | |
| +            if not self.cross_compile:
 | |
| +                sqlite_dirs_to_check = [
 | |
| +                    os.path.join(sqlite_incdir, '..', 'lib64'),
 | |
| +                    os.path.join(sqlite_incdir, '..', 'lib'),
 | |
| +                    os.path.join(sqlite_incdir, '..', '..', 'lib64'),
 | |
| +                    os.path.join(sqlite_incdir, '..', '..', 'lib'),
 | |
| +                ]
 | |
| +            else:
 | |
| +                # The common install prefix of 3rd party headers used during
 | |
| +                # cross compilation
 | |
| +                mydir = os.environ.get('PYTHON_XCOMPILE_DEPENDENCIES_PREFIX')
 | |
| +                if mydir:
 | |
| +                    sqlite_dirs_to_check = [mydir + '/lib' ]
 | |
| +                else:
 | |
| +                    sqlite_dirs_to_check = []
 | |
| +
 | |
|              sqlite_libfile = self.compiler.find_library_file(
 | |
|                                  sqlite_dirs_to_check + lib_dirs, 'sqlite3')
 | |
|              if sqlite_libfile:
 | |
| @@ -1864,8 +1908,15 @@
 | |
|  
 | |
|                  # Pass empty CFLAGS because we'll just append the resulting
 | |
|                  # CFLAGS to Python's; -g or -O2 is to be avoided.
 | |
| -                cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
 | |
| -                      % (ffi_builddir, ffi_srcdir, " ".join(config_args))
 | |
| +                if self.cross_compile:
 | |
| +                    cmd = "cd %s && env CFLAGS='' %s/configure --host=%s --build=%s %s" \
 | |
| +                          % (ffi_builddir, ffi_srcdir,
 | |
| +                             os.environ.get('HOSTARCH'),
 | |
| +                             os.environ.get('BUILDARCH'),
 | |
| +                             " ".join(config_args))
 | |
| +                else:
 | |
| +                    cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \
 | |
| +                          % (ffi_builddir, ffi_srcdir, " ".join(config_args))
 | |
|  
 | |
|                  res = os.system(cmd)
 | |
|                  if res or not os.path.exists(ffi_configfile):
 |