<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guix.git/guix/store/database.scm, branch master</title>
<subtitle>Personal branch of https://git.savannah.gnu.org/cgit/guix.git/ for implementing 'guix deploy'.
</subtitle>
<id>https://www.git.jakob.space/guix.git/atom?h=master</id>
<link rel='self' href='https://www.git.jakob.space/guix.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/'/>
<updated>2019-03-06T23:00:18Z</updated>
<entry>
<title>database: Make 'register-items' transactional.</title>
<updated>2019-03-06T23:00:18Z</updated>
<author>
<name>Caleb Ristvedt</name>
<email>caleb.ristvedt@cune.org</email>
</author>
<published>2019-01-30T23:03:38Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=a4678c6ba18d8dbd79d931f80426eebf61be7ebe'/>
<id>urn:sha1:a4678c6ba18d8dbd79d931f80426eebf61be7ebe</id>
<content type='text'>
* guix/store/database.scm (SQLITE_BUSY, register-output-sql): New variables.
(add-references): Don't try finalizing after each use, only after all the
uses (otherwise a finalized statement would be used if #:cache? was #f).
(call-with-transaction): New procedure.
(register-items): Use call-with-transaction to prevent broken intermediate
states from being visible.

* .dir-locals.el (call-with-transaction): indent it.

Signed-off-by: Ludovic Courtès &lt;ludo@gnu.org&gt;
</content>
</entry>
<entry>
<title>database: Use "write-ahead log" mode and set a long "busy timeout".</title>
<updated>2018-12-21T22:50:13Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2018-12-21T22:35:20Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=bdf860c2e99077d431da0cc1db4fc14db2a35d31'/>
<id>urn:sha1:bdf860c2e99077d431da0cc1db4fc14db2a35d31</id>
<content type='text'>
This should avoid "database is locked" errors when there's a lot of
concurrency, for instance when offloading simultaneously a lot of
builds.

* guix/store/database.scm (call-with-database): Add two 'sqlite-exec'
calls to set 'journal_mode' and 'busy_timeout'.
</content>
</entry>
<entry>
<title>Update Guile-SQLite3 URL everywhere.</title>
<updated>2018-11-23T14:42:00Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2018-11-22T15:46:50Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=60e1c1099fc3d73ed7d3235e71aae5d00ab7d773'/>
<id>urn:sha1:60e1c1099fc3d73ed7d3235e71aae5d00ab7d773</id>
<content type='text'>
* README: Update Guile-SQLite3 URL.
* doc/guix.texi (Requirements): Likewise.
* guix/store/database.scm (sqlite-exec): Likewise.
* m4/guix.m4 (GUIX_CHECK_GUILE_SQLITE3): Likewise.
</content>
</entry>
<entry>
<title>nar: Access the database instead of connecting to the daemon.</title>
<updated>2018-11-13T13:59:45Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2018-11-13T08:46:40Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=1afe1985f5bffef76872f4c9e87115b46a4a3d47'/>
<id>urn:sha1:1afe1985f5bffef76872f4c9e87115b46a4a3d47</id>
<content type='text'>
* guix/store/database.scm (%default-database-file): New variable.
(path-id): Export.
* guix/nar.scm (finalize-store-file): Use 'with-database' instead of
'with-store', and use 'path-id' instead of 'valid-path?'.
</content>
</entry>
<entry>
<title>database: Register each store item only once.</title>
<updated>2018-09-23T21:34:17Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2018-09-23T21:11:30Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=bb3b6ccb05550fbfbeb459c68819a752327d6e1e'/>
<id>urn:sha1:bb3b6ccb05550fbfbeb459c68819a752327d6e1e</id>
<content type='text'>
Fixes &lt;https://bugs.gnu.org/32600&gt;.
Reported by Leo Famulari.

* guix/store/database.scm (register-items): Check whether TO-REGISTER is
in DB by calling 'path-id',  and skip the reset-timestamps,
registration, and deduplication phases when it is.
</content>
</entry>
<entry>
<title>database: 'register-items' shows a progress bar.</title>
<updated>2018-09-23T21:34:16Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2018-09-23T20:51:51Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=f0addd6461658d13eadf5f6e3bdb89aa02a6e902'/>
<id>urn:sha1:f0addd6461658d13eadf5f6e3bdb89aa02a6e902</id>
<content type='text'>
* guix/store/database.scm (register-items): Add #:log-port.  Use
'progress-reporter/bar' to show a progress report.
(register-path): Pass #:log-port to 'register-items'.
</content>
</entry>
<entry>
<title>database: Reset timestamps to one second after the Epoch.</title>
<updated>2018-07-20T13:01:33Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2018-07-20T12:49:34Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=e4752118691e41ae8307649d1abfd4739b3e4bfa'/>
<id>urn:sha1:e4752118691e41ae8307649d1abfd4739b3e4bfa</id>
<content type='text'>
Previously, store items registered in the database by this code (for
instance, store items retrieved by 'guix offload' and passed to
'restore-file-set') would have an mtime of 0 instead of 1.

This would cause problems for things like .go files: Guile would
consider them to be older than the corresponding .scm file, and
consequently it would ignore them and possibly use another (incorrect)
.go file.

Reported by Ricardo Wurmus.

* guix/store/database.scm (reset-timestamps): Pass 1, not 0, to
'utime'.
* tests/store-database.scm ("register-path"): Check the mtime of FILE
and REF.
</content>
</entry>
<entry>
<title>database: 'reset-timestamps' now correctly handles symlinks.</title>
<updated>2018-07-03T15:50:04Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2018-07-03T09:02:22Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=e5e5119855b0269e8e6507b90c7f4d7df5118fc8'/>
<id>urn:sha1:e5e5119855b0269e8e6507b90c7f4d7df5118fc8</id>
<content type='text'>
* guix/store/database.scm (reset-timestamps): Use 'utime' with
AT_SYMLINK_NOFOLLOW for symlinks.
</content>
</entry>
<entry>
<title>database: Allow for deterministic database construction.</title>
<updated>2018-06-14T09:17:00Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2018-06-07T22:00:47Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=eb9fe97495c012c989f76cb42a14cd78f9d94629'/>
<id>urn:sha1:eb9fe97495c012c989f76cb42a14cd78f9d94629</id>
<content type='text'>
Fixes &lt;https://bugs.gnu.org/21073&gt;.

* guix/store/database.scm (sqlite-register): Add #:time.
(%epoch): New variable.
(register-items): Add #:registration-time.  Pass #:time to
'sqlite-register'.
* gnu/build/install.scm (register-closure): Pass #:registration-time.
</content>
</entry>
<entry>
<title>install: Use 'reset-timestamps' from (guix store database).</title>
<updated>2018-06-14T09:17:00Z</updated>
<author>
<name>Ludovic Courtès</name>
<email>ludo@gnu.org</email>
</author>
<published>2018-06-07T20:35:36Z</published>
<link rel='alternate' type='text/html' href='https://www.git.jakob.space/guix.git/commit/?id=078c2329c0ffc88ac8e334fcea5e025ee6410e62'/>
<id>urn:sha1:078c2329c0ffc88ac8e334fcea5e025ee6410e62</id>
<content type='text'>
* gnu/build/install.scm (reset-timestamps): Remove.
* gnu/build/vm.scm: Use 'reset-timestamps' from (guix store database).
</content>
</entry>
</feed>
