GNU bug report logs - #72249
[PATCH 0/2] Add xe-guest-utilities and daemon

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Karl Hallsby <karl@HIDDEN>; Keywords: patch; dated Tue, 23 Jul 2024 05:16:01 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 72249 <at> debbugs.gnu.org:


Received: (at 72249) by debbugs.gnu.org; 11 Jan 2025 21:46:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jan 11 16:46:11 2025
Received: from localhost ([127.0.0.1]:45159 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tWjJ4-0006mF-P7
	for submit <at> debbugs.gnu.org; Sat, 11 Jan 2025 16:46:11 -0500
Received: from mail-io1-xd2d.google.com ([2607:f8b0:4864:20::d2d]:52631)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <karl@HIDDEN>) id 1tWjJ2-0006lz-Of
 for 72249 <at> debbugs.gnu.org; Sat, 11 Jan 2025 16:46:09 -0500
Received: by mail-io1-xd2d.google.com with SMTP id
 ca18e2360f4ac-844ee15d6f4so246520439f.1
 for <72249 <at> debbugs.gnu.org>; Sat, 11 Jan 2025 13:46:08 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=hallsby.com; s=google; t=1736631962; x=1737236762; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:user-agent
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=R1Erk3reqiiWY3rN/edSQOizAaz84yCLMU9kSh5IKaY=;
 b=UoW8jzx2Ti+Do0PxheiMH1LRfIlme+OLOkz+8fXurhBan3ZkSZcCmlNP1SMumuFevJ
 aZvp7sBsmqJhapEtLXAejHjJEI6YuVdOl1+rQ0MzFTenWpGnhMfhwNpB0Yd5LN0n+MjE
 dVOcWIxw6gAKWI82f+jzIwbcKc0QebWDQtzP0X8icohcgGrRc9TPbgXe4rj2pkG+to20
 N8bS043hIJAAJ8xlhBqwm7DIwBA1+OgVKm5BBuKVM0T46eVUQieFXIlspWVq0l69uIAS
 aQLUhCtvN35Znn3XhJZbg3cTiVh0crnkVe2k0NHUon4TrVN4Bpb5aNjDAcapD+jR2mbt
 wk8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1736631962; x=1737236762;
 h=content-transfer-encoding:mime-version:message-id:date:user-agent
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=R1Erk3reqiiWY3rN/edSQOizAaz84yCLMU9kSh5IKaY=;
 b=jTMs6sWJR1Q3MaYZSUjMeZBwLffJxBzpaBYNOz04mrWtOvO2GkzEOZnczYfUoRL44s
 QBmsHNid3U+V8cHA/Kpa2alxXR/kmmrRaij+ABI7DWMOdKX6LJmu5u4QwG/y7bUj57H6
 E2HnWu5VqkjtOeyvBfUMH/RDzWIutDrcB3uWv87daC0Gy1MQk3isyAVXG4eNYoPjga+S
 IRUZ6ybwFfYKk5OK60GCf0gGCOzL+vJSjPlEZrTA7FkpgV2X4R4UBsOX1hZG4MN7nVtT
 V4DLeof3U7B6NP0gZxd2X9oGzOpDrDhasZVvRGiEj7YxcVIBNfghM+jkEnirRGnK1C5H
 FMfw==
X-Gm-Message-State: AOJu0YxDf1twBCKRX3PD5k1z4aG03UQO5XA3NJDD5cu7y3Mp/Hw764wv
 vzmTAKvkGN1qzKbeej7HMgSDrbNHCV1gGG3PpGXB5NfttOhiCLhjsGwLENvOY7ksUdb2oPTp/SQ
 =
X-Gm-Gg: ASbGnctUGH1WNrnRB6JYCym0XQm80wHwCFF9FchSMnVDbC9e9+N824eYws21m3LpRSE
 yahGmWvHn8zsVgiArRkoaM5gUGGB5EePrImQyHDFyCJRI06USZciDKcb5q5RHfmGx5tbJ8HZuTl
 XJJ+e3gEYNMludc3ybMXiLZUMnfmrj1A8t5sQmxWeQCWPMl10uAqAcoXleWoSWUOBy6GmCTLKFt
 7/HtGlOndDQP8kS/ALZS7rqQ5bnv9K3bsGygvCEme1mep0unA==
X-Google-Smtp-Source: AGHT+IGSPo+BMX6qr4r0m2Ftty3EDG6Ei09njoor29npqqM/u2AiEO4/k0pCl1qwZFDY816jM+Ah/Q==
X-Received: by 2002:a05:6602:6cc6:b0:843:e8d0:a728 with SMTP id
 ca18e2360f4ac-84ce0092d9dmr1644134439f.4.1736631962029; 
 Sat, 11 Jan 2025 13:46:02 -0800 (PST)
Received: from localhost ([207.237.222.72]) by smtp.gmail.com with ESMTPSA id
 ca18e2360f4ac-84d4fb32323sm176326439f.19.2025.01.11.13.46.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 11 Jan 2025 13:46:00 -0800 (PST)
From: "Karl G. Hallsby" <karl@HIDDEN>
To: 72249 <at> debbugs.gnu.org
Subject: Re: [bug#72249] [PATCH 2/2] services: Add
 xe-guest-utilities-service-type.
In-Reply-To: <87plkwp0df.fsf@HIDDEN> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?=
 =?utf-8?Q?s?= message of "Thu, 09 Jan 2025 14:45:00 +0100")
References: <6920fcb2b7edd619b323c7f70d076a7a73ab0463.1736366732.git.karl@HIDDEN>
 <05dbe98e7be3b45ddbf4a49df643e35333df78e7.1736366732.git.karl@HIDDEN>
 <87plkwp0df.fsf@HIDDEN>
User-Agent: mu4e 1.12.7; emacs 29.4
Date: Sat, 11 Jan 2025 15:45:59 -0600
Message-ID: <87ed19nhwo.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 72249
Cc: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>,
 Maxim Cournoyer <maxim.cournoyer@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi,

Ludovic Court=C3=A8s <ludo@HIDDEN> writes:

> =E2=80=9CXen=E2=80=9D, capitalized.

> It would be nice to add a sentence or two about what said utilities do,
> perhaps with a link to upstream documentation if that helps?

> (We use the term =E2=80=9Cpath=E2=80=9D for =E2=80=9Csearch paths=E2=80=
=9D.)

All requested changes to documentation have been made.

P.S. Sorry for double-emailing you Ludo, I'm still figuring out how to
make Emacs, mu4e, debbugs, and everything else play well together.




Information forwarded to guix-patches@HIDDEN:
bug#72249; Package guix-patches. Full text available.

Message received at 72249 <at> debbugs.gnu.org:


Received: (at 72249) by debbugs.gnu.org; 10 Jan 2025 07:01:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 10 02:01:24 2025
Received: from localhost ([127.0.0.1]:56203 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tW91I-0000C0-3m
	for submit <at> debbugs.gnu.org; Fri, 10 Jan 2025 02:01:24 -0500
Received: from mail-io1-xd29.google.com ([2607:f8b0:4864:20::d29]:57744)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <karl@HIDDEN>) id 1tW91F-0000Bk-Ci
 for 72249 <at> debbugs.gnu.org; Fri, 10 Jan 2025 02:01:22 -0500
Received: by mail-io1-xd29.google.com with SMTP id
 ca18e2360f4ac-844dfe4b136so43867839f.3
 for <72249 <at> debbugs.gnu.org>; Thu, 09 Jan 2025 23:01:21 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=hallsby.com; s=google; t=1736492474; x=1737097274; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:subject:cc
 :to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=Z0EJee9vFjm9IXj8noabH1VxgucUslavG+ol44X00ZY=;
 b=VIcxdsHRRV9sIyb97R5aMFp4D9LWxsFbynIr4zGFUV4LUYcFjCXxMeqzlL0gajac4o
 RpN7kXVlR0abdkvBLL08SHPKzOUheGmuqj9eOzdv8uyqF5ypc67ufnXJJeHHuN9gNM98
 rym4o8RSG/XQc9yRwRdhFiRZ0rk5z5nSWJJZMTolymAHr//Q8LxsHpCR7N/hBJUq+G1X
 1nkfuN0GSRmxSBSeNoTonE/EfOtQILZbkjeLxeUIMQ3BuYZl1RdzOBKJay4ISUKlkw5w
 PT8NuNG/9NXTUN1iYymn64Ks70r3a9zMXGmUIdmJv0aK/Ja/Fp/96dUVk3cHBS+3DUXP
 GKpw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1736492474; x=1737097274;
 h=content-transfer-encoding:mime-version:message-id:date:subject:cc
 :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=Z0EJee9vFjm9IXj8noabH1VxgucUslavG+ol44X00ZY=;
 b=J+xXNtvdzSmXE/O2UU+Rewj3cVy/1VKbTNUFVNSalwMujxquxbHvHv2j+1LmS6dF2q
 f+tOkH6jg4FZe5T+tuONRUqXK9z0XDWIoRXbh60jMnRtc02mEs7pkpL+pH0Y5cbmYmG3
 ui9IIp/NGjK6vAunBZc5x39WO70pyhk8aJxfujYrd+LUWfU7RsDLi8tmM3wqbGl0KCAu
 xb5oK+lcDxDINzLgVESWzykQQX7QwFNK5Ib27i1vYUYHeuFwSYkYmei2t/odrF9kdjsi
 xXYWESbg6SK94Q4jmEDbS4R0ZVDJKQIFjAjVqaIoOUYpEdvVRHHdK05Q0XxHm/Ul9SCh
 +ErA==
