--- Makefile.pre.in
+++ Makefile.pre.in
@@ -1000,12 +1002,12 @@ libinstall:	build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
 		$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
 			$(DESTDIR)$(LIBDEST)/distutils/tests ; \
 	fi
-	PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
 		$(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
 		-d $(LIBDEST) -f \
 		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
 		$(DESTDIR)$(LIBDEST)
-	PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
 		$(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
 		-d $(LIBDEST) -f \
 		-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
@@ -1133,11 +1135,13 @@ libainstall:	all python-config
 # Install the dynamically loadable modules
 # This goes into $(exec_prefix)
 sharedinstall: sharedmods
+	CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
 	$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
+		--skip-build \
 	   	--prefix=$(prefix) \
-		--install-scripts=$(BINDIR) \
-		--install-platlib=$(DESTSHARED) \
-		--root=$(DESTDIR)/
+		--install-scripts=$(DESTDIR)$(BINDIR) \
+		--install-platlib=$(DESTDIR)$(DESTSHARED) \
+		--root=/
 	-rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata.py*
 
 # Here are a couple of targets for MacOSX again, to install a full
--- setup.py.orig	2013-11-10 08:36:41.000000000 +0100
+++ setup.py	2013-11-18 21:27:27.222000786 +0100
@@ -17,7 +17,7 @@ from distutils.command.install import in
 from distutils.command.install_lib import install_lib
 from distutils.spawn import find_executable
 
-cross_compiling = "_PYTHON_HOST_PLATFORM" in os.environ
+cross_compiling = ("_PYTHON_HOST_PLATFORM" in os.environ) or ('PYTHONXCPREFIX' in os.environ)
 
 def get_platform():
     # cross build
@@ -324,6 +324,9 @@ class PyBuildExt(build_ext):
 
         # Don't try to load extensions for cross builds
         if cross_compiling:
+            self.announce(
+                 'WARNING: skipping import check for cross-compiled: "%s"' %
+                 ext.name)
             return
 
         try:
@@ -478,7 +481,7 @@ class PyBuildExt(build_ext):
                     for directory in reversed(options.dirs):
                         add_dir_to_list(dir_list, directory)
 
-        if os.path.normpath(sys.prefix) != '/usr' \
+        if os.path.normpath(sys.prefix) != '/usr' and not cross_compiling \
                 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
@@ -554,6 +557,11 @@ class PyBuildExt(build_ext):
         if host_platform in ['darwin', 'beos']:
             math_libs = []
 
+        # Insert libraries and headers from XBPS_CROSS_BASE
+        if 'XBPS_CROSS_BASE' in os.environ:
+            lib_dirs += [os.environ['XBPS_CROSS_BASE'] + '/usr/lib']
+            inc_dirs += [os.environ['XBPS_CROSS_BASE'] + '/usr/include']
+
         # XXX Omitted modules: gl, pure, dl, SGI-specific modules
 
         #
@@ -2020,6 +2028,11 @@ class PyBuildExt(build_ext):
 
                 # Pass empty CFLAGS because we'll just append the resulting
                 # CFLAGS to Python's; -g or -O2 is to be avoided.
+            if cross_compiling:
+                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))
 
