[Libguestfs] [PATCH] Use pkg-config for Python

Richard W.M. Jones rjones at redhat.com
Fri May 17 08:01:32 UTC 2013


On Thu, May 16, 2013 at 10:13:50PM +0200, Hilko Bengen wrote:
> At least libpython2.7-dev and libpython3.3-dev on current
> Debian/unstable ship with pkg-config files. As with the pkg-config
> check for Lua, we check for versioned and an unversioned .pc files.
> 
> ---
>  configure.ac       |   35 ++++++++++++++++++++---------------
>  python/Makefile.am |    2 +-
>  2 files changed, 21 insertions(+), 16 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index c809741..0aa1716 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1106,7 +1106,6 @@ AM_CONDITIONAL([HAVE_PERL],
>  dnl Check for Python (optional, for Python bindings).
>  PYTHON_PREFIX=
>  PYTHON_VERSION=
> -PYTHON_INCLUDEDIR=
>  PYTHON_INSTALLDIR=
>  
>  AC_ARG_ENABLE([python],
> @@ -1117,23 +1116,30 @@ AS_IF([test "x$enable_python" != "xno"],[
>      AC_CHECK_PROG([PYTHON],[python],[python],[no])
>  
>      if test "x$PYTHON" != "xno"; then
> -        AC_MSG_CHECKING([Python prefix])
> -        PYTHON_PREFIX=`$PYTHON -c "import sys; print (sys.prefix)"`
> -        AC_MSG_RESULT([$PYTHON_PREFIX])
> -
>  	AC_MSG_CHECKING([Python version])
>          PYTHON_VERSION_MAJOR=`$PYTHON -c "import sys; print (sys.version_info@<:@0@:>@)"`
>          PYTHON_VERSION_MINOR=`$PYTHON -c "import sys; print (sys.version_info@<:@1@:>@)"`
>          PYTHON_VERSION="$PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR"
>  	AC_MSG_RESULT([$PYTHON_VERSION])
> -
> -        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])
> +        # Debian: python-2.7.pc, python-3.2.pc
> +        PKG_CHECK_MODULES([PYTHON], [python-"$PYTHON_VERSION"],[
> +            AC_SUBST([PYTHON_CFLAGS])
> +            AC_SUBST([PYTHON_LIBS])
> +            AC_SUBST([PYTHON_VERSION])
> +            AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
> +        ],[
> +            PKG_CHECK_MODULES([PYTHON], [python],[
> +                AC_SUBST([PYTHON_CFLAGS])
> +                AC_SUBST([PYTHON_LIBS])
> +                AC_SUBST([PYTHON_VERSION])
> +                AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
> +            ],[
> +                AC_MSG_WARN([python $PYTHON_VERSION not found])
> +            ])
> +        ])
> +        AC_MSG_CHECKING([Python prefix])
> +        PYTHON_PREFIX=`$PYTHON -c "import sys; print (sys.prefix)"`
> +        AC_MSG_RESULT([$PYTHON_PREFIX])
>  
>          AC_ARG_WITH([python-installdir],
>                      [AS_HELP_STRING([--with-python-installdir],
> @@ -1171,11 +1177,10 @@ AS_IF([test "x$enable_python" != "xno"],[
>  
>      AC_SUBST(PYTHON_PREFIX)
>      AC_SUBST(PYTHON_VERSION)
> -    AC_SUBST(PYTHON_INCLUDEDIR)
>      AC_SUBST(PYTHON_INSTALLDIR)
>  ])
>  AM_CONDITIONAL([HAVE_PYTHON],
> -    [test "x$PYTHON" != "xno" && test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_INSTALLDIR" != "x"])
> +    [test "x$PYTHON" != "xno" && test "x$PYTHON_LIBS" != "x" ])
>  
>  dnl Check for Ruby and rake (optional, for Ruby bindings).
>  AC_ARG_ENABLE([ruby],
> diff --git a/python/Makefile.am b/python/Makefile.am
> index e514a76..ecc25d5 100644
> --- a/python/Makefile.am
> +++ b/python/Makefile.am
> @@ -43,7 +43,7 @@ libguestfsmod_la_SOURCES = guestfs-py.c guestfs-py.h guestfs-py-byhand.c
>  
>  libguestfsmod_la_CPPFLAGS = \
>  	-DGUESTFS_PRIVATE=1 \
> -	-I$(PYTHON_INCLUDEDIR) \
> +	$(PYTHON_CFLAGS) \
>  	-I$(top_srcdir)/src -I$(top_builddir)/src
>  
>  libguestfsmod_la_CFLAGS = \
> -- 
> 1.7.10.4

I tested this on Fedora with both Python 3.3 and Python 2.7 and it
works for both.

Therefore: ACK.  I just pushed this.

Thanks,

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top




More information about the Libguestfs mailing list