Eelco Dolstra
fd9c77dfc7
* Use SQLite 3.7.0's write-ahead logging (WAL mode). This is a lot
...
faster than the old mode when fsyncs are enabled, because it only
performs an fsync() when doing a checkpoint, rather than at every
commit. Some timings for doing a "nix-instantiate /etc/nixos/nixos
-A system" after modifying the stdenv setup script:
42.5s - SQLite 3.6.23 with truncate mode and fsync
3.4s - SQLite 3.6.23 with truncate mode and no fsync
32.1s - SQLite 3.7.0 with truncate mode and fsync
16.8s - SQLite 3.7.0 with WAL mode and fsync, auto-checkpoint
every 1000 pages
8.3s - SQLite 3.7.0 with WAL mode and fsync, auto-checkpoint
every 8192 pages
1.7s - SQLite 3.7.0 with WAL mode and no fsync
The default is now to use WAL mode with fsyncs. Because WAL doesn't
work on remote filesystems such as NFS (as it uses shared memory),
truncate mode can be re-enabled by setting the "use-sqlite-wal"
option to false.
2010-08-04 17:35:59 +00:00
Eelco Dolstra
7f893b7a43
* Allow derivations to hint that they should not be built remotely
...
using the build hook mechanism, by setting the derivation attribute
"preferLocalBuild" to true. This has a few use cases:
- The user environment builder. Since it just creates a bunch of
symlinks without much computation, there is no reason to do it
remotely. In fact, doing it remotely requires the entire closure
of the user environment to be copied to the remote machine, which
is extremely wasteful.
- `fetchurl'. Performing the download on a remote machine and then
copying it to the local machine involves twice as much network
traffic as performing the download locally, and doesn't save any
CPU cycles on the local machine.
2010-08-04 12:13:58 +00:00
Eelco Dolstra
3e5e0faf9c
* Okay, putting a lock on the temporary directory used by importPath()
...
doesn't work because the garbage collector doesn't actually look at
locks. So r22253 was stupid. Use addTempRoot() instead. Also,
locking the temporary directory in exportPath() was silly because it
isn't even in the store.
2010-06-21 11:08:09 +00:00
Eelco Dolstra
bf87cc44b4
* Sync with the trunk.
2010-06-21 07:55:38 +00:00
Eelco Dolstra
b57189174f
* In importPath() and exportPath(), lock the temporary directory to
...
prevent it from being deleted by the garbage collector.
2010-06-14 08:34:48 +00:00
Eelco Dolstra
d1f6c0cbe3
* Replacing ValidPath rows doesn't work because it causes a constraint
...
violation of the Refs table. So don't do that.
2010-06-08 13:38:28 +00:00
Eelco Dolstra
07ca66cf24
* Applied a patch from David Brown to prevent `nix-store --optimise'
...
from failing on rename() on BtrFS.
2010-06-04 13:56:11 +00:00
Eelco Dolstra
89865da76d
* Turn build errors during evaluation into EvalErrors.
2010-06-01 11:19:32 +00:00
Eelco Dolstra
a443c7573b
* Hack to allow derivations to disable chroot builds by setting the
...
attribute "__noChroot = true" (requested by Rob).
2010-06-01 10:01:14 +00:00
Eelco Dolstra
aa45027818
* Sync with the trunk.
2010-05-12 22:13:09 +00:00
Eelco Dolstra
f92c9a0ac5
* Allow unprivileged users to do `nix-store --clear-failed-paths' and
...
`nix-store --query-failed-paths'.
2010-05-04 10:45:10 +00:00
Eelco Dolstra
6199f9b93e
* Added a command `nix-store --clear-failed-paths <PATHS>' to clear
...
the "failed" status of the given store paths. The special value `*'
clears all failed paths.
2010-04-26 12:56:42 +00:00
Eelco Dolstra
2398af13c5
* Add an command `nix-store --query-failed-paths' to list the cached
...
failed paths (when using the `build-cache-failure' option).
2010-04-26 12:43:42 +00:00
Eelco Dolstra
6bbfe95e30
* Don't use an ostringstream in unparseDerivation(), because it's
...
slow. A `nix-env -qa --drv-path \*' on Nixpkgs was spending 40% of
its time in unparseDerivation() because of this (now 11%).
2010-04-21 19:25:50 +00:00
Eelco Dolstra
f3b8833a48
* Drop the dependency on the ATerm library.
2010-04-19 14:51:58 +00:00
Eelco Dolstra
efc7a579e8
* Don't use the ATerm library for parsing/printing .drv files.
2010-04-19 13:46:58 +00:00
Eelco Dolstra
e020d80e4e
* Sync with the trunk.
2010-03-11 15:45:05 +00:00
Ludovic Courtès
05e15049a5
Show the build user's group in /etc/group in chroots.
...
* src/libstore/build.cc (nix::DerivationGoal::startBuilder): Create
/etc/group showing the build user's group.
2010-03-11 14:47:04 +00:00
Eelco Dolstra
070057c1b9
* Sync with the trunk.
2010-03-11 10:52:52 +00:00
Ludovic Courtès
c752c9f41a
Fix thinko in r20547.
...
* src/libstore/build.cc (nix::DerivationGoal::startBuilder): Fix the GID
of the build user in /etc/passwd.
2010-03-11 10:33:04 +00:00
Ludovic Courtès
2e8eaca573
Clear supplementary groups of `nixbld' in /etc/passwd in chroots.
...
* src/libstore/build.cc (nix::DerivationGoal::startBuilder): Don't
display any supplementary groups for `nixbld' in /etc/passwd.
2010-03-11 10:21:23 +00:00
Eelco Dolstra
1a65142ec4
* Remove a debug statement.
2010-03-10 12:46:25 +00:00
Eelco Dolstra
4c356acd04
* In `nix-store --export', abort if the contents of a path has
...
changed. This prevents corrupt paths from spreading to other
machines. Note that checking the hash is cheap because we're
hashing anyway (because of the --sign feature).
2010-03-09 14:32:03 +00:00
Eelco Dolstra
44f6e6de77
* Set gc-keep-outputs' or
gc-keep-derivations' to false with
...
`--delete --ignore-liveness'.
2010-03-08 21:31:42 +00:00
Eelco Dolstra
2e4ef03aa3
* Increase the sqlite timeout.
2010-03-08 10:35:45 +00:00
Eelco Dolstra
bc6f7fc139
* Remove some unused functions.
2010-03-04 13:03:26 +00:00
Eelco Dolstra
3f9e647ae8
* checkInterrupt() shouldn't be called from a destructor.
2010-03-02 19:04:17 +00:00
Eelco Dolstra
594eaddd11
* When using the included sqlite/aterm libraries, build with
...
--enable-shared.
* In libutil/libstore/libexpr etc., link against sqlite and aterm.
* Some more header file hygiene.
2010-03-02 15:58:13 +00:00
Eelco Dolstra
24035b98b1
* Implement RemoteStore::queryValidPaths().
2010-02-26 12:05:01 +00:00
Eelco Dolstra
e42401ee7b
* Implement RemoteStore::queryDerivationOutputs().
2010-02-25 15:52:22 +00:00
Eelco Dolstra
af565c348a
* Support read-only access to the database.
2010-02-24 16:44:43 +00:00
Eelco Dolstra
e33f67ff0b
* Refactor the upgrade / database initialisation logic a bit.
2010-02-24 16:30:20 +00:00
Eelco Dolstra
84a4dd5ff0
* Don't use fdatasync since it doesn't work on Snow Leopard.
...
* Don't refer to config.h in util.hh, because config.h is not
installed (http://hydra.nixos.org/build/303053 ).
2010-02-24 15:46:06 +00:00
Eelco Dolstra
cfe742cfc5
* A function to query just the database id of a valid path.
2010-02-24 15:07:23 +00:00
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
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
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