--- libvirt-0.4.2.orig/debian/patches/qemu-disable-network.diff +++ libvirt-0.4.2/debian/patches/qemu-disable-network.diff @@ -0,0 +1,41 @@ +From 73080eed8e0275499220182fd47c999338058b79 Mon Sep 17 00:00:00 2001 +From: Guido Guenther +Date: Fri, 7 Mar 2008 09:08:26 +0100 +Subject: [PATCH] qemu-disable-network.diff + +--- + qemud/Makefile.am | 3 --- + qemud/Makefile.in | 3 --- + 2 files changed, 0 insertions(+), 6 deletions(-) + +diff --git a/qemud/Makefile.am b/qemud/Makefile.am +index a907fd7..36f9bd4 100644 +--- a/qemud/Makefile.am ++++ b/qemud/Makefile.am +@@ -86,9 +86,6 @@ install-data-local: install-init install-data-sasl + $(DESTDIR)$(sysconfdir)/$(default_xml_dest) + sed -i -e "s,,\n $(UUID)," \ + $(DESTDIR)$(sysconfdir)/$(default_xml_dest) +- test -e $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/autostart/default.xml || \ +- ln -s ../default.xml \ +- $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/autostart/default.xml + mkdir -p $(DESTDIR)$(localstatedir)/log/libvirt/qemu + mkdir -p $(DESTDIR)$(localstatedir)/run/libvirt + mkdir -p $(DESTDIR)$(localstatedir)/lib/libvirt +diff --git a/qemud/Makefile.in b/qemud/Makefile.in +index e382306..810c3d1 100644 +--- a/qemud/Makefile.in ++++ b/qemud/Makefile.in +@@ -1016,9 +1016,6 @@ remote_protocol.c: remote_protocol.h + @WITH_LIBVIRTD_TRUE@ $(DESTDIR)$(sysconfdir)/$(default_xml_dest) + @WITH_LIBVIRTD_TRUE@ sed -i -e "s,,\n $(UUID)," \ + @WITH_LIBVIRTD_TRUE@ $(DESTDIR)$(sysconfdir)/$(default_xml_dest) +-@WITH_LIBVIRTD_TRUE@ test -e $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/autostart/default.xml || \ +-@WITH_LIBVIRTD_TRUE@ ln -s ../default.xml \ +-@WITH_LIBVIRTD_TRUE@ $(DESTDIR)$(sysconfdir)/libvirt/qemu/networks/autostart/default.xml + @WITH_LIBVIRTD_TRUE@ mkdir -p $(DESTDIR)$(localstatedir)/log/libvirt/qemu + @WITH_LIBVIRTD_TRUE@ mkdir -p $(DESTDIR)$(localstatedir)/run/libvirt + @WITH_LIBVIRTD_TRUE@ mkdir -p $(DESTDIR)$(localstatedir)/lib/libvirt +-- +1.5.4.3 + --- libvirt-0.4.2.orig/debian/patches/remove-RHism.diff +++ libvirt-0.4.2/debian/patches/remove-RHism.diff @@ -0,0 +1,25 @@ +From cb9a8370d299161af3c553bcb1a6f7cfb40ec86c Mon Sep 17 00:00:00 2001 +From: Guido Guenther +Date: Fri, 7 Mar 2008 09:08:25 +0100 +Subject: [PATCH] remove-RHism.diff + +--- + virsh.1 | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/virsh.1 b/virsh.1 +index 13509de..09f93b1 100644 +--- a/virsh.1 ++++ b/virsh.1 +@@ -164,7 +164,7 @@ the program. + .IX Header "NOTES" + All \fBvirsh\fR operations rely upon the libvirt library. + For any virsh commands to run xend/qemu, or what ever virtual library that libvirt supports. For this reason you should start xend/qemu as a service when your system first boots using xen/qemu. This can usually be done using the command +-\&\fBservice start libvirtd\fR . ++\&\fB/etc/init.d/libvirt-bin start\fR . + .PP + Most \fBvirsh\fR commands require root privileges to run due to the + communications channels used to talk to the hypervisor. Running as +-- +1.5.4.3 + --- libvirt-0.4.2.orig/debian/patches/delayed_iff_up_bridge.patch +++ libvirt-0.4.2/debian/patches/delayed_iff_up_bridge.patch @@ -0,0 +1,24 @@ +--- libvirt-0.4.0.orig/src/bridge.c ++++ libvirt-0.4.0/src/bridge.c +@@ -254,7 +254,10 @@ + const char *bridge, + const char *iface) + { +- return brAddDelInterface(ctl, SIOCBRADDIF, bridge, iface); ++ int ret; ++ if (ret = brAddDelInterface(ctl, SIOCBRADDIF, bridge, iface)) ++ return ret; ++ return brSetInterfaceUp(ctl, bridge, 1); + } + #else + int +@@ -413,7 +416,8 @@ + ifr.ifr_flags = flags; + + if (ioctl(ctl->fd, SIOCSIFFLAGS, &ifr) < 0) +- return errno; ++ /* Just smile and wave, boys... */ ++ return 0; + } + + return 0; --- libvirt-0.4.2.orig/debian/patches/dont_clobber_existing_bridges.patch +++ libvirt-0.4.2/debian/patches/dont_clobber_existing_bridges.patch @@ -0,0 +1,12 @@ +Index: ubuntu/qemud/default-network.xml +=================================================================== +--- ubuntu.orig/qemud/default-network.xml 2008-02-12 01:20:09.818288028 +0100 ++++ ubuntu/qemud/default-network.xml 2008-02-12 01:20:17.518258142 +0100 +@@ -1,6 +1,6 @@ + + default +- ++ + + + --- libvirt-0.4.2.orig/debian/patches/qemu-path.diff +++ libvirt-0.4.2/debian/patches/qemu-path.diff @@ -0,0 +1,40 @@ +From fbc646654ee67e0edd54b2967b494e95fff634f5 Mon Sep 17 00:00:00 2001 +From: Guido Guenther +Date: Fri, 7 Mar 2008 09:08:26 +0100 +Subject: [PATCH] qemu-path.diff + +=================================================================== +--- + src/qemu_conf.c | 2 +- + src/qemu_driver.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/qemu_conf.c b/src/qemu_conf.c +index eead0bc..e5f5321 100644 +--- a/src/qemu_conf.c ++++ b/src/qemu_conf.c +@@ -347,7 +347,7 @@ qemudCapsInitGuest(virCapsPtr caps, + if (access("/dev/kvm", F_OK) == 0 && + virCapabilitiesAddGuestDomain(guest, + "kvm", +- "/usr/bin/qemu-kvm", ++ "/usr/bin/kvm", + NULL, + 0, + NULL) == NULL) +diff --git a/src/qemu_driver.c b/src/qemu_driver.c +index 21f0fed..532f15a 100644 +--- a/src/qemu_driver.c ++++ b/src/qemu_driver.c +@@ -1408,7 +1408,7 @@ qemudMonitorCommand (const struct qemud_driver *driver ATTRIBUTE_UNUSED, + static const char *qemudProbe(void) + { + if ((virFileExists("/usr/bin/qemu")) || +- (virFileExists("/usr/bin/qemu-kvm")) || ++ (virFileExists("/usr/bin/kvm")) || + (virFileExists("/usr/bin/xenner"))) { + if (getuid() == 0) { + return("qemu:///system"); +-- +1.5.4.3 + --- libvirt-0.4.2.orig/debian/patches/libvirt-group.diff +++ libvirt-0.4.2/debian/patches/libvirt-group.diff @@ -0,0 +1,40 @@ +diff --git a/qemud/libvirtd.conf b/qemud/libvirtd.conf +index 3b7db4d..85da39f 100644 +--- a/qemud/libvirtd.conf ++++ b/qemud/libvirtd.conf +@@ -70,7 +70,7 @@ + # without becoming root. + # + # This is restricted to 'root' by default. +-#unix_sock_group = "libvirt" ++unix_sock_group = "libvirtd" + + # Set the UNIX socket permissions for the R/O socket. This is used + # for monitoring VM status only +@@ -87,7 +87,7 @@ + # + # If not using PolicyKit and setting group ownership for access + # control then you may want to relax this to: +-#unix_sock_rw_perms = "0770" ++unix_sock_rw_perms = "0770" + + + +@@ -117,7 +117,7 @@ + # + # To restrict monitoring of domains you may wish to enable + # an authentication mechanism here +-#auth_unix_ro = "none" ++auth_unix_ro = "none" + + # Set an authentication scheme for UNIX read-write sockets + # By default socket permissions only allow root. If PolicyKit +@@ -126,7 +126,7 @@ + # + # If the unix_sock_rw_perms are changed you may wish to enable + # an authentication mechanism here +-#auth_unix_rw = "none" ++auth_unix_rw = "none" + + # Change the authentication scheme for TCP sockets. + # --- libvirt-0.4.2.orig/debian/patches/better_default_uri_virsh.patch +++ libvirt-0.4.2/debian/patches/better_default_uri_virsh.patch @@ -0,0 +1,29 @@ +Index: libvirt-0.4.2-5ubuntu1/src/virsh.c +=================================================================== +--- libvirt-0.4.2-5ubuntu1.orig/src/virsh.c 2008-05-01 03:07:34.000000000 +0200 ++++ libvirt-0.4.2-5ubuntu1/src/virsh.c 2008-05-01 22:50:36.403798885 +0200 +@@ -63,6 +63,8 @@ + #define VSH_PROMPT_RW "virsh # " + #define VSH_PROMPT_RO "virsh > " + ++#include "remote_internal.h" ++ + #define GETTIMEOFDAY(T) gettimeofday(T, NULL) + #define DIFF_MSEC(T, U) \ + ((((int) ((T)->tv_sec - (U)->tv_sec)) * 1000000.0 + \ +@@ -6566,8 +6568,15 @@ + + if ((defaultConn = getenv("VIRSH_DEFAULT_CONNECT_URI"))) { + ctl->name = strdup(defaultConn); ++ } else if (!access(LIBVIRTD_PRIV_UNIX_SOCKET, W_OK)) { ++ ctl->name = strdup("qemu:///system"); ++ } else { ++ ctl->name = strdup("qemu:///session"); + } + ++ if (!ctl->quiet) ++ fprintf(stderr, _("Connecting to uri: %s\n"), ctl->name); ++ + if (!vshParseArgv(ctl, argc, argv)) { + vshDeinit(ctl); + exit(EXIT_FAILURE); --- libvirt-0.4.2.orig/debian/patches/series +++ libvirt-0.4.2/debian/patches/series @@ -0,0 +1,10 @@ +remove-RHism.diff +qemu-path.diff +#qemu-disable-network.diff +libvirt-group.diff +delayed_iff_up_bridge.patch +dont_clobber_existing_bridges.patch +better_default_uri_virsh.patch +nic-model.patch -p0 +disk-bus.patch -p0 +ancient_parted.patch -p0 --- libvirt-0.4.2.orig/debian/patches/nic-model.patch +++ libvirt-0.4.2/debian/patches/nic-model.patch @@ -0,0 +1,145 @@ +Index: docs/libvir.html +=================================================================== +--- docs/libvir.html.orig 2008-05-01 23:25:29.447781366 +0200 ++++ docs/libvir.html 2008-05-02 01:48:44.752779535 +0200 +@@ -1097,6 +1097,14 @@ + <mac address="11:22:33:44:55:66"/> + </interface> + ++
++<interface type='user'>
++  <mac address="11:22:33:44:55:66"/>
++  <model type="ne2k_pci"/>
++</interface>
++    
++

