about summary refs log tree commit diff
path: root/src/libstore/local-store.hh
AgeCommit message (Collapse)AuthorFilesLines
2010-01-29 * Added an option "fsync-metadata" to fsync() changes toEelco Dolstra1-0/+5
/nix/var/nix/db. * Removed the function writeStringToFile since it does (almost) the same thing as writeFile.
2010-01-25 * Make the garbage collector do the right thing when `gc-keep-outputs'Eelco Dolstra1-0/+2
is enabled by not depending on the deriver.
2009-11-23 * Made the garbage collector a lot faster. It no longer computes theEelco Dolstra1-5/+6
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-10-22 * Remove a prototype for a function that no longer exists.Eelco Dolstra1-3/+0
2009-06-13 * Canonicalise timestamps in the Nix store to 1 (1970-01-01 00:00:01Eelco Dolstra1-2/+2
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-03-28 * Don't use the non-standard __gnu_cxx::stdio_filebuf class.Eelco Dolstra1-8/+1
2009-03-25 * Negative caching, i.e. caching of build failures. Disabled byEelco Dolstra1-0/+7
default. This is mostly useful for Hydra.
2008-12-16 * nix-store --verify: repair bad hash fields in the metadata file.Eelco Dolstra1-1/+1
2008-12-03 * addToStore() in nix-worker: don't write the NAR dump received fromEelco Dolstra1-0/+7
the client to a temporary directory, as that is highly inefficient.
2008-12-03 * Pass HashType values instead of strings.Eelco Dolstra1-1/+1
2008-12-03 * Unify the treatment of sources copied to the store, and recursiveEelco Dolstra1-3/+3
SHA-256 outputs of fixed-output derivations. I.e. they now produce the same store path: $ nix-store --add x /nix/store/j2fq9qxvvxgqymvpszhs773ncci45xsj-x $ nix-store --add-fixed --recursive sha256 x /nix/store/j2fq9qxvvxgqymvpszhs773ncci45xsj-x the latter being the same as the path that a derivation derivation { name = "x"; outputHashAlgo = "sha256"; outputHashMode = "recursive"; outputHash = "..."; ... }; produces. This does change the output path for such fixed-output derivations. Fortunately they are quite rare. The most common use is fetchsvn calls with SHA-256 hashes. (There are a handful of those is Nixpkgs, mostly unstable development packages.) * Documented the computation of store paths (in store-api.cc).
2008-09-17 * Some refactoring. Better output with `-v' for --use-atime.Eelco Dolstra1-2/+5
2008-09-17 * Garbage collector: added an option `--use-atime' to delete paths inEelco Dolstra1-2/+1
order of ascending last access time. This is useful in conjunction with --max-freed or --max-links to prefer deleting non-recently used garbage, which is good (especially in the build farm) since garbage may become live again. The code could easily be modified to accept other criteria for ordering garbage by changing the comparison operator used by the priority queue in collectGarbage().
2008-08-04 * build.cc: only use a substituter if it returns info for a path.Eelco Dolstra1-0/+3
2008-08-02 * Make nix-env --dry-run print the paths to be substituted correctlyEelco Dolstra1-0/+23
again. (After the previous substituter mechanism refactoring I didn't update the code that obtains the references of substitutable paths.) This required some refactoring: the substituter programs are now kept running and receive/respond to info requests via stdin/stdout.
2008-06-18 * Some refactoring: put the GC options / results in separate structs.Eelco Dolstra1-9/+9
* The garbage collector now also prints the number of blocks freed.
2008-06-13 * Garbage collector: don't do a complete topological sort of the NixEelco Dolstra1-0/+4
store under the reference relation, since that means that the garbage collector will need a long time to start deleting paths. Instead just delete the referrers of a path first.
2008-06-09 * Merged the no-bdb branch (-r10900:HEADEelco Dolstra1-47/+54
https://svn.nixos.org/repos/nix/nix/branches/no-bdb).
2008-01-29 * nix-store --dump-db / --load-db to dump/load the Nix DB.Eelco Dolstra1-0/+2
* nix-store --register-validity: option to supply the content hash of each path. * Removed compatibility with Nix <= 0.7 stores.
2007-10-09 * New command `nix-store --optimise' to reduce Nix store disk spaceEelco Dolstra1-0/+18
usage by finding identical files in the store and hard-linking them to each other. It typically reduces the size of the store by something like 25-35%. This is what the optimise-store.pl script did, but the new command is faster and more correct (it's safe wrt garbage collection and concurrent builds).
2007-08-13 * Bump the Nix database schema version number; delete the substitutesEelco Dolstra1-3/+3
table.
2007-08-12 * Get rid of the substitutes database table (NIX-47). Instead, if weEelco Dolstra1-17/+8
need any info on substitutable paths, we just call the substituters (such as download-using-manifests.pl) directly. This means that it's no longer necessary for nix-pull to register substitutes or for nix-channel to clear them, which makes those operations much faster (NIX-95). Also, we don't have to worry about keeping nix-pull manifests (in /nix/var/nix/manifests) and the database in sync with each other. The downside is that there is some overhead in calling an external program to get the substitutes info. For instance, "nix-env -qas" takes a bit longer. Abolishing the substitutes table also makes the logic in local-store.cc simpler, as we don't need to store info for invalid paths. On the downside, you cannot do things like "nix-store -qR" on a substitutable but invalid path (but nobody did that anyway). * Never catch interrupts (the Interrupted exception).
2007-06-12 * Support queryDeriver() in multi-user installations.Eelco Dolstra1-4/+2
2007-05-14 * Typo (reported by Marc Weber).Eelco Dolstra1-1/+1
2007-02-21 * `nix-store --import': import an archive created by `nix-storeEelco Dolstra1-0/+2
--export' into the Nix store, and optionally check the cryptographic signatures against /nix/etc/nix/signing-key.pub. (TODO: verify against a set of public keys.)
2007-02-20 * Start of `nix-store --export' operation for serialising a storeEelco Dolstra1-0/+3
path. This is like `nix-store --dump', only it also dumps the meta-information of the store path (references, deriver). Will add a `--sign' flag later to add a cryptographic signature, which we will use for exchanging store paths between build farm machines in a secure manner.
2007-01-14 * Make the garbage collector more resilient to certain consistencyEelco Dolstra1-0/+2
errors: in-use paths now cause a warning, not a fatal error.
2006-12-12 * New primop builtins.filterSource, which can be used to filter filesEelco Dolstra1-1/+2
from a source directory. All files for which a predicate function returns true are copied to the store. Typical example is to leave out the .svn directory: stdenv.mkDerivation { ... src = builtins.filterSource (path: baseNameOf (toString path) != ".svn") ./source-dir; # as opposed to # src = ./source-dir; } This is important because the .svn directory influences the hash in a rather unpredictable and variable way.
2006-12-09 * Use deletePathWrapped() in more places.Eelco Dolstra1-0/+6
2006-12-07 * In the garbage collector, if deleting a path fails, try to fix itsEelco Dolstra1-0/+9
ownership, then try again.
2006-12-05 * Allow unprivileged users to run the garbage collector and to doEelco Dolstra1-0/+3
`nix-store --delete'. But unprivileged users are not allowed to ignore liveness. * `nix-store --delete --ignore-liveness': ignore the runtime roots as well.
2006-12-05 * The determination of the root set should be made by the privilegedEelco Dolstra1-0/+2
process, so forward the operation. * Spam the user about GC misconfigurations (NIX-71). * findRoots: skip all roots that are unreadable - the warnings with which we spam the user should be enough.
2006-12-04 * Add indirect root registration to the protocol so that unprivilegedEelco Dolstra1-0/+2
processes can register indirect roots. Of course, there is still the problem that the garbage collector can only read the targets of the indirect roots when it's running as root...
2006-12-02 * Move addTempRoot() to the store API, and add another functionEelco Dolstra1-0/+4
syncWithGC() to allow clients to register GC roots without needing write access to the global roots directory or the GC lock.
2006-12-01 * Merge addToStore and addToStoreFixed.Eelco Dolstra1-16/+8
* addToStore now adds unconditionally, it doesn't use readOnlyMode. Read-only operation is up to the caller (who can call computeStorePathForPath).
2006-11-30 * Put building in the store API.Eelco Dolstra1-0/+7
2006-11-30 * Refactoring. There is now an abstract interface class StoreAPIEelco Dolstra1-0/+136
containing functions that operate on the Nix store. One implementation is LocalStore, which operates on the Nix store directly. The next step, to enable secure multi-user Nix, is to create a different implementation RemoteStore that talks to a privileged daemon process that uses LocalStore to perform the actual operations.