about summary refs log tree commit diff
path: root/src/libstore
AgeCommit message (Collapse)AuthorFilesLines
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
2006-12-07 * When keeping the temporary build directory (-K), change the ownerEelco Dolstra1-1/+4
back to the Nix account.
2006-12-07 * Be less verbose.Eelco Dolstra1-1/+1
2006-12-07 * Don't count on the Pid deconstructor to kill the child process,Eelco Dolstra1-2/+14
since if we're running a build user in non-root mode, we can't. Let the setuid helper do it.
2006-12-07 * If not running as root, let the setuid helper kill the build user'sEelco Dolstra1-27/+36
processes before and after the build.
2006-12-07 * In the garbage collector, if deleting a path fails, try to fix itsEelco Dolstra3-6/+31
ownership, then try again.
2006-12-07 * When not running as root, call the setuid helper to change theEelco Dolstra2-7/+13
ownership of the build result after the build.
2006-12-07 * Change the ownership of store paths to the Nix account beforeEelco Dolstra1-4/+56
deleting them using the setuid helper.
2006-12-07 * Pass the actual build user to the setuid helper.Eelco Dolstra1-22/+10
2006-12-07 * If Nix is not running as root, call the setuid helper to start theEelco Dolstra1-21/+37
builder under the desired build user.
2006-12-07 * Sanity check.Eelco Dolstra1-1/+7
2006-12-07 * Move killUser() to libutil so that the setuid helper can use it.Eelco Dolstra1-48/+27
2006-12-06 * Get rid of `build-users'. We'll just take all the members ofEelco Dolstra1-35/+53
`build-users-group'. This makes configuration easier: you can just add users in /etc/group.
2006-12-06 * Start of the setuid helper (the program that performs the operationsEelco Dolstra1-3/+4
that have to be done as root: running builders under different uids, changing ownership of build results, and deleting paths in the store with the wrong ownership).
2006-12-05 * Be less chatty.Eelco Dolstra1-2/+2
2006-12-05 * Urgh. Do setgid() before setuid(), because the semantics of setgid() Eelco Dolstra1-4/+4
changes completely depending on whether you're root...
2006-12-05 * FreeBSD returns ESRCH when there are no processes to kill.Eelco Dolstra1-4/+8
2006-12-05 * Better message.Eelco Dolstra1-1/+1
2006-12-05 * Allow unprivileged users to run the garbage collector and to doEelco Dolstra10-49/+81
`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 Dolstra6-60/+124
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-05 * findRoots: return a map from the symlink (outside of the store) toEelco Dolstra1-11/+16
the store path (inside the store).
2006-12-05 * In addPermRoot, check that the root that we just registered can beEelco Dolstra1-17/+41
found by the garbage collector. This addresses NIX-71 and is a particular concern in multi-user stores.
2006-12-04 * Add indirect root registration to the protocol so that unprivilegedEelco Dolstra6-6/+32
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-04 * Don't redirect stderr.Eelco Dolstra1-6/+0
2006-12-04 * Handle exceptions and stderr for all protocol functions.Eelco Dolstra1-0/+10
* SIGIO -> SIGPOLL (POSIX calls it that). * Use sigaction instead of signal to register the SIGPOLL handler. Sigaction is better defined, and a handler registered with signal appears not to interrupt fcntl(..., F_SETLKW, ...), which is bad.
2006-12-04 * Daemon mode (`nix-worker --daemon'). Clients connect to the serverEelco Dolstra1-1/+2
via the Unix domain socket in /nix/var/nix/daemon.socket. The server forks a worker process per connection. * readString(): use the heap, not the stack. * Some protocol fixes.
2006-12-04 * When NIX_REMOTE=daemon, connect to /nix/var/nix/daemon.socketEelco Dolstra3-8/+37
instead of forking a worker.
2006-12-04 * Refactoring.Eelco Dolstra3-17/+33
2006-12-04 * Pass the verbosity level to the worker.Eelco Dolstra1-2/+8
2006-12-04 * Install the worker in bindir, not libexecdir.Eelco Dolstra3-1/+8
* Allow the worker path to be overriden through the NIX_WORKER environment variable.
2006-12-03 * Don't run setuid root when build-users is empty.Eelco Dolstra1-0/+1
* Send startup errors to the client.
2006-12-03 * Removed `build-allow-root'.Eelco Dolstra2-21/+29
* 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-03 * Use a Unix domain socket instead of pipes.Eelco Dolstra2-15/+18
2006-12-03 * Better error message if the worker doesn't start.Eelco Dolstra1-4/+8
2006-12-03 * Some hackery to propagate the worker's stderr and exceptions to theEelco Dolstra4-8/+44
client.
2006-12-02 * Move addTempRoot() to the store API, and add another functionEelco Dolstra8-13/+64
syncWithGC() to allow clients to register GC roots without needing write access to the global roots directory or the GC lock.
2006-12-02 * Remove SwitchToOriginalUser, we're not going to need it anymore.Eelco Dolstra3-20/+4
2006-12-02 * Remove queryPathHash().Eelco Dolstra1-1/+4
* Help for nix-worker.
2006-12-01 * Replace read-only calls to addTextToStore.Eelco Dolstra1-2/+6
2006-12-01 * Merge addToStore and addToStoreFixed.Eelco Dolstra7-80/+30
* 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 Dolstra4-31/+95
* 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 Dolstra8-33/+63
* Added new operation hasSubstitutes(), which is more efficient than querySubstitutes().size() > 0.
2006-11-30 * Doh.Eelco Dolstra1-1/+1
2006-11-30 * More operations.Eelco Dolstra2-8/+23