system: 'init' does not recompute the hash of each store item.
authorLudovic Courtès <ludo@gnu.org>
Fri, 11 Dec 2020 11:36:52 +0000 (12:36 +0100)
committerLudovic Courtès <ludo@gnu.org>
Tue, 15 Dec 2020 16:32:11 +0000 (17:32 +0100)
commit1574bd82bb36ee64574912c3e8855f94a73adc44
tree180ad6f175671dc197fc73ccbaf49e1f2eb22650
parent0682cc593688e7d9a435ca69f05320aa87df06d0
system: 'init' does not recompute the hash of each store item.

Fixes <https://bugs.gnu.org/44760>.

Previously, the 'register-path' call would re-traverse ITEM to compute
its nar hash, even though that hash is already known in the initial
store.  This patch also avoids repeated opening/closing of the
database.

* guix/store/database.scm (call-with-database): Export.
* guix/scripts/system.scm (copy-item): Add 'db' parameter.  Call
'sqlite-register' instead of 'register-path'.
(copy-closure): Remove redundant call to 'references*'.  Call
'call-with-database' and pass the database to 'copy-item'.
.dir-locals.el
guix/scripts/system.scm
guix/store/database.scm