X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/6177320d7816f2115bb0f6027cd51c29903fe45e..aa13c5657d4f8b5dd52beda88a9a8ccc59ebca86:/gnu/packages/virtualization.scm?ds=sidebyside diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index bca3c917b2..e0b9a21e72 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2020 Ludovic Courtès ;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver -;;; Copyright © 2016, 2017, 2018. 2019 Efraim Flashner +;;; Copyright © 2016, 2017, 2018. 2019, 2020 Efraim Flashner ;;; Copyright © 2016, 2017 Ricardo Wurmus ;;; Copyright © 2017 Alex Vong ;;; Copyright © 2017 Andy Patterson @@ -13,6 +13,8 @@ ;;; Copyright © 2019 Guy Fleury Iteriteka ;;; Copyright © 2020 Jakub Kądziołka ;;; Copyright © 2020 Brice Waegeneire +;;; Copyright © 2020 Mathieu Othacehe +;;; Copyright © 2020 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -99,7 +101,8 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) - #:use-module (srfi srfi-1)) + #:use-module (srfi srfi-1) + #:use-module (ice-9 match)) (define (qemu-patch commit file-name sha256) "Return an origin for COMMIT." @@ -114,24 +117,25 @@ (define-public qemu (package (name "qemu") - (version "4.2.0") + (version "5.0.0") (source (origin (method url-fetch) (uri (string-append "https://download.qemu.org/qemu-" version ".tar.xz")) - (patches (search-patches "qemu-CVE-2020-1711.patch" - "qemu-CVE-2020-7039.patch" - "qemu-CVE-2020-7211.patch" - "qemu-CVE-2020-8608.patch" - "qemu-fix-documentation-build-failure.patch")) (sha256 (base32 - "1w38hzlw7xp05gcq1nhga7hxvndxy6dfcnzi7q2il8ff110isj6k")))) + "1dlcwyshdp94fwd30pddxf9bn2q8dfw5jsvry2gvdj551wmaj4rg")))) (build-system gnu-build-system) (arguments - '(;; Running tests in parallel can occasionally lead to failures, like: + `(;; Running tests in parallel can occasionally lead to failures, like: ;; boot_sector_test: assertion failed (signature == SIGNATURE): (0x00000000 == 0x0000dead) #:parallel-tests? #f + + ;; FIXME: Disable tests on i686 to work around + ;; . + #:tests? ,(or (%current-target-system) + (not (string=? "i686-linux" (%current-system)))) + #:configure-flags (list "--enable-usb-redir" "--enable-opengl" "--enable-docs" (string-append "--smbd=" @@ -140,8 +144,36 @@ "--audio-drv-list=alsa,pa,sdl") ;; Make build and test output verbose to facilitate investigation upon failure. #:make-flags '("V=1") + #:modules ((srfi srfi-1) + (ice-9 match) + ,@%gnu-build-system-modules) #:phases (modify-phases %standard-phases + (add-after 'set-paths 'hide-glibc + (lambda* (#:key inputs #:allow-other-keys) + ;; Work around https://issues.guix.info/issue/36882. We need to + ;; remove glibc from C_INCLUDE_PATH so that the one hardcoded in GCC, + ;; at the bottom of GCC include search-path is used. + (let* ((filters '("libc")) + (input-directories + (filter-map (lambda (input) + (match input + ((name . dir) + (and (not (member name filters)) + dir)))) + inputs))) + (set-path-environment-variable "C_INCLUDE_PATH" + '("include") + input-directories) + #t))) + (add-after 'patch-source-shebangs 'patch-/bin/sh-references + (lambda _ + ;; Ensure the executables created by these source files reference + ;; /bin/sh from the store so they work inside the build container. + (substitute* '("block/cloop.c" "migration/exec.c" + "net/tap.c" "tests/qtest/libqtest.c") + (("/bin/sh") (which "sh"))) + #t)) (replace 'configure (lambda* (#:key inputs outputs (configure-flags '()) #:allow-other-keys) @@ -151,8 +183,16 @@ (setenv "SHELL" (which "bash")) ;; While we're at it, patch for tests. - (substitute* "tests/libqtest.c" - (("/bin/sh") (which "sh"))) + (substitute* "tests/qemu-iotests/check" + (("#!/usr/bin/env python3") + (string-append "#!" (which "python3")))) + + ;; Ensure config.status gets the correct shebang off the bat. + ;; The build system gets confused if we change it later and + ;; attempts to re-run the whole configury, and fails. + (substitute* "configure" + (("#!/bin/sh") + (string-append "#!" (which "sh")))) ;; The binaries need to be linked against -lrt. (setenv "LDFLAGS" "-lrt") @@ -191,12 +231,6 @@ exec smbd $@"))) (chmod "samba-wrapper" #o755) (install-file "samba-wrapper" libexec)) #t)) - (add-before 'configure 'prevent-network-configuration - (lambda _ - ;; Prevent the build from trying to use git to fetch from the net. - (substitute* "Makefile" - (("@./config.status") - "")) #t)) (add-before 'check 'disable-unusable-tests (lambda* (#:key inputs outputs #:allow-other-keys) (substitute* "tests/Makefile.include" @@ -217,7 +251,8 @@ exec smbd $@"))) ("gtk+" ,gtk+) ("libaio" ,libaio) ("libattr" ,attr) - ("libcap" ,libcap) ; virtfs support requires libcap & libattr + ("libcacard" ,libcacard) ; smartcard support + ("libcap-ng" ,libcap-ng) ; virtfs support requires libcap-ng & libattr ("libdrm" ,libdrm) ("libepoxy" ,libepoxy) ("libjpeg" ,libjpeg-turbo) @@ -264,25 +299,55 @@ server and embedded PowerPC, and S390 guests.") (license license:gpl2) ;; Several tests fail on MIPS; see . - (supported-systems (delete "mips64el-linux" %supported-systems)))) + (supported-systems (fold delete %supported-systems + '("mips64el-linux" "i586-gnu"))))) (define-public qemu-minimal - ;; QEMU without GUI support. + ;; QEMU without GUI support, only supporting the host's architecture (package (inherit qemu) (name "qemu-minimal") - (synopsis "Machine emulator and virtualizer (without GUI)") + (synopsis + "Machine emulator and virtualizer (without GUI) for the host architecture") (arguments (substitute-keyword-arguments (package-arguments qemu) ((#:configure-flags _ '(list)) - ;; Restrict to the targets supported by Guix. - ''("--target-list=i386-softmmu,x86_64-softmmu,mips64el-softmmu,arm-softmmu,aarch64-softmmu")))) + ;; Restrict to the host's architecture. + (match (car (string-split (or (%current-target-system) + (%current-system)) + #\-)) + ("i686" + '(list "--target-list=i386-softmmu")) + ("x86_64" + '(list "--target-list=i386-softmmu,x86_64-softmmu")) + ("mips64" + '(list (string-append "--target-list=mips-softmmu,mipsel-softmmu," + "mips64-softmmu,mips64el-softmmu"))) + ("mips" + '(list "--target-list=mips-softmmu,mipsel-softmmu")) + ("aarch64" + '(list "--target-list=arm-softmmu,aarch64-softmmu")) + ("arm" + '(list "--target-list=arm-softmmu")) + ("alpha" + '(list "--target-list=alpha-softmmu")) + ("powerpc64" + '(list "--target-list=ppc-softmmu,ppc64-softmmu")) + ("powerpc" + '(list "--target-list=ppc-softmmu")) + ("s390" + '(list "--target-list=s390x-softmmu")) + ("riscv" + '(list "--target-list=riscv32-softmmu,riscv64-softmmu")) + (else ; An empty list actually builds all the targets. + ''()))))) ;; Remove dependencies on optional libraries, notably GUI libraries. (native-inputs (fold alist-delete (package-native-inputs qemu) '("gettext"))) (inputs (fold alist-delete (package-inputs qemu) '("libusb" "mesa" "sdl2" "spice" "virglrenderer" "gtk+" - "usbredir" "libdrm" "libepoxy" "pulseaudio" "vde2"))))) + "usbredir" "libdrm" "libepoxy" "pulseaudio" "vde2" + "libcacard"))))) (define-public libosinfo (package @@ -377,12 +442,6 @@ all common programming languages. Vala bindings are also provided.") "/share/doc/" ,name "-" ,version) "--sysconfdir=/etc" "--localstatedir=/var") - #:make-flags - ;; Treat the kernel headers as system headers to silence - ;; compiler warnings from those. - (list (string-append "C_INCLUDE_PATH=" - (assoc-ref %build-inputs "kernel-headers") - "/include")) #:phases (modify-phases %standard-phases (replace 'install @@ -474,7 +533,7 @@ manage system or application containers.") ("libpcap" ,libpcap) ("libnl" ,libnl) ("libtirpc" ,libtirpc) ;for - ("libuuid" ,util-linux) + ("libuuid" ,util-linux "lib") ("lvm2" ,lvm2) ;for libdevmapper ("curl" ,curl) ("openssl" ,openssl) @@ -686,14 +745,14 @@ domains, their live performance and resource utilization statistics.") (define-public criu (package (name "criu") - (version "3.13") + (version "3.14") (source (origin (method url-fetch) - (uri (string-append "http://download.openvz.org/criu/criu-" + (uri (string-append "https://download.openvz.org/criu/criu-" version ".tar.bz2")) (sha256 (base32 - "1yn9ix9lqvqvjrs3a3g6g1wqfniyf9n7giy0mr3jvijmrcm7y0pa")))) + "1jrr3v99g18gc0hriz0avq6ccdvyya0j6wwz888sdsc4icc30gzn")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -714,13 +773,7 @@ domains, their live performance and resource utilization statistics.") (setenv "C_INCLUDE_PATH" (string-append (assoc-ref inputs "libnl") "/include/libnl3:" - ;; Also add the kernel headers here so that GCC - ;; treats them as "system headers". Otherwise - ;; the build fails with -Werror because parasite.c - ;; includes both and , - ;; which define some of the same constants. - (assoc-ref inputs "kernel-headers") - "/include")) + (or (getenv "C_INCLUDE_PATH") ""))) #t)) (add-after 'configure 'fix-documentation (lambda* (#:key inputs outputs #:allow-other-keys) @@ -1167,7 +1220,7 @@ DOS or Microsoft Windows.") (define-public xen (package (name "xen") - (version "4.11.1") + (version "4.13.0") (source (origin (method git-fetch) (uri (git-reference @@ -1176,7 +1229,7 @@ DOS or Microsoft Windows.") (file-name (git-file-name name version)) (sha256 (base32 - "1wv1hyfii14vi9lfjmnv07h2gpm3b7kvh2p55f4yy2b40simksgk")))) + "0py50n995gv909i0d1lfdcj9wcp5g1d5z6m2291jqqlfyany138g")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -1326,7 +1379,7 @@ override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc")) ("pixman" ,pixman) ("qemu" ,qemu-minimal) ("seabios" ,seabios) - ("util-linux" ,util-linux) ; uuid + ("util-linux" ,util-linux "lib") ; uuid ; TODO: ocaml-findlib, ocaml-nox. ("xz" ,xz) ; for liblzma ("zlib" ,zlib)))