X-Gm-Message-State: AOJu0YyA0ocmZe4x/vwMSm/BjkpF8Hio+SlnjJGLQJoFo6anZ+f6Vngo
 a9VfbKEBY9SJEqMTZQfvSkN9G2Tqxb8vhQ1Ywbjxe7MkWzZzm5qICkTFfYdZJhKWkwFsEzSXhNs
 =
X-Gm-Gg: ASbGncthZ5QZ/9UF5ug1vc6B/lIZbO+q4G79UyoR2Kuem9f/ZM9PZKpNzkPqxevll0l
 Js54jjUZoG8hAC/9NLuUj42ckZcTxkypY02HUqnVbyrTmMirPOzR11n9OSKynUajZP7q/BfIbes
 Rc0AvY6y5GMBKvKKtlFUSvIW1CTFGtTR+NjWUwbytZAydj6+4hAYk4Isx2K+ZiOuC8vegNjihpd
 yUFyFsuNE0ME5Ye4F99gDM5GEH6eGZNWrOup/g5sMi1oDqoDfoayhMtOicDwA==
X-Google-Smtp-Source: AGHT+IEo/ksnhlcoB5dKJ11u2knNlsw28Z7QQIK5aNq3/m9f7yRwlLJHgjgVf1pN+C6FxLvdzzyjLg==
X-Received: by 2002:a05:6602:36cf:b0:843:e9c1:930b with SMTP id
 ca18e2360f4ac-84ce0194e69mr919091939f.14.1736492474359; 
 Thu, 09 Jan 2025 23:01:14 -0800 (PST)
Received: from Karl-Desktop.raven ([207.237.222.72])
 by smtp.gmail.com with ESMTPSA id
 8926c6da1cb9f-4ea1b5f83cdsm743437173.15.2025.01.09.23.01.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 09 Jan 2025 23:01:12 -0800 (PST)
From: Karl Hallsby <karl@HIDDEN>
To: 72249 <at> debbugs.gnu.org
Subject: [PATCH] services: Add xe-guest-utilities-service-type.
Date: Fri, 10 Jan 2025 01:00:59 -0600
Message-ID: <73106db7b8187d4b6bcc5d0c421ea3314ed7a498.1736491649.git.karl@HIDDEN>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
X-Debbugs-Cc: Ludovic Courtès <ludo@HIDDEN>, Maxim Cournoyer <maxim.cournoyer@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 72249
Cc: Karl Hallsby <karl@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/services/virtualization.scm (xe-guest-utilities-configuration,
  xe-guest-utilities-service-type): New variables.
* doc/guix.texi: Document them.

Change-Id: Ife4e79fa6d1a9d5a21bf7479488884f2a5cf8d56
---
 doc/guix.texi                   | 71 +++++++++++++++++++++++++++++
 gnu/services/virtualization.scm | 81 ++++++++++++++++++++++++++++++++-
 2 files changed, 151 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index f7b7569887..afb886128b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -37328,6 +37328,77 @@ Virtualization Services
 @end table
 @end deftp
 
+@subsubheading Xen Guest Agent
+
+@cindex Xen
+@cindex Xen guest agent
+
+The Xen guest agent allows a Xen host to control the emulated system.
+The @code{xe-guest-utilities} service runs the agent on Guix guests.
+
+@url{https://github.com/xenserver/xe-guest-utilities, xe-guest-utilities} collects information about the running virtualized guest. This includes:
+@itemize
+@item
+static information
+@itemize
+@item
+The operating system running
+@item
+The Linux kernel version
+@end itemize
+
+@item
+dynamic information
+@itemize
+@item
+Network interfaces (devices) being added/removed
+@item
+Network connections being unplugged/plugged-in
+@item
+CPUs being added or removed
+@item
+The guest migrating, being paused/resumed, etc.
+@end itemize
+
+@item
+ephemeral information
+@itemize
+@item
+The amount of memory currently in-use and free
+@item
+The amount of disk-space used
+@end itemize
+@end itemize
+
+@quotation Note
+The default Linux-libre kernel that Guix ships already enables the
+necessary paravirtualization features for a guest.  There is nothing you
+need to do for the guest to support Xen's paravirtualization features.
+
+The guest utilities are used to have the guest report information
+@emph{back} to the virtualizing host and support tasks that require
+cooperation between host and guest, like CPU hotplugging.
+@end quotation
+
+@defvar xe-guest-utilities-service-type
+Service type for the Xen guest utilities service.
+@end defvar
+
+@deftp {Data Type} xe-guest-utilities-configuration
+Configuration for the @code{xe-guest-utilities} service.
+
+@table @asis
+@item @code{package} (default: @code{xe-guest-utilities})
+The Xen guest utilities package to use.
+
+@item @code{pid-file} (default: @code{"/var/run/xe-daemon.pid"})
+Name of the file holding the PID of @code{xe-deamon}.
+
+@item @code{log-file} (default: @code{"/var/log/xe-guest-utilities.log"})
+Name of the @code{xe-guest-utilities} log file.
+@end table
+@end deftp
+
 
 @anchor{build-vm}
 @subsubheading Virtual Build Machines
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index c32c47484c..874abcd73f 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -33,6 +33,9 @@ (define-module (gnu services virtualization)
   #:autoload   (gnu packages gnupg) (guile-gcrypt)
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages gawk)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu services base)
   #:use-module (gnu services configuration)
