aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/local-store.cc
AgeCommit message (Collapse)Author
2009-09-24* And some more.Eelco Dolstra
2009-09-23* Darwin hack.Eelco Dolstra
2009-09-23* Create some state directories automatically as a convenience.Eelco Dolstra
2009-06-13* Canonicalise timestamps in the Nix store to 1 (1970-01-01 00:00:01Eelco Dolstra
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 Dolstra
2009-04-21* nix-store --verify: don't bail out if a referenced path is missing.Eelco Dolstra
(It can't fix it though.)
2009-04-16* Fix a few "comparison is always false/true due to limited range ofEelco Dolstra
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 Dolstra
2009-03-27* Create /nix/store if it doesn't exist.Eelco Dolstra
2009-03-25* Negative caching, i.e. caching of build failures. Disabled byEelco Dolstra
default. This is mostly useful for Hydra.
2009-03-22* NAR archives: handle files larger than 2^32 bytes. Previously itEelco Dolstra
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 Dolstra
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 Dolstra
2008-12-03* addToStore() in nix-worker: don't write the NAR dump received fromEelco Dolstra
the client to a temporary directory, as that is highly inefficient.
2008-12-03* Pass HashType values instead of strings.Eelco Dolstra
2008-12-03* Made addToStore() a lot more efficient: it no longer reads the pathEelco Dolstra
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 Dolstra
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 Dolstra
and don't indicate path validity.
2008-08-05* Better error checking of the data from the substituters.Eelco Dolstra
2008-08-04* build.cc: only use a substituter if it returns info for a path.Eelco Dolstra
2008-08-04* nix-env --dry-run: show the total size of the substituterEelco Dolstra
downloads.
2008-08-02* Make nix-env --dry-run print the paths to be substituted correctlyEelco Dolstra
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 Dolstra
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 Dolstra
* The garbage collector now also prints the number of blocks freed.
2008-06-09* Merged the no-bdb branch (-r10900:HEADEelco Dolstra
https://svn.nixos.org/repos/nix/nix/branches/no-bdb).
2008-03-01* A transaction is unnecessary since the path cannot beEelco Dolstra
garbage-collected (it's a temporary root).
2008-01-29* nix-store --dump-db / --load-db to dump/load the Nix DB.Eelco Dolstra
* 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 Dolstra
2007-10-10* nix-store --optimise: flag "--dry-run" to just query what the diskEelco Dolstra
savings would be.
2007-10-09* New command `nix-store --optimise' to reduce Nix store disk spaceEelco Dolstra
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 Dolstra
table.
2007-08-12* Get rid of the substitutes database table (NIX-47). Instead, if weEelco Dolstra
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 Dolstra
2007-05-01* Set a terminate() handler to ensure that we leave the BDBEelco Dolstra
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 Dolstra
2007-03-30* Work around a bug in Apple's GCC preprocessor.Eelco Dolstra
2007-03-01* Look for the openssl program at compile time. If not found, callEelco Dolstra
openssl through $PATH at runtime.
2007-03-01* Don't check the signature unless we have to.Eelco Dolstra
2007-02-27* Doh! The deriver can be empty.Eelco Dolstra
2007-02-21* Check that the file containing the secret key is secret.Eelco Dolstra
2007-02-21* importPath(): set the deriver.Eelco Dolstra
* exportPath(): lock the path, use a transaction.
2007-02-21* `nix-store --import': import an archive created by `nix-storeEelco Dolstra
--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 Dolstra
in /nix/etc/nix/signing-key.sec
2007-02-20* Start of `nix-store --export' operation for serialising a storeEelco Dolstra
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 Dolstra
2007-01-29* computeStorePathForText: take the references into account whenEelco Dolstra
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 Dolstra
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 Dolstra
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 Dolstra
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 Dolstra
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).