[PATCH 0/7] Add xen-guest-agent and daemon

  • Done
  • quality assurance status badge
Details
3 participants
  • Efraim Flashner
  • Karl Hallsby
  • Ludovic Courtès
Owner
unassigned
Submitted by
Karl Hallsby
Severity
normal

Debbugs page

Karl Hallsby wrote 2 months ago
(address . guix-patches@gnu.org)(name . Karl Hallsby)(address . karl@hallsby.com)
cover.1736366801.git.karl@hallsby.com
This train adds the necessary Rust packages requried to build the
xen-guest-agent package, builds it, and defines a service-type for
running it as a daemon.

The guest agent allows the virtualizing host (Xen) to receive
information about the running OS guest and the host to send graceful
versions of commands to the guest.

The service-type is mutually exclusive with the xe-guest-utilities
service-type and daemon introduced in issue #72249.

Karl Hallsby (7):
gnu: Add rust-uname-0.1.
gnu: Add rust-xenstore-sys-0.3
gnu: Add rust-xenstore-sys-0.2
gnu: Add rust-xenstore-rs-0.7
gnu: Add rust-xenstore-rs-0.6
gnu: Add xen-guest-agent.
services: Add xen-guest-agent-service-type.

doc/guix.texi | 24 +++++++
gnu/packages/crates-io.scm | 112 ++++++++++++++++++++++++++++++++
gnu/packages/virtualization.scm | 51 +++++++++++++++
gnu/services/virtualization.scm | 34 +++++++++-
4 files changed, 220 insertions(+), 1 deletion(-)


base-commit: 4eaeff997907bc1b67884a6dc087756a50f175e2
prerequisite-patch-id: daabcb5995f03ed867a27648e973e1c2203f2bc9
prerequisite-patch-id: 10ca9a0912c5ab863ed39f14959581e75962ada9
--
2.46.0
Karl Hallsby wrote 2 months ago
[PATCH 1/7] gnu: Add rust-uname-0.1.
(address . 75445@debbugs.gnu.org)(name . Karl Hallsby)(address . karl@hallsby.com)
49384dbe9ce985425d1e503a10115af27166e809.1736366801.git.karl@hallsby.com
* gnu/packages/crates-io.scm (rust-uname-0.1): New variable.

Generated by "guix import".

