~ruther/guix-local

8ab73e91d6550c192b750ec1457c69acbca9e711 — Ludovic Courtès 12 years ago 6bf25b7
gnu: vm: Clear timestamps on the imported files, like in the store.

* gnu/system/vm.scm (qemu-image): Clear timestamps on the copied files.
1 files changed, 16 insertions(+), 0 deletions(-)

M gnu/system/vm.scm
M gnu/system/vm.scm => gnu/system/vm.scm +16 -0
@@ 75,6 75,9 @@ DISK-IMAGE-SIZE bytes and return it.
When REFERENCES-GRAPHS is true, it must be a list of file name/store path
pairs, as for `derivation'.  The files containing the reference graphs are
made available under the /xchg CIFS share."
  ;; FIXME: Allow use of macros from other modules, as done in
  ;; `build-expression->derivation'.

  (define input-alist
    (map (match-lambda
          ((input (? package? package))


@@ 294,6 297,19 @@ It can be used to provide additional files, such as /etc files."
                               (primitive-load populate)
                               (chdir "/")))

                      (display "clearing file timestamps...\n")
                      (for-each (lambda (file)
                                  (let ((s (lstat file)))
                                    ;; XXX: Guile uses libc's 'utime' function
                                    ;; (not 'futime'), so the timestamp of
                                    ;; symlinks cannot be changed, and there
                                    ;; are symlinks here pointing to
                                    ;; /nix/store, which is the host,
                                    ;; read-only store.
                                    (unless (eq? (stat:type s) 'symlink)
                                      (utime file 0 0 0 0))))
                                (find-files "/fs" ".*"))

                      (and (zero?
                            (system* grub "--no-floppy"
                                     "--boot-directory" "/fs/boot"