@@ -107,7 +110,10 @@ (define-module (gnu services virtualization)
 
             qemu-guest-agent-configuration
             qemu-guest-agent-configuration?
-            qemu-guest-agent-service-type))
+            qemu-guest-agent-service-type
+
+            xe-guest-utilities-configuration
+            xe-guest-utilities-service-type))
 
 (define (uglify-field-name field-name)
   (let ((str (symbol->string field-name)))
@@ -1004,6 +1010,79 @@ (define qemu-guest-agent-service-type
    (default-value (qemu-guest-agent-configuration))
    (description "Run the QEMU guest agent.")))
 
+
+;;;
+;;; Guest agent for VMs running under Xen
+;;;
+(define-configuration/no-serialization xe-guest-utilities-configuration
+  (package
+   (package xe-guest-utilities)
+   "Xen guest management utilities package.")
+  (pid-file
+   (string "/var/run/xe-daemon.pid")
+   "Path to the file holding the PID of xe-deamon.")
+  (log-file
+   (string "/var/log/xe-guest-utilties.log")
+   "Path to xe-guest-utilities log file."))
+
+(define (generate-xe-guest-utilities-documentation)
+  "Generate documentation for xe-guest-utilities-configuration fields"
+  (generate-documentation
+   `((xe-guest-utilities-configuration ,xe-guest-utilities-configuration-fields))
+   'xe-guest-utilities-configuration))
+
+(define (xe-guest-utilities-shepherd-service config)
+  (let ((xe-guest-utils (xe-guest-utilities-configuration-package config))
+        (pid-file (xe-guest-utilities-configuration-pid-file config))
+        (log-file (xe-guest-utilities-configuration-log-file config)))
+    (list
+     (shepherd-service
+      (provision '(xen-guest-agent))
+      (requirement '(networking user-processes udev))
+      (documentation "Run the Xen guest management agent.")
+      (start
+       #~(lambda _
+           (let ((pid (make-forkexec-constructor
+                       (list
+                        #$(file-append xe-guest-utils
+                                       "/sbin/xe-daemon")
+                        "-p" #$pid-file)
+                       #:log-file #$log-file
+                       #:pid-file #$pid-file
+                       #:environment-variables
+                       (list (string-append
+                              "PATH="
+                              #$(file-append xe-guest-utils "/bin") ":"
+                              ;; logger
+                              #$(file-append inetutils "/bin"))))))
+             ;; Run xe-linux-distribution script before starting the actual
+             ;; daemon. The script collects some basic system information that
+             ;; is shared back to the Xen host.
+             (system* #$(file-append xe-guest-utils "/sbin/xe-linux-distribution")
+                      "/var/cache/xe-linux-distribution")
+             ;; Finally, start and return the PID made by
+             ;; make-forkexec-constructor.
+             pid)))
+      (stop #~(make-kill-destructor))))))
+
+(define (xe-guest-utilities-udev-rules-service config)
+  (let ((guest-utils (xe-guest-utilities-configuration-package config)))
+    (list
+     (file->udev-rule
+      "z10_xen-vcpu-hotplug.rules"
+      (file-append guest-utils "/lib/udev/rules.d/z10_xen-vcpu-hotplug.rules")))))
+
+(define xe-guest-utilities-service-type
+  (service-type
+   (name 'xe-guest-utilities)
+   (extensions
+    (list (service-extension shepherd-root-service-type
+                             xe-guest-utilities-shepherd-service)
+          (service-extension udev-service-type
+                             xe-guest-utilities-udev-rules-service)))
+   (default-value (xe-guest-utilities-configuration))
+   (description "Run the Xen guest management utilities.")))
+
 
 ;;;
 ;;; Secrets for guest VMs.

base-commit: 4eaeff997907bc1b67884a6dc087756a50f175e2
prerequisite-patch-id: daabcb5995f03ed867a27648e973e1c2203f2bc9
-- 
2.46.0





Information forwarded to ludo@HIDDEN, maxim.cournoyer@HIDDEN, guix-patches@HIDDEN:
bug#72249; Package guix-patches. Full text available.

Message received at 72249 <at> debbugs.gnu.org:


Received: (at 72249) by debbugs.gnu.org; 9 Jan 2025 13:45:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 09 08:45:13 2025
Received: from localhost ([127.0.0.1]:51196 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tVsqX-0000NY-Bd
	for submit <at> debbugs.gnu.org; Thu, 09 Jan 2025 08:45:13 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:39528)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1tVsqU-0000IU-Ql
 for 72249 <at> debbugs.gnu.org; Thu, 09 Jan 2025 08:45:12 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1tVsqP-0003xj-Da; Thu, 09 Jan 2025 08:45:05 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To:
 From; bh=8vXZIHRqtGw9Mwwt2PHRHk2hAr5xzV5fyY8puuhD+NA=; b=RJcc+CiaFBVkD9AT+gFQ
 nrTKGggfBU1jWOOs53ncLP0f5V0zgAYmiE9AR6wkv9iIMxrVm+9SDiSvtmF+GryQa50Ltmj0ldQ85
 cfhhWRELnXoiT/LtZLffbGbRCX+TU6xQ/Mb5mJN3GeWIsHr3wZwgIkTMPpYw1r8JwiDRCP0QXr/RP
 jQYIbx2aaLPc2kt8hQ5MDKaLe2+Brq1lVsCG7ZSmCET5Ga54IXSA6CMuw9IbrqkTMlq0rqsVEWOMt
 BKB7wysv2hwEFh1WbNmr/9xH4UaqSKr+u+Fwy3uccy+qZmcXLzpg/kmxdUObpdOK1Zq7blHo1D7Gz
 SoAVawfabyFXZg==;
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Karl Hallsby <karl@HIDDEN>
Subject: Re: [bug#72249] [PATCH 2/2] services: Add
 xe-guest-utilities-service-type.
In-Reply-To: <05dbe98e7be3b45ddbf4a49df643e35333df78e7.1736366732.git.karl@HIDDEN>
 (Karl Hallsby's message of "Wed, 8 Jan 2025 14:10:26 -0600")
References: <6920fcb2b7edd619b323c7f70d076a7a73ab0463.1736366732.git.karl@HIDDEN>
 <05dbe98e7be3b45ddbf4a49df643e35333df78e7.1736366732.git.karl@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: =?utf-8?Q?D=C3=A9cadi?= 20 =?utf-8?Q?Niv=C3=B4se?= an
 233 de la =?utf-8?Q?R=C3=A9volution=2C?= jour du Van
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Thu, 09 Jan 2025 14:45:00 +0100
Message-ID: <87plkwp0df.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 72249
Cc: 72249 <at> debbugs.gnu.org, Maxim Cournoyer <maxim.cournoyer@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hello,

Karl Hallsby <karl@HIDDEN> skribis:

> * gnu/services/virtualization.scm (xe-guest-utilities-configuration,
>   xe-guest-utilities-service-type): New variables.
> * doc/guix.texi: Document them.
>
> Change-Id: Ife4e79fa6d1a9d5a21bf7479488884f2a5cf8d56

I=E2=80=99m only looking at the doc side of things.  Minor comments:

> +@cindex xen
> +@cindex xen guest agent

=E2=80=9CXen=E2=80=9D, capitalized.

> +The Xen guest agent allows a Xen host to control the emulated system.
> +The @code{xe-guest-utilities} service runs the agent on Guix guests.

I=E2=80=99m surprised it=E2=80=99s all =E2=80=9Cxe-=E2=80=9D, not =E2=80=9C=
xen-=E2=80=9D, but I guess that=E2=80=99s the way it
is.  :-)

It would be nice to add a sentence or two about what said utilities do,
perhaps with a link to upstream documentation if that helps?

> +@item @code{log-file} (default: @code{"/var/log/xe-guest-utilities.log"})
> +Path to @code{xe-guest-utilities} log file.

=E2=80=9CName of the @code{xe-guest-utilities} log file.=E2=80=9D

(We use the term =E2=80=9Cpath=E2=80=9D for =E2=80=9Csearch paths=E2=80=9D.)

Apart from that LGTM!

Thanks,
Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#72249; Package guix-patches. Full text available.

Message received at 72249 <at> debbugs.gnu.org:


Received: (at 72249) by debbugs.gnu.org; 8 Jan 2025 20:10:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 08 15:10:46 2025
Received: from localhost ([127.0.0.1]:49094 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tVcO5-0000aQ-PF
	for submit <at> debbugs.gnu.org; Wed, 08 Jan 2025 15:10:46 -0500
Received: from mail-io1-xd2c.google.com ([2607:f8b0:4864:20::d2c]:45296)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <karl@HIDDEN>) id 1tVcO2-0000Zx-0d
 for 72249 <at> debbugs.gnu.org; Wed, 08 Jan 2025 15:10:42 -0500
Received: by mail-io1-xd2c.google.com with SMTP id
 ca18e2360f4ac-844eac51429so10053039f.2
 for <72249 <at> debbugs.gnu.org>; Wed, 08 Jan 2025 12:10:42 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=hallsby.com; s=google; t=1736367036; x=1736971836; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=8al9n/9z98ESk4P6kMa6R8/5phOstQcIlC/YejfmFA4=;
 b=Qm/u4lBZ6fTC04c/3lLGwDs3kcqqO4qJHFa6QCY1SaxygBmVlwOK8ODiF9xxDmJPuH
 zbEK1TggFqBbI+tNdtPo8i+x3DqY0SwDZd1d+n1w6K+HO92Q3w+JIE3UlTvJBdis8phq
 0ex+D5K4cI3rub1Zr+dnORx/DpZZMAL1v2hQZFqouNp6SDyetY5dmnpSvlrMCgGd2XCM
 zNY5JCf9mFI/7LKs/nW8Cg5/Orhrm3RIzumgLaIwNdcofpxkjKFwrSYq4YgRLaopH3C1
 949DmRg0oUD7P7DHyzkb/ISKRCofhkzDTOwVRPo3RVSYiMw/CNV7Ig0EzJlz3zqRBP3t
 Fqxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1736367036; x=1736971836;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=8al9n/9z98ESk4P6kMa6R8/5phOstQcIlC/YejfmFA4=;
 b=p3ywhrs81uFo35LKz/3tQoQuox/nHmz7SNBA2rU/oq+BlRGvGL664cEXZAjNqh71sO
 fftRONE0NfDxuXc/SRwdeZzQNNLqm+PHC1a5rKa9MjnqPk081zrLJq1/kbY/y5W4K3Kb
 SPsKQxV9rH+xKqCZbxTwHq0atcUPHKVLplFM0YkyGA3kNigRLnNQr+T9m5Of6/K8Twz/
 nmgFRTj6CH4Do8+Kh5SbMLTzZPl17vBUCvGxzg6Eg0y9yZn+m86+oBhAqSZGIb/epor+
 FBmieCkBlY7b9eBG1Dg14md/c6VRVwwhHQ3d9SXqn+geQ421jNHfyy1bYqVx3R/CRoL/
 21UQ==
X-Gm-Message-State: AOJu0YxHzIdiyX92d3h299MfT4kjw0KR3J9v5Hzkefr4MIQByIjVWOfz
 qjbVMAwYUdwSAdf+T/85xorjliiuSRk165zPvXQUysinK4X/5TVCadRdhEW9DwA5dxl5U5N1QFU
 =
X-Gm-Gg: ASbGnctZgrKUrLV+7WgyPJG+G1mgjv67XVcBjB8Sg/R+J0e4gKJyxbEnpXBddm2j1+3
 9VwO5AawtYzFXgRtUta/WRBVAf+e+4edGxCJJ5DbgnMv7fXQD6zG9/YdSveHkkp6TuzH6YLF6Iy
 yZ8pq7nyUNE/5GCIRNOUMkI/l54zBTzOYpS1z7QVgNvejAkat0ikmYNvfwi1gXA2IW5Hstuc5/P
 XOQ/zxqtnEBdD35MdcotzHDZz1WuP5Qjz1YCpsoO/A43S3Ia8IpgIVcdvc5yA==
X-Google-Smtp-Source: AGHT+IELV2e65PAyCwd3N4iMUxaJFlRaYlJhomZjCfTtKyfBpqSnT5pi+lBOai3gKfBg4J5TvpyXDg==
X-Received: by 2002:a05:6e02:87:b0:3a7:6e72:fbb3 with SMTP id
 e9e14a558f8ab-3ce3a86a52amr36433965ab.4.1736367035910; 
 Wed, 08 Jan 2025 12:10:35 -0800 (PST)
Received: from Karl-Desktop.raven ([207.237.222.72])
 by smtp.gmail.com with ESMTPSA id
 8926c6da1cb9f-4e68c1df14csm10674260173.125.2025.01.08.12.10.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 08 Jan 2025 12:10:35 -0800 (PST)
From: Karl Hallsby <karl@HIDDEN>
To: 72249 <at> debbugs.gnu.org
Subject: [PATCH 2/2] services: Add xe-guest-utilities-service-type.
Date: Wed,  8 Jan 2025 14:10:26 -0600
Message-ID: <05dbe98e7be3b45ddbf4a49df643e35333df78e7.1736366732.git.karl@HIDDEN>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <6920fcb2b7edd619b323c7f70d076a7a73ab0463.1736366732.git.karl@HIDDEN>
References: <6920fcb2b7edd619b323c7f70d076a7a73ab0463.1736366732.git.karl@HIDDEN>
MIME-Version: 1.0
X-Debbugs-Cc: Ludovic Courtès <ludo@HIDDEN>, Maxim Cournoyer <maxim.cournoyer@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 72249
Cc: Karl Hallsby <karl@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/services/virtualization.scm (xe-guest-utilities-configuration,
  xe-guest-utilities-service-type): New variables.
* doc/guix.texi: Document them.

Change-Id: Ife4e79fa6d1a9d5a21bf7479488884f2a5cf8d56
---
 doc/guix.texi                   | 37 +++++++++++++++
 gnu/services/virtualization.scm | 81 ++++++++++++++++++++++++++++++++-
 2 files changed, 117 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index f7b7569887..ee827717a1 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -37328,6 +37328,43 @@ Virtualization Services
 @end table
 @end deftp
 
+@subsubheading Xen Guest Agent
+
+@cindex xen
+@cindex xen guest agent
+
+The Xen guest agent allows a Xen host to control the emulated system.
+The @code{xe-guest-utilities} service runs the agent on Guix guests.
+
+@quotation Note
+The default Linux-libre kernel that Guix ships already enables the
+necessary paravirtualization features for a guest.  There is nothing you
+need to do for the guest to support Xen's paravirtualization features.
+
+The guest utilities are used to have the guest report information
+@emph{back} to the virtualizing host and support tasks that require
+cooperation between host and guest, like CPU hotplugging.
+@end quotation
+
+@defvar xe-guest-utilities-service-type
+Service type for the Xen guest utilities service.
+@end defvar
+
+@deftp {Data Type} xe-guest-utilities-configuration
+Configuration for the @code{xe-guest-utilities} service.
+
+@table @asis
+@item @code{package} (default: @code{xe-guest-utilities})
+The Xen guest utilities package to use.
+
+@item @code{pid-file} (default: @code{"/var/run/xe-daemon.pid"})
+Path to the file holding the PID of xe-deamon.
+
+@item @code{log-file} (default: @code{"/var/log/xe-guest-utilities.log"})
+Path to @code{xe-guest-utilities} log file.
+@end table
+@end deftp
+
 
 @anchor{build-vm}
 @subsubheading Virtual Build Machines
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index c32c47484c..874abcd73f 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -33,6 +33,9 @@ (define-module (gnu services virtualization)
   #:autoload   (gnu packages gnupg) (guile-gcrypt)
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages gawk)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu services base)
   #:use-module (gnu services configuration)
@@ -107,7 +110,10 @@ (define-module (gnu services virtualization)
 
             qemu-guest-agent-configuration
             qemu-guest-agent-configuration?
-            qemu-guest-agent-service-type))
+            qemu-guest-agent-service-type
+
+            xe-guest-utilities-configuration
+            xe-guest-utilities-service-type))
 
 (define (uglify-field-name field-name)
   (let ((str (symbol->string field-name)))
@@ -1004,6 +1010,79 @@ (define qemu-guest-agent-service-type
    (default-value (qemu-guest-agent-configuration))
    (description "Run the QEMU guest agent.")))
 
+
+;;;
+;;; Guest agent for VMs running under Xen
+;;;
+(define-configuration/no-serialization xe-guest-utilities-configuration
+  (package
+   (package xe-guest-utilities)
+   "Xen guest management utilities package.")
+  (pid-file
+   (string "/var/run/xe-daemon.pid")
+   "Path to the file holding the PID of xe-deamon.")
+  (log-file
+   (string "/var/log/xe-guest-utilties.log")
+   "Path to xe-guest-utilities log file."))
+
+(define (generate-xe-guest-utilities-documentation)
+  "Generate documentation for xe-guest-utilities-configuration fields"
+  (generate-documentation
+   `((xe-guest-utilities-configuration ,xe-guest-utilities-configuration-fields))
+   'xe-guest-utilities-configuration))
+
+(define (xe-guest-utilities-shepherd-service config)
+  (let ((xe-guest-utils (xe-guest-utilities-configuration-package config))
+        (pid-file (xe-guest-utilities-configuration-pid-file config))
+        (log-file (xe-guest-utilities-configuration-log-file config)))
+    (list
+     (shepherd-service
+      (provision '(xen-guest-agent))
+      (requirement '(networking user-processes udev))
+      (documentation "Run the Xen guest management agent.")
+      (start
+       #~(lambda _
+           (let ((pid (make-forkexec-constructor
+                       (list
+                        #$(file-append xe-guest-utils
+                                       "/sbin/xe-daemon")
+                        "-p" #$pid-file)
+                       #:log-file #$log-file
+                       #:pid-file #$pid-file
+                       #:environment-variables
+                       (list (string-append
+                              "PATH="
+                              #$(file-append xe-guest-utils "/bin") ":"
+                              ;; logger
+                              #$(file-append inetutils "/bin"))))))
+             ;; Run xe-linux-distribution script before starting the actual
+             ;; daemon. The script collects some basic system information that
+             ;; is shared back to the Xen host.
+             (system* #$(file-append xe-guest-utils "/sbin/xe-linux-distribution")
+                      "/var/cache/xe-linux-distribution")
+             ;; Finally, start and return the PID made by
+             ;; make-forkexec-constructor.
+             pid)))
+      (stop #~(make-kill-destructor))))))
+
+(define (xe-guest-utilities-udev-rules-service config)
+  (let ((guest-utils (xe-guest-utilities-configuration-package config)))
+    (list
+     (file->udev-rule
+      "z10_xen-vcpu-hotplug.rules"
+      (file-append guest-utils "/lib/udev/rules.d/z10_xen-vcpu-hotplug.rules")))))
+
+(define xe-guest-utilities-service-type
+  (service-type
+   (name 'xe-guest-utilities)
+   (extensions
+    (list (service-extension shepherd-root-service-type
+                             xe-guest-utilities-shepherd-service)
+          (service-extension udev-service-type
+                             xe-guest-utilities-udev-rules-service)))
+   (default-value (xe-guest-utilities-configuration))
+   (description "Run the Xen guest management utilities.")))
+
 
 ;;;
 ;;; Secrets for guest VMs.
-- 
2.46.0





Information forwarded to ludo@HIDDEN, maxim.cournoyer@HIDDEN, guix-patches@HIDDEN:
bug#72249; Package guix-patches. Full text available.

Message received at 72249 <at> debbugs.gnu.org:


Received: (at 72249) by debbugs.gnu.org; 8 Jan 2025 20:10:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 08 15:10:43 2025
Received: from localhost ([127.0.0.1]:49092 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tVcO3-0000aF-0o
	for submit <at> debbugs.gnu.org; Wed, 08 Jan 2025 15:10:43 -0500
Received: from mail-io1-xd2c.google.com ([2607:f8b0:4864:20::d2c]:47188)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <karl@HIDDEN>) id 1tVcNy-0000Zt-Sk
 for 72249 <at> debbugs.gnu.org; Wed, 08 Jan 2025 15:10:41 -0500
Received: by mail-io1-xd2c.google.com with SMTP id
 ca18e2360f4ac-84cdb6fba9bso7426339f.2
 for <72249 <at> debbugs.gnu.org>; Wed, 08 Jan 2025 12:10:38 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=hallsby.com; s=google; t=1736367032; x=1736971832; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:subject:cc
 :to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=somyza2vcM3JVbXzqiKgg/8tRBGz7YaOKrulL5YOpaY=;
 b=Sb26c20of/AURoGK8rGljN9PwnZTiHUbPpODt1IIk9sriKhE+IO57CkQXxpX2vWTpf
 HPKt6hzb0iC6CV2NO3F81/zvYpUSf7jMrUZ3u0F+RgghLc240Z1tQSAff8GiJSo6g3wO
 k1AwsjzxkJyoILEAF1IWnC60QTrq5Y8MBq+tyKnNBoCEVJhGzXbrqFMoZ6WKhjORfLa/
 2oVx3qo0kctEWRmO13h2x4lFxLxdULREMODJLCPuqFmf5BTBgzKRftIKLA5v2604eUzJ
 N7LFC+rOcnvUl16By0YBrkLE3L1obnBaEUmp2ITUXFwWOxaeozxn2DCl5vT/F5I0L3o4
 3c6w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1736367032; x=1736971832;
 h=content-transfer-encoding:mime-version:message-id:date:subject:cc
 :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=somyza2vcM3JVbXzqiKgg/8tRBGz7YaOKrulL5YOpaY=;
 b=QBXCvR3UHOW3np8aJpa2fGZl2ilHngW43pWUWnwcIlO/65nambThX8zyoFWODWxgOy
 wxVZsUgIp0UGG73BXpx36uxz/1WRjpWPu6ToOOJKwy2yMIwjuGXWPmLQ4QdiFWPec4if
 IQptCtpMTz8dpO9I4yHBYdZzz+vcxpRw5IWvqx0iPimy0rFVF4m0+ElivI+EX+4SaWt8
 1LPQLQiXWcjlkd/yAPE7EbVAsKNbJtAbWVwyi53XFe6VH1wQlpoWOIy3hCKxghyWnzmZ
 u9kpaXl6XmLj3diR3EXQnZh4IWciJ4YhdmbbrnC50DvXiWjdhqh+Vv2zPCF/vTiqPRYg
 OJGQ==
X-Gm-Message-State: AOJu0YxvNqDLzOcmnDJr+aAWdJyDGEHzRm+W16/lo7pgB2v/1ySnY3kr
 4bIUATPKmYbFEVZgTafYgrREQ3TrQvM1h84d+rcJjc+P0tUq2Xmdzsug7r3dRlqYIswWwu4C36c
 =
X-Gm-Gg: ASbGncuUFYWgWVQoKT8owGTcQOlyI7pEJAIet9wMvk5d9snGwGjvKL8qqJwQ7yNwQV2
 oQ7m07JZ358fY8XMaWgkL+la3dkahysOUz6wP/uvbC6sweA8ymJ1M3caMm4b1w3x0CfKipqgS0b
 /1ojJ3fiUQcUIRB/AKcHWNyyWeU43Nz2p1JEsA/xVcZjq+3uDJxABYrTuwK37Pjoz1AOcWmqf5o
 iFnNjZHBijdpflZAsoTUdIVsrzNZBMNnwvmnvusOzOSW6NUPFxeEs0oP+1MAQ==
X-Google-Smtp-Source: AGHT+IHvmpSFqx64aHr0ZEYcZ2eK15e0bRCO5jVBNQyaNTq3AU/7VcfOZ/Z99A6zDeDg81MIum07KA==
X-Received: by 2002:a05:6e02:87:b0:3a6:c98d:86bc with SMTP id
 e9e14a558f8ab-3ce3a86a258mr39807325ab.1.1736367032301; 
 Wed, 08 Jan 2025 12:10:32 -0800 (PST)
Received: from Karl-Desktop.raven ([207.237.222.72])
 by smtp.gmail.com with ESMTPSA id
 8926c6da1cb9f-4e68c1df14csm10674260173.125.2025.01.08.12.10.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 08 Jan 2025 12:10:31 -0800 (PST)
From: Karl Hallsby <karl@HIDDEN>
To: 72249 <at> debbugs.gnu.org
Subject: [PATCH 1/2] gnu: Add xe-guest-utilities.
Date: Wed,  8 Jan 2025 14:10:25 -0600
Message-ID: <6920fcb2b7edd619b323c7f70d076a7a73ab0463.1736366732.git.karl@HIDDEN>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
X-Debbugs-Cc: Sharlatan Hellseher <sharlatanus@HIDDEN>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 72249
Cc: Karl Hallsby <karl@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/virtualization.scm (xe-guest-utilities): Init at 8.4.0

Change-Id: I4daf19dc1964be00554e1c598ef88897081f5d52
---
 gnu/packages/virtualization.scm | 88 +++++++++++++++++++++++++++++++++
 gnu/services/virtualization.scm |  1 +
 2 files changed, 89 insertions(+)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 9dff421341..3b162474af 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -104,6 +104,7 @@ (define-module (gnu packages virtualization)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages golang)
+  #:use-module (gnu packages golang-build)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
@@ -2772,6 +2773,93 @@ (define-public xen
     (license license:gpl2)
     (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))))
 
+(define-public xe-guest-utilities
+  (package
+    (name "xe-guest-utilities")
+    (version "8.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/xenserver/xe-guest-utilities")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1yqspizhq3ii6cz2w75slaxy8838yyri9pmgc2q1radnm7w735if"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:import-path "github.com/xenserver/xe-guest-utilities"
+      #:install-source? #f
+      #:tests? #f ; There are no tests.
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Despite using go-build-system, this project does not use Go's build
+          ;; infrastructure to do anything, instead relying on a Makefile.
+          ;; NOTE: This target builds a tarball, but it is only filled with
+          ;; 2 binaries, 1 script, and a bunch of text files; it is tiny.
+          (add-after 'patch-source-shebangs 'fix-udev-rule
+            (lambda* (#:key inputs import-path #:allow-other-keys)
+              (substitute* (string-append "src/" import-path "/mk/xen-vcpu-hotplug.rules")
+                (("/bin/sh") (search-input-file inputs "/bin/sh")))))
+          (replace 'build
+            (lambda* (#:key import-path #:allow-other-keys)
+              (let* ((version #$version)
+                     (version-split (string-split version #\.))
+                     (major-version (list-ref version-split 0))
+                     (minor-version (list-ref version-split 1))
+                     (micro-version (list-ref version-split 2))
+                     (build-number  "0"))
+                (with-directory-excursion (string-append "src/" import-path)
+                  ;; Perform a buggy substitution. In Guix, the Go's guestmetric
+                  ;; import will resolve to the source version, NOT the version
+                  ;; the Makefile and sed substituted into build/. So we perform
+                  ;; the correct substitution.
+                  ;; This file list is what make & sed substitute, but we do it
+                  ;; in-place too.
+                  (substitute* (list "xe-daemon/xe-daemon.go"
+                                     "syslog/syslog.go"
+                                     "system/system.go"
+                                     "guestmetric/guestmetric.go"
+                                     "guestmetric/guestmetric_linux.go"
+                                     "xenstoreclient/xenstore.go"
+                                     "xenstore/xenstore.go")
+                    (("@PRODUCT_MAJOR_VERSION@") major-version)
+                    (("@PRODUCT_MINOR_VERSION@") minor-version)
+                    (("@PRODUCT_MICRO_VERSION@") micro-version)
+                    (("@NUMERIC_BUILD_NUMBER@")  build-number))
+                  ;; Explicitly state version, removes git as native-input and
+                  ;; removes using git commit hash as an ID.
+                  ;; NOTE: The final step of the Makefile's build target is to "cd"
+                  ;; to the final build directory.
+                  (invoke "make" "build"
+                          (string-append "RELEASE=" version)
+                          (string-append "PRODUCT_MAJOR_VERSION=" major-version)
+                          (string-append "PRODUCT_MINOR_VERSION=" minor-version)
+                          (string-append "PRODUCT_MICRO_VERSION=" micro-version))))))
+          ;; The default "install" actions produce package-manager-specific
+          ;; outputs, .deb, .rpm, and .tgz. We just copy the final build
+          ;; products out.
+          (replace 'install
+            (lambda* (#:key outputs import-path #:allow-other-keys)
+              (let* ((stage (string-append "src/" import-path "/build/stage"))
+                     (out (assoc-ref outputs "out")))
+                ;; Put udev rules in #$output/lib/udev/rules.d/
+                (copy-recursively (string-append stage "/etc/udev")
+                                  (string-append out "/lib/udev"))
+                ;; Copy produced binaries and scripts
+                (copy-recursively (string-append stage "/usr") out)))))))
+    (native-inputs (list go-golang-org-x-sys))
+    (inputs (list bash-minimal))
+    (home-page "https://github.com/xenserver/xe-guest-utilities")
+    (synopsis "XenServer guest utilities for unix-like operating systems")
+    (description "The XenServer guest utilities enable a Xen-based hypervisor,
+(Citrix XenServer, XCP-ng, etc.) to work with a Xen-enabled Unix-like guest VMs.
+This allows the guest to share information about its state back to the host,
+such IP address, memory usage, etc. and allows the host to inform the guest VM
+about events that change the virtualized hardware, such as hotplugging.")
+    (license license:bsd-2)))
+
 (define-public osinfo-db-tools
   (package
     (name "osinfo-db-tools")
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 53f79e367b..c32c47484c 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2022 Oleg Pykhalov <go.wigust@HIDDEN>
 ;;; Copyright © 2022 Leo Nikkilä <hello@HIDDEN>
 ;;; Copyright © 2023 Efraim Flashner <efraim@HIDDEN>
+;;; Copyright © 2024 Raven Hallsby <karl@HIDDEN>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;

base-commit: 4eaeff997907bc1b67884a6dc087756a50f175e2
-- 
2.46.0





Information forwarded to sharlatanus@HIDDEN, guix-patches@HIDDEN:
bug#72249; Package guix-patches. Full text available.

Message received at 72249 <at> debbugs.gnu.org:


Received: (at 72249) by debbugs.gnu.org; 23 Jul 2024 05:24:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jul 23 01:24:02 2024
Received: from localhost ([127.0.0.1]:58974 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sW80H-0002oj-H5
	for submit <at> debbugs.gnu.org; Tue, 23 Jul 2024 01:24:02 -0400
Received: from mail-io1-f48.google.com ([209.85.166.48]:44508)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <karl@HIDDEN>) id 1sW80E-0002o9-RL
 for 72249 <at> debbugs.gnu.org; Tue, 23 Jul 2024 01:23:59 -0400
Received: by mail-io1-f48.google.com with SMTP id
 ca18e2360f4ac-7fb93b2e2a3so214539939f.1
 for <72249 <at> debbugs.gnu.org>; Mon, 22 Jul 2024 22:23:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=hallsby.com; s=google; t=1721712169; x=1722316969; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=wDO4umrRiFPybL1CvELsnkMjputpRAygZI7aJJFfw6o=;
 b=NNfbn1RKMNDCbzdlNTw1yp9xiWEglNGrJKD7t+VFk3Q1HvRoHSUVpTq/pk7VrmGeZN
 uOq40zjcT/XcqVKUDwKDKKy7EVE9Wi755q6uvLicZxEfEHts63TwLnfSl8ugQFm7ZDZt
 aIpbFSkY/4JoSm7tHSfooD2URISUTTLoBST6UXa+qDDbXTKX7oqj68AigoyndiRnJVbM
 848uAXb468c4vhrnsAAPsMyHbblJ0HRR05uhhiXFVCSIXC2WVb2fYAXAXRzEfxy3y3Up
 AGQPD1wMsBVy1OCdW6VdBcw66wnEDQZcBKmPmWKncHzAhgpjgLyv9+vFojfawRh7iSX6
 VlOA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1721712169; x=1722316969;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=wDO4umrRiFPybL1CvELsnkMjputpRAygZI7aJJFfw6o=;
 b=QvdbNn479/1aet3Nd58QK46mYCaJN3GcbQIqaRfmopfd7tALhf4G+885ZmenF8tgdJ
 2kQ6X3TisCYKn7a1mFUHWLA6rTTZ47On1oX+QjWequiDXGsziprzeZTzi4erKG8OGgTe
 Wug4tHJt9BvpT+7xfe5EcbuxnpIcT5ofvp1sKsg/4o1JEdBxVxsev1zKZyS6LKqBNZdX
 5YIZw7VZosWuzzJkUkwK/mD20BwSsKEZ+ws3TjTxNcCXAMib2zS0fuAuJVBRNE+8ip/A
 h/K/yF+C/6LWTjS/tHRvObsRZtqD3WFp8vqGXxP4+bnmyYG44yNfnItsSn/Iey9NNohO
 u/zw==
X-Gm-Message-State: AOJu0YwsI0B9Zb7Y5aDov4ICqpMFmZa6JJ0jqpgB+7/0tHTZGUVE+4Rr
 BFxgbEqhuqW1NqEFluauB6Gcs5QUyzd33IqgDTFh2XmUEg7j+jLN8zxb2THs7zwpjYonFaV28d4
 =
X-Google-Smtp-Source: AGHT+IFOsjjyPEPvBnoFbnEPhgbsPIKqYfXoJZpuj5bd4gwhrHHGFaUipw6S+wnC+VaEj6+RLOoI5g==
X-Received: by 2002:a05:6602:1601:b0:7f9:bef6:2068 with SMTP id
 ca18e2360f4ac-81b34880de9mr1154226839f.10.1721712168875; 
 Mon, 22 Jul 2024 22:22:48 -0700 (PDT)
Received: from Karl-Desktop.raven
 (168-91-194-13.s3595.c3-0.frg-cbr1.chi-frg.il.cable.rcncustomer.com.
 [168.91.194.13]) by smtp.gmail.com with ESMTPSA id
 ca18e2360f4ac-819aba11fd4sm285786539f.4.2024.07.22.22.22.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jul 2024 22:22:48 -0700 (PDT)
From: Karl Hallsby <karl@HIDDEN>
To: 72249 <at> debbugs.gnu.org
Subject: [PATCH 2/2] services: Add xe-guest-utilities-service-type.
Date: Tue, 23 Jul 2024 00:22:38 -0500
Message-ID: <1c2bcecabee79ce42af6d0d3d653f9fdf3ad5458.1721711392.git.karl@HIDDEN>
X-Mailer: git-send-email 2.45.2
In-Reply-To: <cover.1721711392.git.karl@HIDDEN>
References: <cover.1721711392.git.karl@HIDDEN>
MIME-Version: 1.0
X-Debbugs-Cc: Florian Pelz <pelzflorian@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Matthew Trzcinski <matt@HIDDEN>, Maxim Cournoyer <maxim.cournoyer@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 72249
Cc: Karl Hallsby <karl@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/services/virtualization.scm (xe-guest-utilities-configuration,
  xe-guest-utilities-service-type): New variables.

Change-Id: Ife4e79fa6d1a9d5a21bf7479488884f2a5cf8d56
---
 doc/guix.texi                   |  30 ++++++
 gnu/services/virtualization.scm | 178 +++++++++++++++++++++++++++++++-
 2 files changed, 207 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 9ba96af459..6a29731b95 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -36873,6 +36873,36 @@ Virtualization Services
 @end table
 @end deftp
 
+@subsubheading Xen Guest Agent
+
+@cindex xen
+@cindex xen guest agent
+
+The Xen guest agent allows a Xen host to control the emulated system.
+The @code{xe-guest-agent} service runs the agent on Guix guests.
+
+@quotation Note
+The default Linux-libre kernel that Guix ships already enables the
+necessary features for a guest.  There is nothing you need to enable for
+the guest to fully support paravirtualization features.
+@end quotation
+
+@defvar xe-guest-agent-service-type
+Service type for the QEMU guest agent service.
+@end defvar
+
+@deftp {Data Type} xe-guest-agent-configuration
+Configuration for the @code{xen-guest-agent} service.
+
+@table @asis
+@item @code{package} (default: @code{xen-guest-utilities})
+The Xen guest utilities package to use.
+
+@item @code{pid-file} (default: @code{"/var/run/xe-daemon.pid"})
+Path to the file holding the PID of xe-deamon.
+@end table
+@end deftp
+
 
 @anchor{build-vm}
 @subsubheading Virtual Build Machines
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index c9f8225570..29d5de6cc7 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -33,6 +33,9 @@ (define-module (gnu services virtualization)
   #:autoload   (gnu packages gnupg) (guile-gcrypt)
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages gawk)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu services base)
   #:use-module (gnu services configuration)
@@ -107,7 +110,10 @@ (define-module (gnu services virtualization)
 
             qemu-guest-agent-configuration
             qemu-guest-agent-configuration?
-            qemu-guest-agent-service-type))
+            qemu-guest-agent-service-type
+
+            xe-guest-agent-configuration
+            xe-guest-agent-service-type))
 
 (define (uglify-field-name field-name)
   (let ((str (symbol->string field-name)))
@@ -1004,6 +1010,77 @@ (define qemu-guest-agent-service-type
    (default-value (qemu-guest-agent-configuration))
    (description "Run the QEMU guest agent.")))
 
+
+;;;
+;;; Guest agent for VMs running under Xen
+;;;
+(define-configuration/no-serialization xe-guest-agent-configuration
+  (package
+   (package xe-guest-utilities)
+   "Xen guest management utilities package.")
+  (pid-file
+   (string "/var/run/xe-daemon.pid")
+   "Path to the file holding the PID of xe-deamon."))
+
+(define (generate-xe-guest-agent-documentation)
+  "Generate documentation for xe-guest-agent fields"
+  (generate-documentation
+   `((xe-guest-agent-configuration ,xe-guest-agent-configuration-fields))
+   'xe-guest-agent-configuration))
+
+(define (xe-guest-agent-shepherd-service config)
+  (let ((xe-guest-utils (xe-guest-agent-configuration-package config))
+        (pid-file (xe-guest-agent-configuration-pid-file config)))
+    (list
+     (shepherd-service
+      (provision '(xe-guest-agent))
+      (requirement '(networking user-processes udev))
+      (documentation "Run the Xen guest management agent.")
+      (start
+       #~(lambda _
+           (let ((pid (make-forkexec-constructor
+                       (list
+                        #$(file-append xe-guest-utils
+                                       "/sbin/xe-daemon")
+                        "-p" #$pid-file)
+                       #:log-file "/var/log/xe-daemon.log"
+                       #:pid-file #$pid-file
+                       #:environment-variables
+                       (list (string-append
+                              "PATH="
+                              #$(file-append xe-guest-utils "/bin") ":"
+                              ;; logger
+                              #$(file-append inetutils "/bin"))))))
+             ;; Run xe-linux-distribution script before starting the actual
+             ;; daemon. The script collects some basic system information that
+             ;; is shared back to the Xen host.
+             (system* #$(file-append xe-guest-utils "/sbin/xe-linux-distribution")
+                      "/var/cache/xe-linux-distribution")
+             ;; Finally, start and return the PID made by
+             ;; make-forkexec-constructor.
+             pid)))
+      (stop #~(make-kill-destructor))))))
+
+(define (xe-guest-agent-udev-rules-service config)
+  (let ((guest-utils (xe-guest-agent-configuration-package config)))
+    (list
+     (file->udev-rule "z10_xen-vcpu-hotplug.rules"
+                      (file-append
+                       guest-utils
+                       ;; I hate this z10_ prefix too
+                       "/lib/udev/rules.d/z10_xen-vcpu-hotplug.rules")))))
+
+(define xe-guest-agent-service-type
+  (service-type
+   (name 'xe-guest-agent)
+   (extensions
+    (list (service-extension shepherd-root-service-type
+                             xe-guest-agent-shepherd-service)
+          (service-extension udev-service-type
+                             xe-guest-agent-udev-rules-service)))
+   (default-value (xe-guest-agent-configuration))
+   (description "Run the Xen guest management utilities.")))
+
 
 ;;;
 ;;; Secrets for guest VMs.
@@ -1860,3 +1937,102 @@ (define hurd-vm-service-type
    (description
     "Provide a virtual machine (VM) running GNU/Hurd, also known as a
 @dfn{childhurd}.")))
+
+(define-configuration/no-serialization xe-guest-utilities-configuration
+  (xe-guest-utilities
+   (file-like xe-guest-utilities)
+   "XenServer guest utilities package.")
+  (pid-file
+   (string "/var/run/xe-daemon.pid")
+   "File holding the PID of xe-deamon."))
+
+(define (generate-xe-guest-utilities-documentation)
+  "Generate documentation for xe-guest-utilities fields"
+  (generate-documentation
+   `((xe-guest-utilities-configuration ,xe-guest-utilities-configuration-fields))
+   'xe-guest-utilities-configuration))
+
+(define (xe-guest-utils-service config)
+  (let ((pid-file (xe-guest-utilities-configuration-pid-file config)))
+    (list
+     ;; Generate <shepherd-service>s that run the xe-daemon forever.
+     (shepherd-service
+      (documentation "Run the xe-guest-utilities daemon.")
+      (provision '(xe-guest-utilities-daemon))
+      (requirement '(xe-guest-utilities-procfs
+                     xe-guest-utilities-distro))
+      (start #~(make-forkexec-constructor
+                (list #$(file-append xe-guest-utilities "/bin/xe-daemon")
+                      "-p" #$pid-file)
+                #:pid-file #$pid-file
+                #:environment-variables
+                (list (string-append
+                       "PATH=/run/current-system/profile/bin:"
+                       "/run/current-system/profile/sbin:"
+                       #$(file-append coreutils "/bin") ":"
+                       #$(file-append iproute "/bin")))))
+      (stop #~(make-kill-destructor)))
+
+  ;; Generate one-shot <shepherd-service>s that informs the host hypervisor about
+  ;; the distribution of the guest (Guix in this case)
+  (shepherd-service
+   (documentation "Inform host hypervisor of guest's distribution.")
+   (provision '(xe-guest-utilities-distro))
+   (requirement '(;;xe-guest-utilities-xend
+                  ))
+   (one-shot? #t)
+   (start #~(make-forkexec-constructor
+             (list #$(file-append xe-guest-utilities "/bin/xe-linux-distribution")
+                   "/var/run/xe-linux-distribution")
+             #:environment-variables
+             (list (string-append
+                    "PATH="
+                    #$(file-append xe-guest-utilities "/bin") ":"
+                    #$(file-append coreutils "/bin") ":" ;uname & co
+                    #$(file-append gawk "/bin") ":"
+                    #$(file-append sed "/bin")))))
+   (stop #~(make-kill-destructor)))
+
+  ;; Generate <shepherd-service>s to mount the xen directory in /proc.
+  (shepherd-service
+   (documentation "Mount /proc/xen files.")
+   (provision '(xe-guest-utilities-procfs))
+   (requirement '(file-systems))
+   (start #~(lambda ()
+              (mount "xenfs" "/proc/xen" "/proc/xen")
+              (member "/proc/xen" (mount-points))))
+   (stop #~(lambda ()
+             (umount "/proc/xen" MNT_DETACH)
+             (not (member "/proc/xen" (mount-points))))))
+
+  ;; Generate <shepherd-service>s to create the necessary temporary directories for XenStore.
+  (shepherd-service
+   (documentation "Provide a temporary directory for XenStore.")
+   (provision '(xe-guest-utilities-tmp-dir))
+   (one-shot? #t)
+   (requirement '(file-systems))
+   (start #~(lambda ()
+              (mkdir "/var/run/xenstored")
+              (chmod o755 "/var/run/xenstored")))
+   (stop #~(lambda ()
+             (delete-file-recursively "/var/run/xenstored")))))))
+
+(define (xe-guest-utils-udev-rules-service config)
+  (let ((guest-utils (xe-guest-utilities-configuration-xe-guest-utilities config)))
+    (list
+     (file->udev-rule "z10_xen-vcpu-hotplug.rules"
+                      (file-append
+                       guest-utils
+                       ;; I hate this z10_ prefix too
+                       "/etc/udev/rules.d/z10_xen-vcpu-hotplug.rules")))))
+
+(define xe-guest-utilities-service-type
+  (service-type
+   (name 'xe-guest-utilities)
+   (extensions (list (service-extension shepherd-root-service-type
+                                        xe-guest-utils-service)
+                     (service-extension udev-service-type
+                                        xe-guest-utils-udev-rules-service)))
+   (default-value (xe-guest-utilities-configuration))
+   (description
+    "Enable a Guix System VM to communicate with a Xen-based hypervisor host.")))
-- 
2.45.2





Information forwarded to pelzflorian@HIDDEN, ludo@HIDDEN, matt@HIDDEN, maxim.cournoyer@HIDDEN, guix-patches@HIDDEN:
bug#72249; Package guix-patches. Full text available.

Message received at 72249 <at> debbugs.gnu.org:


Received: (at 72249) by debbugs.gnu.org; 23 Jul 2024 05:23:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jul 23 01:23:57 2024
Received: from localhost ([127.0.0.1]:58971 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sW80D-0002oK-0H
	for submit <at> debbugs.gnu.org; Tue, 23 Jul 2024 01:23:57 -0400
Received: from mail-io1-f45.google.com ([209.85.166.45]:57583)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <karl@HIDDEN>) id 1sW808-0002o6-L4
 for 72249 <at> debbugs.gnu.org; Tue, 23 Jul 2024 01:23:56 -0400
Received: by mail-io1-f45.google.com with SMTP id
 ca18e2360f4ac-7f6e9662880so254095939f.2
 for <72249 <at> debbugs.gnu.org>; Mon, 22 Jul 2024 22:23:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=hallsby.com; s=google; t=1721712167; x=1722316967; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=Y7Dbgr4mNVEMSx3bbuPoulWUZKiWHSnXL+GdGgA6Xt4=;
 b=FVehwTjCwyIwynMJ1haZS/0MoST9BlPl/7fgBWUoJSQURuXF592PGlEJ8t3WIc5l3P
 MRbVXV7BjfbYS/hU4yBPFoGZcSzNxcCtKztM+txQL2rIReT/juoTJhhZJ04qv0FihoAx
 3XHPs7h/xECB6ZZ6VjJr0NyoYoTDw1vvob6HfVUmWeClFGSWA3+JddP4EC4p69sdMdWd
 t7B35PkCvktmbMKfE5gwhivA7RgTZi74hWu1UkgPx15zC9dhTCic221qQNtT4aWfLGh0
 OXUfAiWurVNr6rhsb1v4mPsJVZFJseW/3Bz00+U5V3BvyXI5ebUnPOKgFNyMgdNWCN87
 73nQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1721712167; x=1722316967;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=Y7Dbgr4mNVEMSx3bbuPoulWUZKiWHSnXL+GdGgA6Xt4=;
 b=wvNYxzRh2Z0VxyFp0m7Ke7GT3ZDgdZ2jPNdtq4UpoAlm/bsDNapBUW7bK1j8lTo44W
 0NV2Km85BUUvPGVHkE8D5euZwbAKiE/KuiZPJ6h2GIYOWDQIPSOftvQ3RD7ziBzeCY6z
 N+wTGfGZlzYEFe8y681OFgcYhPp8lzWs4pzVFrv2x9ze+HwPxRsF5F60ue3P3fK9jiR5
 hFy0KDDNgx7UQsjIPyYcw5iTFg2b4/QplpFJbONJwr/Qj/CCayqE2nxoyPVtlmk5i61m
 3TxKnxrSEqtGzpxC2s/zu7f0V2CmVOwehcqT2nliyHAd6sWk3u2ij1A8APJurjSrSSd+
 /n5g==
X-Gm-Message-State: AOJu0YwUGfP6a/q0tzLWkUt5r4OggdGskkNyMDtrfZQcKCxo5K5LYB3u
 RzFEy0EiWyJxEB/OXMmSH1eU4tWEl78nN6JwGJcsAMMu0tOQoot20RhHAO5xWcELD/FljDq2xTI
 =
X-Google-Smtp-Source: AGHT+IFcEKXf9HXLpZrubEuOyrNG3EkJWgXkI/fay3JBAdJuww6gd3d9BH4tqEsbpu8p5tVBeYnhNw==
X-Received: by 2002:a05:6602:2b0a:b0:809:83e3:a35c with SMTP id
 ca18e2360f4ac-81aa9bcf127mr1399020739f.7.1721712167391; 
 Mon, 22 Jul 2024 22:22:47 -0700 (PDT)
Received: from Karl-Desktop.raven
 (168-91-194-13.s3595.c3-0.frg-cbr1.chi-frg.il.cable.rcncustomer.com.
 [168.91.194.13]) by smtp.gmail.com with ESMTPSA id
 ca18e2360f4ac-819aba11fd4sm285786539f.4.2024.07.22.22.22.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jul 2024 22:22:47 -0700 (PDT)
From: Karl Hallsby <karl@HIDDEN>
To: 72249 <at> debbugs.gnu.org
Subject: [PATCH 1/2] gnu: Add xe-guest-utilities.
Date: Tue, 23 Jul 2024 00:22:37 -0500
Message-ID: <e2a81c91a37d736f13d955b19ab1fef0fa65fc25.1721711392.git.karl@HIDDEN>
X-Mailer: git-send-email 2.45.2
In-Reply-To: <cover.1721711392.git.karl@HIDDEN>
References: <cover.1721711392.git.karl@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 72249
Cc: Karl Hallsby <karl@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* gnu/packages/virtualization.scm (xe-guest-utilities): Init at 8.4.0

Change-Id: I4daf19dc1964be00554e1c598ef88897081f5d52
---
 gnu/packages/virtualization.scm | 60 +++++++++++++++++++++++++++++++++
 gnu/services/virtualization.scm |  1 +
 2 files changed, 61 insertions(+)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 061748bb4a..dc5602e06a 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -91,6 +91,7 @@ (define-module (gnu packages virtualization)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages golang)
+  #:use-module (gnu packages golang-build)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages haskell)
@@ -2778,6 +2779,65 @@ (define-public xen
     (license license:gpl2)
     (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))))
 
+(define-public xe-guest-utilities
+  (package
+    (name "xe-guest-utilities")
+    (version "8.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/xenserver/xe-guest-utilities")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1yqspizhq3ii6cz2w75slaxy8838yyri9pmgc2q1radnm7w735if"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:import-path "github.com/xenserver/xe-guest-utilities"
+      #:install-source? #f
+      #:tests? #f ; There are no tests.
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Despite using go-build-system, this project does not use Go's build
+          ;; infrastructure to do anything, instead relying on a Makefile.
+          ;; NOTE: This target builds a tarball, but it is only filled with
+          ;; 2 binaries, 1 script, and a bunch of text files; it is tiny.
+          (add-after 'patch-source-shebangs 'fix-udev-rule
+            (lambda* (#:key inputs import-path #:allow-other-keys)
+              (substitute* (string-append "src/" import-path "/mk/xen-vcpu-hotplug.rules")
+                (("/bin/sh") (search-input-file inputs "/bin/sh")))))
+          (replace 'build
+            (lambda* (#:key import-path #:allow-other-keys)
+              (with-directory-excursion (string-append "src/" import-path)
+                ;; Explicitly state version, removes git as native-input.
+                ;; NOTE: The final step of the Makefile's build target is to "cd"
+                ;; to the final build directory.
+                (invoke "make" (string-append "RELEASE=" #$version) "build"))))
+          ;; The default "install" actions produce package-manager-specific
+          ;; outputs, .deb, .rpm, and .tgz. We just copy the final build
+          ;; products out.
+          (replace 'install
+            (lambda* (#:key outputs import-path #:allow-other-keys)
+              (let* ((stage (string-append "src/" import-path "/build/stage"))
+                     (out (assoc-ref outputs "out")))
+                ;; Put udev rules in #$output/lib/udev/rules.d/
+                (copy-recursively (string-append stage "/etc/udev")
+                                  (string-append out "/lib/udev"))
+                ;; Copy produced binaries and scripts
+                (copy-recursively (string-append stage "/usr") out)))))))
+    (native-inputs (list go-golang-org-x-sys))
+    (inputs (list bash-minimal))
+    (home-page "https://github.com/xenserver/xe-guest-utilities")
+    (synopsis "XenServer guest utilities for unix-like operating systems")
+    (description "The XenServer guest utilities enable a Xen-based hypervisor,
+(Citrix XenServer, XCP-NG, etc.) to work with a Xen-enabled Unix-like guest VMs.
+This allows the guest to share information about its state back to the host,
+such IP address, memory usage, etc. and allows the host to inform the guest VM
+about events that change the virtualized hardware, such as hotplugging.")
+    (license license:bsd-2)))
+
 (define-public osinfo-db-tools
   (package
     (name "osinfo-db-tools")
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index d87e494348..c9f8225570 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2022 Oleg Pykhalov <go.wigust@HIDDEN>
 ;;; Copyright © 2022 Leo Nikkilä <hello@HIDDEN>
 ;;; Copyright © 2023 Efraim Flashner <efraim@HIDDEN>
+;;; Copyright © 2024 Raven Hallsby <karl@HIDDEN>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
-- 
2.45.2





Information forwarded to guix-patches@HIDDEN:
bug#72249; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 23 Jul 2024 05:15:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jul 23 01:15:16 2024
Received: from localhost ([127.0.0.1]:58962 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1sW7rn-0002YK-Ur
	for submit <at> debbugs.gnu.org; Tue, 23 Jul 2024 01:15:16 -0400
Received: from lists.gnu.org ([209.51.188.17]:49756)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <karl@HIDDEN>) id 1sW7rl-0002YB-L4
 for submit <at> debbugs.gnu.org; Tue, 23 Jul 2024 01:15:15 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <karl@HIDDEN>) id 1sW7rh-0002PX-2U
 for guix-patches@HIDDEN; Tue, 23 Jul 2024 01:15:09 -0400
Received: from mail-io1-xd35.google.com ([2607:f8b0:4864:20::d35])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <karl@HIDDEN>) id 1sW7re-0002v2-SA
 for guix-patches@HIDDEN; Tue, 23 Jul 2024 01:15:08 -0400
Received: by mail-io1-xd35.google.com with SMTP id
 ca18e2360f4ac-8036ce660e5so217713739f.1
 for <guix-patches@HIDDEN>; Mon, 22 Jul 2024 22:15:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=hallsby.com; s=google; t=1721711704; x=1722316504; darn=gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:subject:cc
 :to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=AfTt39ETgjlW7GJhGk3e8mswhaJYgw7zVrnPIraDcl0=;
 b=SUGOo+Dp5Rk/tAS1kENoDF/OpHVMU6fIDybLOfMpMdtv7aPK/7qExhK1o9D0z+4SN7
 JLQEiCRSuxddkWGFZAjSdibRK+7RbrENBQGicg/cns/aToY7ThAOiTlHqfuHhUCzywiJ
 JkoXTW826/RI0P40I9EMp6F5NkUDvm7bU3R+77RvUGuGIkGadNQQMgrUhzHIURuhNCOO
 iJEMuld+qxcC8osPHPSZqfJ5wd+qLoQlRuwtfBnwFuRB52ht7ie2YM8mols+YNgdlSgy
 rPWlI8+LQxYL9Zj/afm9/LPRCKDTzAfBjKkIVU0CiBC8FnTCu6Q9p5qPEEoUCfhcJEzO
 PjyA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1721711704; x=1722316504;
 h=content-transfer-encoding:mime-version:message-id:date:subject:cc
 :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=AfTt39ETgjlW7GJhGk3e8mswhaJYgw7zVrnPIraDcl0=;
 b=IDUft8mKs+mC0V3ykJK4rJ1Yx6GBXn6M0zBflEzYpdNCuL5ji4CTpFf/VShQabXPwF
 yE4tEcbTHR+7ic02dVbQ7Tozk/kYzGjj0s6vXFQAM9W5jjxWbF7UvB1/YNlSpl9X/tfW
 Ftbr7bXr1f2yARdFrpmNvGKRqOpuu0Ul+n3utJAlPlpFCP4W+fMuzJeb+SmMF64I/xvC
 dX6bOFBggVZGMBSriK566kpjntO1wG6SaPx9c73Nosr8befd7gwrYKLRFBplBbo0Fdg0
 jJg09DLikuw3S2tPGbSm77yaIplxWveBp3m9PS5wEapvebqdqHqbQX1HftX8lXOhIQLK
 CLbA==
X-Gm-Message-State: AOJu0YzJrPesfNwce5WmHnYsChmmohNx7/dFh8Q4NiyE1pyIb2+y4Jfd
 +ekOsSJUVFSlIcPV8ti1wFWKMNOOzmhRly7STTHUPqyo2KoSLU5260yT6OeXqhaHa+1bL6a5jI0
 =
X-Google-Smtp-Source: AGHT+IEMwElDhc3rSxHT6rEt22rG7X+DWxsaQEeUPP1KWSv4Ydf4VybErm+hszkdbICFi02ZE1o2Sg==
X-Received: by 2002:a05:6e02:20ee:b0:396:d1c5:e70 with SMTP id
 e9e14a558f8ab-3993ff97b3amr104770895ab.3.1721711703564; 
 Mon, 22 Jul 2024 22:15:03 -0700 (PDT)
Received: from Karl-Desktop.raven
 (168-91-194-13.s3595.c3-0.frg-cbr1.chi-frg.il.cable.rcncustomer.com.
 [168.91.194.13]) by smtp.gmail.com with ESMTPSA id
 8926c6da1cb9f-4c2342f164esm1977580173.69.2024.07.22.22.15.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jul 2024 22:15:03 -0700 (PDT)
From: Karl Hallsby <karl@HIDDEN>
To: guix-patches@HIDDEN
Subject: [PATCH 0/2] Add xe-guest-utilities and daemon
Date: Tue, 23 Jul 2024 00:14:42 -0500
Message-ID: <cover.1721711392.git.karl@HIDDEN>
X-Mailer: git-send-email 2.45.2
MIME-Version: 1.0
X-Debbugs-Cc: Florian Pelz <pelzflorian@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Matthew Trzcinski <matt@HIDDEN>, Maxim Cournoyer <maxim.cournoyer@HIDDEN>
Content-Transfer-Encoding: 8bit
Received-SPF: pass client-ip=2607:f8b0:4864:20::d35;
 envelope-from=karl@HIDDEN; helo=mail-io1-xd35.google.com
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.4 (-)
X-Debbugs-Envelope-To: submit
Cc: Karl Hallsby <karl@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.4 (--)

This service allows Xen hosts to *nicely* control Guix guests by requesting
graceful shutdowns, restarts, etc. You also get some system information about
the guest displayed by the Xen host.

Karl Hallsby (2):
  gnu: Add xe-guest-utilities.
  services: Add xe-guest-utilities-service-type.

 doc/guix.texi                   |  30 ++++++
 gnu/packages/virtualization.scm |  60 +++++++++++
 gnu/services/virtualization.scm | 179 +++++++++++++++++++++++++++++++-
 3 files changed, 268 insertions(+), 1 deletion(-)


base-commit: ad97f1bdb67015cffe92adba3b94c3b3df576008
--
2.45.2




Acknowledgement sent to Karl Hallsby <karl@HIDDEN>:
New bug report received and forwarded. Copy sent to pelzflorian@HIDDEN, ludo@HIDDEN, matt@HIDDEN, maxim.cournoyer@HIDDEN, guix-patches@HIDDEN. Full text available.
Report forwarded to pelzflorian@HIDDEN, ludo@HIDDEN, matt@HIDDEN, maxim.cournoyer@HIDDEN, guix-patches@HIDDEN:
bug#72249; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sun, 12 Jan 2025 05:45:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.