Message ID | 20200523093017.12149-2-janneke@gnu.org |
---|---|
State | Accepted |
Headers | show |
Series | [bug#41350,v3,1/3] utils: Move 'reset-timestamps' out of database. | expand |
Context | Check | Description |
---|---|---|
cbaines/comparison | success | View comparision |
cbaines/git branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
"Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> skribis: > This supports cross-building building a vm-image for the Hurd, running a > native qemu. > > * gnu/system/vm.scm (qemu-image)[register-closures?]: Default to #f when > cross-compiling to the Hurd. Only create sql-schema when actually registering > closures. [...] > - (register-closures? (has-guix-service-type? os)) > + (register-closures? (and (has-guix-service-type? os) > + (not (hurd-target?)))) What’s the problem here? (Sorry if I missed earlier discussions!) Intuitively, I think there shouldn’t be system-specific bits here: registering closures has nothing to do with the OS we’re targeting. Thanks, Ludo’.
Ludovic Courtès writes: > "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> skribis: > >> This supports cross-building building a vm-image for the Hurd, running a >> native qemu. >> >> * gnu/system/vm.scm (qemu-image)[register-closures?]: Default to #f when >> cross-compiling to the Hurd. Only create sql-schema when actually registering >> closures. > > [...] > >> - (register-closures? (has-guix-service-type? os)) >> + (register-closures? (and (has-guix-service-type? os) >> + (not (hurd-target?)))) > > What’s the problem here? (Sorry if I missed earlier discussions!) register-closures is being done inside the VM and needs sqlite, which we don't have because it's for the wrong architecture. So as long as we avoid sqlite, we can cross-build a working VM. > Intuitively, I think there shouldn’t be system-specific bits here: > registering closures has nothing to do with the OS we’re targeting. True...but currently Hurd is the only image that we are trying to build in this weird way, i.e., using a native qemu! Other cross-builds of vm-images are done using qemu-TARGET, only for the Hurd that does not work. Greetings, Janneke
diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm index c751e6b0e2..a1b193134a 100644 --- a/gnu/build/vm.scm +++ b/gnu/build/vm.scm @@ -27,7 +27,14 @@ #:use-module (guix build store-copy) #:use-module (guix build syscalls) #:use-module ((guix utils) #:select (reset-timestamps)) - #:use-module (guix store database) + #:autoload (guix store database) (sql-schema ;must list all exported symbols + %default-database-file + with-database + path-id + sqlite-register + register-path + register-items + %epoch) #:use-module (gnu build bootloader) #:use-module (gnu build linux-boot) #:use-module (gnu build install) diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 3e483fd86c..b343141c18 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -51,6 +51,7 @@ #:use-module (gnu packages zile) #:use-module (gnu packages linux) #:use-module (gnu packages admin) + #:use-module (gnu packages hurd) #:use-module (gnu bootloader) #:use-module (gnu bootloader grub) @@ -286,7 +287,8 @@ substitutable." os bootcfg-drv bootloader - (register-closures? (has-guix-service-type? os)) + (register-closures? (and (has-guix-service-type? os) + (not (hurd-target?)))) (inputs '()) copy-inputs? (substitutable? #t)) @@ -333,12 +335,13 @@ system that is passed to 'populate-root-file-system'." ((gnu build linux-boot) #:select (make-essential-device-nodes make-hurd-device-nodes)) - (guix store database) (guix build utils) (srfi srfi-26) (ice-9 binary-ports)) - (sql-schema #$schema) + (when #$register-closures? + (use-modules (guix store database)) + (sql-schema #$schema)) ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be decoded. (setenv "GUIX_LOCPATH"