Hello Guido, In reference to our talk at DebConf11, here's a patch to build the Python bindings of libvirt for all versions of Python. This might also fix this bug.
The idea of this patch is to 1. switch to an out-of-tree build, since I have to play some symlink-tricks to create the python/ directory for each Python version 2. configure and build it once for the default Python version 3. build and install just the python/ directory for all Python versions The patch to debina/control will probably not apply to Debians current version, so just so following change: sed -e '/Build-Depends:/s/python-dev/python-all-dev/' \ -e '/XS-Python-Version:/s/current/all/' debian/control diff -ur a/debian/control b/debian/control --- a/debian/control 2010-03-23 12:26:14.000000000 +0100 +++ b/debian/control 2010-03-23 12:27:56.000000000 +0100 @@ -3,13 +3,13 @@ Priority: optional Maintainer: Debian Libvirt Maintainers <[email protected]> Uploaders: Guido Günther <[email protected]>, Laurent Léonard <[email protected]> -Build-Depends: cdbs (>= 0.4.43), debhelper (>= 7), libxml2-dev, libncurses5-dev, libreadline-dev, zlib1g-dev, libgnutls-dev, python-dev (>= 2.3.5-11), python-central (>= 0.5.6), +Build-Depends: cdbs (>= 0.4.43), debhelper (>= 7), libxml2-dev, libncurses5-dev, libreadline-dev, zlib1g-dev, libgnutls-dev, python-all-dev (>= 2.3.5-11), python-central (>= 0.5.6), libavahi-client-dev, libsasl2-dev, xen-3.4 [i386 amd64], lvm2, qemu [amd64 i386 powerpc sparc], open-iscsi, libparted1.8-dev (>= 1.8), libdevmapper-dev, uuid-dev, libpciaccess-dev, module-init-tools, dpkg-dev (<< 1.15.3) | dpkg-dev (>> 1.15.3), libnl-dev -XS-Python-Version: current +XS-Python-Version: all Build-Conflicts: dpkg-dev (= 1.15.3) Vcs-Git: git://git.debian.org/git/pkg-libvirt/libvirt.git Vcs-Browser: http://git.debian.org/?p=pkg-libvirt/libvirt.git diff -ur a/debian/rules b/debian/rules --- a/debian/rules 2011-01-24 10:59:18.235952511 +0100 +++ b/debian/rules 2011-01-24 11:01:29.947448727 +0100 @@ -21,6 +21,7 @@ include /usr/share/cdbs/1/class/autotools.mk include /usr/share/cdbs/1/class/python-distutils.mk +DEB_BUILDDIR := $(CURDIR)/debian/build DEB_CONFIGURE_EXTRA_FLAGS := \ --disable-rpath \ --with-qemu \ @@ -43,18 +44,59 @@ --without-capng \ --without-macvtap \ --enable-debug \ + --srcdir=$(CURDIR) \ $(BUILD_XEN) \ $(BUILD_VBOX) \ $(BUILD_LXC) DEB_COMPRESS_EXCLUDE = .o event-test hellolibvirt info1 suspend DEB_PYTHON_SETUP_CMD = /dev/null +DEB_PYTHON_MODULE_PACKAGE = python-libvirt DEB_DH_MAKESHLIBS_ARGS_libvirt0 += -V 'libvirt0 (>= 0.5.0)' DEB_DH_INSTALLINIT_ARGS = --no-restart-on-upgrade -- defaults 28 72 DEB_DH_INSTALLLOGROTATE_ARGS = --name=libvirtd EXAMPLES_DIR = $(CURDIR)/debian/libvirt-doc/usr/share/doc/libvirt-doc/examples/ +# <<< Python rules <<< +-include /usr/share/python/python.mk +ifeq (,$(py_sitename)) + py_libdir_sh = $$(_py_=$(strip $(1)); python$${_py_\#python*} -c 'from distutils import sysconfig; print(sysconfig.get_python_lib())') +endif + +PY_DIR := $(DEB_BUILDDIR)/python +PYDEFAULTVER := $(shell pyversions --version --default) +PYVERSIONS := $(shell pyversions --version --installed) + +otherpy = \ + set -e; for v in $(PYVERSIONS); do \ + $(RM) $(PY_DIR); \ + ln -sf $(PY_DIR)$$v $(PY_DIR); \ + $(MAKE) \ + -C $(PY_DIR) \ + pyexecdir=$(call py_libdir_sh, $$v) \ + PYTHON=python$$v \ + PYTHON_VERSION=$$v \ + PYTHON_INCLUDES=-I/usr/include/python$$v \ + $1; \ + $(RM) $(PY_DIR); \ + done; \ + ln -sf $(PY_DIR)$(PYDEFAULTVER) $(PY_DIR) + +configure/python-libvirt:: + set -e; for v in $(PYVERSIONS); do \ + cp -la $(PY_DIR) $(PY_DIR)$$v; \ + done + $(RM) -r $(PY_DIR) + ln -sf $(PY_DIR)$(PYDEFAULTVER) $(PY_DIR) + +build/python-libvirt:: + $(call otherpy, all) + +install/python-libvirt:: + $(call otherpy, install DESTDIR=$(CURDIR)/debian/tmp) +# >>> Python rules >>> + binary-install/libvirt-bin:: cp $(CURDIR)/tools/libvirt-guests.init.sh $(CURDIR)/debian/libvirt-bin.libvirt-guests.init cp $(CURDIR)/tools/libvirt-guests.sysconf $(CURDIR)/debian/libvirt-bin.libvirt-guests.default @@ -70,3 +112,5 @@ clean:: rm -f $(CURDIR)/debian/libvirt-bin.libvirt-guests.init rm -f $(CURDIR)/debian/libvirt-bin.libvirt-guests.default + $(RM) -r $(DEB_BUILDDIR) +# vim:set ft=make ts=4 sw=4: Sincerely Philipp -- Philipp Hahn Open Source Software Engineer [email protected] Univention GmbH Linux for Your Business fon: +49 421 22 232- 0 Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99 http://www.univention.de/
signature.asc
Description: This is a digitally signed message part.

