aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-02-10 18:28:00 +0100
committerLudovic Courtès <ludo@gnu.org>2013-02-10 18:28:00 +0100
commit72b9eebf686381fae5b20652863108d3d8e5a743 (patch)
treed9cf99b74a1b7da0b0f578976e584ad4e32fe077
parentcab249615d1c416fb596343a0aecb20167b23334 (diff)
downloadguix-72b9eebf686381fae5b20652863108d3d8e5a743.tar
guix-72b9eebf686381fae5b20652863108d3d8e5a743.tar.gz
gnu: Add QEMU.
* gnu/packages/autotools.scm (autoconf-wrapper): Make public. * gnu/packages/qemu.scm (qemu): New variable.
-rw-r--r--gnu/packages/autotools.scm2
-rw-r--r--gnu/packages/qemu.scm56
2 files changed, 56 insertions, 2 deletions
diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
index 5c90361de1..bc4dddc01f 100644
--- a/gnu/packages/autotools.scm
+++ b/gnu/packages/autotools.scm
@@ -62,7 +62,7 @@ file that lists the operating system features that the package
can use, in the form of M4 macro calls.")
(license gpl3+))) ; some files are under GPLv2+
-(define autoconf-wrapper
+(define-public autoconf-wrapper
;; An Autoconf wrapper that generates `configure' scripts that use our
;; own Bash instead of /bin/sh in shebangs. For that reason, it
;; should only be used internally---users should not end up
diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm
index b79da989a6..e6859aadf0 100644
--- a/gnu/packages/qemu.scm
+++ b/gnu/packages/qemu.scm
@@ -19,8 +19,10 @@
(define-module (gnu packages qemu)
#:use-module (guix download)
#:use-module (guix packages)
+ #:use-module (guix utils)
#:use-module ((guix licenses) #:select (gpl2))
#:use-module (guix build-system gnu)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages glib)
#:use-module (gnu packages python)
@@ -29,7 +31,8 @@
#:use-module (gnu packages libpng)
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages attr)
- #:use-module (gnu packages linux))
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages perl))
(define-public qemu-kvm
(package
@@ -87,3 +90,54 @@ underway to get the required changes upstream.")
;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'.
(license gpl2)))
+
+(define-public qemu
+ ;; The real one, with a complete target list.
+ (package (inherit qemu-kvm)
+ (name "qemu")
+ (version "1.3.1")
+ (location (source-properties->location (current-source-location)))
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://wiki.qemu-project.org/download/qemu-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1bqfrb5dlsxm8gxhkksz8qzi5fhj3xqhxyfwbqcphhcv1kpyfwip"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments qemu-kvm)
+ ((#:phases phases)
+ `(alist-cons-before
+ 'build 'pre-build
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((libtool (assoc-ref inputs "libtool"))
+ (pkg-config (assoc-ref inputs "pkg-config")))
+ ;; XXX: For lack of generic search path handling.
+ (setenv "ACLOCAL_PATH"
+ (format #f "~a/share/aclocal:~a/share/aclocal"
+ libtool pkg-config)))
+
+ ;; For pixman's `configure' script.
+ (setenv "CONFIG_SHELL" (which "bash"))
+
+ (substitute* "pixman/configure.ac"
+ (("AM_CONFIG_HEADER") "AC_CONFIG_HEADERS")))
+ ,phases))))
+ (native-inputs `(("autoconf" ,autoconf-wrapper) ; for "pixman"
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("libtool-bin" ,libtool "bin")
+ ("perl" ,perl)))
+ (description
+ "QEMU is a generic and open source machine emulator and virtualizer.
+
+When used as a machine emulator, QEMU can run OSes and programs made for one
+machine (e.g. an ARM board) on a different machine
+(e.g. your own PC). By using dynamic translation, it achieves very good
+performance.
+
+When used as a virtualizer, QEMU achieves near native performances by
+executing the guest code directly on the host CPU. QEMU supports
+virtualization when executing under the Xen hypervisor or using
+the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86,
+server and embedded PowerPC, and S390 guests.")))