pyconfigure

(Brandon Invergo)
2012-12-13: handle broken sysconfig in CPython 2.7 in virtualenvs

handle broken sysconfig in CPython 2.7 in virtualenvs

diff --git a/src/m4/python.m4 b/src/m4/python.m4
--- a/src/m4/python.m4
+++ b/src/m4/python.m4
@@ -118,7 +118,7 @@ AC_DEFUN([AC_LANG_COMPILER(Python)],
 AC_DEFUN([AC_PROG_PYTHON],
 [AC_ARG_VAR([PYTHON], [the Python interpreter])
 m4_define_default([_PC_PYTHON_INTERPRETER_LIST],
-                  [python python3 python3.2 python3.1 python3.0 python2 python2.7 dnl
+                  [python python3 python 3.3 python3.2 python3.1 python3.0 python2 python2.7 dnl
                    python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
 m4_ifval([$1],
 	[AC_PATH_PROGS(PYTHON, [$1 _PC_PYTHON_INTERPRETER_LIST])],
@@ -403,9 +403,19 @@ AC_CACHE_CHECK([for Python site-packages
      AC_LANG_CONFTEST([
          AC_LANG_PROGRAM([dnl
 import sys
+from platform import python_implementation
+# sysconfig in CPython 2.7 doesn't work in virtualenv
+# <https://github.com/pypa/virtualenv/issues/118>
 try:
     import sysconfig
 except:
+    can_use_sysconfig = False
+else:
+    can_use_sysconfig = True
+if can_use_sysconfig:
+    if python_implementation() == "CPython" && sys.version[[:3]] == '2.7':
+        can_use_sysconfig = False
+if not can_use_sysconfig:        
     from distutils import sysconfig
     sitedir = sysconfig.get_python_lib(False, False, prefix='$pc_py_prefix')
 else:
@@ -458,13 +468,23 @@ AC_DEFUN([PC_PYTHON_CHECK_EXEC_DIR],
      AC_LANG_CONFTEST([
          AC_LANG_PROGRAM([dnl
 import sys
+from platform import python_implementation
+# sysconfig in CPython 2.7 doesn't work in virtualenv
+# <https://github.com/pypa/virtualenv/issues/118>
 try:
     import sysconfig
 except:
+    can_use_sysconfig = False
+else:
+    can_use_sysconfig = True
+if can_use_sysconfig:
+    if python_implementation() == "CPython" && sys.version[[:3]] == '2.7':
+        can_use_sysconfig = False
+if not can_use_sysconfig:        
     from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(True, False, prefix='$pc_py_exec_prefix')
+    sitedir = sysconfig.get_python_lib(False, False, prefix='$pc_py__exec_prefix')
 else:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$pc_py_exec_prefix'})
+    sitedir = sysconfig.get_path('purelib', vars={'platbase':'$pc_py_exec_prefix'})
 ], [dnl
     sys.stdout.write(sitedir)
 ])])