diff --git a/guix/serialization.scm b/guix/serialization.scm index e6ae2fc30..77a54f904 100644 --- a/guix/serialization.scm +++ b/guix/serialization.scm @@ -18,6 +18,8 @@ (define-module (guix serialization) #:use-module (guix combinators) + #:use-module ((guix build syscalls) + #:select (scandir/utf-8)) #:use-module (rnrs bytevectors) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) @@ -285,8 +287,11 @@ result of 'lstat'; exclude entries for which SELECT? does not return true." ;; 'scandir' defaults to 'string-locale '("." ".."))) string '("." ".."))) + string))) + (lambda () + (setlocale LC_ALL locale))) + (call-with-input-file nar + (cut restore-file <> output)) + (file-tree-equal? input output)))) + (lambda () + (false-if-exception (delete-file nar)) + (false-if-exception (rm-rf output)))))) + ;; 'restore-file-set' depends on 'open-sha256-input-port', which in turn ;; relies on a Guile 2.0.10+ feature. (test-skip (if (false-if-exception