Change the location of pyconfig.h

The Python interpreter has a really strange behaviour: at *runtime*,
it reads a Makefile and a header file named pyconfig.h to get some
information about the configuration.

The Makefile is located in usr/lib/python2.7/config, which is fine
since this location is kept on the target.

However, by default, the pyconfig.h is installed in
usr/include/python2.7, but we completely remove the usr/include
directory for the target. Since making an exception just for
pyconfig.h is annoying, this patch also installs pyconfig.h to
usr/lib/python2.7/config, and modifies the sysconfig module so that it
looks in this location instead of usr/include.

The pyconfig.h is still kept in usr/include/python2.7, because it is
needed in the $(STAGING_DIR) when building third-party Python
extensions that contain C code.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

---
 Lib/distutils/sysconfig.py |    3 ++-
 Lib/sysconfig.py           |    2 +-
 Makefile.pre.in            |    3 ++-
 3 files changed, 5 insertions(+), 3 deletions(-)

Index: Python-2.7.2/Lib/distutils/sysconfig.py
===================================================================
--- Python-2.7.2.orig/Lib/distutils/sysconfig.py
+++ Python-2.7.2/Lib/distutils/sysconfig.py
@@ -193,7 +193,8 @@
         else:
             inc_dir = project_base
     else:
-        inc_dir = get_python_inc(plat_specific=1)
+        lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
+        inc_dir = os.path.join(lib_dir, "config")
     if get_python_version() < '2.2':
         config_h = 'config.h'
     else:
Index: Python-2.7.2/Lib/sysconfig.py
===================================================================
--- Python-2.7.2.orig/Lib/sysconfig.py
+++ Python-2.7.2/Lib/sysconfig.py
@@ -356,7 +356,7 @@
         else:
             inc_dir = _PROJECT_BASE
     else:
-        inc_dir = get_path('platinclude')
+        inc_dir = os.path.join(get_path('stdlib'), "config")
     return os.path.join(inc_dir, 'pyconfig.h')
 
 def get_scheme_names():
Index: Python-2.7.2/Makefile.pre.in
===================================================================
--- Python-2.7.2.orig/Makefile.pre.in
+++ Python-2.7.2/Makefile.pre.in
@@ -972,7 +972,6 @@
 		echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
 		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \
 	done
-	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
 
 # Install the library and miscellaneous stuff needed for extending/embedding
 # This goes into $(exec_prefix)
@@ -1006,6 +1005,8 @@
 	$(INSTALL_DATA) Modules/python.o $(DESTDIR)$(LIBPL)/python.o
 	$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
 	$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile
+	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(LIBPL)/pyconfig.h
+	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
 	$(INSTALL_DATA) Modules/Setup $(DESTDIR)$(LIBPL)/Setup
 	$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local
 	$(INSTALL_DATA) Modules/Setup.config $(DESTDIR)$(LIBPL)/Setup.config
