about summary refs log tree commit diff
path: root/src/libstore/local-store.cc
AgeCommit message (Collapse)AuthorFilesLines
2009-09-24 * And some more.Eelco Dolstra1-0/+1
2009-09-23 * Darwin hack.Eelco Dolstra1-0/+7
2009-09-23 * Create some state directories automatically as a convenience.Eelco Dolstra1-6/+15
2009-06-13 * Canonicalise timestamps in the Nix store to 1 (1970-01-01 00:00:01Eelco Dolstra1-1/+1
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-04-21 * Use foreach in a lot of places.Eelco Dolstra1-9/+8
2009-04-21 * nix-store --verify: don't bail out if a referenced path is missing.Eelco Dolstra1-14/+13
(It can't fix it though.)
2009-04-16 * Fix a few "comparison is always false/true due to limited range ofEelco Dolstra1-1/+1
data type" warnings on 64-bit platforms. The one in parser.y is likely to be a real bug.
2009-03-28 * Don't use the non-standard __gnu_cxx::stdio_filebuf class.Eelco Dolstra1-25/+16
2009-03-27 * Create /nix/store if it doesn't exist.Eelco Dolstra1-0/+2
2009-03-25 * Negative caching, i.e. caching of build failures. Disabled byEelco Dolstra1-0/+22
default. This is mostly useful for Hydra.
2009-03-22 * NAR archives: handle files larger than 2^32 bytes. Previously itEelco Dolstra1-1/+1
would just silently store only (fileSize % 2^32) bytes. * Use posix_fallocate if available when unpacking archives. * Provide a better error message when trying to unpack something that isn't a NAR archive.
2009-02-02 * Build hooks: use nix-store --import. This prevents a redundantEelco Dolstra1-1/+8
scan for runtime dependencies (i.e. the local machine shouldn't do a scan that the remote machine has already done). Also pipe directly into `nix-store --import': don't use a temporary file.
2008-12-16 * nix-store --verify: repair bad hash fields in the metadata file.Eelco Dolstra1-4/+15
2008-12-03 * addToStore() in nix-worker: don't write the NAR dump received fromEelco Dolstra1-19/+26
the client to a temporary directory, as that is highly inefficient.
2008-12-03 * Pass HashType values instead of strings.Eelco Dolstra1-3/+3
2008-12-03 * Made addToStore() a lot more efficient: it no longer reads the pathEelco Dolstra1-32/+28
being copied 3 times in the worst case. It doesn't run in constant space, but it didn't do that anyway.
2008-12-03 * Unify the treatment of sources copied to the store, and recursiveEelco Dolstra1-4/+7
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-11-19 * Files in the info directory starting with "." are temporary filesEelco Dolstra1-2/+5
and don't indicate path validity.
2008-08-05 * Better error checking of the data from the substituters.Eelco Dolstra1-21/+16
2008-08-04 * build.cc: only use a substituter if it returns info for a path.Eelco Dolstra1-26/+32
2008-08-04 * nix-env --dry-run: show the total size of the substituterEelco Dolstra1-1/+4
downloads.
2008-08-02 * Make nix-env --dry-run print the paths to be substituted correctlyEelco Dolstra1-20/+97
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-07-18 * Allow read-only access to the store (e.g., non-root users on NixOSEelco Dolstra1-5/+9
can do operations like "nix-store -qR <path>" even without the Nix daemon).
2008-06-18 * Some refactoring: put the GC options / results in separate structs.Eelco Dolstra1-2/+3
* The garbage collector now also prints the number of blocks freed.
2008-06-09 * Merged the no-bdb branch (-r10900:HEADEelco Dolstra1-566/+412
https://svn.nixos.org/repos/nix/nix/branches/no-bdb).
2008-03-01 * A transaction is unnecessary since the path cannot beEelco Dolstra1-8/+3
garbage-collected (it's a temporary root).
2008-01-29 * nix-store --dump-db / --load-db to dump/load the Nix DB.Eelco Dolstra1-93/+13
* nix-store --register-validity: option to supply the content hash of each path. * Removed compatibility with Nix <= 0.7 stores.
2007-10-10 * Doh! Don't change the permissions on /nix/store.Eelco Dolstra1-9/+8
2007-10-10 * nix-store --optimise: flag "--dry-run" to just query what the diskEelco Dolstra1-16/+21
savings would be.
2007-10-09 * New command `nix-store --optimise' to reduce Nix store disk spaceEelco Dolstra1-5/+120
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-2/+30
table.
2007-08-12 * Get rid of the substitutes database table (NIX-47). Instead, if weEelco Dolstra1-191/+42
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-2/+8
2007-05-01 * Set a terminate() handler to ensure that we leave the BDBEelco Dolstra1-1/+5
environment cleanly even when an exception is thrown from a destructor. We still crash, but we don't take all other Nix processes with us.
2007-05-01 * Make --verify more interruptable.Eelco Dolstra1-0/+1
2007-03-30 * Work around a bug in Apple's GCC preprocessor.Eelco Dolstra1-1/+1
2007-03-01 * Look for the openssl program at compile time. If not found, callEelco Dolstra1-2/+2
openssl through $PATH at runtime.
2007-03-01 * Don't check the signature unless we have to.Eelco Dolstra1-21/+23
2007-02-27 * Doh! The deriver can be empty.Eelco Dolstra1-1/+2
2007-02-21 * Check that the file containing the secret key is secret.Eelco Dolstra1-1/+14
2007-02-21 * importPath(): set the deriver.Eelco Dolstra1-3/+13
* exportPath(): lock the path, use a transaction.
2007-02-21 * `nix-store --import': import an archive created by `nix-storeEelco Dolstra1-4/+110
--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-21 * `nix-store --export --sign': sign the Nix archive using the RSA keyEelco Dolstra1-4/+58
in /nix/etc/nix/signing-key.sec
2007-02-20 * Start of `nix-store --export' operation for serialising a storeEelco Dolstra1-0/+18
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-02-06 * Fix 64-bit compiler warnings.Eelco Dolstra1-2/+2
2007-01-29 * computeStorePathForText: take the references into account whenEelco Dolstra1-1/+1
computing the store path (NIX-77). This is an important security property in multi-user Nix stores. Note that this changes the store paths of derivations (since the derivation aterms are added using addTextToStore), but not most outputs (unless they use builtins.toFile).
2007-01-14 * `nix-store --verify': revive checking the referrers table. This isEelco Dolstra1-42/+56
important to get garbage collection to work if there is any inconsistency in the database (because the referrer table is used to determine whether it is safe to delete a path). * `nix-store --verify': show some progress.
2007-01-14 * Make the garbage collector more resilient to certain consistencyEelco Dolstra1-1/+1
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-34/+8
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 lchown() instead of chown() in canonicalisePathMetaData(). ThisEelco Dolstra1-8/+38
matters when running as root, since then we don't use the setuid helper (which already used lchown()). * Also check for an obscure security problem on platforms that don't have lchown. Then we can't change the ownership of symlinks, which doesn't matter *except* when the containing directory is writable by the owner (which is the case with the top-level Nix store directory).