gnu: Add QEMU.

* gnu/packages/autotools.scm (autoconf-wrapper): Make public.
* gnu/packages/qemu.scm (qemu): New variable.
This commit is contained in:
Ludovic Courtès 2013-02-10 18:28:00 +01:00
parent cab249615d
commit 72b9eebf68
2 changed files with 56 additions and 2 deletions

View File

@ -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

View File

@ -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.")))