aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-02-18 11:29:10 +0100
committerLudovic Courtès <ludo@gnu.org>2022-02-18 14:14:39 +0100
commit01821914e272ed682dc83b5163c17a0345dcaf17 (patch)
tree0edbf9a107ea4ebd14d700410762a2b78a2a979e
parent0ca26437cb36822f9f74ee1a6dbc714477378b13 (diff)
downloadguix-01821914e272ed682dc83b5163c17a0345dcaf17.tar
guix-01821914e272ed682dc83b5163c17a0345dcaf17.tar.gz
services: qemu-guest-agent: Fix implementation.
Previously, by accessing the raw <qemu-guest-agent-configuration> fields, 'qemu' would match the first field, which is the '%location' field, not the 'qemu' field. It would seem this bug has always been present since the addition of the 'location' field in d132d9f96ba34bca58b18e293e03b393054fd962 predates the addition of 'qemu-guest-agent-service-type' in f634a0baab85454a6feac25e29905f564b276c9e. Fixes <https://issues.guix.gnu.org/54041>. Reported by Ricardo Wurmus <rekado@elephly.net>. * gnu/services/virtualization.scm (qemu-guest-agent-shepherd-service): Use accessors for <qemu-guest-agent-configuration>.
-rw-r--r--gnu/services/virtualization.scm36
1 files changed, 18 insertions, 18 deletions
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 66ae1a1565..9b4512cff7 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ryan Moe <ryan.moe@gmail.com>
-;;; Copyright © 2018, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2020-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Timotej Lazar <timotej.lazar@araneo.si>
;;;
@@ -866,23 +866,23 @@ functionality of the kernel Linux.")))
"Path to device or socket used to communicate with the host. If not
specified, the QEMU default path is used."))
-(define qemu-guest-agent-shepherd-service
- (match-lambda
- (($ <qemu-guest-agent-configuration> qemu device)
- (list
- (shepherd-service
- (provision '(qemu-guest-agent))
- (documentation "Run the QEMU guest agent.")
- (start #~(make-forkexec-constructor
- `(,(string-append #$qemu "/bin/qemu-ga") "--daemon"
- "--pidfile=/var/run/qemu-ga.pid"
- "--statedir=/var/run"
- ,@(if #$device
- (list (string-append "--path=" #$device))
- '()))
- #:pid-file "/var/run/qemu-ga.pid"
- #:log-file "/var/log/qemu-ga.log"))
- (stop #~(make-kill-destructor)))))))
+(define (qemu-guest-agent-shepherd-service config)
+ (let ((qemu (qemu-guest-agent-configuration-qemu config))
+ (device (qemu-guest-agent-configuration-device config)))
+ (list
+ (shepherd-service
+ (provision '(qemu-guest-agent))
+ (documentation "Run the QEMU guest agent.")
+ (start #~(make-forkexec-constructor
+ `(,(string-append #$qemu "/bin/qemu-ga") "--daemon"
+ "--pidfile=/var/run/qemu-ga.pid"
+ "--statedir=/var/run"
+ ,@(if #$device
+ (list (string-append "--path=" #$device))
+ '()))
+ #:pid-file "/var/run/qemu-ga.pid"
+ #:log-file "/var/log/qemu-ga.log"))
+ (stop #~(make-kill-destructor))))))
(define qemu-guest-agent-service-type
(service-type