Subject: Re: [bug#41785] [PATCH v4] services: Add 'hurd-in-vm service-type'.

From: Mathieu Othacehe <[email-masked]>
Date: Sun, 14 Jun 2020 17:52:19 +0200

> (define (hurd-multiboot-modules os)
> ...
>          (libc (if target
>                    (with-parameters ((%current-target-system #f))
>                      ;; TODO: cross-libc has extra patches for the Hurd;
>                      ;; remove in next rebuild cycle
>                      (cross-libc target))
>                    glibc))
>
> we take the ELSE branch here -- and that does not work.  AIUI, this is
> really a temporary kludge until the next rebuild cycle we can move some
> hurd-specific glibc patches from cross-libc to glibc-proper.

Oh, I know why! In "system-image", there are a few calls, in the first
let, that are outside the "with-parameters", in particular "bootcfg"
which triggers the problem you are describing above.

Maybe something as naive as:

--8<---------------cut here---------------start------------->8---
diff --git a/gnu/system/image.scm b/gnu/system/image.scm
index 1bda25fd7f..8a3c4e22d9 100644
--- a/gnu/system/image.scm
+++ b/gnu/system/image.scm
@@ -525,14 +525,14 @@ it can be used for bootloading."
 image, depending on IMAGE format."
   (define substitutable? (image-substitutable? image))
 
-  (let* ((os (operating-system-for-image image))
-         (image* (image-with-os image os))
-         (target (image-target image))
-         (register-closures? (has-guix-service-type? os))
-         (bootcfg (operating-system-bootcfg os))
-         (bootloader (bootloader-configuration-bootloader
-                      (operating-system-bootloader os))))
-    (with-parameters ((%current-target-system target))
+  (with-parameters ((%current-target-system target))
+    (let* ((os (operating-system-for-image image))
+           (image* (image-with-os image os))
+           (target (image-target image))
+           (register-closures? (has-guix-service-type? os))
+           (bootcfg (operating-system-bootcfg os))
+           (bootloader (bootloader-configuration-bootloader
+                        (operating-system-bootloader os))))
--8<---------------cut here---------------end--------------->8---

would do the trick.

Thanks,

Mathieu