GNU bug report logs - #44760
Closure copy in ‘guix system init’ is inefficient

Previous Next

Package: guix;

Reported by: Ludovic Courtès <ludo <at> gnu.org>

Date: Fri, 20 Nov 2020 11:03:01 UTC

Severity: important

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #46 received at 44760 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: 44760 <at> debbugs.gnu.org
Cc: Ludovic Courtès <ludo <at> gnu.org>
Subject: [PATCH 11/15] database: Remove #:deduplicate? and #:reset-timestamps?
 from 'register-path'.
Date: Fri, 11 Dec 2020 16:09:47 +0100
* guix/store/database.scm (register-path): Remove #:deduplicate?
and #:reset-timestamps?.
* guix/scripts/system.scm (copy-item): Adjust accordingly.
* tests/store-database.scm ("register-path")
("register-path, directory"): Call 'reset-timestamps'.
---
 guix/scripts/system.scm  |  6 +-----
 guix/store/database.scm  | 17 ++---------------
 tests/store-database.scm |  5 +++--
 3 files changed, 6 insertions(+), 22 deletions(-)

diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index c08929066b..0e543d9460 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -158,11 +158,7 @@ REFERENCES as its set of references."
     (unless (register-path item
                            #:prefix target
                            #:state-directory state
-                           #:references references
-
-                           ;; Those are taken care of by 'copy-store-item'.
-                           #:reset-timestamps? #f
-                           #:deduplicate? #f)
+                           #:references references)
       (leave (G_ "failed to register '~a' under '~a'~%")
              item target))))
 
diff --git a/guix/store/database.scm b/guix/store/database.scm
index 31ea9add78..c0010b72b9 100644
--- a/guix/store/database.scm
+++ b/guix/store/database.scm
@@ -384,16 +384,14 @@ is true."
 
 (define* (register-path path
                         #:key (references '()) deriver prefix
-                        state-directory (deduplicate? #t)
-                        (reset-timestamps? #t)
+                        state-directory
                         (schema (sql-schema)))
   "Register PATH as a valid store file, with REFERENCES as its list of
 references, and DERIVER as its deriver (.drv that led to it.)  If PREFIX is
 given, it must be the name of the directory containing the new store to
 initialize; if STATE-DIRECTORY is given, it must be a string containing the
 absolute file name to the state directory of the store being initialized.
-Return #t on success.  As a side effect, reset timestamps on PATH, unless
-RESET-TIMESTAMPS? is false.
+Return #t on success.
 
 Use with care as it directly modifies the store!  This is primarily meant to
 be used internally by the daemon's build hook.
@@ -404,17 +402,6 @@ by adding it as a temp-root."
     (store-database-file #:prefix prefix
                          #:state-directory state-directory))
 
-  (define real-file-name
-    (string-append (or prefix "") path))
-
-  (when deduplicate?
-    (deduplicate real-file-name (nar-sha256 real-file-name)
-                 #:store (string-append (or prefix "")
-                                        %store-directory)))
-
-  (when reset-timestamps?
-    (reset-timestamps real-file-name))
-
   (parameterize ((sql-schema schema))
     (with-database db-file db
       (register-items db (list (store-info path deriver references))
diff --git a/tests/store-database.scm b/tests/store-database.scm
index 3b4ef43f6d..33fd6cfbad 100644
--- a/tests/store-database.scm
+++ b/tests/store-database.scm
@@ -34,8 +34,7 @@
 
 (test-begin "store-database")
 
-(test-equal "register-path"
-  '(1 1)
+(test-assert "register-path"
   (let ((file (string-append (%store-prefix) "/" (make-string 32 #\f)
                              "-fake")))
     (when (valid-path? %store file)
@@ -46,6 +45,7 @@
           (drv (string-append file ".drv")))
       (call-with-output-file file
         (cut display "This is a fake store item.\n" <>))
+      (reset-timestamps file)
       (register-path file
                      #:references (list ref)
                      #:deriver drv)
@@ -69,6 +69,7 @@
       (mkdir-p (string-append file "/a"))
       (call-with-output-file (string-append file "/a/b")
         (const #t))
+      (reset-timestamps file)
       (register-path file #:deriver drv)
 
       (and (valid-path? %store file)
-- 
2.29.2





This bug report was last modified 4 years and 237 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.