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
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
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
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
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
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
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
Eelco Dolstra
8824d60fe5
* Remove the --use-atime / --max-atime garbage collector flags. Many
...
(Linux) machines no longer maintain the atime because it's too
expensive, and on the machines where --use-atime is useful (like the
buildfarm), reading the atimes on the entire Nix store takes way too
much time to make it practical.
2009-11-20 17:12:38 +00:00
Eelco Dolstra
327a232c85
* Remove support for old (before Nix 0.12pre12020) databases.
2009-11-06 01:15:44 +00:00
Eelco Dolstra
8520542071
* When building in a chroot, make a copy of a file if hard-linking
...
fails. This is likely to happen after a `nix-store --optimise',
because some files may have 32000 links (NIX-111).
2009-10-22 08:28:33 +00:00
Eelco Dolstra
6b9f6b0222
* Remove a prototype for a function that no longer exists.
2009-10-22 08:12:38 +00:00
Sander van der Burg
53a4981fa2
Added optional parameter which adds -lnsl -lsocket to make the Nix package manager work on OpenSolaris
2009-10-08 14:50:37 +00:00
Eelco Dolstra
c7057fc1f2
* And some more.
2009-09-24 07:39:55 +00:00
Eelco Dolstra
193f59e077
* Fix a build failure on Fedora 11. rename() needs <stdio.h>.
2009-09-24 07:21:29 +00:00
Eelco Dolstra
676e07902e
* Darwin hack.
2009-09-23 18:04:55 +00:00
Eelco Dolstra
64e89980e8
* Create some state directories automatically as a convenience.
2009-09-23 17:05:51 +00:00
Rob Vermaas
48b58617e9
* include wait.h for WEXITSTATUS
2009-09-23 12:57:15 +00:00
Eelco Dolstra
14bc3ce3d6
* Canonicalise timestamps in the Nix store to 1 (1970-01-01 00:00:01
...
UTC) rather than 0 (00:00:00). 1 is a better choice because some
programs use 0 as a special value. For instance, the Template
Toolkit uses a timestamp of 0 to denote the non-existence of a file,
so it barfs on files in the Nix store (see
template-toolkit-nix-store.patch in Nixpkgs). Similarly, Maya 2008
fails to load script directories with a timestamp of 0 and can't be
patched because it's closed source.
This will also shut up those "implausibly old time stamp" GNU tar
warnings.
2009-06-13 16:30:58 +00:00
Eelco Dolstra
d5eab2fc82
* Use foreach in a lot of places.
2009-04-21 11:52:16 +00:00
Eelco Dolstra
8f1bf28505
* nix-store --verify: don't bail out if a referenced path is missing.
...
(It can't fix it though.)
2009-04-21 11:06:27 +00:00