about summary refs log tree commit diff
path: root/src/libstore
AgeCommit message (Collapse)AuthorFilesLines
2007-10-27 * Detect whether chroot / bind-mount support is available.Eelco Dolstra1-4/+21
2007-10-27 * Delete the chroot directory automatically.Eelco Dolstra1-14/+34
* Removed some debug messages.
2007-10-27 * Support for doing builds in a chroot under Linux. The builder isEelco Dolstra1-4/+134
executed in a chroot that contains just the Nix store, the temporary build directory, and a configurable set of additional directories (/dev and /proc by default). This allows a bit more purity enforcement: hidden build-time dependencies on directories such as /usr or /nix/var/nix/profiles are no longer possible. As an added benefit, accidental network downloads (cf. NIXPKGS-52) are prevented as well (because files such as /etc/resolv.conf are not available in the chroot). However the usefulness of chroots is diminished by the fact that many builders depend on /bin/sh, so you need /bin in the list of additional directories. (And then on non-NixOS you need /lib as well...)
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 Dolstra2-5/+138
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-09-18 * Pass various options to the worker so that flags like -K or -j workEelco Dolstra3-4/+29
in multi-user Nix (NIX-72). * Client/worker: exchange a protocol version number for future compatibility.
2007-08-30 * Create the Nix daemon socket in a separate directoryEelco Dolstra1-3/+6
(/nix/var/nix/daemon-socket). This allows access to the Nix daemon to be restricted by setting the mode/ownership on that directory as desired, e.g. $ chmod 770 /nix/var/nix/daemon-socket $ chown root.wheel /nix/var/nix/daemon-socket to allow only users in the wheel group to use Nix. Setting the ownership on a socket is much trickier, since the socket must be deleted and recreated every time the daemon is started (which would require additional Nix configuration file directives to specify the mode/ownership, and wouldn't support arbitrary ACLs), some BSD variants appear to ignore permissions on sockets, and it's not clear whether the umask is respected on every platform when creating sockets.
2007-08-28 * When there are multiple substituters, make sure to release theEelco Dolstra1-0/+5
lock on the output path after trying each. Otherwise the pathIsLockedByMe() test gets confused.
2007-08-28 * Fix a race condition with parallel builds where multipleEelco Dolstra3-10/+96
fixed-output derivations or substitutions try to build the same store path at the same time. Locking generally catches this, but not between multiple goals in the same process. This happened especially often (actually, only) in the build farm with fetchurl downloads of the same file being executed on multiple machines and then copied back to the main machine where they would clobber each other (NIXBF-13). Solution: if a goal notices that the output path is already locked, then go to sleep until another goal finishes (hopefully the one locking the path) and try again.
2007-08-28 * PathLocks::lockPaths: don't allow reacquiring a lock we alreadyEelco Dolstra2-5/+5
hold.
2007-08-13 * Bump the Nix database schema version number; delete the substitutesEelco Dolstra2-5/+33
table.
2007-08-13 * Backwards compatibility.Eelco Dolstra1-2/+2
2007-08-12 * Get rid of the substitutes database table (NIX-47). Instead, if weEelco Dolstra14-306/+279
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 Dolstra8-14/+31
2007-06-11 * Check against creation of GC roots in the store. Those roots don'tEelco Dolstra1-1/+5
work, because findRoots() stops when it encounters a symlink to the store. And of course the store is supposed to be read-only.
2007-05-14 * Typo (reported by Marc Weber).Eelco Dolstra1-1/+1
2007-05-07 * Create the database directory if it doesn't exist.Eelco Dolstra1-0/+9
2007-05-01 * Set a terminate() handler to ensure that we leave the BDBEelco Dolstra3-5/+9
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-20 * Override the setuid helper using NIX_SETUID_HELPER.Eelco Dolstra1-1/+2
2007-03-19 * Terminate build hooks and substitutes with a TERM signal, not a KILLEelco Dolstra1-6/+13
signal. This is necessary because those processes may have joined the BDB environment, so they have to be given a chance to clean up. (NIX-85)
2007-03-19 * Undocumented option `gc-check-reachability' to allow reachabilityEelco Dolstra1-7/+9
checking to be turned off on machines with way too many roots.
2007-03-07 * Delete the output paths before invoking the build hook.Eelco Dolstra1-14/+14
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 * `nix-store -qR' and friends: print the paths sorted topologicallyEelco Dolstra2-2/+7
under the references relation. This is useful for commands that want to copy paths to another Nix store in the right order.
2007-02-21 * Check that the file containing the secret key is secret.Eelco Dolstra1-1/+14
2007-02-21 * `nix-store --import' now also works in remote mode. The workerEelco Dolstra3-8/+27
always requires a signature on the archive. This is to ensure that unprivileged users cannot add Trojan horses to the Nix store.
2007-02-21 * Support exportPath() in remote mode.Eelco Dolstra3-5/+16
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 Dolstra5-4/+124
--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 Dolstra2-6/+59
in /nix/etc/nix/signing-key.sec
2007-02-20 * Start of `nix-store --export' operation for serialising a storeEelco Dolstra5-0/+39
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 * Doh!Eelco Dolstra1-2/+0
2007-01-29 * computeStorePathForText: take the references into account whenEelco Dolstra4-5/+17
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-23 * exportReferencesGraph: work on paths within store paths as well.Eelco Dolstra1-2/+10
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 Dolstra3-4/+10
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 Dolstra7-45/+25
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 Dolstra3-22/+31
2006-12-08 * Goal cancellation inside the waitForInput() loop needs to be handledEelco Dolstra1-38/+85
very carefully, since it can invalidate iterators into the `children' map.
2006-12-08 * Some refactoring.Eelco Dolstra1-95/+118
* Throw more exceptions as BuildErrors instead of Errors. This matters when --keep-going is turned on. (A BuildError is caught and terminates the goal in question, an Error terminates the program.)
2006-12-08 * Kill a build if it has gone for more than a certain number ofEelco Dolstra3-6/+61
seconds without producing output on stdout or stderr (NIX-65). This timeout can be specified using the `--max-silent-time' option or the `build-max-silent-time' configuration setting. The default is infinity (0). * Fix a tricky race condition: if we kill the build user before the child has done its setuid() to the build user uid, then it won't be killed, and we'll potentially lock up in pid.wait(). So also send a conventional kill to the child.
2006-12-08 * Also for convenience, change the ownership of the build output evenEelco Dolstra1-22/+36
in case of failure.
2006-12-07 * Remove ancient terminology.Eelco Dolstra1-3/+3