summary refs log tree commit diff
path: root/gnu/packages/qemu.scm
diff options
context:
space:
mode:
authorLeo Famulari <leo@famulari.name>2016-08-17 23:21:00 -0400
committerLeo Famulari <leo@famulari.name>2016-08-17 23:35:22 -0400
commit015ee84aac888b3900fa0ee54a1b7e55c083e7d3 (patch)
tree2ef7a51321dff53e479bc6d11f3785e1c65c07f0 /gnu/packages/qemu.scm
parenta3d6e1f432ad5f9cde8bee670b28646e05c4cb19 (diff)
parent79f9d5d5dc97e492e0583e039a2699aa17f4eb11 (diff)
downloadguix-015ee84aac888b3900fa0ee54a1b7e55c083e7d3.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/qemu.scm')
-rw-r--r--gnu/packages/qemu.scm306
1 files changed, 304 insertions, 2 deletions
diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm
index dfc9843c97..c67e87fb2a 100644
--- a/gnu/packages/qemu.scm
+++ b/gnu/packages/qemu.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,25 +21,37 @@
 
 (define-module (gnu packages qemu)
   #:use-module (gnu packages)
-  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages attr)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages disk)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages polkit)
   #:use-module (gnu packages python)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages spice)
   #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xml)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (guix download)
