diff options
Diffstat (limited to 'gnu/packages/virtualization.scm')
-rw-r--r-- | gnu/packages/virtualization.scm | 201 |
1 files changed, 100 insertions, 101 deletions
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 9556fbc61e..5c5225b694 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020, 2021, 2022 Marius Bakke <marius@gnu.org> -;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2021 Leo Famulari <leo@famulari.name> ;;; Copyright © 2021, 2022 Pierre Langlois <pierre.langlois@gmx.com> @@ -29,6 +29,7 @@ ;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com> ;;; Copyright © 2023 Juliana Sims <juli@incana.org> +;;; Copyright © 2023 Ahmad Draidi <a.r.draidi@redscript.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -75,6 +76,7 @@ #:use-module (gnu packages figlet) #:use-module (gnu packages firmware) #:use-module (gnu packages flex) + #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gettext) @@ -162,16 +164,15 @@ (define-public qemu (package (name "qemu") - (version "7.2.4") + (version "8.1.0") (source (origin (method url-fetch) (uri (string-append "https://download.qemu.org/qemu-" version ".tar.xz")) (sha256 - (base32 "0795l8xsy67fnh4mbdz40jm880iisd7q6d7ly6nfzpac3gjr8zyf")) - (patches (search-patches "qemu-build-info-manual.patch" - "qemu-disable-aarch64-migration-test.patch" + (base32 "0m8fbyr3xv6gi95ma0sksxfqmyj3pi4zcrgg5rvd8d73k08i033i")) + (patches (search-patches "qemu-disable-some-qtests-tests.patch" "qemu-fix-agent-paths.patch")) (modules '((guix build utils))) (snippet @@ -180,8 +181,6 @@ (with-directory-excursion "pc-bios" ;; Delete firmwares provided by SeaBIOS. (for-each delete-file (find-files "." "^(bios|vgabios).*\\.bin$")) - ;; Delete SGABIOS. - (delete-file "sgabios.bin") ;; Delete ppc64 OpenBIOS. TODO: Remove sparc32 and sparc64 too ;; once they are supported in Guix. (delete-file "openbios-ppc") @@ -192,12 +191,11 @@ (for-each delete-file (find-files "." "^(efi|pxe)-.*\\.rom$"))) ;; Delete bundled code that we provide externally. (for-each delete-file-recursively - '("dtc" "meson" + '("subprojects/dtc" "roms/ipxe" "roms/openbios" "roms/opensbi" - "roms/seabios" - "roms/sgabios")))))) + "roms/seabios")))))) (outputs '("out" "static" "doc")) ;5.3 MiB of HTML docs (build-system gnu-build-system) (arguments @@ -208,7 +206,6 @@ (not (string=? "i686-linux" (%current-system)))) #:configure-flags #~(let ((gcc (search-input-file %build-inputs "/bin/gcc")) - (meson (search-input-file %build-inputs "bin/meson")) (openbios (search-input-file %build-inputs "share/qemu/openbios-ppc")) (opensbi (search-input-file @@ -216,25 +213,20 @@ "share/qemu/opensbi-riscv64-generic-fw_dynamic.bin")) (seabios (search-input-file %build-inputs "share/qemu/bios.bin")) - (sgabios (search-input-file %build-inputs - "/share/qemu/sgabios.bin")) (ipxe (search-input-file %build-inputs "share/qemu/pxe-virtio.rom")) (out #$output)) (list (string-append "--cc=" gcc) ;; Some architectures insist on using HOST_CC. (string-append "--host-cc=" gcc) - (string-append "--meson=" meson) (string-append "--prefix=" out) - "--sysconfdir=/etc" "--enable-fdt=system" (string-append "--firmwarepath=" out "/share/qemu:" (dirname seabios) ":" (dirname ipxe) ":" (dirname openbios) ":" - (dirname opensbi) ":" - (dirname sgabios)) + (dirname opensbi)) (string-append "--smbd=" out "/libexec/samba-wrapper") "--disable-debug-info" ;for space considerations ;; The binaries need to be linked against -lrt. @@ -255,7 +247,6 @@ (let* ((seabios (dirname (search-input-file inputs "share/qemu/bios.bin"))) (seabios-firmwares (find-files seabios "\\.bin$")) - (sgabios (search-input-file inputs "share/qemu/sgabios.bin")) (ipxe (dirname (search-input-file inputs "share/qemu/pxe-virtio.rom"))) (ipxe-firmwares (find-files ipxe "\\.rom$")) @@ -280,7 +271,7 @@ (for-each (lambda (file) (symlink file (basename file))) (append seabios-firmwares ipxe-firmwares - (list openbios opensbi-riscv64 sgabios)))) + (list openbios opensbi-riscv64)))) (for-each (lambda (file) (format allowed-differences-whitelist "\"~a\",~%" file)) @@ -403,8 +394,7 @@ (for-each delete-file (append '("openbios-ppc" - "opensbi-riscv64-generic-fw_dynamic.bin" - "sgabios.bin") + "opensbi-riscv64-generic-fw_dynamic.bin") (find-files "." "^(vga)?bios(-[a-z0-9-]+)?\\.bin$") (find-files "." "^(efi|pxe)-.*\\.rom$")))))) ;; Create a wrapper for Samba. This allows QEMU to use Samba without @@ -455,7 +445,6 @@ exec smbd $@"))) pulseaudio sdl2 seabios-qemu - sgabios spice usbredir util-linux @@ -510,8 +499,7 @@ server and embedded PowerPC, and S390 guests.") (define-public qemu-minimal ;; QEMU without GUI support, only supporting the host's architecture - (package - (inherit qemu) + (package/inherit qemu (name "qemu-minimal") (outputs '("out" "doc")) (synopsis @@ -554,7 +542,14 @@ server and embedded PowerPC, and S390 guests.") #~(modify-phases #$phases (delete 'configure-user-static) (delete 'build-user-static) - (delete 'install-user-static))))) + (delete 'install-user-static) + (add-after 'disable-unusable-tests 'disable-extra-tests + (lambda _ + ;; Interesting, the iothreads-commit-active test only fails in + ;; qemu-minimal, not the complete variant (see: + ;; https://gitlab.com/qemu-project/qemu/-/issues/1855). + (delete-file + "tests/qemu-iotests/tests/iothreads-commit-active"))))))) ;; Remove dependencies on optional libraries, notably GUI libraries. (native-inputs (filter (lambda (input) @@ -673,7 +668,13 @@ firmware blobs. You can "ganeti-shepherd-master-failover.patch" "ganeti-haskell-pythondir.patch" "ganeti-pyyaml-compat.patch" - "ganeti-disable-version-symlinks.patch")))) + "ganeti-procps-compat.patch" + "ganeti-disable-version-symlinks.patch" + "ganeti-lens-compat.patch" + "ganeti-template-haskell-2.17.patch" + "ganeti-template-haskell-2.18.patch" + "ganeti-reorder-arbitrary-definitions.patch" + "ganeti-relax-dependencies.patch")))) (build-system gnu-build-system) (arguments `(#:imported-modules (,@%gnu-build-system-modules @@ -1915,83 +1916,81 @@ Machine Protocol.") (define-public looking-glass-client (package (name "looking-glass-client") - (version "B5") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/gnif/LookingGlass") - (commit version) - (recursive? #t))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "09mn544x5hg1z31l92ksk7fi7yj9r8xdk0dcl9fk56ivcr452ylm")))) + (version "B6") + (source (origin + (method url-fetch) + (uri (string-append "https://looking-glass.io/artifact/" version + "/source")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "15d7wwbzfw28yqbz451b6n33ixy50vv8acyzi8gig1mq5a8gzdib")))) (build-system cmake-build-system) - (inputs - (list bash-minimal - fontconfig - freetype - glu - gmp - libglvnd - libiberty - libx11 - libxcursor - libxfixes - libxi - libxinerama - libxkbcommon - libxpresent - libxrandr - libxscrnsaver - mesa - openssl - sdl2 - sdl2-ttf - spice-protocol - wayland - wayland-protocols - `(,zlib "static"))) - (native-inputs (list libconfig nettle pkg-config)) + (inputs (list bash-minimal + font-dejavu + fontconfig + freetype + glu + gmp + libglvnd + libiberty + libsamplerate + libx11 + libxcursor + libxfixes + libxi + libxinerama + libxkbcommon + libxpresent + libxrandr + libxscrnsaver + mesa + pipewire + pulseaudio + spice-protocol + wayland + wayland-protocols + `(,zlib "static"))) + (native-inputs (list nettle pkg-config)) (arguments - `(#:tests? #f ;; No tests are available. - #:make-flags '("CC=gcc") - #:phases (modify-phases %standard-phases - (add-before 'configure 'chdir-to-client - (lambda* (#:key outputs #:allow-other-keys) - (chdir "client") - #t)) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (install-file "looking-glass-client" - (string-append (assoc-ref outputs "out") - "/bin")) - #t)) - (add-after 'install 'wrapper - (lambda* (#:key inputs outputs #:allow-other-keys) - (wrap-program - (string-append (assoc-ref outputs "out") - "/bin/looking-glass-client") - `("LD_LIBRARY_PATH" ":" prefix - ,(map (lambda (name) - (let ((input (assoc-ref inputs name))) - (string-append input "/lib"))) - '("gmp" - "libxi" - "nettle" - "mesa" - "wayland" - "fontconfig-minimal" - "freetype" - "libx11" - "libxfixes" - "libxscrnsaver" - "libxinerama")))) - #t))))) + (list #:tests? #f ;No tests are available. + ;; Package uses "-march=native" by default. We disable that to build with the + ;; lowest supported architecture for reproducibility and CPU compatibility. + #:configure-flags #~'("-DOPTIMIZE_FOR_NATIVE=OFF") + #:make-flags #~'("CC=gcc") + #:phases #~(modify-phases %standard-phases + (add-before 'configure 'chdir-to-client + (lambda* (#:key outputs #:allow-other-keys) + (chdir "client"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (install-file "looking-glass-client" + (string-append (assoc-ref outputs + "out") + "/bin")))) + (add-after 'install 'wrapper + (lambda* (#:key inputs outputs #:allow-other-keys) + (wrap-program (string-append (assoc-ref outputs + "out") + "/bin/looking-glass-client") + `("LD_LIBRARY_PATH" ":" prefix + ,(map (lambda (name) + (let ((input (assoc-ref inputs name))) + (string-append input "/lib"))) + '("gmp" "libxi" + "nettle" + "mesa" + "wayland" + "fontconfig-minimal" + "freetype" + "libx11" + "libxfixes" + "libxscrnsaver" + "libxinerama"))))))))) (home-page "https://looking-glass.io/") (synopsis "KVM Frame Relay (KVMFR) implementation") - (description "Looking Glass allows the use of a KVM (Kernel-based Virtual + (description + "Looking Glass allows the use of a KVM (Kernel-based Virtual Machine) configured for VGA PCI Pass-through without an attached physical monitor, keyboard or mouse. It displays the VM's rendered contents on your main monitor/GPU.") @@ -2002,7 +2001,7 @@ main monitor/GPU.") (define-public runc (package (name "runc") - (version "1.1.1") + (version "1.1.9") (source (origin (method url-fetch) (uri (string-append @@ -2011,7 +2010,7 @@ main monitor/GPU.") (file-name (string-append name "-" version ".tar.xz")) (sha256 (base32 - "0jx56x49dgkygdbrfb3pmxycy1n37arj97jra8n422dj36xz1hbm")))) + "1hhxqwg0mblrgv2aim3scfd9xg13l6i22j124sdma5sf2fzgx5bn")))) (build-system go-build-system) (arguments '(#:import-path "github.com/opencontainers/runc" |