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
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.4I 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
On Thu, May 16, Hilko Bengen wrote:> 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" ])If pkg-config check fails, PYTHON_LIBS remains empty (at least for me) and as a result python gets disabled. Without this change, PYTHON_INCLUDEDIR was retreived directly from python itself. For me current 1.20 branch fails to build python in SLE11. Olaf
Richard W.M. Jones
2013-Jun-17 07:50 UTC
Re: [Libguestfs] [PATCH] Use pkg-config for Python
On Sun, Jun 16, 2013 at 02:55:29PM +0200, Olaf Hering wrote:> On Thu, May 16, Hilko Bengen wrote: > > > 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" ]) > > If pkg-config check fails, PYTHON_LIBS remains empty (at least for me) > and as a result python gets disabled. > Without this change, PYTHON_INCLUDEDIR was retreived directly from > python itself. > > For me current 1.20 branch fails to build python in SLE11.Does SuSE's python have a pkg-config file? RHEL 5 didn't have one, but it was added in RHEL 6. So for the branch of libguestfs we use on RHEL 5 ('oldlinux'[1]) I have reverted this patch[2]. Rich. [1] https://github.com/libguestfs/libguestfs/tree/oldlinux [2] https://github.com/libguestfs/libguestfs/commit/5f7acbb95e055efa840d2108e207e3ef8106761a -- 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