diff options
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/services/virtualization.scm | 16 | ||||
| -rw-r--r-- | gnu/tests/virtualization.scm | 20 |
2 files changed, 28 insertions, 8 deletions
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm index fc42dcb8a79..3c9aadaae3f 100644 --- a/gnu/services/virtualization.scm +++ b/gnu/services/virtualization.scm | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | ;;; Copyright © 2024 Raven Hallsby <karl@hallsby.com> | 9 | ;;; Copyright © 2024 Raven Hallsby <karl@hallsby.com> |
| 10 | ;;; Copyright © 2025 Maxim Cournoyer <maxim@guixotic.coop> | 10 | ;;; Copyright © 2025 Maxim Cournoyer <maxim@guixotic.coop> |
| 11 | ;;; Copyright © 2025 Nigko Yerden <nigko.yerden@gmail.com> | 11 | ;;; Copyright © 2025 Nigko Yerden <nigko.yerden@gmail.com> |
| 12 | ;;; Copyright © 2026 Giacomo Leidi <therewasa@fishinthecalculator.me> | ||
| 12 | ;;; | 13 | ;;; |
| 13 | ;;; This file is part of GNU Guix. | 14 | ;;; This file is part of GNU Guix. |
| 14 | ;;; | 15 | ;;; |
| @@ -493,10 +494,21 @@ avoid potential infinite waits blocking libvirt.")) | |||
| 493 | (list (user-group (name "libvirt") (system? #t)))) | 494 | (list (user-group (name "libvirt") (system? #t)))) |
| 494 | 495 | ||
| 495 | (define (%libvirt-activation config) | 496 | (define (%libvirt-activation config) |
| 496 | (let ((sock-dir (libvirt-configuration-unix-sock-dir config))) | 497 | (let ((package (libvirt-configuration-libvirt config)) |
| 498 | (sock-dir (libvirt-configuration-unix-sock-dir config))) | ||
| 497 | #~(begin | 499 | #~(begin |
| 498 | (use-modules (guix build utils)) | 500 | (use-modules (guix build utils)) |
| 499 | (mkdir-p #$sock-dir)))) | 501 | (mkdir-p #$sock-dir) |
| 502 | (mkdir-p "/etc/libvirt/qemu/networks") | ||
| 503 | ;; special-files-service-type could be used but it creates a file union | ||
| 504 | ;; and libvirtd needs to write in /etc/libvirt. This makes /etc/libvirt | ||
| 505 | ;; read-only and libvirt crashes at startup. activate-special-files | ||
| 506 | ;; creates a single symlink to the store for | ||
| 507 | ;; /etc/libvirt/qemu/networks/default.xml so libvirt doesn't notice and | ||
| 508 | ;; starts successfully. | ||
| 509 | (activate-special-files | ||
| 510 | '(("/etc/libvirt/qemu/networks/default.xml" | ||
| 511 | #$(file-append package "/etc/libvirt/qemu/networks/default.xml"))))))) | ||
| 500 | 512 | ||
| 501 | (define (libvirt-shepherd-service config) | 513 | (define (libvirt-shepherd-service config) |
| 502 | (let* ((config-file (libvirt-conf-file config)) | 514 | (let* ((config-file (libvirt-conf-file config)) |
diff --git a/gnu/tests/virtualization.scm b/gnu/tests/virtualization.scm index 070ceecc2c6..05b2e0748b0 100644 --- a/gnu/tests/virtualization.scm +++ b/gnu/tests/virtualization.scm | |||
| @@ -119,15 +119,23 @@ | |||
| 119 | "-c" "qemu:///system" "connect")) | 119 | "-c" "qemu:///system" "connect")) |
| 120 | marionette)) | 120 | marionette)) |
| 121 | 121 | ||
| 122 | (test-eq "create default network" | 122 | (test-equal "default network is inactive" |
| 123 | 0 | 123 | "no" |
| 124 | (marionette-eval | 124 | (marionette-eval |
| 125 | '(begin | 125 | '(begin |
| 126 | (use-modules (ice-9 popen) | ||
| 127 | (ice-9 textual-ports)) | ||
| 126 | (chdir "/tmp") | 128 | (chdir "/tmp") |
| 127 | (system* #$(file-append libvirt "/bin/virsh") | 129 | (define port |
| 128 | "-c" "qemu:///system" "net-define" | 130 | (open-input-pipe |
| 129 | #$(file-append libvirt | 131 | (string-join '(#$(file-append libvirt "/bin/virsh") |
| 130 | "/etc/libvirt/qemu/networks/default.xml"))) | 132 | "-c" "qemu:///system" "net-info" |
| 133 | "default" "|" "grep" "Active:" "|" | ||
| 134 | "awk" "'{ print $2; }'") | ||
| 135 | " "))) | ||
| 136 | (define answer (get-string-all port)) | ||
| 137 | (close-port port) | ||
| 138 | (string-trim-both answer)) | ||
| 131 | marionette)) | 139 | marionette)) |
| 132 | 140 | ||
| 133 | (test-eq "start default network" | 141 | (test-eq "start default network" |