Change-Id: I8ea68f2575742659600754ac932bd86388a6af34
---
gnu/packages/crates-io.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index b94cc9a60a..f8b74e5d78 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -90523,6 +90523,26 @@ (define-public rust-unarray-0.1
(description "Utilities for working with uninitialized arrays.")
(license (list license:expat license:asl2.0))))
+(define-public rust-uname-0.1
+ (package
+ (name "rust-uname")
+ (version "0.1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "uname" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1j1xd1rryml4j1hf07kahva9d5ym8m9jz9z20hfdpr1jrbq8jbxp"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
+ (home-page "https://github.com/icorderi/rust-uname")
+ (synopsis "Name and information about current kernel")
+ (description
+ "This package provides Name and information about current kernel.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-uncased-0.9
(package
(name "rust-uncased")
--
2.46.0
Karl Hallsby wrote 2 months ago
[PATCH 2/7] gnu: Add rust-xenstore-sys-0.3
(address . 75445@debbugs.gnu.org)(name . Karl Hallsby)(address . karl@hallsby.com)
aef4794b798f474cbcc95877bf6e6fc1c409bd83.1736366801.git.karl@hallsby.com
* gnu/packages/crates-io.scm (rust-xenstore-sys-0.3): New variable.

Generated by "guix import".

Change-Id: I91b20f282325f6a1c3548eff981eb5158d982cc1
---
gnu/packages/crates-io.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index f8b74e5d78..2705b0f42f 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -95556,6 +95556,26 @@ (define-public rust-xdg-home-1
(description "The user's home directory as per the XDG Specification.")
(license license:expat)))
+(define-public rust-xenstore-sys-0.3
+ (package
+ (name "rust-xenstore-sys")
+ (version "0.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "xenstore-sys" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "02dpapjj251z3b3qm3xlx71jjs0inbq55l2jcjh8g16yvz1a8r58"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-bindgen" ,rust-bindgen-0.53)
+ ("rust-pkg-config" ,rust-pkg-config-0.3))))
+ (home-page "https://github.com/Wenzel/xenstore-sys")
+ (synopsis "Rust FFI bindings for libxenstore")
+ (description "This package provides Rust FFI bindings for libxenstore.")
+ (license license:gpl3)))
+
(define-public rust-xflags-macros-0.2
(package
(name "rust-xflags-macros")
--
2.46.0
Karl Hallsby wrote 2 months ago
[PATCH 4/7] gnu: Add rust-xenstore-rs-0.7
(address . 75445@debbugs.gnu.org)(name . Karl Hallsby)(address . karl@hallsby.com)
63ff1cc7270705582257e9d9172bac74fd9e42ad.1736366802.git.karl@hallsby.com
* gnu/packages/crates-io.scm (rust-xenstore-rs-0.7): New variable.

Generated by "guix import".

Change-Id: Id227093e9647716dab92430eb86e7d5bf89daf86
---
gnu/packages/crates-io.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 42e1f1e9b6..2d7f9515bd 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -95556,6 +95556,31 @@ (define-public rust-xdg-home-1
(description "The user's home directory as per the XDG Specification.")
(license license:expat)))
+(define-public rust-xenstore-rs-0.7
+ (package
+ (name "rust-xenstore-rs")
+ (version "0.7.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "xenstore-rs" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "02izqilgfby7g14ndr76fmqrpcgx9q4m1rgky6r7ld5p73i3w0zv"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-futures" ,rust-futures-0.3)
+ ("rust-libc" ,rust-libc-0.2)
+ ("rust-libloading" ,rust-libloading-0.8)
+ ("rust-log" ,rust-log-0.4)
+ ("rust-tokio" ,rust-tokio-1)
+ ("rust-xenstore-sys" ,rust-xenstore-sys-0.3))
+ #:cargo-development-inputs (("rust-clap" ,rust-clap-4))))
+ (home-page "https://github.com/Wenzel/xenstore")
+ (synopsis "Rust FFI bindings for libxenstore")
+ (description "This package provides Rust FFI bindings for libxenstore.")
+ (license license:gpl3)))
+
(define-public rust-xenstore-sys-0.3
(package
(name "rust-xenstore-sys")
--
2.46.0
Karl Hallsby wrote 2 months ago
[PATCH 3/7] gnu: Add rust-xenstore-sys-0.2
(address . 75445@debbugs.gnu.org)(name . Karl Hallsby)(address . karl@hallsby.com)
4bb4097e493eaac93d6d03ee9073b4f148c21899.1736366802.git.karl@hallsby.com
* gnu/packages/crates-io.scm (rust-xenstore-sys-0.2): New variable.

Generated by "guix import".

Change-Id: Ifdcf25fb557cc040e42a3029437da645198cedb6
---
gnu/packages/crates-io.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 2705b0f42f..42e1f1e9b6 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -95576,6 +95576,27 @@ (define-public rust-xenstore-sys-0.3
(description "This package provides Rust FFI bindings for libxenstore.")
(license license:gpl3)))
+(define-public rust-xenstore-sys-0.2
+ (package
+ (inherit rust-xenstore-sys-0.3)
+ (name "rust-xenstore-sys")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "xenstore-sys" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1xrjy0d3cg9qrznfsfjrgha8si1dvdyfx3g7c76hbb7lnim5vmj7"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-bindgen" ,rust-bindgen-0.53)
+ ("rust-pkg-config" ,rust-pkg-config-0.3))))
+ (home-page "https://github.com/Wenzel/xenstore-sys")
+ (synopsis "Rust FFI bindings for libxenstore")
+ (description "This package provides Rust FFI bindings for libxenstore.")
+ (license license:gpl3)))
+
(define-public rust-xflags-macros-0.2
(package
(name "rust-xflags-macros")
--
2.46.0
Karl Hallsby wrote 2 months ago
[PATCH 5/7] gnu: Add rust-xenstore-rs-0.6
(address . 75445@debbugs.gnu.org)(name . Karl Hallsby)(address . karl@hallsby.com)
f408b790db0c17204a4510bc065cac1ce95b1a21.1736366802.git.karl@hallsby.com
* gnu/packages/crates-io.scm (rust-xenstore-rs-0.6): New variable.

Change-Id: I11cc6f5f014201c89d7e306b73ca8aa928f7a2cb
---
gnu/packages/crates-io.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 2d7f9515bd..f3abebeece 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -95581,6 +95581,32 @@ (define-public rust-xenstore-rs-0.7
(description "This package provides Rust FFI bindings for libxenstore.")
(license license:gpl3)))
+(define-public rust-xenstore-rs-0.6
+ (package
+ (inherit rust-xenstore-rs-0.7)
+ (name "rust-xenstore-rs")
+ (version "0.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "xenstore-rs" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1i8wdif8q2cxbrmcp2jxcqg95a4yfsp1m3j4yldcgad3ksl5l4qs"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-futures" ,rust-futures-0.3)
+ ("rust-libc" ,rust-libc-0.2)
+ ("rust-libloading" ,rust-libloading-0.8)
+ ("rust-log" ,rust-log-0.4)
+ ("rust-tokio" ,rust-tokio-1)
+ ("rust-xenstore-sys" ,rust-xenstore-sys-0.2))
+ #:cargo-development-inputs (("rust-clap" ,rust-clap-4))))
+ (home-page "https://github.com/Wenzel/xenstore")
+ (synopsis "Rust FFI bindings for libxenstore")
+ (description "This package provides Rust FFI bindings for libxenstore.")
+ (license license:gpl3)))
+
(define-public rust-xenstore-sys-0.3
(package
(name "rust-xenstore-sys")
--
2.46.0
Karl Hallsby wrote 2 months ago
[PATCH 6/7] gnu: Add xen-guest-agent.
(address . 75445@debbugs.gnu.org)(name . Karl Hallsby)(address . karl@hallsby.com)
8b169fc0c6328d6898d18b5bebba9e90e4e7ade8.1736366802.git.karl@hallsby.com
* gnu/packages/virtualization.scm (xen-guest-agent): New variable.

This is intended to replace xe-guest-utilities in the long run. Right now it
is a drop-in replacement.

Change-Id: I6277edc2298c6154d722f7f206e7955222228710
---
gnu/packages/virtualization.scm | 51 +++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)

Toggle diff (85 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 3b162474af..95e36b7d1b 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -79,6 +79,7 @@ (define-module (gnu packages virtualization)
#:use-module (gnu packages compression)
#:use-module (gnu packages containers)
#:use-module (gnu packages cpio)
+ #:use-module (gnu packages crates-io)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages crypto)
#:use-module (gnu packages cryptsetup)
@@ -119,6 +120,7 @@ (define-module (gnu packages virtualization)
#:use-module (gnu packages libbsd)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages llvm)
#:use-module (gnu packages lua)
#:use-module (gnu packages m4)
#:use-module (gnu packages man)
@@ -160,6 +162,7 @@ (define-module (gnu packages virtualization)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system cargo)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
@@ -2860,6 +2863,54 @@ (define-public xe-guest-utilities
about events that change the virtualized hardware, such as hotplugging.")
(license license:bsd-2)))
+(define-public xen-guest-agent
+ (package
+ (name "xen-guest-agent")
+ (version "0.4.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/xen-project/xen-guest-agent")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1ab6mgrvnd49m0ay9fbfyd02xaf3qvkwhyyavra4a7wpz0brg54h"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:install-source? #f
+ #:cargo-inputs (("rust-futures" ,rust-futures-0.3)
+ ("rust-libc" ,rust-libc-0.2)
+ ("rust-tokio" ,rust-tokio-1)
+ ("rust-netlink-packet-core" ,rust-netlink-packet-core-0.7)
+ ("rust-netlink-packet-route" ,rust-netlink-packet-route-0.18)
+ ("rust-netlink-proto" ,rust-netlink-proto-0.11)
+ ("rust-rtnetlink" ,rust-rtnetlink-0.14)
+ ("rust-async-stream" ,rust-async-stream-0.3)
+ ("rust-os-info" ,rust-os-info-3)
+ ("rust-pnet-datalink" ,rust-pnet-datalink-0.34)
+ ("rust-pnet-base" ,rust-pnet-base-0.34)
+ ("rust-ipnetwork" ,rust-ipnetwork-0.17)
+ ("rust-log" ,rust-log-0.4)
+ ("rust-env-logger" ,rust-env-logger-0.10)
+ ("rust-clap" ,rust-clap-4)
+ ("rust-xenstore-rs" ,rust-xenstore-rs-0.6)
+ ;; Unix-specific dependencies
+ ("rust-uname" ,rust-uname-0.1)
+ ("rust-syslog" ,rust-syslog-6)
+ ("rust-sysctl" ,rust-sysctl-0.5))))
+ (native-inputs
+ (list pkg-config
+ xen ; Pull in Xen for libxenstore
+ clang))
+ (home-page "https://gitlab.com/xen-project/xen-guest-agent")
+ (synopsis "Provides guest VM information to hosting Xen hypervisor")
+ (description "The agent gathers some guest information, and writes them to
+xenstore so tooling in dom0 can read it. The default behavior is to be
+compatible with the XAPI toolstack as currently used in XCP-ng and Citrix
+Hypervisor/Xenserver, and thus roughly follow what @code{xe-guest-utilities}
+is doing.")
+ (license license:agpl3)))
+
(define-public osinfo-db-tools
(package
(name "osinfo-db-tools")
--
2.46.0
Karl Hallsby wrote 2 months ago
[PATCH 7/7] services: Add xen-guest-agent-service-type.
(address . 75445@debbugs.gnu.org)(name . Karl Hallsby)(address . karl@hallsby.com)
7945dde8e89d4efaf17b2ec64f7489631d0a0bab.1736366802.git.karl@hallsby.com
* gnu/services/virtualization.scm (xen-guest-agent-configuration,
xen-guest-agent-service-type): New variables.
* doc/guix.texi: Document them.

Change-Id: Id1b1f4fc2b193d73f4401e74a214222dfe1b6ea7
---
doc/guix.texi | 24 +++++++++++++++++++++++
gnu/services/virtualization.scm | 34 ++++++++++++++++++++++++++++++++-
2 files changed, 57 insertions(+), 1 deletion(-)

Toggle diff (89 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index ee827717a1..89f153146a 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -37365,6 +37365,30 @@ Virtualization Services
@end table
@end deftp
+@code{xe-guest-utilities} is the standard guest utilities used for Xen
+guests. More recently the Xen Project has been working to develop
+@code{xen-guest-agent}, a modern drop-in replacement for
+@code{xe-guest-utilities}. While they nearly have feature-parity,
+@code{xen-guest-agent} currently lacks some of the features of its
+predecessor, namely disk metrics and ``PV drivers version''.
+
+@defvar xen-guest-agent-service-type
+Service type for the Xen guest agent service.
+@end defvar
+
+@deftp {Data Type} xen-guest-agent-configuration
+Configuration for the @code{xen-guest-agent} service.
+
+@table @asis
+@item @code{package} (default: @code{xen-guest-agent})
+The Xen guest agent package to use.
+@end table
+@end deftp
+
+@quotation Warning
+@code{xe-guest-utilities} and @code{xen-guest-agent} are mutually exclusive.
+@end quotation
+
@anchor{build-vm}
@subsubheading Virtual Build Machines
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 874abcd73f..b697ae9526 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -113,7 +113,9 @@ (define-module (gnu services virtualization)
qemu-guest-agent-service-type
xe-guest-utilities-configuration
- xe-guest-utilities-service-type))
+ xe-guest-utilities-service-type
+ xen-guest-agent-configuration
+ xen-guest-agent-service-type))
(define (uglify-field-name field-name)
(let ((str (symbol->string field-name)))
@@ -1083,6 +1085,36 @@ (define xe-guest-utilities-service-type
(default-value (xe-guest-utilities-configuration))
(description "Run the Xen guest management utilities.")))
+(define-configuration/no-serialization xen-guest-agent-configuration
+ (package
+ (package xen-guest-agent)
+ "Xen guest agent package."))
+
+(define (generate-xen-guest-agent-documentation)
+ "Generate documentation for xen-guest-agent-configuration fields"
+ (generate-documentation
+ `((xen-guest-agent-configuration ,xen-guest-agent-configuration-fields))
+ 'xen-guest-agent-configuration))
+
+(define (xen-guest-agent-shepherd-service config)
+ (list
+ (shepherd-service
+ (provision '(xen-guest-agent))
+ (requirement '(networking user-processes udev))
+ (documentation "Run the Xen guest management agent.")
+ (start #~(make-forkexec-constructor
+ (list #$(file-append xen-guest-agent "/bin/xen-guest-agent"))))
+ (stop #~(make-kill-destructor)))))
+
+(define xen-guest-agent-service-type
+ (service-type
+ (name 'xen-guest-agent)
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ xen-guest-agent-shepherd-service)))
+ (default-value (xen-guest-agent-configuration))
+ (description "Run the Xen guest management utilities.")))
+
;;;
;;; Secrets for guest VMs.
--
2.46.0
Efraim Flashner wrote 2 months ago
Re: [bug#75445] [PATCH 0/7] Add xen-guest-agent and daemon
(name . Karl Hallsby)(address . karl@hallsby.com)(address . 75445@debbugs.gnu.org)(name . Ludovic Courtès)(address . ludo@gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
Z3_m3P-YUSQEB862@3900XT
I pushed 3 of the 5 rust- packages (not the 2 that weren't actually
needed) and xen-guest-agent, and I'll let you all handle the service.

On Wed, Jan 08, 2025 at 02:12:48PM -0600, Karl Hallsby via Guix-patches via wrote:
Toggle quote (34 lines)
> This train adds the necessary Rust packages requried to build the
> xen-guest-agent package, builds it, and defines a service-type for
> running it as a daemon.
>
> The guest agent allows the virtualizing host (Xen) to receive
> information about the running OS guest and the host to send graceful
> versions of commands to the guest.
>
> The service-type is mutually exclusive with the xe-guest-utilities
> service-type and daemon introduced in issue #72249.
>
> Karl Hallsby (7):
> gnu: Add rust-uname-0.1.
> gnu: Add rust-xenstore-sys-0.3
> gnu: Add rust-xenstore-sys-0.2
> gnu: Add rust-xenstore-rs-0.7
> gnu: Add rust-xenstore-rs-0.6
> gnu: Add xen-guest-agent.
> services: Add xen-guest-agent-service-type.
>
> doc/guix.texi | 24 +++++++
> gnu/packages/crates-io.scm | 112 ++++++++++++++++++++++++++++++++
> gnu/packages/virtualization.scm | 51 +++++++++++++++
> gnu/services/virtualization.scm | 34 +++++++++-
> 4 files changed, 220 insertions(+), 1 deletion(-)
>
>
> base-commit: 4eaeff997907bc1b67884a6dc087756a50f175e2
> prerequisite-patch-id: daabcb5995f03ed867a27648e973e1c2203f2bc9
> prerequisite-patch-id: 10ca9a0912c5ab863ed39f14959581e75962ada9
> --
> 2.46.0
>

--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmd/5twACgkQQarn3Mo9
g1Gj6BAAig9ulDnwwOhsDO1NQKke++//KmC+gV068Jk/K9C9VrLkkSI/N2/RnR4o
z7KPJtz1BB/9sdR8uWQ6+d+et0mtKQrssr2L6KDSuVh+6HQfr5MIojZ0jsZwqIkE
+mpri6VnSxTlj0m6rJDS4uuRGZfubIpOYrUJbq6I7pM5kqGlJqsdZPNezvIEXpZA
5d2GZb58NpDSAoO8k6OmU9nRkaymBKTN7a5ZZ5PTKcUaxdggajjUIRynvwPQFBfF
o1FVoe/CJ3KNdhcE61csrwh8QkVmNudh4KoamjlxqYgjgqigc2cp+RbvATB1vux6
CbGzE2gwKYwsBQjxXAFz+pK0Bfmus0CZ3gzpcMNul6vL8JqYR35R2aCKAr+Fh/Q6
CyTlH1ymP8/OdACaJ6cX+F2xws1ojTKldwIUYUmYL2HtI5Cxc3FB690gScfUPZAB
en06BRGN+pij1XSGDwK2//SKpGzlH5/u05hs/vJ4C8WJkt083RHvrfphvpt9vhz8
5dgg7zka6gCfSrKYKRuQao+ENwJsJ3yirEnCTh135VKR97do4mY0WhHrd/wdck4u
p+X/yyhq+hwRiD0nJe9G38VVoqzNPZ0lWRj9JOjU//dGtW61sXDzBSK8AEJ8yrPK
Umv43Cdhrv1vuNqD2FM+pUNwM2muN1jxA43RTBo5DorSwbhEcVA=
=5/LO
-----END PGP SIGNATURE-----


Raven Hallsby wrote 4 weeks ago
(address . 75445@debbugs.gnu.org)(name . Ludovic Court ès)(address . ludo@gnu.org)(name . Efraim Flashner)(address . efraim@flashner.co.il)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87h64tw4g6.fsf@hallsby.com
Toggle quote (2 lines)
> ... and I'll let you all handle the service.

Just to keep this moving, are there any edits I need to make to get the
service-type merged? It is significantly simpler than its
xe-guest-utilities cousin, because it supports fewer features.

Efraim Flashner <efraim@flashner.co.il> writes:

Toggle quote (38 lines)
> I pushed 3 of the 5 rust- packages (not the 2 that weren't actually
> needed) and xen-guest-agent, and I'll let you all handle the service.
>
> On Wed, Jan 08, 2025 at 02:12:48PM -0600, Karl Hallsby via Guix-patches via wrote:
>> This train adds the necessary Rust packages requried to build the
>> xen-guest-agent package, builds it, and defines a service-type for
>> running it as a daemon.
>>
>> The guest agent allows the virtualizing host (Xen) to receive
>> information about the running OS guest and the host to send graceful
>> versions of commands to the guest.
>>
>> The service-type is mutually exclusive with the xe-guest-utilities
>> service-type and daemon introduced in issue #72249.
>>
>> Karl Hallsby (7):
>> gnu: Add rust-uname-0.1.
>> gnu: Add rust-xenstore-sys-0.3
>> gnu: Add rust-xenstore-sys-0.2
>> gnu: Add rust-xenstore-rs-0.7
>> gnu: Add rust-xenstore-rs-0.6
>> gnu: Add xen-guest-agent.
>> services: Add xen-guest-agent-service-type.
>>
>> doc/guix.texi | 24 +++++++
>> gnu/packages/crates-io.scm | 112 ++++++++++++++++++++++++++++++++
>> gnu/packages/virtualization.scm | 51 +++++++++++++++
>> gnu/services/virtualization.scm | 34 +++++++++-
>> 4 files changed, 220 insertions(+), 1 deletion(-)
>>
>>
>> base-commit: 4eaeff997907bc1b67884a6dc087756a50f175e2
>> prerequisite-patch-id: daabcb5995f03ed867a27648e973e1c2203f2bc9
>> prerequisite-patch-id: 10ca9a0912c5ab863ed39f14959581e75962ada9
>> --
>> 2.46.0
>>

--
Raven Hallsby
Ludovic Courtès wrote 3 weeks ago
Re: [bug#75445] [PATCH 7/7] services: Add xen-guest-agent-service-type.
(name . Karl Hallsby)(address . karl@hallsby.com)(address . 75445-done@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87eczr8lvg.fsf@gnu.org
Karl Hallsby <karl@hallsby.com> skribis:

Toggle quote (6 lines)
> * gnu/services/virtualization.scm (xen-guest-agent-configuration,
> xen-guest-agent-service-type): New variables.
> * doc/guix.texi: Document them.
>
> Change-Id: Id1b1f4fc2b193d73f4401e74a214222dfe1b6ea7

Applied, thanks!

As mentioned before, it would be great if you could see what it would
take to write a system test (and thus, a way to boot Xen) so that these
services don’t bitrot.

Thanks,
Ludo’.
Closed
Raven Hallsby wrote 3 weeks ago
Re: bug#75445: closed (Re: [bug#75445] [PATCH 7/7] services: Add xen-guest-agent-service-type.)
(address . 75445@debbugs.gnu.org)
87h64lz6db.fsf@hallsby.com
Toggle quote (2 lines)
> Applied, thanks!

Excellent! Thanks!

Toggle quote (4 lines)
> As mentioned before, it would be great if you could see what it would
> take to write a system test (and thus, a way to boot Xen) so that these
> services don’t bitrot.

I agree. Looking at the system-level marionette virtual machine
infrastructure, it looks like the only supported hypervisor is QEMU &
Linux's KVM. Xen fundamentally behaves differently than QEMU & KVM, so
getting system tests working might be difficult.

I have been toying with the idea that the marionette VM could create a
fake Xen device entry in /dev/xen... socket(?) that we can pull the
known sent data out of. This would workaround the Linux VM expecting Xen
running underneath it. Does this seem like a reasonable work-around?

Or should we investigate abstracting the virtualization backend to
support running a Guix VM on both QEMU/KVM and Xen? This would give us
another way to verify reproducibility by running system tests inside a
different hypervisor.

help-debbugs@gnu.org (GNU bug Tracking System) writes:

Toggle quote (75 lines)
> Your bug report
>
> #75445: [PATCH 0/7] Add xen-guest-agent and daemon
>
> which was filed against the guix-patches package, has been closed.
>
> The explanation is attached below, along with your original report.
> If you require more details, please reply to 75445@debbugs.gnu.org.
>
> --
> 75445: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=75445
> GNU Bug Tracking System
> Contact help-debbugs@gnu.org with problems
>
> From: Ludovic Courtès <ludo@gnu.org>
> Subject: Re: [bug#75445] [PATCH 7/7] services: Add
> xen-guest-agent-service-type.
> To: Karl Hallsby <karl@hallsby.com>
> Cc: 75445-done@debbugs.gnu.org, Maxim Cournoyer <maxim.cournoyer@gmail.com>
> Date: Fri, 21 Feb 2025 14:31:47 +0100 (1 day, 13 hours, 51 minutes ago)
>
> Karl Hallsby <karl@hallsby.com> skribis:
>
>> * gnu/services/virtualization.scm (xen-guest-agent-configuration,
>> xen-guest-agent-service-type): New variables.
>> * doc/guix.texi: Document them.
>>
>> Change-Id: Id1b1f4fc2b193d73f4401e74a214222dfe1b6ea7
>

>
>
> Thanks,
> Ludo’.
>
> ----------
>
> From: Karl Hallsby <karl@hallsby.com>
> Subject: [PATCH 0/7] Add xen-guest-agent and daemon
> To: guix-patches@gnu.org
> Cc: Karl Hallsby <karl@hallsby.com>
> Date: Wed, 8 Jan 2025 14:12:48 -0600
> Date: Wed, 8 Jan 2025 14:12:48 -0600 (6 weeks, 3 days, 7 hours ago)
>
> This train adds the necessary Rust packages requried to build the
> xen-guest-agent package, builds it, and defines a service-type for
> running it as a daemon.
>
> The guest agent allows the virtualizing host (Xen) to receive
> information about the running OS guest and the host to send graceful
> versions of commands to the guest.
>
> The service-type is mutually exclusive with the xe-guest-utilities
> service-type and daemon introduced in issue #72249.
>
> Karl Hallsby (7):
> gnu: Add rust-uname-0.1.
> gnu: Add rust-xenstore-sys-0.3
> gnu: Add rust-xenstore-sys-0.2
> gnu: Add rust-xenstore-rs-0.7
> gnu: Add rust-xenstore-rs-0.6
> gnu: Add xen-guest-agent.
> services: Add xen-guest-agent-service-type.
>
> doc/guix.texi | 24 +++++++
> gnu/packages/crates-io.scm | 112 ++++++++++++++++++++++++++++++++
> gnu/packages/virtualization.scm | 51 +++++++++++++++
> gnu/services/virtualization.scm | 34 +++++++++-
> 4 files changed, 220 insertions(+), 1 deletion(-)
>
>
> base-commit: 4eaeff997907bc1b67884a6dc087756a50f175e2
> prerequisite-patch-id: daabcb5995f03ed867a27648e973e1c2203f2bc9
> prerequisite-patch-id: 10ca9a0912c5ab863ed39f14959581e75962ada9

--
Raven Hallsby
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 75445@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 75445
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help