Hilko Bengen
2011-May-03 22:29 UTC
[Libguestfs] [PATCH] [hivex] Use Python's distutils to determine include and site-packages directories.
The code has been taken from specifically ac_python_devel.m4 published at <http://ac-archive.sf.net/>, it has turned out to be less error-prone on my Debian system. --- configure.ac | 46 ++++++++++++---------------------------------- 1 files changed, 12 insertions(+), 34 deletions(-) diff --git a/configure.ac b/configure.ac index b82a841..5805ddd 100644 --- a/configure.ac +++ b/configure.ac @@ -232,47 +232,25 @@ AC_CHECK_PROG([PYTHON],[python],[python],[no]) PYTHON_PREFIX PYTHON_VERSION-PYTHON_INCLUDEDIR-PYTHON_SITE_PACKAGES if test "x$PYTHON" != "xno"; then PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"` PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"` - for d in \ - $PYTHON_PREFIX/include/python$PYTHON_VERSION \ - /usr/include/python$PYTHON_VERSION \ - /usr/local/include/python$PYTHON_VERSION - do - AC_MSG_CHECKING([Python.h in $d]) - if test -r "$d/Python.h"; then - AC_MSG_RESULT([found]) - PYTHON_INCLUDEDIR=$d - break - fi - AC_MSG_RESULT([not found]) - done - if test "x$PYTHON_INCLUDEDIR" = "x"; then - AC_MSG_WARN([Python include directory not found]) + + AC_MSG_CHECKING([for Python include path]) + if test -z "$PYTHON_INCLUDEDIR"; then + python_path=`$PYTHON -c "import distutils.sysconfig; \ + print (distutils.sysconfig.get_python_inc ());"` + PYTHON_INCLUDEDIR=$python_path fi + AC_MSG_RESULT([$PYTHON_INCLUDEDIR]) - for d in \ - $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \ - $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \ - /usr/lib64/python$PYTHON_VERSION/site-packages \ - /usr/lib/python$PYTHON_VERSION/site-packages \ - /usr/local/lib/python$PYTHON_VERSION/site-packages - do - AC_MSG_CHECKING([for $d]) - if test -d "$d"; then - AC_MSG_RESULT([found]) - PYTHON_SITE_PACKAGES=$d - break - fi - AC_MSG_RESULT([not found]) - done - if test "x$PYTHON_SITE_PACKAGES" = "x"; then - AC_MSG_WARN([Python site-packages directory not found]) + AC_MSG_CHECKING([for Python site-packages path]) + if test -z "$PYTHON_SITE_PACKAGES"; then + PYTHON_SITE_PACKAGES=`$PYTHON -c "import distutils.sysconfig; \ + print (distutils.sysconfig.get_python_lib(0,0));"` fi + AC_MSG_RESULT([$PYTHON_SITE_PACKAGES]) old_LIBS="$LIBS" LIBS="$LIBS -lpython$PYTHON_VERSION" -- 1.7.4.4
Richard W.M. Jones
2011-May-04 18:18 UTC
[Libguestfs] [PATCH] [hivex] Use Python's distutils to determine include and site-packages directories.
The code looks good. I will take a closer look when I'm back home next week. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into Xen guests. http://et.redhat.com/~rjones/virt-p2v
Richard W.M. Jones
2011-May-09 15:29 UTC
[Libguestfs] [PATCH] [hivex] Use Python's distutils to determine include and site-packages directories.
On Wed, May 04, 2011 at 12:29:39AM +0200, Hilko Bengen wrote:> + if test -z "$PYTHON_SITE_PACKAGES"; then > + PYTHON_SITE_PACKAGES=`$PYTHON -c "import distutils.sysconfig; \ > + print (distutils.sysconfig.get_python_lib(0,0));"`I think this line is wrong. The arguments should be (1,0). On Debian there is no difference: $ python -c "import distutils.sysconfig; print (distutils.sysconfig.get_python_lib(0,0));" /usr/lib/python2.6/dist-packages $ python -c "import distutils.sysconfig; print (distutils.sysconfig.get_python_lib(1,0));" /usr/lib/python2.6/dist-packages But on Fedora, the second one returns the platform-dependent path (because of the stupid /usr/lib vs /usr/lib64 thing that we suffer under on Fedora): $ python -c "import distutils.sysconfig; print (distutils.sysconfig.get_python_lib(0,0));" /usr/lib/python2.7/site-packages $ python -c "import distutils.sysconfig; print (distutils.sysconfig.get_python_lib(1,0));" /usr/lib64/python2.7/site-packages Related documentation link: http://docs.python.org/distutils/apiref.html#module-distutils.sysconfig Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://et.redhat.com/~rjones/virt-df/