-  #:use-module ((guix licenses) #:select (gpl2))
+  #:use-module ((guix licenses) #:select (gpl2 gpl2+ lgpl2.1+))
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1))
@@ -178,3 +191,292 @@ server and embedded PowerPC, and S390 guests.")
     ;; Remove dependencies on optional libraries, notably GUI libraries.
     (inputs (fold alist-delete (package-inputs qemu)
                   '("libusb" "mesa" "sdl" "spice" "virglrenderer")))))
+
+(define-public libosinfo
+  (package
+    (name "libosinfo")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://fedorahosted.org/releases/l/i/libosinfo/libosinfo-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "151qrzmafxww5yfamrr7phk8217xmihfhazpb597vdv87na75cjh"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'copy-ids
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-file (assoc-ref inputs "pci.ids") "data/pci.ids")
+             (copy-file (assoc-ref inputs "usb.ids") "data/usb.ids")
+             #t)))))
+    (inputs
+     `(("libsoup" ,libsoup)
+       ("libxml2" ,libxml2)
+       ("libxslt" ,libxslt)
+       ("gobject-introspection" ,gobject-introspection)))
+    (native-inputs
+     `(("check" ,check)
+       ("glib" ,glib "bin")  ; glib-mkenums, etc.
+       ("gtk-doc" ,gtk-doc)
+       ("vala" ,vala)
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)
+       ("pci.ids"
+        ,(origin
+           (method url-fetch)
+           (uri "http://pciids.sourceforge.net/v2.2/pci.ids")
+           (sha256
+            (base32
+             "0h8v0lrlrxkfnjiwnwiq86zyvb8qa2n3844dp1m01lh2nb2fliqw"))))
+       ("usb.ids"
+        ,(origin
+           (method url-fetch)
+           (uri "http://linux-usb.cvs.sourceforge.net/viewvc/linux-usb/htdocs/usb.ids?revision=1.539")
+           (sha256
+            (base32
+             "0w9ila7662lzpx416lqy69zx6gfwq2xiigwd5fdyqcrg3dj07m80"))))))
+    (home-page "https://libosinfo.org/")
+    (synopsis "Operating system information database")
+    (description "libosinfo is a GObject based library API for managing
+information about operating systems, hypervisors and the (virtual) hardware
+devices they can support.  It includes a database containing device metadata
+and provides APIs to match/identify optimal devices for deploying an operating
+system on a hypervisor.  Via GObject Introspection, the API is available in
+all common programming languages.  Vala bindings are also provided.")
+    ;; The library files are released under LGPLv2.1 or later; the source
+    ;; files in the "tools" directory are released under GPLv2+.
+    (license (list lgpl2.1+ gpl2+))))
+
+(define-public libvirt
+  (package
+    (name "libvirt")
+    (version "2.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://libvirt.org/sources/libvirt-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0sriasjc573c519yqw1hcfb3qqjcsm9hm8vayw0anwkl6di9ay8s"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(;; FAIL: virshtest
+       ;; FAIL: virfirewalltest
+       ;; FAIL: virkmodtest
+       ;; FAIL: virnetsockettest
+       ;; FAIL: networkxml2firewalltest
+       ;; FAIL: nwfilterebiptablestest
+       ;; FAIL: nwfilterxml2firewalltest
+       ;; Times out after PASS: virsh-vcpupin
+       #:tests? #f
+       #:configure-flags
+       (list "--with-polkit"
+             "--localstatedir=/var")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-tests
+           (lambda _
+             (substitute* '("tests/commandtest.c"
+                            "gnulib/tests/test-posix_spawn1.c"
+                            "gnulib/tests/test-posix_spawn2.c")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-after 'unpack 'do-not-mkdir-in-/var
+           ;; Since the localstatedir should be /var at runtime, we must
+           ;; prevent writing to /var at installation time.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out           (assoc-ref outputs "out"))
+                    (localstatedir (string-append out "/var")))
+               (substitute* '("src/Makefile.in"
+                              "daemon/Makefile.in")
+                 (("\\$\\(DESTDIR\\)\\$\\(localstatedir)") localstatedir)))
+             #t)))))
+    (inputs
+     `(("libxml2" ,libxml2)
+       ("gnutls" ,gnutls)
+       ("dbus" ,dbus)
+       ("qemu" ,qemu)
+       ("polkit" ,polkit)
+       ("libpcap" ,libpcap)
+       ("libnl" ,libnl)
+       ("libuuid" ,util-linux)
+       ("lvm2" ,lvm2) ; for libdevmapper
+       ("curl" ,curl)
+       ("openssl" ,openssl)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("perl" ,perl)
+       ("python" ,python-2)
+       ("libyajl" ,libyajl)
+       ("audit" ,audit)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://libvirt.org")
+    (synopsis "Simple API for virtualization")
+    (description "Libvirt is a C toolkit to interact with the virtualization
+capabilities of recent versions of Linux.  The library aims at providing long
+term stable C API initially for the Xen paravirtualization but should be able
+to integrate other virtualization mechanisms if needed.")
+    (license lgpl2.1+)))
+
+(define-public libvirt-glib
+  (package
+    (name "libvirt-glib")
+    (version "0.2.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "ftp://libvirt.org/libvirt/glib/"
+                                  "libvirt-glib-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1pahj8qa7k2307sd57rwqwq1hijya02v0sxk91hl3cw48niimcf3"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-tests
+           (lambda _
+             (substitute* "tests/test-events.c"
+               (("/bin/true") (which "true")))
+             #t)))))
+    (inputs
+     `(("libxml2" ,libxml2)
+       ("libvirt" ,libvirt)
+       ("gobject-introspection" ,gobject-introspection)
+       ("glib" ,glib)
+       ("openssl" ,openssl)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("lvm2" ,lvm2) ; for libdevmapper
+       ("libyajl" ,libyajl)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)
+       ("glib" ,glib "bin")
+       ("vala" ,vala)))
+    (home-page "http://libvirt.org")
+    (synopsis "GLib wrapper around libvirt")
+    (description "libvirt-glib wraps the libvirt library to provide a
+high-level object-oriented API better suited for glib-based applications, via
+three libraries:
+
+@enumerate
+@item libvirt-glib - GLib main loop integration & misc helper APIs
+@item libvirt-gconfig - GObjects for manipulating libvirt XML documents
+@item libvirt-gobject - GObjects for managing libvirt objects
+@end enumerate
+")
+    (license lgpl2.1+)))
+
+(define-public python-libvirt
+  (package
+    (name "python-libvirt")
+    (version "2.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "libvirt-python" version))
+              (sha256
+               (base32
+                "0h0x5lpsx97bvw20pzfcsdmmivximddq4qmn8fk0n55dqv0wn5kq"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-nosetests-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "setup.py"
+               (("sys.executable, \"/usr/bin/nosetests\"")
+                (string-append "\"" (which "bash") "\", \""
+                               (which "nosetests") "\"")))
+             #t)))))
+    (inputs
+     `(("libvirt" ,libvirt)
+       ("python-lxml" ,python-lxml)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python-nose" ,python-nose)))
+    (home-page "http://libvirt.org")
+    (synopsis "Python bindings to libvirt")
+    (description "This package provides Python bindings to the libvirt
+virtualization library.")
+    (license lgpl2.1+)))
+
+(define-public python2-libvirt
+  (package-with-python2 python-libvirt))
+
+(define-public virt-manager
+  (package
+    (name "virt-manager")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://virt-manager.org/download/sources"
+                                  "/virt-manager/virt-manager-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1jnawqjmcqd2db78ngx05x7cxxn3iy1sb4qfgbwcn045qh6a8cdz"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       ;; Some of the tests seem to require network access to install virtual
+       ;; machines.
+       #:tests? #f
+       #:modules ((ice-9 match)
+                  (srfi srfi-26)
+                  (guix build python-build-system)
+                  (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-setup
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "virtcli/cliconfig.py"
+               (("/usr") (assoc-ref outputs "out")))
+             #t))
+         (add-before 'wrap 'wrap-with-GI_TYPELIB_PATH
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((bin       (string-append (assoc-ref outputs "out") "/bin"))
+                    (bin-files (find-files bin ".*"))
+                    (paths     (map (match-lambda
+                                      ((output . directory)
+                                       (let* ((girepodir (string-append
+                                                          directory
+                                                          "/lib/girepository-1.0")))
+                                         (if (file-exists? girepodir)
+                                             girepodir #f))))
+                                    inputs)))
+               (for-each (lambda (file)
+                           (format #t "wrapping ~a\n" file)
+                           (wrap-program file
+                             `("GI_TYPELIB_PATH" ":" prefix
+                               ,(filter identity paths))))
+                         bin-files))
+             #t)))))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("libvirt" ,libvirt)
+       ("libvirt-glib" ,libvirt-glib)
+       ("libosinfo" ,libosinfo)
+       ("gobject-introspection" ,gobject-introspection)
+       ("python2-libvirt" ,python2-libvirt)
+       ("python2-requests" ,python2-requests)
+       ("python2-ipaddr" ,python2-ipaddr)
+       ("python2-pygobject" ,python2-pygobject)
+       ("python2-libxml2" ,python2-libxml2)))
+    ;; virt-manager searches for qemu-img or kvm-img in the PATH.
+    (propagated-inputs
+     `(("qemu" ,qemu)))
+    (native-inputs
+     `(("glib" ,glib "bin")             ; glib-compile-schemas.
+       ("perl" ,perl)                   ; pod2man
+       ("intltool" ,intltool)))
+    (home-page "https://virt-manager.org/")
+    (synopsis "Manage virtual machines")
+    (description
+     "The virt-manager application is a desktop user interface for managing
+virtual machines through libvirt.  It primarily targets KVM VMs, but also
+manages Xen and LXC (Linux containers).  It presents a summary view of running
+domains, their live performance and resource utilization statistics.")
+    (license gpl2+)))