From 06da1a6b4fa919a64020ebf1a001b7e66134bd97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 21 Nov 2015 00:34:32 +0100 Subject: [PATCH] gnu: Add qemu-minimal. * gnu/packages/qemu.scm (qemu): Exchange with former QEMU-HEADLESS. (qemu-headless): Rename to... (qemu-minimal): ... this. New variable. Pass --target-list. * gnu/packages/debug.scm (qemu-2.3.0): Inherit from QEMU-MINIMAL. * gnu/packages/grub.scm (qemu-for-tests): Likewise. * gnu/system/vm.scm (expression->derivation-in-linux-vm, qemu-image): Update to name change. --- gnu/packages/debug.scm | 4 ++-- gnu/packages/grub.scm | 6 +++--- gnu/packages/qemu.scm | 39 ++++++++++++++++++++++++--------------- gnu/system/vm.scm | 4 ++-- 4 files changed, 31 insertions(+), 22 deletions(-) diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm index 1e0034c100..dc94f97657 100644 --- a/gnu/packages/debug.scm +++ b/gnu/packages/debug.scm @@ -143,7 +143,7 @@ (define-public c-reduce (define qemu-2.3.0 (package - (inherit qemu-headless) + (inherit qemu-minimal) (version "2.3.0") (source (origin (method url-fetch) @@ -157,7 +157,7 @@ (define qemu-2.3.0 ;; XXX: Disable tests because of GTester's rejection of duplicate test ;; names, which wasn't addressed in this version of QEMU. `(#:tests? #f - ,@(package-arguments qemu-headless))))) + ,@(package-arguments qemu-minimal))))) (define-public american-fuzzy-lop (let ((machine (match (or (%current-target-system) diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm index 7875a64186..79fc2f0aca 100644 --- a/gnu/packages/grub.scm +++ b/gnu/packages/grub.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2015 Mark H Weaver ;;; ;;; This file is part of GNU Guix. @@ -41,7 +41,7 @@ (define qemu-for-tests ;; and fixed at ;; . ;; Work around it by using an older QEMU. - (package (inherit qemu-headless) + (package (inherit qemu-minimal) (version "1.3.1") (source (origin (method url-fetch) @@ -55,7 +55,7 @@ (define qemu-for-tests ;; ERROR:tests/rtc-test.c:176:check_time: assertion failed (ABS(t - s) <= wiggle): (382597824 <= 2) ;; Simply disable the tests. (arguments `(#:tests? #f - ,@(package-arguments qemu))) + ,@(package-arguments qemu-minimal))) ;; The manual fails to build with Texinfo 5.x. (native-inputs (alist-delete "texinfo" (package-native-inputs qemu))))) diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm index 71600b2347..a6abb48913 100644 --- a/gnu/packages/qemu.scm +++ b/gnu/packages/qemu.scm @@ -38,7 +38,8 @@ (define-module (gnu packages qemu) #:use-module (gnu packages xdisorg) #:use-module (gnu packages gl) #:use-module (gnu packages sdl) - #:use-module (gnu packages perl)) + #:use-module (gnu packages perl) + #:use-module (srfi srfi-1)) (define (qemu-patch commit file-name sha256) "Return an origin for COMMIT." @@ -62,10 +63,9 @@ (define %glib-duplicate-test-patch (base32 "1aicbplzdj5s5y13jmqyvfajay05x9dnkzd197waz8v6kha7d9d5"))) -(define-public qemu-headless - ;; This is QEMU without GUI support. +(define-public qemu (package - (name "qemu-headless") + (name "qemu") (version "2.4.0.1") (source (origin (method url-fetch) @@ -123,7 +123,11 @@ (define-public qemu-headless %standard-phases)))) (inputs ; TODO: Add optional inputs. - `(;; ("libaio" ,libaio) + `(("sdl" ,sdl) + ("mesa" ,mesa) + ("libusb" ,libusb) ;USB pass-through support + + ;; ("libaio" ,libaio) ("glib" ,glib) ("ncurses" ,ncurses) ("libpng" ,libpng) @@ -143,7 +147,7 @@ (define-public qemu-headless ("texinfo" ,texinfo) ("perl" ,perl))) (home-page "http://www.qemu-project.org") - (synopsis "Machine emulator and virtualizer (without GUI)") + (synopsis "Machine emulator and virtualizer") (description "QEMU is a generic machine emulator and virtualizer. @@ -163,12 +167,17 @@ (define-public qemu-headless ;; Several tests fail on MIPS; see . (supported-systems (delete "mips64el-linux" %supported-systems)))) -(define-public qemu - ;; QEMU with GUI support. - (package (inherit qemu-headless) - (name "qemu") - (synopsis "Machine emulator and virtualizer") - (inputs `(("sdl" ,sdl) - ("mesa" ,mesa) - ("libusb" ,libusb) ;USB pass-through support - ,@(package-inputs qemu-headless))))) +(define-public qemu-minimal + ;; QEMU without GUI support. + (package (inherit qemu) + (name "qemu-minimal") + (synopsis "Machine emulator and virtualizer (without GUI)") + (arguments + `(#:configure-flags + ;; Restrict to the targets supported by Guix. + '("--target-list=i386-softmmu,x86_64-softmmu,mips64el-softmmu,arm-softmmu") + ,@(package-arguments qemu))) + + ;; Remove dependencies on optional libraries, notably GUI libraries. + (inputs (fold alist-delete (package-inputs qemu) + '("sdl" "mesa" "libusb"))))) diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 96ff27f90b..1492a0bb1c 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -92,7 +92,7 @@ (define* (expression->derivation-in-linux-vm name exp (system (%current-system)) (linux linux-libre) initrd - (qemu qemu-headless) + (qemu qemu-minimal) (env-vars '()) (modules '((gnu build vm) @@ -185,7 +185,7 @@ (define builder (define* (qemu-image #:key (name "qemu-image") (system (%current-system)) - (qemu qemu-headless) + (qemu qemu-minimal) (disk-image-size (* 100 (expt 2 20))) (disk-image-format "qcow2") (file-system-type "ext4")