(where the network card model is one of those supported by ++ QEMU or KVM - see the relevant manual pages).

+ +
  • Virtual network +

    Provides a virtual network using a bridge device in the host. +Index: src/qemu_conf.c +=================================================================== +--- src/qemu_conf.c.orig 2008-05-02 01:48:44.580777133 +0200 ++++ src/qemu_conf.c 2008-05-02 01:49:18.400799045 +0200 +@@ -706,6 +706,7 @@ + xmlChar *script = NULL; + xmlChar *address = NULL; + xmlChar *port = NULL; ++ xmlChar *model = NULL; + + net->type = QEMUD_NET_USER; + +@@ -767,6 +768,8 @@ + (net->type == QEMUD_NET_ETHERNET) && + xmlStrEqual(cur->name, BAD_CAST "script")) { + script = xmlGetProp(cur, BAD_CAST "path"); ++ } else if (xmlStrEqual (cur->name, BAD_CAST "model")) { ++ model = xmlGetProp (cur, BAD_CAST "type"); + } + } + cur = cur->next; +@@ -926,6 +929,38 @@ + xmlFree(address); + } + ++ /* NIC model (see -net nic,model=?). We only check that it looks ++ * reasonable, not that it is a supported NIC type. FWIW kvm ++ * supports these types as of April 2008: ++ * i82551 i82557b i82559er ne2k_pci pcnet rtl8139 e1000 virtio ++ */ ++ if (model != NULL) { ++ int i, len, char_ok; ++ ++ len = xmlStrlen (model); ++ if (len >= QEMUD_MODEL_MAX_LEN) { ++ qemudReportError (conn, NULL, NULL, VIR_ERR_INVALID_ARG, ++ _("Model name '%s' is too long"), model); ++ goto error; ++ } ++ for (i = 0; i < len; ++i) { ++ char_ok = ++ (model[i] >= '0' && model[i] <= '9') || ++ (model[i] >= 'a' && model[i] <= 'z') || ++ (model[i] >= 'A' && model[i] <= 'Z') || model[i] == '_'; ++ if (!char_ok) { ++ qemudReportError (conn, NULL, NULL, VIR_ERR_INVALID_ARG, ++ _("Model name contains invalid characters")); ++ goto error; ++ } ++ } ++ strncpy (net->model, (const char *) model, len); ++ net->model[len] = '\0'; ++ ++ xmlFree (model); ++ } else ++ net->model[0] = '\0'; ++ + return 0; + + error: +@@ -941,6 +976,8 @@ + xmlFree(script); + if (bridge) + xmlFree(bridge); ++ if (model) ++ xmlFree(model); + return -1; + } + +@@ -1829,13 +1866,22 @@ + } else { + int vlan = 0; + while (net) { ++ char model[100]; + char nic[100]; + +- if (snprintf(nic, sizeof(nic), "nic,macaddr=%02x:%02x:%02x:%02x:%02x:%02x,vlan=%d", ++ if (net->model[0] != '\0') { ++ if (snprintf (model, sizeof (model), ",model=%s", net->model) ++ >= sizeof (model)) ++ goto error; ++ } else ++ model[0] = '\0'; ++ ++ if (snprintf(nic, sizeof(nic), ++ "nic,macaddr=%02x:%02x:%02x:%02x:%02x:%02x,vlan=%d%s", + net->mac[0], net->mac[1], + net->mac[2], net->mac[3], + net->mac[4], net->mac[5], +- vlan) >= sizeof(nic)) ++ vlan, model) >= sizeof(nic)) + goto error; + + if (!((*argv)[++n] = strdup("-net"))) +@@ -3071,6 +3117,11 @@ + goto no_memory; + } + } ++ if (net->model && net->model[0] != '\0') { ++ if (virBufferVSprintf(buf, " \n", ++ net->model) < 0) ++ goto no_memory; ++ } + + if (virBufferAddLit(buf, " \n") < 0) + goto no_memory; +Index: src/qemu_conf.h +=================================================================== +--- src/qemu_conf.h.orig 2008-05-01 23:25:29.487777206 +0200 ++++ src/qemu_conf.h 2008-05-02 01:48:58.196780211 +0200 +@@ -68,6 +68,7 @@ + }; + + #define QEMUD_MAC_ADDRESS_LEN 6 ++#define QEMUD_MODEL_MAX_LEN 10 + #define QEMUD_OS_TYPE_MAX_LEN 10 + #define QEMUD_OS_ARCH_MAX_LEN 10 + #define QEMUD_OS_MACHINE_MAX_LEN 10 +@@ -97,6 +98,7 @@ + struct qemud_vm_net_def { + int type; + unsigned char mac[QEMUD_MAC_ADDRESS_LEN]; ++ char model[QEMUD_MODEL_MAX_LEN]; + union { + struct { + char ifname[BR_IFNAME_MAXLEN]; --- libvirt-0.4.2.orig/debian/patches/disk-bus.patch +++ libvirt-0.4.2/debian/patches/disk-bus.patch @@ -0,0 +1,414 @@ +Hi! + +I'd like to propose that the following patch gets applied against +libvirt. It adds the option of putting a bus attribute on a disk target. +To acommodate this, it also changes the way drives are defined for kvm +from the old "-hda /path/to/file -boot c" style to the new "-drive +file=/path/to/file,if=ide,boot=on". This makes it possible to specify +virtio, scsi, and ide disks. + + +=== modified file 'src/qemu_conf.c' +Index: src/qemu_conf.c +=================================================================== +--- src/qemu_conf.c.orig 2008-05-02 01:49:18.400799045 +0200 ++++ src/qemu_conf.c 2008-05-02 01:49:37.516779401 +0200 +@@ -556,6 +556,7 @@ + xmlChar *source = NULL; + xmlChar *target = NULL; + xmlChar *type = NULL; ++ xmlChar *bus = NULL; + int typ = 0; + + type = xmlGetProp(node, BAD_CAST "type"); +@@ -586,6 +587,7 @@ + } else if ((target == NULL) && + (xmlStrEqual(cur->name, BAD_CAST "target"))) { + target = xmlGetProp(cur, BAD_CAST "dev"); ++ bus = xmlGetProp(cur, BAD_CAST "bus"); + } else if (xmlStrEqual(cur->name, BAD_CAST "readonly")) { + disk->readonly = 1; + } +@@ -634,7 +636,9 @@ + strcmp((const char *)target, "hda") && + strcmp((const char *)target, "hdb") && + strcmp((const char *)target, "hdc") && +- strcmp((const char *)target, "hdd")) { ++ strcmp((const char *)target, "hdd") && ++ strcmp((const char *)target, "hdd") && ++ strncmp((const char *)target, "vd", 2)) { + qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, + _("Invalid harddisk device name: %s"), target); + goto error; +@@ -661,6 +665,20 @@ + goto error; + } + ++ if (!bus) ++ disk->bus = QEMUD_DISK_BUS_IDE; ++ else if (!strcmp((const char *)bus, "ide")) ++ disk->bus = QEMUD_DISK_BUS_IDE; ++ else if (!strcmp((const char *)bus, "scsi")) ++ disk->bus = QEMUD_DISK_BUS_SCSI; ++ else if (!strcmp((const char *)bus, "virtio")) ++ disk->bus = QEMUD_DISK_BUS_VIRTIO; ++ else { ++ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, "Invalid bus type: %s", bus); ++ goto error; ++ } ++ ++ xmlFree(bus); + xmlFree(device); + xmlFree(target); + xmlFree(source); +@@ -676,6 +694,8 @@ + xmlFree(source); + if (device) + xmlFree(device); ++ if (bus) ++ xmlFree(bus); + return -1; + } + +@@ -1048,6 +1068,68 @@ + return -1; + } + ++static int qemudDiskCompare(const void *aptr, const void *bptr) { ++ struct qemud_vm_disk_def *a = (struct qemud_vm_disk_def *) aptr; ++ struct qemud_vm_disk_def *b = (struct qemud_vm_disk_def *) bptr; ++ if (a->device == b->device) ++ return virDiskNameToIndex(a->dst) - virDiskNameToIndex(b->dst); ++ else ++ return a->device - b->device; ++} ++ ++static const char *qemudBusIdToName(int busId) { ++ const char *busnames[] = { "ide", ++ "scsi", ++ "virtio" }; ++ ++ if (busId >= 0 && busId < 3) ++ return busnames[busId]; ++ else ++ return 0; ++} ++ ++static char *qemudDriveOpt(struct qemud_vm_disk_def *disk, int boot) ++{ ++ char opt[PATH_MAX]; ++ ++ switch (disk->device) { ++ case QEMUD_DISK_CDROM: ++ snprintf(opt, PATH_MAX, "file=%s,if=ide,media=cdrom%s", ++ disk->src, boot ? ",boot=on" : ""); ++ break; ++ case QEMUD_DISK_FLOPPY: ++ snprintf(opt, PATH_MAX, "file=%s,if=floppy%s", ++ disk->src, boot ? ",boot=on" : ""); ++ break; ++ case QEMUD_DISK_DISK: ++ snprintf(opt, PATH_MAX, "file=%s,if=%s%s", ++ disk->src, qemudBusIdToName(disk->bus), boot ? ",boot=on" : ""); ++ break; ++ default: ++ return 0; ++ } ++ return strdup(opt); ++} ++ ++static char *qemudAddBootDrive(virConnectPtr conn, ++ struct qemud_vm_def *def, ++ char *handledDisks, ++ int type) { ++ int j = 0; ++ struct qemud_vm_disk_def *disk = def->disks; ++ ++ while (disk) { ++ if (!handledDisks[j] && disk->device == type) { ++ handledDisks[j] = 1; ++ return qemudDriveOpt(disk, 1); ++ } ++ j++; ++ disk = disk->next; ++ } ++ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, ++ "Requested boot device type %d, but no such device defined.", type); ++ return 0; ++} + + /* + * Parses a libvirt XML definition of a guest, and populates the +@@ -1437,7 +1519,6 @@ + obj = xmlXPathEval(BAD_CAST "/domain/devices/disk", ctxt); + if ((obj != NULL) && (obj->type == XPATH_NODESET) && + (obj->nodesetval != NULL) && (obj->nodesetval->nodeNr >= 0)) { +- struct qemud_vm_disk_def *prev = NULL; + for (i = 0; i < obj->nodesetval->nodeNr; i++) { + struct qemud_vm_disk_def *disk = calloc(1, sizeof(*disk)); + if (!disk) { +@@ -1450,13 +1531,20 @@ + goto error; + } + def->ndisks++; +- disk->next = NULL; + if (i == 0) { ++ disk->next = NULL; + def->disks = disk; + } else { +- prev->next = disk; ++ struct qemud_vm_disk_def *ptr = def->disks; ++ while (ptr) { ++ if (!ptr->next || qemudDiskCompare(ptr->next, disk) < 0) { ++ disk->next = ptr->next; ++ ptr->next = disk; ++ break; ++ } ++ ptr = ptr->next; ++ } + } +- prev = disk; + } + } + xmlXPathFreeObject(obj); +@@ -1790,30 +1878,32 @@ + goto no_memory; + } + +- for (i = 0 ; i < vm->def->os.nBootDevs ; i++) { +- switch (vm->def->os.bootDevs[i]) { +- case QEMUD_BOOT_CDROM: +- boot[i] = 'd'; +- break; +- case QEMUD_BOOT_FLOPPY: +- boot[i] = 'a'; +- break; +- case QEMUD_BOOT_DISK: +- boot[i] = 'c'; +- break; +- case QEMUD_BOOT_NET: +- boot[i] = 'n'; +- break; +- default: +- boot[i] = 'c'; +- break; ++ if (vm->def->virtType != QEMUD_VIRT_KVM) { ++ for (i = 0 ; i < vm->def->os.nBootDevs ; i++) { ++ switch (vm->def->os.bootDevs[i]) { ++ case QEMUD_BOOT_CDROM: ++ boot[i] = 'd'; ++ break; ++ case QEMUD_BOOT_FLOPPY: ++ boot[i] = 'a'; ++ break; ++ case QEMUD_BOOT_DISK: ++ boot[i] = 'c'; ++ break; ++ case QEMUD_BOOT_NET: ++ boot[i] = 'n'; ++ break; ++ default: ++ boot[i] = 'c'; ++ break; ++ } + } ++ boot[vm->def->os.nBootDevs] = '\0'; ++ if (!((*argv)[++n] = strdup("-boot"))) ++ goto no_memory; ++ if (!((*argv)[++n] = strdup(boot))) ++ goto no_memory; + } +- boot[vm->def->os.nBootDevs] = '\0'; +- if (!((*argv)[++n] = strdup("-boot"))) +- goto no_memory; +- if (!((*argv)[++n] = strdup(boot))) +- goto no_memory; + + if (vm->def->os.kernel[0]) { + if (!((*argv)[++n] = strdup("-kernel"))) +@@ -1834,28 +1924,74 @@ + goto no_memory; + } + +- while (disk) { +- char dev[NAME_MAX]; +- char file[PATH_MAX]; +- if (!strcmp(disk->dst, "hdc") && +- disk->device == QEMUD_DISK_CDROM) { +- if (disk->src[0]) +- snprintf(dev, NAME_MAX, "-%s", "cdrom"); +- else { +- /* Don't put anything on the cmdline for an empty cdrom*/ +- disk = disk->next; +- continue; +- } +- } else +- snprintf(dev, NAME_MAX, "-%s", disk->dst); +- snprintf(file, PATH_MAX, "%s", disk->src); ++ if (vm->def->virtType == QEMUD_VIRT_KVM) { ++ char *handledDisks = NULL; ++ int j; + +- if (!((*argv)[++n] = strdup(dev))) +- goto no_memory; +- if (!((*argv)[++n] = strdup(file))) ++ handledDisks = calloc(sizeof(*handledDisks), vm->def->ndisks); ++ ++ if (!handledDisks) + goto no_memory; + +- disk = disk->next; ++ /* When using -drive notation, we need to provide the devices in boot ++ * preference order. */ ++ for (i = 0 ; i < vm->def->os.nBootDevs ; i++) { ++ if (!((*argv)[++n] = strdup("-drive"))) ++ goto no_memory; ++ ++ switch (vm->def->os.bootDevs[i]) { ++ case QEMUD_BOOT_CDROM: ++ if (!((*argv)[++n] = qemudAddBootDrive(conn, vm->def, handledDisks, QEMUD_DISK_CDROM))) ++ goto error; ++ break; ++ case QEMUD_BOOT_FLOPPY: ++ if (!((*argv)[++n] = qemudAddBootDrive(conn, vm->def, handledDisks, QEMUD_DISK_FLOPPY))) ++ goto error; ++ break; ++ case QEMUD_BOOT_DISK: ++ if (!((*argv)[++n] = qemudAddBootDrive(conn, vm->def, handledDisks, QEMUD_DISK_DISK))) ++ goto error; ++ break; ++ } ++ } ++ ++ /* Pick up the rest of the devices */ ++ j=0; ++ while (disk) { ++ if (!handledDisks[j]) { ++ handledDisks[j] = 1; ++ if (!((*argv)[++n] = strdup("-drive"))) ++ goto no_memory; ++ if (!((*argv)[++n] = qemudDriveOpt(disk, 0))) ++ goto no_memory; ++ } ++ disk = disk->next; ++ j++; ++ } ++ } else { ++ while (disk) { ++ char dev[NAME_MAX]; ++ char file[PATH_MAX]; ++ ++ if (!strcmp(disk->dst, "hdc") && ++ disk->device == QEMUD_DISK_CDROM) ++ if (disk->src[0]) ++ snprintf(dev, NAME_MAX, "-%s", "cdrom"); ++ else { ++ disk = disk->next; ++ continue; ++ } ++ else ++ snprintf(dev, NAME_MAX, "-%s", disk->dst); ++ snprintf(file, PATH_MAX, "%s", disk->src); ++ ++ if (!((*argv)[++n] = strdup(dev))) ++ goto no_memory; ++ if (!((*argv)[++n] = strdup(file))) ++ goto no_memory; ++ ++ disk = disk->next; ++ } + } + + if (!net) { +@@ -3040,7 +3176,7 @@ + typeAttrs[disk->type], disk->src) < 0) + goto no_memory; + +- if (virBufferVSprintf(buf, " \n", disk->dst) < 0) ++ if (virBufferVSprintf(buf, " \n", disk->dst, qemudBusIdToName(disk->bus)) < 0) + goto no_memory; + + if (disk->readonly) +Index: src/qemu_conf.h +=================================================================== +--- src/qemu_conf.h.orig 2008-05-02 01:48:58.196780211 +0200 ++++ src/qemu_conf.h 2008-05-02 01:49:23.040798610 +0200 +@@ -56,10 +56,17 @@ + QEMUD_DISK_FLOPPY, + }; + ++enum qemud_vm_disk_bus { ++ QEMUD_DISK_BUS_IDE, ++ QEMUD_DISK_BUS_SCSI, ++ QEMUD_DISK_BUS_VIRTIO ++}; ++ + /* Stores the virtual disk configuration */ + struct qemud_vm_disk_def { + int type; + int device; ++ int bus; + char src[PATH_MAX]; + char dst[NAME_MAX]; + int readonly; +Index: src/util.c +=================================================================== +--- src/util.c.orig 2008-05-02 01:48:58.212779036 +0200 ++++ src/util.c 2008-05-02 01:49:23.040798610 +0200 +@@ -770,6 +770,45 @@ + return -1; + } + ++ ++/* Translates a device name of the form (regex) "[fhv]d[a-z]+" into ++ * the corresponding index (e.g. sda => 1, hdz => 26, vdaa => 27) ++ * @param name The name of the device ++ * @return name's index, or 0 on failure ++ */ ++int virDiskNameToIndex(const char *name) { ++ const char *ptr = NULL; ++ int idx = 0; ++ ++ if (strlen(name) < 3) ++ return 0; ++ ++ switch (*name) { ++ case 'f': ++ case 'h': ++ case 'v': ++ break; ++ default: ++ return 0; ++ } ++ ++ if (*(name + 1) != 'd') ++ return 0; ++ ++ ptr = name+2; ++ ++ while (*ptr) { ++ idx = idx * 26; ++ ++ if ('a' > *ptr || 'z' < *ptr) ++ return 0; ++ ++ idx += *ptr - 'a' + 1; ++ ptr++; ++ } ++ ++ return idx; ++} + /* + * Local variables: + * indent-tabs-mode: nil +Index: src/util.h +=================================================================== +--- src/util.h.orig 2008-05-02 01:48:58.232778388 +0200 ++++ src/util.h 2008-05-02 01:49:23.040798610 +0200 +@@ -87,4 +87,6 @@ + + int virParseMacAddr(const char* str, unsigned char *addr); + ++int virDiskNameToIndex(const char* str); ++ + #endif /* __VIR_UTIL_H__ */ --- libvirt-0.4.2.orig/debian/patches/ancient_parted.patch +++ libvirt-0.4.2/debian/patches/ancient_parted.patch @@ -0,0 +1,41 @@ +=== modified file 'ChangeLog' +Index: ChangeLog +=================================================================== +--- ChangeLog.orig 2008-05-01 03:07:31.000000000 +0200 ++++ ChangeLog 2008-05-02 01:50:11.471810173 +0200 +@@ -1,3 +1,9 @@ ++Tue Apr 29 09:15:00 BST 2008 Richard W.M. Jones ++ ++ * src/parthelper.c: Don't fail if PED_PARTITION_PROTECTED ++ is not defined because of ancient libparted ++ (Soren Hansen). ++ + Mon Apr 8 17:32:07 CET 2008 Jim Meyering + + * configure.in (ALL_LINGUAS): Fix typo: s/Latn/latin/. +Index: src/parthelper.c +=================================================================== +--- src/parthelper.c.orig 2008-02-20 16:52:17.000000000 +0100 ++++ src/parthelper.c 2008-05-02 01:49:46.823779384 +0200 +@@ -67,8 +67,10 @@ + content = "free"; + else if (part->type & PED_PARTITION_METADATA) + content = "metadata"; ++#ifdef PED_PARTITION_PROTECTED + else if (part->type & PED_PARTITION_PROTECTED) + content = "protected"; ++#endif + else + content = "data"; + } else if (part->type == PED_PARTITION_EXTENDED) { +@@ -80,8 +82,10 @@ + content = "free"; + else if (part->type & PED_PARTITION_METADATA) + content = "metadata"; ++#ifdef PED_PARTITION_PROTECTED + else if (part->type & PED_PARTITION_PROTECTED) + content = "protected"; ++#endif + else + content = "data"; + } --- libvirt-0.4.2.orig/debian/compat +++ libvirt-0.4.2/debian/compat @@ -0,0 +1 @@ +5 --- libvirt-0.4.2.orig/debian/copyright +++ libvirt-0.4.2/debian/copyright @@ -0,0 +1,44 @@ +libvirt was initially debianized by Andrew Mitchell + +It was downloaded from http://libvirt.org/sources/ + +Upstream Author: + + Daniel Veillard or + +Copyright: + + 2005,2006 Red Hat, Inc + +Licenses: + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + + src/hash.c: + + Copyright (C) 2000 Bjorn Reese and Daniel Veillard. + + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND + CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + + +On Debian systems, the complete text of the GNU Lesser General +Public License can be found in `/usr/share/common-licenses/LGPL'. --- libvirt-0.4.2.orig/debian/libvirt-bin.default +++ libvirt-0.4.2/debian/libvirt-bin.default @@ -0,0 +1,9 @@ +# Defaults for libvirt-bin initscript (/etc/init.d/libvirt-bin) +# This is a POSIX shell fragment + +# change to "no" to not start libvirtd on system startup +start_libvirtd="yes" + +# options passed to libvirtd +libvirtd_opts="-d" + --- libvirt-0.4.2.orig/debian/libvirt-bin.dirs +++ libvirt-0.4.2/debian/libvirt-bin.dirs @@ -0,0 +1,2 @@ +/var/run/libvirt +/var/lib/libvirt --- libvirt-0.4.2.orig/debian/libvirt-bin.init +++ libvirt-0.4.2/debian/libvirt-bin.init @@ -0,0 +1,159 @@ +#! /bin/sh +# +# Init skript for libvirtd +# +# (c) 2007 Guido Guenther +# based on the skeletons that comes with dh_make +# +### BEGIN INIT INFO +# Provides: libvirtd +# Required-Start: $network $local_fs +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: libvirt management daemon +### END INIT INFO + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/libvirtd +NAME=libvirtd +DESC="libvirt management daemon" + +test -x $DAEMON || exit 0 +. /lib/lsb/init-functions + +PIDFILE=/var/run/$NAME.pid +DODTIME=1 # Time to wait for the server to die, in seconds + +# Include libvirtd defaults if available +if [ -f /etc/default/libvirt-bin ] ; then + . /etc/default/libvirt-bin +fi + +set -e + +check_start_libvirtd_option() { + if [ ! "$start_libvirtd" = "yes" ]; then + log_warning_msg "Not starting libvirt management daemon libvirtd, disabled via /etc/default/libvirt-bin" + return 1 + else + return 0 + fi +} + +running_pid() +{ + # Check if a given process pid's cmdline matches a given name + pid=$1 + name=$2 + [ -z "$pid" ] && return 1 + [ ! -d /proc/$pid ] && return 1 + cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1` + # Is this the expected child? + [ "$cmd" != "$name" ] && return 1 + return 0 +} + +running() +{ +# Check if the process is running looking at /proc +# (works for all users) + # No pidfile, probably no daemon present + [ ! -f "$PIDFILE" ] && return 1 + # Obtain the pid and check it against the binary name + pid=`cat $PIDFILE` + running_pid $pid $DAEMON || return 1 + return 0 +} + +force_stop() { +# Forcefully kill the process + [ ! -f "$PIDFILE" ] && return + if running ; then + kill -15 $pid + # Is it really dead? + [ -n "$DODTIME" ] && sleep "$DODTIME"s + if running ; then + kill -9 $pid + [ -n "$DODTIME" ] && sleep "$DODTIME"s + if running ; then + echo "Cannot kill $LABEL (pid=$pid)!" + exit 1 + fi + fi + fi + rm -f $PIDFILE + return 0 +} + +case "$1" in + start) + if check_start_libvirtd_option; then + log_daemon_msg "Starting $DESC" "$NAME" + if running ; then + log_progress_msg "already running" + log_end_msg 0 + exit 0 + fi + rm -f /var/run/libvirtd.pid + mkdir -p /var/run/libvirt + start-stop-daemon --start --quiet --pidfile $PIDFILE \ + --exec $DAEMON -- $libvirtd_opts + running && log_end_msg 0 || log_end_msg 1 + fi + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + if ! running ; then + log_progress_msg "not running" + log_end_msg 0 + exit 0 + fi + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + --exec $DAEMON + log_end_msg 0 + ;; + force-stop) + log_daemon_msg "Forcefully stopping $DESC" "$NAME" + force_stop + ! running && log_end_msg 0 || log_end_msg 1 + ;; + restart) + if check_start_libvirtd_option; then + log_daemon_msg "Restarting $DESC" "$DAEMON" + start-stop-daemon --oknodo --stop --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON + [ -n "$DODTIME" ] && sleep $DODTIME + start-stop-daemon --start --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON -- $libvirtd_opts + running && log_end_msg 0 || log_end_msg 1 + fi + ;; + reload|force-reload) + if running; then + log_daemon_msg "Reloading configuration of $DESC" "$NAME" + start-stop-daemon --stop --signal 1 --quiet --pidfile \ + /var/run/$NAME.pid --exec $DAEMON + log_end_msg 0 + else + log_warning_msg "libvirtd not running, doing nothing." + fi + ;; + status) + log_daemon_msg "Checking status of $DESC" "$NAME" + if running ; then + log_progress_msg "running" + log_end_msg 0 + else + log_progress_msg "not running" + log_end_msg 1 + fi + ;; + *) + N=/etc/init.d/libvirt-bin + echo "Usage: $N {start|stop|restart|reload|force-reload|status|force-stop}" >&2 + exit 1 + ;; +esac + +exit 0 --- libvirt-0.4.2.orig/debian/libvirt-bin.install +++ libvirt-0.4.2/debian/libvirt-bin.install @@ -0,0 +1,5 @@ +usr/bin/* +usr/sbin/* +usr/share/PolicyKit/* +etc/libvirt/* +etc/sasl2/* --- libvirt-0.4.2.orig/debian/libvirt-bin.manpages +++ libvirt-0.4.2/debian/libvirt-bin.manpages @@ -0,0 +1 @@ +virsh.1 --- libvirt-0.4.2.orig/debian/libvirt-dev.install +++ libvirt-0.4.2/debian/libvirt-dev.install @@ -0,0 +1,4 @@ +usr/lib/libvirt.so +usr/lib/libvirt.a +usr/include/* +usr/lib/pkgconfig/* --- libvirt-0.4.2.orig/debian/libvirt-doc.docs +++ libvirt-0.4.2/debian/libvirt-doc.docs @@ -0,0 +1 @@ +docs/* --- libvirt-0.4.2.orig/debian/libvirt0.install +++ libvirt-0.4.2/debian/libvirt0.install @@ -0,0 +1,2 @@ +usr/lib/libvirt.so.* + --- libvirt-0.4.2.orig/debian/pycompat +++ libvirt-0.4.2/debian/pycompat @@ -0,0 +1 @@ +2 --- libvirt-0.4.2.orig/debian/python-libvirt.install +++ libvirt-0.4.2/debian/python-libvirt.install @@ -0,0 +1,2 @@ +usr/lib/python*/*/*.so +usr/lib/python*/*/*.py --- libvirt-0.4.2.orig/debian/watch +++ libvirt-0.4.2/debian/watch @@ -0,0 +1,3 @@ +# format version number, currently 3; this line is compulsory! +version=3 +http://libvirt.org/sources/libvirt-([\d\.]*)\.tar\.gz --- libvirt-0.4.2.orig/debian/libvirt-bin.examples +++ libvirt-0.4.2/debian/libvirt-bin.examples @@ -0,0 +1,3 @@ +qemud/libvirtd.policy +qemud/libvirtd.sasl +qemud/libvirtd.conf --- libvirt-0.4.2.orig/debian/qemud.conf +++ libvirt-0.4.2/debian/qemud.conf @@ -0,0 +1,49 @@ +# Master configuration file for the QEMU driver. +# All settings described here are optional - if omitted, sensible +# defaults are used. + +# VNC is configured to listen on 127.0.0.1 by default. +# To make it listen on all public interfaces, uncomment +# this next option. +# +# NB, strong recommendation to enable TLS + x509 certificate +# verification when allowing public access +# +# vnc_listen = "0.0.0.0" + + +# Enable use of TLS encryption on the VNC server. This requires +# a VNC client which supports the VeNCrypt protocol extension. +# Examples include vinagre, virt-viewer, virt-manager and vencrypt +# itself. UltraVNC, RealVNC, TightVNC do not support this +# +# It is neccessary to setup CA and issue a server certificate +# before enabling this. +# +# vnc_tls = 1 + + +# Use of TLS requires that x509 certificates be issued. The +# default it to keep them in /etc/pki/libvirt-vnc. This directory +# must contain +# +# ca-cert.pem - the CA master certificate +# server-cert.pem - the server certificate signed with ca-cert.pem +# server-key.pem - the server private key +# +# This option allows the certificate directory to be changed +# +# vnc_tls_x509_cert_dir = "/etc/pki/libvirt-vnc" + + +# The default TLS configuration only uses certificates for the server +# allowing the client to verify the server's identity and establish +# and encrypted channel. +# +# It is possible to use x509 certificates for authentication too, by +# issuing a x509 certificate to every client who needs to connect. +# +# Enabling this option will reject any client who does not have a +# certificate signed by the CA in /etc/pki/libvirt-vnc/ca-cert.pem +# +# vnc_tls_x509_verify = 1 --- libvirt-0.4.2.orig/debian/libvirtd.conf +++ libvirt-0.4.2/debian/libvirtd.conf @@ -0,0 +1,141 @@ +# Master libvirt daemon configuration file +# +# For further information consult http://libvirt.org/format.html + + +# Flag listening for secure TLS connections on the public TCP/IP port. +# NB, must pass the --listen flag to the libvirtd process for this to +# have any effect. +# +# It is neccessary to setup a CA and issue server certificates before +# using this capability. +# +# This is enabled by default, uncomment this to disable it +# listen_tls = 0 + +# Listen for unencrypted TCP connections on the public TCP/IP port. +# NB, must pass the --listen flag to the libvirtd process for this to +# have any effect. +# +# NB, this is insecure. Do not use except for development. +# +# This is disabled by default, uncomment this to enable it. +# listen_tcp = 1 + + + +# Override the port for accepting secure TLS connections +# This can be a port number, or service name +# +# tls_port = "16514" + +# Override the port for accepting insecure TCP connections +# This can be a port number, or service name +# +# tcp_port = "16509" + + + +# Flag toggling mDNS advertizement of the libvirt service. +# +# Alternatively can disable for all services on a host by +# stopping the Avahi daemon +# +# This is enabled by default, uncomment this to disable it +# mdns_adv = 0 + +# Override the default mDNS advertizement name. This must be +# unique on the immediate broadcast network. +# +# The default is "Virtualization Host HOSTNAME", where HOSTNAME +# is subsituted for the short hostname of the machine (without domain) +# +# mdns_name "Virtualization Host Joe Demo" + + + +# Set the UNIX domain socket group ownership. This can be used to +# allow a 'trusted' set of users access to management capabilities +# without becoming root. +# +# This is restricted to 'root' by default. +unix_sock_group = "libvirtd" + +# Set the UNIX socket permissions for the R/O socket. This is used +# for monitoring VM status only +# +# Default allows any user. If setting group ownership may want to +# restrict this to: +# unix_sock_ro_perms "0777" + +# Set the UNIX socket permissions for the R/W socket. This is used +# for full management of VMs +# +# Default allows only root. If setting group ownership may want to +# relax this to: +unix_sock_rw_perms = "0770" + + + +# Flag to disable verification of client certificates +# +# Client certificate verification is the primary authentication mechanism. +# Any client which does not present a certificate signed by the CA +# will be rejected. +# +# Default is to always verify. Uncommenting this will disable +# verification - make sure an IP whitelist is set +# tls_no_verify_certificate 1 + +# Flag to disable verification of client IP address +# +# Client IP address will be verified against the CommonName field +# of the x509 certificate. This has minimal security benefit since +# it is easy to spoof source IP. +# +# Uncommenting this will disable verification +# tls_no_verify_address 1 + +# Override the default server key file path +# +# key_file "/etc/pki/libvirt/private/serverkey.pem" + +# Override the default server certificate file path +# +# cert_file "/etc/pki/libvirt/servercert.pem" + +# Override the default CA certificate path +# +# ca_file "/etc/pki/CA/cacert.pem" + +# Specify a certificate revocation list. +# +# Defaults to not using a CRL, uncomment to enable it +# crl_file "/etc/pki/CA/crl.pem" + +# A whitelist of allowed x509 Distinguished Names +# This list may contain wildcards such as +# +# "C=GB,ST=London,L=London,O=Red Hat,CN=*" +# +# See the POSIX fnmatch function for the format of the wildcards. +# +# NB If this is an empty list, no client can connect, so comment out +# entirely rather than using empty list to disable these checks +# +# By default, no DN's are checked +# tls_allowed_dn_list ["DN1", "DN2"] + + +# A whitelist of allowed client IP addresses +# +# This list may contain wildcards such as 192.168.* See the POSIX fnmatch +# function for the format of the wildcards. +# +# NB If this is an empty list, no client can connect, so comment out +# entirely rather than using empty list to disable these checks +# +# By default, no IP's are checked. This can be IPv4 or IPv6 addresses +# tls_allowed_ip_list ["ip1", "ip2", "ip3"] + + --- libvirt-0.4.2.orig/debian/libvirt0-dbg.install +++ libvirt-0.4.2/debian/libvirt0-dbg.install @@ -0,0 +1 @@ +usr/lib/libvirt.so.* --- libvirt-0.4.2.orig/debian/README.Debian +++ libvirt-0.4.2/debian/README.Debian @@ -0,0 +1,10 @@ +For working xen support you have to set: + +(xend-http-server yes) +(xend-unix-server yes) +(xend-address localhost) + +in /etc/xen/xend-config.sxp. The last line makes sure xend is only accepting +connections on localhost. + + -- Guido Guenther Thu, 07 Dec 2007 18:43:03 +0100 --- libvirt-0.4.2.orig/debian/libvirt-bin.postrm +++ libvirt-0.4.2/debian/libvirt-bin.postrm @@ -0,0 +1,45 @@ +#!/bin/sh +# postrm script for #PACKAGE# +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge) + if getent group libvirt >/dev/null; then + delgroup libvirt || true + fi + + ;; + remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + --- libvirt-0.4.2.orig/debian/libvirt-doc.links +++ libvirt-0.4.2/debian/libvirt-doc.links @@ -0,0 +1 @@ +usr/share/doc/libvirt-doc/devhelp/ /usr/share/gtk-doc/html/libvirt --- libvirt-0.4.2.orig/debian/libvirt-bin.postinst +++ libvirt-0.4.2/debian/libvirt-bin.postinst @@ -0,0 +1,44 @@ +#!/bin/sh +# postinst script for libvirt-bin +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + configure) + if ! getent group libvirt >/dev/null; then + addgroup --system libvirtd + fi + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + --- libvirt-0.4.2.orig/debian/rules +++ libvirt-0.4.2/debian/rules @@ -0,0 +1,77 @@ +#!/usr/bin/make -f + +DEB_PYTHON_SYSTEM=pycentral +DEB_DH_INSTALL_SOURCEDIR = debian/tmp + +ifneq (,$(findstring $(DEB_HOST_ARCH), i386 amd64)) + BUILD_XEN=--with-xen +else + BUILD_XEN=--without-xen +endif + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/autotools.mk +include /usr/share/cdbs/1/class/python-distutils.mk +include /usr/share/cdbs/1/rules/patchsys-quilt.mk + +DEB_CONFIGURE_EXTRA_FLAGS := \ + --disable-rpath \ + --with-qemu \ + --without-openvz \ + --with-avahi \ + --with-sasl \ + --with-polkit \ + --with-storage-fs \ + --with-storage-lvm \ + --with-storage-iscsi \ + --with-storage-disk \ + --with-init-scripts=none \ + --enable-debug \ + $(BUILD_XEN) + +DEB_PYTHON_SETUP_CMD := /dev/null +DEB_DH_MAKESHLIBS_ARGS_libvirt0 += -V 'libvirt0 (>= 0.4.1) | libvirt0-dbg (>= 0.4.1)' +DEB_DH_MAKESHLIBS_ARGS_libvirt0-dbg += -V 'libvirt0 (>= 0.4.1) | libvirt0-dbg (>= 0.4.1)' +DEB_DH_MAKESHLIBS_ARGS_libvirt0 += -V 'libvirt0 (>= 0.4.1)' +DEB_DH_INSTALLINIT_ARGS:=--no-restart-on-upgrade + +EXAMPLES=debian/libvirt-doc/usr/share/doc/libvirt-doc/examples/ + +binary-install/libvirt-doc:: + cd $(EXAMPLES) && rm -rf .libs *.o info1 suspend ../html/CVS + +build/libvirt-bin:: + mkdir -p debian/tmp/etc/libvirt +# install -m 750 debian/libvirtd.conf debian/tmp/etc/libvirt +# install -m 750 debian/qemud.conf debian/tmp/etc/libvirt + +# Don't shove the libraries in -dbg into /var/lib/debug +DEB_DBG_PACKAGES = + +DEB_BUILDDIR_libvirt0-dbg := $(CURDIR)/build-debug + +makebuilddir/libvirt0-dbg:: prepare-debug-build-stamp + +prepare-debug-build-stamp: + mkdir -p build-debug + cp -r ABOUT-NLS acinclude.m4 aclocal.m4 AUTHORS autobuild.sh build-aux ChangeLog compile config.guess config.h.in config.rpath config.sub configure configure.in COPYING COPYING.LIB depcomp docs gnulib include INSTALL install-sh libvirt.pc.in libvirt.spec.in ltmain.sh m4 Makefile.am Makefile.in missing mkinstalldirs NEWS po proxy python qemud README scripts src tests TODO virsh.1 build-debug + cd build-debug ; QUILT_PATCHES=../debian/patches quilt push -a + touch prepare-debug-build-stamp + +configure/libvirt0-dbg:: build-debug/config.status + +build-debug/config.status: + chmod a+x build-debug/configure + cd build-debug; $(DEB_CONFIGURE_INVOKE) $(cdbs_configure_flags) $(DEB_CONFIGURE_EXTRA_FLAGS) $(DEB_CONFIGURE_USER_FLAGS) --enable-debug=yes + +install/libvirt0-dbg:: + cd build-debug; $(DEB_MAKE_INVOKE) install DESTDIR=$(CURDIR)/debian/tmp-dbg/ + +binary-install/libvirt0-dbg:: + dh_install -p$(cdbs_curpkg) --sourcedir=debian/tmp-dbg $(DEB_DH_INSTALL_ARGS) + +binary-fixup/libvirt0-dbg:: + dh_makeshlibs -p$(cdbs_curpkg) $(DEB_DH_MAKESHLIBS_ARGS) + +clean:: + rm -rf debian/tmp-dbg build-debug prepare-debug-build-stamp --- libvirt-0.4.2.orig/debian/control +++ libvirt-0.4.2/debian/control @@ -0,0 +1,91 @@ +Source: libvirt +Section: libs +Priority: optional +Maintainer: Ubuntu Core Developers +XSBC-Original-Maintainer: Debian Libvirt Maintainers +Uploaders: Guido Guenther +Build-Depends: cdbs (>= 0.4.43), debhelper (>= 5.0.38), libxml2-dev, libncurses5-dev, libreadline5-dev, zlib1g-dev, libgnutls-dev, python-all-dev (>= 2.3.5-11), python-central (>= 0.5.6), quilt, libavahi-client-dev, libsasl2-dev, libxen3-dev [i386 amd64], lvm2, libpolkit-dbus-dev, open-iscsi, libparted-dev, uuid-dev, parted +XS-Python-Version: current +XS-Original-Vcs-Git: git://git.debian.org/git/pkg-libvirt/libvirt.git +XS-Original-Vcs-Browser: http://git.debian.org/?p=pkg-libvirt/libvirt.git +Homepage: http://libvirt.org +Standards-Version: 3.7.3 + +Package: libvirt-bin +Architecture: any +Depends: ${shlibs:Depends}, bridge-utils, dnsmasq-base, netcat-openbsd, iptables, adduser +Enhances: qemu, kvm, xen +Section: admin +Suggests: policykit +Description: the programs for the libvirt library + Libvirt is a C toolkit to interact with the virtualization capabilities + of recent versions of Linux (and other OSes). The library aims at providing + a long term stable C API for different virtualization mechanisms. It currently + supports QEMU, KVM, and XEN. + . + This package contains the supporting binaries to use with libvirt + +Package: libvirt0 +Architecture: any +Conflicts: libvirt0-dbg +Replaces: libvirt0-dbg +Depends: ${shlibs:Depends} +Recommends: lvm2, qemu +Description: library for interfacing with different virtualization systems + Libvirt is a C toolkit to interract with the virtualization capabilities + of recent versions of Linux (and other OSes). The library aims at providing + a long term stable C API for different virtualization mechanisms. It currently + supports QEMU, KVM, and XEN. + +Package: libvirt-doc +Architecture: all +Section: doc +Description: documentation for the libvirt library + Libvirt is a C toolkit to interract with the virtualization capabilities + of recent versions of Linux (and other OSes). The library aims at providing + a long term stable C API for different virtualization mechanisms. It currently + supports QEMU, KVM, and XEN. + . + This package contains the documentation. + +Package: libvirt-dev +Architecture: any +Section: libdevel +Depends: libvirt0 (= ${binary:Version}) | libvirt0-dbg (= ${binary:Version}) , libxen3-dev [i386 amd64] +Description: development files for the libvirt library + Libvirt is a C toolkit to interract with the virtualization capabilities + of recent versions of Linux (and other OSes). The library aims at providing + a long term stable C API for different virtualization mechanisms. It currently + supports QEMU, KVM, and XEN. + . + This package contains the header files and static libraries which are + needed for developing the applications with libvirt. + +Package: python-libvirt +Architecture: any +Depends: ${shlibs:Depends}, ${python:Depends} +Provides: ${python:Provides} +Section: python +XB-Python-Version: ${python:Versions} +Description: libvirt Python bindings + Libvirt is a C toolkit to interract with the virtualization capabilities + of recent versions of Linux (and other OSes). The library aims at providing + a long term stable C API for different virtualization mechanisms. It currently + supports QEMU, KVM, and XEN. + . + This package contains Python bindings for the libvirt library + +Package: libvirt0-dbg +Architecture: any +Section: libs +Conflicts: libvirt0 +Replaces: libvirt0 +Provides: libvirt0 +Depends: ${shlibs:Depends} +Description: library for interfacing with Xen & other virtualization systems - debug version + Libvirt is a C toolkit to interract with the virtualization capabilities + of recent versions of Linux (and other OSes). The library aims at providing + a long term stable C API for different virtualization mechanisms. It currently + supports QEMU and KVM.. + . + This version is built with --enable-debug=yes --- libvirt-0.4.2.orig/debian/changelog +++ libvirt-0.4.2/debian/changelog @@ -0,0 +1,421 @@ +libvirt (0.4.2-5ubuntu2) intrepid; urgency=low + + * We call libxen-dev libxen3-dev. + * Make libvirt-dev installable alongside libvirt0-dbg. + + -- Soren Hansen Fri, 02 May 2008 10:59:50 +0200 + +libvirt (0.4.2-5ubuntu1) intrepid; urgency=low + + * Merge from debian unstable, remaining changes: + - debian/control: + + DebianMaintainerField + + Don't build-depend on QEmu. + + Add "XS-Original-" prefix to Debian's Vcs headers. + + Bump bridge-utils, dnsmasq-base, netcat-openbsd, and iptables to Depends + of libvirt-bin. + + s/interract/interact/g + - Add libvirt0-dbg package + - debian/libvirt-bin.default + + Make libvirtd start by default + - Add /var/lib/libvirt to libvirt-bin package. (dnsmasq needs it to store + its state info. + - Create /var/run/libvirt in libvirt-bin's init script. + - Install PolicyKit and sasl stuff in libvirt-bin. + - Rename libvirt group to libvirtd. + - Build iscsi and disk storage support. + - delayed_iff_up_bridge.patch: Don't try to bring up the bridge before at + least one interface has been added to it. + - dont_clobber_existing_bridges.patch: Assign the name of the virtual + bridge dynamically to avoid interfering with existing bridges. + - nic-model.patch: Add support for NIC configuration. + - disk-bus.patch: Add support for bus='foo' attributes for disk targets. + - better_default_uri_virsh.patch: Default to qemu:///system if the user + has write access to the libvirt socket, otherwise qemu:///session. + - ancient_parted.patch: Fix builds against libparted1.7 + + -- Soren Hansen Fri, 02 May 2008 01:50:32 +0200 + +libvirt (0.4.2-5) unstable; urgency=low + + * no need to depend on python-all-dev we only build an extension for + the current python version + + -- Guido Guenther Tue, 22 Apr 2008 11:26:13 +0200 + +libvirt (0.4.2-4) unstable; urgency=low + + * only build-dep on qemu on architectures that have it + (Closes: #476290) + * the packages containing the daemon should suggest polkit + + -- Guido Guenther Fri, 18 Apr 2008 10:41:38 +0200 + +libvirt (0.4.2-3) unstable; urgency=low + + * drop the {build-,}dependency on open-iscsi too + * suggest policykit + + -- Guido Guenther Mon, 14 Apr 2008 15:27:20 +0200 + +libvirt (0.4.2-2) unstable; urgency=low + + * disable the iscsi storage backend until #423368 is fixed in unstable + * disable polkit authentication by default so the libvirt stays accessible + for members of the libvirt group + + -- Guido Guenther Mon, 14 Apr 2008 14:20:23 +0200 + +libvirt (0.4.2-1) unstable; urgency=low + + * drop no-mac.diff - applied upstream + * no need to explicitly link against libpthread + * always enable debugging + * add Homepage URL + * add Vcs-{Git,Browser} fields + * symlink devhelp docs + * enable policy kit + + -- Guido Guenther Fri, 11 Apr 2008 17:54:06 +0200 + +libvirt (0.4.1-1) experimental; urgency=low + + * new upstream version + * Xen 3.2 fixes + * storage pool support + * partition based storage pools are disabled, since this needs parted 1.8 + which is only in experimental + * update patches for new upstream release + * boot-dev-error.diff - applied upstream + * qemu-parse-error.diff - applied upstream + * qemu-path.diff - adjust to new hypervisor detection code + * rediff the rest + * new patches: + * no-mac.diff: don't set mac address on tun device since it breaks kvm + * bump shlibs version + + -- Guido Guenther Fri, 07 Mar 2008 10:17:21 +0100 + +libvirt (0.4.0-6) unstable; urgency=low + + * depend on libxen-dev (Closes:#467598) + * allow members of the libvirt group to manage virtual machines + + -- Guido Guenther Sun, 02 Mar 2008 16:11:49 +0100 + +libvirt (0.4.0-5) unstable; urgency=low + + * thanks to the xen maintainers Debian now has a working libxen-dev, so + enable xen support in the default build (Closes: #453826) + * recommend netcat-openbsd for unix domain socket support (Closes: #453627) + * README.Debian: document necessary xend options + * fix spelling of Python + + -- Guido Guenther Wed, 20 Feb 2008 11:14:22 +0100 + +libvirt (0.4.0-4) unstable; urgency=low + + * don't segfault on broken boot device configuration (Closes: #463686) + * don't segfault due to missing errorhandling in the XML parsing code + + -- Guido Guenther Tue, 05 Feb 2008 13:12:54 +0100 + +libvirt (0.4.0-3) unstable; urgency=low + + * add and remove the libvirt group for the socket + * be a bit more verbose on libvirtd reload + * depend on adduser since we add the libvirt user + * don't restart libvirtd on upgrades since it kills running qemus + * enable debugging via DEB_BUILD_OPTS + + -- Guido Guenther Sun, 03 Feb 2008 14:21:46 +0100 + +libvirt (0.4.0-2ubuntu8) hardy; urgency=low + + * disk-bus.patch: + - Add bus attribute to disk/target tags. Allows you to create virtio disks. + (LP: #213991) + * nic-model.patch: + - Add support to network interfaces. (LP: #213991) + * graceful_shutdown.patch: + - Rather than pulling the power from virtual machines, send an ACPI power + button event and let the OS handle it. + * better_default_uri_virsh.patch: + - Updated patch: Output connection URI to stderr instead of stdout to avoid + breaking scripts that use virsh. + + -- Soren Hansen Wed, 16 Apr 2008 10:35:03 +0200 + +libvirt (0.4.0-2ubuntu7) hardy; urgency=low + + * better_default_uri_virsh.patch: + - Make virsh connect to qemu:///system by default if the user has write + access to /var/run/libvirt/libvirt-sock and qemu:///session if not. + + -- Soren Hansen Tue, 01 Apr 2008 10:32:59 +0200 + +libvirt (0.4.0-2ubuntu6) hardy; urgency=low + + * *Actually* apply our patches to the -dbg version. + + -- Soren Hansen Tue, 11 Mar 2008 14:49:03 +0100 + +libvirt (0.4.0-2ubuntu5) hardy; urgency=low + + * Create /var/lib/libvirt in libvirt-bin. (LP: #191636) + + -- Soren Hansen Wed, 13 Feb 2008 22:17:33 +0100 + +libvirt (0.4.0-2ubuntu4) hardy; urgency=low + + * dont_clobber_existing_bridges.patch: + - Change bridge name from virbr0 to virbr%d, to ensure we never clobber + existing bridges. + * Add iptables dependency + + -- Soren Hansen Wed, 13 Feb 2008 00:53:20 +0100 + +libvirt (0.4.0-2ubuntu3) hardy; urgency=low + + * Build against libxen3-dev instead of libxen3.2-dev. + * libvirt-bin: + + Replace "Suggests: dnsmasq" with "Depends: dnsmasq-base". + + Add dependency on netcat-openbsd (to enable qemu+ssh:// style remote + management) + + -- Soren Hansen Fri, 08 Feb 2008 17:24:48 +0100 + +libvirt (0.4.0-2ubuntu2) hardy; urgency=low + + * Build against libxen-3.2 instead of 3.1. + * Bump bridge-utils from Suggests: to Depends:. + + -- Soren Hansen Tue, 05 Feb 2008 10:34:31 +0100 + +libvirt (0.4.0-2ubuntu1) hardy; urgency=low + + * Merge from debian unstable, remaining changes: + - DebianMaintainerField. + - Add libxen3.1-dev to enable Xen management. + - Add libpolkit-dbus-dev to enable polkit integration. + - Build libvirt0-dbg flavour. + - Start libvirtd by default. + - Install polkit policy. + - Install sasl config. + - Install sample qemu and libvirtd config. + - Create libvirtd group in postinst. + - libvirt-remote-ssh.patch: Fix foo+ssh:// urls. + - delayed_iff_up_bridge.patch: Don't try to IFF_UP the bridge interface + until an interface gets added to it. + * Create /var/run if it doesn't exist (LP: #178106). + + -- Soren Hansen Wed, 30 Jan 2008 16:43:11 +0100 + +libvirt (0.4.0-2) unstable; urgency=low + + * libvirt-bin.init: fix the reload target + * add configuration examples + + -- Guido Guenther Sat, 15 Dec 2007 18:59:11 +0100 + +libvirt (0.4.0-1) unstable; urgency=low + + * new upstream version + * enable sasl support + * leave policykit support disabled since it's not in unstable yet + * bump shlibs version + * remove CVS metadata + * rediff patches + * libvirtd-bin.init: libvirtd supports reload + + -- Guido Guenther Fri, 21 Dec 2007 16:49:13 +0100 + +libvirt (0.4.0-0ubuntu3) hardy; urgency=low + + * Clean up debian/rules (should reenable concurrent builds). + * Don't restart libvirt on upgrades (if there's a good reason, we'll + add it to postinst/prerm with checks for specific versions). + + -- Soren Hansen Fri, 18 Jan 2008 19:07:19 +0100 + +libvirt (0.4.0-0ubuntu2) hardy; urgency=low + + * IFF_UP'ing a bridge interface doesn't work until the first interface has + been added to it. + * Fix remote ssh connections. + + -- Soren Hansen Tue, 15 Jan 2008 10:53:25 +0100 + +libvirt (0.4.0-0ubuntu1) hardy; urgency=low + + * New upstream release. + * Don't change the default URI. It appears that too many applications + still depend on this broken behaviour. + * Change maintainer to ubuntu-core-dev. + + -- Soren Hansen Fri, 21 Dec 2007 11:24:02 +0100 + +libvirt (0.3.3-6ubuntu1) hardy; urgency=low + + * Merge from debian unstable, remaining changes: + - Add libvirt0-dbg package. + - Start libvirtd by default. + - Create libvirtd group, and have libvirtd's sockets have group ownership + "libvirtd". + - Add libxen as a build-dependency to enable libvirt's Xen features. + + -- Soren Hansen Thu, 20 Dec 2007 11:28:00 +0100 + +libvirt (0.3.3-6) unstable; urgency=low + + * don't include precompiled examples in the doc package (Closes: #456825) + * remove RHism from manpage (Closes: #455859) + * bump standards version + + -- Guido Guenther Wed, 19 Dec 2007 13:45:58 +0100 + +libvirt (0.3.3-5.xen0) unstable; urgency=low + + * rebuild with xen support + + -- Guido Guenther Tue, 08 Jan 2008 11:00:24 +0100 + +libvirt (0.3.3-5) unstable; urgency=low + + * make libs match overrides + * move to team maintenance + * suggest dnsmasq and bridge-utils for qemu networking + * remove stale PID files + + -- Guido Guenther Thu, 13 Dec 2007 21:34:16 +0100 + +libvirt (0.3.3-4.xen0) unstable; urgency=low + + * UNRELEASED + * build with xen support + * debian/control: we also support xen + + -- Guido Guenther Thu, 06 Dec 2007 15:43:03 +0100 + +libvirt (0.3.3-4ubuntu5) hardy; urgency=low + + * Made default_uri a configurable. + + -- Soren Hansen Wed, 19 Dec 2007 00:56:31 +0100 + +libvirt (0.3.3-4ubuntu4) hardy; urgency=low + + * Add "Provides: libvirt0" to libvirt0-dbg. + * Make virsh understand that the default URI is not xen:///. + + -- Soren Hansen Wed, 19 Dec 2007 00:13:10 +0100 + +libvirt (0.3.3-4ubuntu3) hardy; urgency=low + + * Change default URI to qemu:///session + * Add libvirt0-dbg package, which is just like libvirt0, but built + with --enable-debug=yes. + + -- Soren Hansen Thu, 13 Dec 2007 21:37:39 +0100 + +libvirt (0.3.3-4ubuntu2) hardy; urgency=low + + * Start libvirtd by default. + * Create libvirtd group, and have libvirtd's sockets have group ownership + "libvirtd". + + -- Soren Hansen Thu, 13 Dec 2007 15:08:29 +0100 + +libvirt (0.3.3-4ubuntu1) hardy; urgency=low + + * Fakesync with Debian. + * Reenable Xen. + + -- Soren Hansen Thu, 06 Dec 2007 13:33:13 +0100 + +libvirt (0.3.3-4) unstable; urgency=low + + * put packages into the proper sections + * fix messed up Standards-Version (Closes: #453900) + + -- Guido Guenther Sun, 02 Dec 2007 14:50:11 +0100 + +libvirt (0.3.3-3.xen0) unstable; urgency=low + + * build with xen support - depend on our hacked up xen-utils for that + + -- Guido Guenther Sat, 01 Dec 2007 16:27:32 +0000 + +libvirt (0.3.3-3) unstable; urgency=low + + * add initscript to start libvirtd + + -- Guido Guenther Wed, 28 Nov 2007 10:30:29 +0100 + +libvirt (0.3.3-2) unstable; urgency=low + + * debian/copyright: + * update FSF address + * update upstream author and copyright information + * install the virsh manpage + * use binary:Version instead of Source-Version + + -- Guido Guenther Fri, 23 Nov 2007 22:31:26 +0100 + +libvirt (0.3.3-1) unstable; urgency=low + + * repackage for Debian (Closes: #384300) + * enable avahi + * build with qemu/kvm support + * disable xen support until #402249 is fixed + * disable qemu autonetwork for now, causes libvirtd to seqfault + * fix path to kvm + * switch off DH_VERBOSE + * thanks to the Ubuntu maintainers for their work! + + -- Guido Guenther Fri, 23 Nov 2007 01:58:56 +0100 + +libvirt (0.3.3-0ubuntu1) hardy; urgency=low + + * New upstream release. + * Update maintainer. + + -- Soren Hansen Wed, 14 Nov 2007 23:09:33 +0100 + +libvirt (0.3.0-0ubuntu2) gutsy; urgency=low + + * Add lingnutls-dev Build-Dep. + + -- Fabio M. Di Nitto Mon, 16 Jul 2007 12:10:41 +0200 + +libvirt (0.3.0-0ubuntu1) gutsy; urgency=low + + * Import new upstram release that can actually build on xen-3.1. + + -- Fabio M. Di Nitto Mon, 16 Jul 2007 10:23:04 +0200 + +libvirt (0.2.2-0ubuntu1) gutsy; urgency=low + + * Depends on libxen3.1-dev. + + -- Chuck Short Fri, 13 Jul 2007 11:04:00 -0400 + +libvirt (0.2.2-0ubuntu0) gutsy; urgency=low + + * New upstream version. + * Updated libvirt-bin.install, thanks to Marcelo Boveto Shima. + + -- Chuck Short Sun, 24 Jun 2007 09:54:54 -0400 + +libvirt (0.1.8-0ubuntu2) feisty; urgency=low + + * Rebuild for python2.5 as the default python version. + + -- Matthias Klose Fri, 12 Jan 2007 13:21:55 +0000 + +libvirt (0.1.8-0ubuntu1) feisty; urgency=low + + * Initial release + + -- Andrew Mitchell Mon, 23 Oct 2006 20:00:28 +1300 +