diff options
author | Doug Goldstein <cardoe@gentoo.org> | 2009-06-09 12:48:52 +0000 |
---|---|---|
committer | Doug Goldstein <cardoe@gentoo.org> | 2009-06-09 12:48:52 +0000 |
commit | cf5cae47cef049619528926448e469618657d43e (patch) | |
tree | 3c3aed4073bec9a659d90c99ef106300002cf4c6 /app-emulation/libvirt | |
parent | slot move of app-antivirus/klamav to 3.5 (diff) | |
download | gentoo-2-cf5cae47cef049619528926448e469618657d43e.tar.gz gentoo-2-cf5cae47cef049619528926448e469618657d43e.tar.bz2 gentoo-2-cf5cae47cef049619528926448e469618657d43e.zip |
version bump. use v2 of my kvm-img patch
(Portage version: 2.1.6.13/cvs/Linux x86_64)
Diffstat (limited to 'app-emulation/libvirt')
-rw-r--r-- | app-emulation/libvirt/ChangeLog | 9 | ||||
-rw-r--r-- | app-emulation/libvirt/files/libvirt-0.6.4-kvm-img.patch | 260 | ||||
-rw-r--r-- | app-emulation/libvirt/files/libvirt-0.6.4-qemu-img-logic-fix.patch | 12 | ||||
-rw-r--r-- | app-emulation/libvirt/libvirt-0.6.4.ebuild | 114 |
4 files changed, 394 insertions, 1 deletions
diff --git a/app-emulation/libvirt/ChangeLog b/app-emulation/libvirt/ChangeLog index 3b5c55f1fc13..2bdede6cf35e 100644 --- a/app-emulation/libvirt/ChangeLog +++ b/app-emulation/libvirt/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for app-emulation/libvirt # Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-emulation/libvirt/ChangeLog,v 1.26 2009/05/28 21:57:26 cardoe Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-emulation/libvirt/ChangeLog,v 1.27 2009/06/09 12:48:52 cardoe Exp $ + +*libvirt-0.6.4 (09 Jun 2009) + + 09 Jun 2009; Doug Goldstein <cardoe@gentoo.org> +libvirt-0.6.4.ebuild, + +files/libvirt-0.6.4-kvm-img.patch, + +files/libvirt-0.6.4-qemu-img-logic-fix.patch: + version bump. use v2 of my kvm-img patch *libvirt-0.6.3-r3 (28 May 2009) diff --git a/app-emulation/libvirt/files/libvirt-0.6.4-kvm-img.patch b/app-emulation/libvirt/files/libvirt-0.6.4-kvm-img.patch new file mode 100644 index 000000000000..c0ad9c1d3d01 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-0.6.4-kvm-img.patch @@ -0,0 +1,260 @@ +diff --git a/configure.in b/configure.in +index 5c0575c..552c761 100644 +--- a/configure.in ++++ b/configure.in +@@ -889,21 +889,6 @@ if test "$with_storage_fs" = "yes"; then + [Location or name of the showmount program]) + fi + +-AC_PATH_PROG([QEMU_IMG], [qemu-img], [], [$PATH:/sbin:/usr/sbin:/bin:/usr/bin]) +-if test -n "$QEMU_IMG" ; then +- AC_DEFINE_UNQUOTED([HAVE_QEMU_IMG], 1, [whether qemu-img is available for non-raw files]) +- AC_DEFINE_UNQUOTED([QEMU_IMG],["$QEMU_IMG"], +- [Location or name of the qemu-img program]) +-fi +- +-AC_PATH_PROG([QCOW_CREATE], [qcow-create], [], [$PATH:/sbin:/usr/sbin:/bin:/usr/bin]) +-if test -n "$QCOW_CREATE" ; then +- AC_DEFINE_UNQUOTED([HAVE_QCOW_CREATE], 1, [whether qcow-create is available for non-raw files]) +- AC_DEFINE_UNQUOTED([QCOW_CREATE],["$QCOW_CREATE"], +- [Location or name of the qcow-create program]) +-fi +- +- + if test "$with_storage_lvm" = "yes" -o "$with_storage_lvm" = "check"; then + AC_PATH_PROG([PVCREATE], [pvcreate], [], [$PATH:/sbin:/usr/sbin]) + AC_PATH_PROG([VGCREATE], [vgcreate], [], [$PATH:/sbin:/usr/sbin]) +diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms +index b39216f..0c55684 100644 +--- a/src/libvirt_private.syms ++++ b/src/libvirt_private.syms +@@ -330,6 +330,7 @@ virFormatMacAddr; + virGetHostname; + virParseMacAddr; + virFileDeletePid; ++virFindFileInPath; + virFileExists; + virFileHasSuffix; + virFileLinkPointsTo; +diff --git a/src/storage_backend_fs.c b/src/storage_backend_fs.c +index be6d011..ea5de7f 100644 +--- a/src/storage_backend_fs.c ++++ b/src/storage_backend_fs.c +@@ -1183,11 +1183,12 @@ static int createFileDir(virConnectPtr conn, + return 0; + } + +-#if HAVE_QEMU_IMG + static int createQemuImg(virConnectPtr conn, + virStorageVolDefPtr vol, + virStorageVolDefPtr inputvol) { + char size[100]; ++ char *create_tool; ++ short use_kvmimg; + + const char *type = virStorageVolFormatFileSystemTypeToString(vol->target.format); + const char *backingType = vol->backingStore.path ? +@@ -1203,24 +1204,27 @@ static int createQemuImg(virConnectPtr conn, + + const char **imgargv; + const char *imgargvnormal[] = { +- QEMU_IMG, "create", ++ NULL, "create", + "-f", type, + vol->target.path, + size, + NULL, + }; +- /* XXX including "backingType" here too, once QEMU accepts +- * the patches to specify it. It'll probably be -F backingType */ ++ /* Extra NULL fields are for including "backingType" when using ++ * kvm-img. It's -F backingType ++ */ + const char *imgargvbacking[] = { +- QEMU_IMG, "create", ++ NULL, "create", + "-f", type, + "-b", vol->backingStore.path, + vol->target.path, + size, + NULL, ++ NULL, ++ NULL + }; + const char *convargv[] = { +- QEMU_IMG, "convert", ++ NULL, "convert", + "-f", inputType, + "-O", type, + inputPath, +@@ -1228,14 +1232,6 @@ static int createQemuImg(virConnectPtr conn, + NULL, + }; + +- if (inputvol) { +- imgargv = convargv; +- } else if (vol->backingStore.path) { +- imgargv = imgargvbacking; +- } else { +- imgargv = imgargvnormal; +- } +- + if (type == NULL) { + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, + _("unknown storage vol type %d"), +@@ -1277,17 +1273,45 @@ static int createQemuImg(virConnectPtr conn, + } + } + ++ if ((create_tool = virFindFileInPath("kvm-img")) != NULL) ++ use_kvmimg = 1; ++ else if ((create_tool = virFindFileInPath("qemu-img")) != NULL) ++ use_kvmimg = 0; ++ else ++ virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, ++ _("unable to find kvm-img or qemu-img")); ++ ++ if (inputvol) { ++ convargv[0] = create_tool; ++ imgargv = convargv; ++ } else if (vol->backingStore.path) { ++ imgargvbacking[0] = create_tool; ++ if (use_kvmimg) { ++ imgargvbacking[6] = "-F"; ++ imgargvbacking[7] = backingType; ++ imgargvbacking[8] = vol->target.path; ++ imgargvbacking[9] = size; ++ } ++ imgargv = imgargvbacking; ++ } else { ++ imgargvnormal[0] = create_tool; ++ imgargv = imgargvnormal; ++ } ++ ++ + /* Size in KB */ + snprintf(size, sizeof(size), "%llu", vol->capacity/1024); + + if (virRun(conn, imgargv, NULL) < 0) { ++ VIR_FREE(imgargv[0]); + return -1; + } + ++ VIR_FREE(imgargv[0]); ++ + return 0; + } + +-#elif HAVE_QCOW_CREATE + /* + * Xen removed the fully-functional qemu-img, and replaced it + * with a partially functional qcow-create. Go figure ??!? +@@ -1321,18 +1345,20 @@ static int createQemuCreate(virConnectPtr conn, + /* Size in MB - yes different units to qemu-img :-( */ + snprintf(size, sizeof(size), "%llu", vol->capacity/1024/1024); + +- imgargv[0] = QCOW_CREATE; ++ imgargv[0] = virFindFileInPath("qcow-create"); + imgargv[1] = size; + imgargv[2] = vol->target.path; + imgargv[3] = NULL; + + if (virRun(conn, imgargv, NULL) < 0) { ++ VIR_FREE(imgargv[0]); + return -1; + } + ++ VIR_FREE(imgargv[0]); ++ + return 0; + } +-#endif /* HAVE_QEMU_IMG, elif HAVE_QCOW_CREATE */ + + static int + _virStorageBackendFileSystemVolBuild(virConnectPtr conn, +@@ -1341,6 +1367,7 @@ _virStorageBackendFileSystemVolBuild(virConnectPtr conn, + { + int fd; + createFile create_func; ++ char *create_tool; + + if (vol->target.format == VIR_STORAGE_VOL_FILE_RAW && + (!inputvol || +@@ -1353,17 +1380,20 @@ _virStorageBackendFileSystemVolBuild(virConnectPtr conn, + create_func = createRaw; + } else if (vol->target.format == VIR_STORAGE_VOL_FILE_DIR) { + create_func = createFileDir; +- } else { +-#if HAVE_QEMU_IMG ++ } else if ((create_tool = virFindFileInPath("kvm-img")) != NULL) { ++ VIR_FREE(create_tool); ++ create_func = createQemuImg; ++ } else if ((create_tool = virFindFileInPath("qemu-img")) != NULL) { ++ VIR_FREE(create_tool); + create_func = createQemuImg; +-#elif HAVE_QCOW_CREATE ++ } else if ((create_tool = virFindFileInPath("qcow-create")) != NULL) { ++ VIR_FREE(create_tool); + create_func = createQemuCreate; +-#else ++ } else { + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, + "%s", _("creation of non-raw images " + "is not supported without qemu-img")); + return -1; +-#endif + } + + if (create_func(conn, vol, inputvol) < 0) +diff --git a/src/util.c b/src/util.c +index 3a8c105..487349a 100644 +--- a/src/util.c ++++ b/src/util.c +@@ -1073,7 +1073,34 @@ int virFileResolveLink(const char *linkpath, + #endif + } + ++/* ++ * Finds a requested file in the PATH env. e.g.: ++ * "kvm-img" will return "/usr/bin/kvm-img" ++ * ++ * You must free the result ++ */ ++char *virFindFileInPath(const char *file) ++{ ++ char pathenv[PATH_MAX]; ++ char *pathseg; ++ char fullpath[PATH_MAX]; ++ ++ /* copy PATH env so we can tweak it */ ++ strncpy(pathenv, getenv("PATH"), PATH_MAX); ++ pathenv[PATH_MAX - 1] = '\0'; ++ + ++ /* for each path segment, append the file to search for and test for ++ * it. return it if found ++ */ ++ while ((pathseg = strsep(&pathenv, ":")) != NULL) { ++ snprintf(fullpath, PATH_MAX, "%s/%s", pathseg, file); ++ if (virFileExists(fullpath)) ++ return strdup(fullpath); ++ } ++ ++ return NULL; ++} + int virFileExists(const char *path) + { + struct stat st; +diff --git a/src/util.h b/src/util.h +index 61e1eb5..e6e8010 100644 +--- a/src/util.h ++++ b/src/util.h +@@ -101,6 +101,8 @@ int virFileLinkPointsTo(const char *checkLink, + int virFileResolveLink(const char *linkpath, + char **resultpath); + ++char *virFindFileInPath(const char *file); ++ + int virFileExists(const char *path); + + int virFileMakePath(const char *path); diff --git a/app-emulation/libvirt/files/libvirt-0.6.4-qemu-img-logic-fix.patch b/app-emulation/libvirt/files/libvirt-0.6.4-qemu-img-logic-fix.patch new file mode 100644 index 000000000000..6462de326ea6 --- /dev/null +++ b/app-emulation/libvirt/files/libvirt-0.6.4-qemu-img-logic-fix.patch @@ -0,0 +1,12 @@ +diff -Nur libvirt-0.6.4/src/storage_backend_fs.c libvirt-0.6.4-qemu-img/src/storage_backend_fs.c +--- libvirt-0.6.4/src/storage_backend_fs.c 2009-05-20 02:02:59.000000000 -0500 ++++ libvirt-0.6.4-qemu-img/src/storage_backend_fs.c 2009-06-08 14:38:36.000000000 -0500 +@@ -1255,7 +1255,7 @@ + * backing store, not really sure what use it serves though, and it + * may cause issues with lvm. Untested essentially. + */ +- if (!inputBackingPath || ++ if (inputBackingPath && + !STREQ(inputBackingPath, vol->backingStore.path)) { + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, + "%s", _("a different backing store can not " diff --git a/app-emulation/libvirt/libvirt-0.6.4.ebuild b/app-emulation/libvirt/libvirt-0.6.4.ebuild new file mode 100644 index 000000000000..b235bb41d78f --- /dev/null +++ b/app-emulation/libvirt/libvirt-0.6.4.ebuild @@ -0,0 +1,114 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/libvirt/libvirt-0.6.4.ebuild,v 1.1 2009/06/09 12:48:52 cardoe Exp $ + +EAPI="2" + +inherit eutils autotools confutils + +DESCRIPTION="C toolkit to manipulate virtual machines" +HOMEPAGE="http://www.libvirt.org/" +SRC_URI="http://libvirt.org/sources/${P}.tar.gz" +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="avahi iscsi hal kvm lvm +lxc +network nls numa openvz policykit \ + parted qemu sasl selinux uml virtualbox xen" +# devicekit isn't in portage + +RDEPEND="sys-libs/readline + sys-libs/ncurses + >=dev-libs/libxml2-2.5 + >=net-libs/gnutls-1.0.25 + dev-lang/python + sys-fs/sysfsutils + net-analyzer/netcat + avahi? ( >=net-dns/avahi-0.6 ) + iscsi? ( sys-block/open-iscsi ) + kvm? ( app-emulation/kvm ) + lvm? ( sys-fs/lvm2 ) + network? ( net-misc/bridge-utils net-dns/dnsmasq net-firewall/iptables ) + numa? ( sys-process/numactl ) + openvz? ( sys-kernel/openvz-sources ) + parted? ( >=sys-apps/parted-1.8 ) + policykit? ( >=sys-auth/policykit-0.6 ) + qemu? ( >=app-emulation/qemu-0.10.0 ) + sasl? ( dev-libs/cyrus-sasl ) + selinux? ( sys-libs/libselinux ) + virtualbox? ( >=app-emulation/virtualbox-bin-2.2.0 ) + xen? ( app-emulation/xen-tools app-emulation/xen )" +DEPEND="${RDEPEND} + dev-util/pkgconfig" + +src_prepare() { + # Patch sent upstream for working with kvm-img + epatch "${FILESDIR}/${P}-kvm-img.patch" + # upstream patch. fix shared/read-only disk labeling + epatch "${FILESDIR}/${PN}-0.6.2-shared-readonly-label.patch" + # upstream patch. don't try to label a disk with no path (empty cdrom) + epatch "${FILESDIR}/${PN}-0.6.2-fix-nosource-label.patch" + # Fix logic error when using qemu-img + epatch "${FILESDIR}/${P}-qemu-img-logic-fix.patch" + + eautoreconf +} + +pkg_setup() { + confutils_require_any lxc kvm openvz qemu uml virtualbox xen +} + +src_configure() { + local my_conf="" + if use qemu || use kvm ; then + my_conf="--with-qemu" + else + my_conf="--without-qemu" + fi + + econf \ + $(use_with iscsi storage-iscsi) \ + $(use_with lvm storage-lvm) \ + $(use_with parted storage-disk) \ + $(use_with lxc) \ + $(use_with openvz) \ + $(use_with uml) \ + $(use_with virtualbox vbox) \ + $(use_with xen) \ + $(use_with xen xen-inotify) \ + $(use_with avahi) \ + $(use_with hal) \ + $(use_with sasl) \ + $(use_with network) \ + $(use_with policykit polkit) \ + $(use_with selinux) \ + $(use_enable nls) \ + $(use_with numa numactl) \ + ${my_conf} \ + --without-devkit \ + --with-remote \ + --disable-iptables-lokkit \ + --localstatedir=/var \ + --with-remote-pid-file=/var/run/libvirtd.pid +} + +src_install() { + emake DESTDIR="${D}" install || die "emake instal lfailed" + mv "${D}"/usr/share/doc/{${PN}-python*,${P}/python} + + newinitd "${FILESDIR}/libvirtd.init" libvirtd + newconfd "${FILESDIR}/libvirtd.confd" libvirtd + + keepdir /var/lib/libvirt/images +} + +pkg_postinst() { + elog "To allow normal users to connect to libvirtd you must change the" + elog " unix sock group and/or perms in /etc/libvirt/libvirtd.conf" + elog + ewarn "If you have a DNS server setup on your machine, you will have" + ewarn "to configure /etc/dnsmasq.conf to enable the following settings: " + ewarn " bind-interfaces" + ewarn " interface or except-interface" + elog + ewarn "Otherwise you might have issues with your existing DNS server." +} |