python-config: Revert to using distutils.sysconfig

The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in

12-distutils-prefix-is-inside-staging-area.patch makes distutils.sysconfig

affect the native runtime as well as cross building. Use the old, patched
implementation which returns paths in the staging directory and for the target,
as appropriate.

Upstream-Status: Inappropriate [Embedded Specific]

Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
:
Index: Python-3.3.3/Misc/python-config.in
===================================================================
--- Python-3.3.3.orig/Misc/python-config.in
+++ Python-3.3.3/Misc/python-config.in
@@ -4,7 +4,7 @@
 import getopt
 import os
 import sys
-import sysconfig
+from distutils import sysconfig
 
 valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
               'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir']
@@ -32,14 +32,14 @@ if '--help' in opt_flags:
 
 for opt in opt_flags:
     if opt == '--prefix':
-        print(sysconfig.get_config_var('prefix'))
+        print(sysconfig.PREFIX)
 
     elif opt == '--exec-prefix':
-        print(sysconfig.get_config_var('exec_prefix'))
+        print(sysconfig.EXEC_PREFIX)
 
     elif opt in ('--includes', '--cflags'):
-        flags = ['-I' + sysconfig.get_path('include'),
-                 '-I' + sysconfig.get_path('platinclude')]
+        flags = ['-I' + sysconfig.get_python_inc(),
+                 '-I' + sysconfig.get_python_inc(plat_specific=True)]
         if opt == '--cflags':
             flags.extend(getvar('CFLAGS').split())
         print(' '.join(flags))
