gnu: Add QEMU.
* gnu/packages/autotools.scm (autoconf-wrapper): Make public. * gnu/packages/qemu.scm (qemu): New variable.master
parent
cab249615d
commit
72b9eebf68
|
@ -62,7 +62,7 @@ file that lists the operating system features that the package
|
||||||
can use, in the form of M4 macro calls.")
|
can use, in the form of M4 macro calls.")
|
||||||
(license gpl3+))) ; some files are under GPLv2+
|
(license gpl3+))) ; some files are under GPLv2+
|
||||||
|
|
||||||
(define autoconf-wrapper
|
(define-public autoconf-wrapper
|
||||||
;; An Autoconf wrapper that generates `configure' scripts that use our
|
;; An Autoconf wrapper that generates `configure' scripts that use our
|
||||||
;; own Bash instead of /bin/sh in shebangs. For that reason, it
|
;; own Bash instead of /bin/sh in shebangs. For that reason, it
|
||||||
;; should only be used internally---users should not end up
|
;; should only be used internally---users should not end up
|
||||||
|
|
|
@ -19,8 +19,10 @@
|
||||||
(define-module (gnu packages qemu)
|
(define-module (gnu packages qemu)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
|
#:use-module (guix utils)
|
||||||
#:use-module ((guix licenses) #:select (gpl2))
|
#:use-module ((guix licenses) #:select (gpl2))
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
|
#:use-module (gnu packages autotools)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
|
@ -29,7 +31,8 @@
|
||||||
#:use-module (gnu packages libpng)
|
#:use-module (gnu packages libpng)
|
||||||
#:use-module (gnu packages libjpeg)
|
#:use-module (gnu packages libjpeg)
|
||||||
#:use-module (gnu packages attr)
|
#:use-module (gnu packages attr)
|
||||||
#:use-module (gnu packages linux))
|
#:use-module (gnu packages linux)
|
||||||
|
#:use-module (gnu packages perl))
|
||||||
|
|
||||||
(define-public qemu-kvm
|
(define-public qemu-kvm
|
||||||
(package
|
(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'.
|
;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'.
|
||||||
(license gpl2)))
|
(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.")))
|
||||||
|
|
Reference in New Issue