Eelco Dolstra
6baa2a2f5e
2010-02-24 14:39:52 +00:00
Eelco Dolstra
9fd85c94de
* Use `truncate' journal mode, which should be a bit faster.
2010-02-24 14:22:34 +00:00
Eelco Dolstra
fefd467539
* `helpText' is now zero-terminated.
2010-02-24 13:24:27 +00:00
Eelco Dolstra
a3c63d0d6c
* Disable fsync() in SQLite if the fsync-metadata option is set to
...
false.
* Change the default for `fsync-metadata' to true.
* Disable `fsync-metadata' in `make check'.
2010-02-24 13:12:57 +00:00
Eelco Dolstra
90b6352d0a
* Do registerValidPaths() in one transaction, which is much faster.
...
E.g. it cuts the runtime of the referrers test from 50s to 23s.
2010-02-24 12:48:00 +00:00
Eelco Dolstra
fae0427324
* ADDITIONAL_NETWORK_LIBS -> LIBS.
2010-02-24 12:25:48 +00:00
Eelco Dolstra
fa6a4fcb11
* Add ${sqlite_lib} everywhere. Just adding it in `libstore' doesn't
...
work on x86_64 when sqlite is compiled statically.
2010-02-24 12:18:48 +00:00
Eelco Dolstra
5954eadf67
* Remove the fdatasync check since it's no longer needed.
2010-02-24 12:16:50 +00:00
Eelco Dolstra
462bd50aef
* Use normal (rather than full) synchronous mode, which I gather from
...
the description at http://www.sqlite.org/atomiccommit.html should be
safe enough.
2010-02-24 10:57:57 +00:00
Eelco Dolstra
63b09c5e41
2010-02-23 22:31:38 +00:00
Eelco Dolstra
b4e6d98fc3
* configure: flag --with-sqlite.
2010-02-23 22:12:46 +00:00
Eelco Dolstra
2b20318b0e
2010-02-22 14:24:37 +00:00
Eelco Dolstra
9cda616949
* The database needs a trigger to get rid of self-references to
...
prevent a foreign key constraint violation on the Refs table when
deleting a path.
2010-02-22 14:18:55 +00:00
Eelco Dolstra
c4d388add4
* Get derivation outputs from the database instead of the .drv file,
...
which requires more I/O.
2010-02-22 12:44:36 +00:00
Eelco Dolstra
103cfee056
* Revert r19650 (implement gc-keep-outputs by looking for derivations
...
with the same name as the output) and instead use the
DerivationOutputs table in the database, which is the correct way to
to do things.
2010-02-22 11:44:17 +00:00
Eelco Dolstra
299ff64812
* Put the derivation outputs in the database. This is useful for the
...
garbage collector.
2010-02-22 11:15:50 +00:00
Eelco Dolstra
1930570ad9
* Foreign key support in SQLite is not a persistent setting, so enable
...
it at startup.
* Implement negative caching. Now `make check' passes.
2010-02-19 17:15:22 +00:00
Eelco Dolstra
9c9a88e9e2
* Implement more stuff.
2010-02-19 16:43:25 +00:00
Eelco Dolstra
762cee72cc
* Implement registerValidPath().
2010-02-19 16:04:51 +00:00
Eelco Dolstra
268f9aaf28
* Implemented queryValidPaths() and verifyStore().
2010-02-18 16:51:27 +00:00
Eelco Dolstra
836e5b6f57
* Implemented queryReferrers().
2010-02-18 16:21:59 +00:00
Eelco Dolstra
77cb9e3fb1
* Implement queryPathInfo().
2010-02-18 15:52:57 +00:00
Eelco Dolstra
885e22b16e
* Implement isValidPath().
2010-02-18 15:11:08 +00:00
Eelco Dolstra
cfb09e0fad
* Automatically abort transactions if they go out of scope without
...
committing.
2010-02-18 14:40:07 +00:00
Eelco Dolstra
e0305bb7a8
* Some wrapper objects to ensure that SQLite objects are properly
...
destroyed.
2010-02-18 14:30:42 +00:00
Eelco Dolstra
a053d2d8e5
* Add the deriver to the ValidPaths table. In principle we could now
...
store all the derivers of a path efficiently. But that opens a big
can of worms with respect to garbage collector semantics.
2010-02-18 13:48:18 +00:00
Eelco Dolstra
dbddac0fe9
* Assign an integer id to every row in the ValidPaths table in order
...
to make the Refs table more space-efficient. For instance, this
reduces the size of the database on my laptop from 93 MiB to 18
MiB. (It was 72 MiB with the old schema on an ext3 disk with a 1
KiB block size.)
2010-02-18 13:40:46 +00:00
Eelco Dolstra
c1a07f9445
* Convert the Nix database to SQLite.
2010-02-18 13:16:59 +00:00
Ludovic Courtès
20186a4079
Don't rely on `PATH_MAX' on GNU.
2010-02-10 15:55:50 +00:00
Eelco Dolstra
4e17be7981
* Revert r19797, and use a simpler solution: just don't monitor build
...
hooks for silence. It's unnecessary because the remote nix-store
command is already monitoring the real build.
2010-02-03 21:38:41 +00:00
Eelco Dolstra
f859a8d3c3
* While waiting for a lock, print a sign of life every 5 minutes.
...
This prevents remote builders from being killed by the
`max-silent-time' inactivity monitor while they are waiting for a
long garbage collection to finish. This happens fairly often in the
Hydra build farm.
2010-02-03 21:22:57 +00:00
Eelco Dolstra
4bbbe25802
* Remove most Cygwin-specific code. Cygwin 1.7 implements advisory
...
POSIX locks, and simulates Unix-style file deletion semantics
sufficiently. Note that this means that Nix won't work on Cygwin
1.5 anymore.
2010-02-02 15:28:36 +00:00
Eelco Dolstra
2723d9b56e
* If fdatasync() isn't available, use fsync().
2010-02-02 11:57:49 +00:00
Eelco Dolstra
07ffdc2862
* Added an option "fsync-metadata" to fsync() changes to
...
/nix/var/nix/db.
* Removed the function writeStringToFile since it does (almost) the
same thing as writeFile.
2010-01-29 12:22:58 +00:00
Eelco Dolstra
ad529fb89f
* Don't consider a store path valid if its info file exists but is
...
zero bytes long. That makes Nix more robust in case of crashes
(especially on ext4).
2010-01-29 11:53:58 +00:00
Eelco Dolstra
fdcaf37361
* Made `nix-store -qR --include-outputs' much faster if there are
...
multiple paths specified on the command line (from O(n * m) to O(n +
m), where n is the number of arguments and m is the size of the
closure).
2010-01-25 17:18:44 +00:00
Eelco Dolstra
5388944e8d
* Make the garbage collector do the right thing when `gc-keep-outputs'
...
is enabled by not depending on the deriver.
2010-01-25 16:04:32 +00:00
Eelco Dolstra
f0c0277970
* On startup, set the default SIGCHLD handler. This is so that Nix
...
works correctly in weird environments where the SIGCHLD handler is
set to "ignore".
2010-01-12 12:22:38 +00:00
Eelco Dolstra
ef92a14bfe
* Include config.h before the C library headers, because it defines
...
_FILE_OFFSET_BITS=64. Without it, functions like stat() fail on
large file sizes. This happened with a Nix store on squashfs:
$ nix-store --dump /tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds > /dev/null
error: getting attributes of path `/tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds': Value too large for defined data type
$ stat /tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds
File: `/tmp/mnt/46wzqnk4cbdwh1dclhrpqnnz1icak6n7-local-net-cmds'
Size: 0 Blocks: 36028797018963968 IO Block: 1024 regular empty file
(This is a bug in squashfs or mksquashfs, but it shouldn't cause Nix
to fail.)
2009-12-17 14:12:44 +00:00
Eelco Dolstra
945d8218fb
* Build correctly against newer ATerm releases. Fixes "error: 'union'
...
tag used in naming 'struct _ATerm'".
2009-12-16 15:29:50 +00:00
Eelco Dolstra
bcd6cdf0d8
* Give a better error message when trying to build something and
...
readOnlyMode is set.
2009-12-09 17:45:22 +00:00
Eelco Dolstra
13618b191e
* Grrr.
2009-11-24 13:28:46 +00:00
Eelco Dolstra
aa5a768720
* GCC 4.4 is stricter about the EOF macro
...
(http://hydra.nixos.org/build/156340 ).
2009-11-24 12:56:26 +00:00
Eelco Dolstra
9b8fda796b
* Templatise getIntArg / string2Int.
2009-11-24 12:26:25 +00:00
Eelco Dolstra
8022015552
* In the garbage collector, don't count files with a link count > 1 in
...
the "bytes/blocks freed" statistics.
2009-11-24 10:51:52 +00:00
Eelco Dolstra
f9e766db98
* Randomise the order in which we delete entries to make the collector
...
less biased towards deleting paths that come alphabetically first
(e.g. /nix/store/000...). This matters when using --max-freed etc.
2009-11-24 09:53:18 +00:00
Eelco Dolstra
ca50c83fbb
2009-11-23 21:21:29 +00:00
Eelco Dolstra
3d55f1eb57
* A command `nix-store --query --roots <paths>' to find the garbage
...
collector roots that point (directly or indirectly) to the given
paths.
2009-11-23 18:16:25 +00:00
Eelco Dolstra
ae6bf87273
* `nix-store --gc --print-roots': also print the path of the actual
...
root symlink, not just its target. E.g.:
/nix/var/nix/profiles/system-99-link -> /nix/store/76kwf88657nq7wgk1hx3l1z5q91zb9wd-system
2009-11-23 17:23:12 +00:00
Eelco Dolstra
c364d5d1e3
* Made the garbage collector a lot faster. It no longer computes the
...
complete set of live and dead paths before starting the actual
deletion, but determines liveness on demand. I.e. for any path in
the store, it first tries to delete all the referrers, and then the
path itself. This means that the collector can start deleting paths
almost immediately.
2009-11-23 16:34:24 +00:00