Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2006-12-12 | * New built-in function `builtins.attrNames' that returns the | Eelco Dolstra | 1 | -0/+21 | |
names of the attributes in an attribute set. | |||||
2006-12-09 | * Use lchown() instead of chown() in canonicalisePathMetaData(). This | Eelco Dolstra | 1 | -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 Dolstra | 3 | -22/+31 | |
2006-12-08 | * Goal cancellation inside the waitForInput() loop needs to be handled | Eelco Dolstra | 1 | -38/+85 | |
very carefully, since it can invalidate iterators into the `children' map. | |||||
2006-12-08 | * Some refactoring. | Eelco Dolstra | 1 | -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 of | Eelco Dolstra | 4 | -20/+79 | |
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 even | Eelco Dolstra | 1 | -22/+36 | |
in case of failure. | |||||
2006-12-07 | * Remove ancient terminology. | Eelco Dolstra | 1 | -3/+3 | |
2006-12-07 | * When keeping the temporary build directory (-K), change the owner | Eelco Dolstra | 1 | -1/+4 | |
back to the Nix account. | |||||
2006-12-07 | * Doh! | Eelco Dolstra | 4 | -4/+4 | |
2006-12-07 | * Be less verbose. | Eelco Dolstra | 1 | -1/+1 | |
2006-12-07 | * Rename all those main.cc files. | Eelco Dolstra | 10 | -5/+5 | |
2006-12-07 | * Check for lchown. | Eelco Dolstra | 1 | -0/+7 | |
2006-12-07 | * Don't count on the Pid deconstructor to kill the child process, | Eelco Dolstra | 1 | -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 | * Move setuidCleanup() to libutil. | Eelco Dolstra | 5 | -27/+23 | |
2006-12-07 | * If not running as root, let the setuid helper kill the build user's | Eelco Dolstra | 2 | -31/+69 | |
processes before and after the build. | |||||
2006-12-07 | * In the garbage collector, if deleting a path fails, try to fix its | Eelco Dolstra | 3 | -6/+31 | |
ownership, then try again. | |||||
2006-12-07 | * When not running as root, call the setuid helper to change the | Eelco Dolstra | 2 | -7/+13 | |
ownership of the build result after the build. | |||||
2006-12-07 | * Change the ownership of store paths to the Nix account before | Eelco Dolstra | 3 | -38/+104 | |
deleting them using the setuid helper. | |||||
2006-12-07 | * Pass the actual build user to the setuid helper. | Eelco Dolstra | 1 | -22/+10 | |
2006-12-07 | * If Nix is not running as root, call the setuid helper to start the | Eelco Dolstra | 2 | -26/+41 | |
builder under the desired build user. | |||||
2006-12-07 | * Sanity check. | Eelco Dolstra | 1 | -1/+7 | |
2006-12-07 | * Move killUser() to libutil so that the setuid helper can use it. | Eelco Dolstra | 3 | -48/+79 | |
2006-12-06 | * Change the ownership of the current directory to the build user. | Eelco Dolstra | 1 | -3/+16 | |
2006-12-06 | * Verify that the desired target user is in the build users group (as | Eelco Dolstra | 1 | -10/+43 | |
specified in the setuid config file). | |||||
2006-12-06 | * Check that the caller is allowed to call the setuid helper. The | Eelco Dolstra | 1 | -12/+49 | |
allowed uid is specified in a configuration file in /etc/nix-setuid.conf. | |||||
2006-12-06 | * Fix the safety check. | Eelco Dolstra | 1 | -2/+2 | |
2006-12-06 | * Get rid of `build-users'. We'll just take all the members of | Eelco Dolstra | 2 | -38/+60 | |
`build-users-group'. This makes configuration easier: you can just add users in /etc/group. | |||||
2006-12-06 | * nix-setuid-helper: allow running programs under a different uid. | Eelco Dolstra | 3 | -11/+140 | |
2006-12-06 | * Start of the setuid helper (the program that performs the operations | Eelco Dolstra | 4 | -4/+17 | |
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 Dolstra | 1 | -2/+2 | |
2006-12-05 | * Urgh. Do setgid() before setuid(), because the semantics of setgid() | Eelco Dolstra | 1 | -4/+4 | |
changes completely depending on whether you're root... | |||||
2006-12-05 | * Tricky: child processes should not send data to the client since | Eelco Dolstra | 1 | -2/+10 | |
that might mess up the protocol. And besides, the socket file descriptor is probably closed. | |||||
2006-12-05 | * FreeBSD returns ESRCH when there are no processes to kill. | Eelco Dolstra | 1 | -4/+8 | |
2006-12-05 | * Oops! In daemon mode, we can't run as root either if build-users is empty. | Eelco Dolstra | 1 | -2/+2 | |
2006-12-05 | * Use an explicit handler for SIGCHLD, since SIG_IGN doesn't do the | Eelco Dolstra | 1 | -3/+15 | |
right thing on FreeBSD 4 (it leaves zombies). | |||||
2006-12-05 | * Better message. | Eelco Dolstra | 1 | -1/+1 | |
2006-12-05 | * Ugly hack to handle spurious SIGPOLLs. | Eelco Dolstra | 1 | -20/+50 | |
2006-12-05 | * Some renaming. | Eelco Dolstra | 1 | -6/+6 | |
2006-12-05 | * Allow unprivileged users to run the garbage collector and to do | Eelco Dolstra | 16 | -56/+106 | |
`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 privileged | Eelco Dolstra | 9 | -77/+138 | |
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) to | Eelco Dolstra | 1 | -11/+16 | |
the store path (inside the store). | |||||
2006-12-05 | * In addPermRoot, check that the root that we just registered can be | Eelco Dolstra | 2 | -18/+42 | |
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 unprivileged | Eelco Dolstra | 7 | -6/+42 | |
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 | * Not every OS knows about SIGPOLL. | Eelco Dolstra | 1 | -0/+5 | |
2006-12-04 | * Don't redirect stderr. | Eelco Dolstra | 1 | -6/+0 | |
2006-12-04 | * Handle exceptions and stderr for all protocol functions. | Eelco Dolstra | 2 | -19/+64 | |
* 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 server | Eelco Dolstra | 7 | -53/+182 | |
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.socket | Eelco Dolstra | 3 | -8/+37 | |
instead of forking a worker. | |||||
2006-12-04 | * Refactoring. | Eelco Dolstra | 3 | -17/+33 | |