about summary refs log tree commit diff
path: root/src/libstore/local-store.cc
AgeCommit message (Collapse)AuthorFilesLines
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).
2006-12-09 * Use deletePathWrapped() in more places.Eelco Dolstra1-14/+3
2006-12-07 * In the garbage collector, if deleting a path fails, try to fix itsEelco Dolstra1-1/+12
ownership, then try again.
2006-12-07 * When not running as root, call the setuid helper to change theEelco Dolstra1-6/+6
ownership of the build result after the build.
2006-12-05 * Allow unprivileged users to run the garbage collector and to doEelco Dolstra1-1/+0
`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-03 * Removed `build-allow-root'.Eelco Dolstra1-3/+3
* Added `build-users-group', the group under which builds are to be performed. * Check that /nix/store has 1775 permission and is owner by the build-users-group.
2006-12-02 * Remove SwitchToOriginalUser, we're not going to need it anymore.Eelco Dolstra1-4/+1
2006-12-01 * Merge addToStore and addToStoreFixed.Eelco Dolstra1-19/+7
* addToStore now adds unconditionally, it doesn't use readOnlyMode. Read-only operation is up to the caller (who can call computeStorePathForPath).
2006-12-01 * More operations.Eelco Dolstra1-26/+5
* addToStore() and friends: don't do a round-trip to the worker if we're only interested in the path (i.e., in read-only mode).
2006-11-30 * More remote operations.Eelco Dolstra1-4/+4
* Added new operation hasSubstitutes(), which is more efficient than querySubstitutes().size() > 0.
2006-11-30 * Skeleton of the privileged worker program.Eelco Dolstra1-2/+2
* Some refactoring: put the NAR archive integer/string serialisation code in a separate file so it can be reused by the worker protocol implementation.
2006-11-30 * Skeleton of remote store implementation.Eelco Dolstra1-0/+1
2006-11-30 * Refactoring. There is now an abstract interface class StoreAPIEelco Dolstra1-0/+1037
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.