about summary refs log tree commit diff
path: root/src/libutil/util.cc
AgeCommit message (Collapse)AuthorFilesLines
2008-05-21 * GCC 4.3.0 (Fedora 9) compatibility fixes. Reported by Gour andEelco Dolstra1-1/+3
Armijn Hemel.
2008-03-27 * Use /tmp/nix-build-<drvpath>-<counter> instead ofEelco Dolstra1-6/+14
/tmp/nix-<pid>-<counter> for temporary build directories. This increases purity a bit: many packages store the temporary build path in their output, causing (generally unimportant) binary differences.
2007-12-14 * Use strsignal if available to give better error messages forEelco Dolstra1-2/+10
builders that fail due to a signal.
2007-11-29 * nix-env -e: support uninstalling by path, so that one can sayEelco Dolstra1-2/+1
$ nix-env -e $(which firefox) or $ nix-env -e /nix/store/nywzlygrkfcgz7dfmhm5xixlx1l0m60v-pan-0.132 * nix-env -i: if an argument contains a slash anywhere, treat it as a path and follow it through symlinks into the Nix store. This allows things like $ nix-build -A firefox $ nix-env -i ./result * nix-env -q/-i/-e: don't complain when the `*' selector doesn't match anything. In particular, `nix-env -q \*' doesn't fail anymore on an empty profile.
2007-10-27 * Delete the chroot directory automatically.Eelco Dolstra1-4/+4
* Removed some debug messages.
2007-10-27 * Support for doing builds in a chroot under Linux. The builder isEelco Dolstra1-9/+23
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-09-17 * nix-env: allow ~/.nix-defexpr to be a directory. If it is, then theEelco Dolstra1-0/+1
Nix expressions in that directory are combined into an attribute set {file1 = import file1; file2 = import file2; ...}, i.e. each Nix expression is an attribute with the file name as the attribute name. Also recurses into directories. * nix-env: removed the "--import" (-I) option which set the ~/.nix-defexpr symlink. * nix-channel: don't use "nix-env --import", instead symlink ~/.nix-defexpr/channels. So finally nix-channel --update doesn't override any default Nix expressions but combines with them. This means that you can have (say) a local Nixpkgs SVN tree and use it as a default for nix-env: $ ln -s .../path-to-nixpkgs-tree ~/.nix-defexpr/nixpkgs_svn and be subscribed to channels (including Nixpkgs) at the same time. (If there is any ambiguity, the -A flag can be used to disambiguate, e.g. "nix-env -i -A nixpkgs_svn.pan".)
2007-08-12 * Get rid of the substitutes database table (NIX-47). Instead, if weEelco Dolstra1-2/+5
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-05-01 * Set a terminate() handler to ensure that we leave the BDBEelco Dolstra1-3/+17
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-03-19 * Terminate build hooks and substitutes with a TERM signal, not a KILLEelco Dolstra1-4/+12
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-02-21 * `nix-store --import': import an archive created by `nix-storeEelco Dolstra1-5/+5
--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-3/+12
in /nix/etc/nix/signing-key.sec
2006-12-07 * Move setuidCleanup() to libutil.Eelco Dolstra1-0/+16
2006-12-07 * Change the ownership of store paths to the Nix account beforeEelco Dolstra1-1/+1
deleting them using the setuid helper.
2006-12-07 * Move killUser() to libutil so that the setuid helper can use it.Eelco Dolstra1-0/+47
2006-12-05 * The determination of the root set should be made by the privilegedEelco Dolstra1-0/+1
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-04 * Daemon mode (`nix-worker --daemon'). Clients connect to the serverEelco Dolstra1-14/+3
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-03 * Pid::kill() should be interruptable.Eelco Dolstra1-1/+3
2006-12-03 * Some hackery to propagate the worker's stderr and exceptions to theEelco Dolstra1-1/+10
client.
2006-12-02 * Move addTempRoot() to the store API, and add another functionEelco Dolstra1-2/+2
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 most of the old setuid code.Eelco Dolstra1-130/+1
* Much simpler setuid code for the worker in slave mode.
2006-12-02 * Remove SwitchToOriginalUser, we're not going to need it anymore.Eelco Dolstra1-31/+0
2006-11-29 * Don't spam.Eelco Dolstra1-0/+2
2006-11-29 * Example script to set permissions for setuid operation.Roy van den Broek1-1/+1
2006-11-29 * Remove --enable-setuid, --with-nix-user and --with-nix-group.Eelco Dolstra1-26/+45
Rather, setuid support is now always compiled in (at least on platforms that have the setresuid system call, e.g., Linux and FreeBSD), but it must enabled by chowning/chmodding the Nix binaries.
2006-11-24 * Doh! Path sizes need to be computed recursively of course.Eelco Dolstra1-0/+23
(NIX-70)
2006-10-30 * readFile: don't overflow the stack on large files.Eelco Dolstra1-1/+15
2006-09-27 * Fix setuid builds.Eelco Dolstra1-5/+9
2006-09-04 * Move setuid stuff to libutil.Eelco Dolstra1-0/+136
* Install libexpr header files.
2006-09-04 * Use a proper namespace.Eelco Dolstra1-12/+14
* Optimise header file usage a bit. * Compile the parser as C++.
2006-08-29 * Fix the ~ operator.Eelco Dolstra1-0/+9
2006-08-26 * Refactoring.Eelco Dolstra1-4/+9
2006-08-04 * Weird issue on Cygwin with the include file order.Eelco Dolstra1-4/+4
2006-07-20 * Call find-runtime-roots.pl from the garbage collector to preventEelco Dolstra1-0/+84
running applications etc. from being garbage collected.
2006-07-06 * Allow the canonical system name to be specified at runtime in theEelco Dolstra1-3/+0
Nix config file.
2006-06-19 * Write messages to stderr in a slightly more atomic way. Useful whenEelco Dolstra1-1/+2
there are several parallel processes.
2006-06-14 * Fix for a problem with BSD's group ownership semantics when the user Eelco Dolstra1-1/+13
is not in the "wheel" group.
2006-05-11 * 64-bit compatibility fixes (for problems revealed by building on an AthlonEelco Dolstra1-2/+2
64 running 64-bit SUSE). A patched ATerm library is required to run Nix succesfully.
2006-03-08 * Some refactoring of the exception handling code so that we can catchEelco Dolstra1-0/+7
Nix expression assertion failures.
2006-01-09 * dirOf: return "/", not "", for paths in the root directory. Fixes NIX-26.Eelco Dolstra1-2/+2
2006-01-08 * Resolve all symlink components in the location of the temporaryEelco Dolstra1-2/+21
build directory (TMPDIR, i.e., /tmp). Fixes NIX-26.
2005-12-15 * `nix-store --gc' prints out the number of bytes freed on stdoutEelco Dolstra1-3/+13
(even when it is interrupted by a signal).
2005-09-22 * Parse multi-valued options.Eelco Dolstra1-0/+15
2005-05-04 * The eof() state isn't guaranteed to be set non-lazily. GCC 2.95Eelco Dolstra1-1/+1
compatibility fix.
2005-03-24 * Create missing log and temproots directories automatically (reportedEelco Dolstra1-0/+10
by Rob).
2005-02-09 * Automatically upgrade <= 0.7 Nix stores to the new schema (so thatEelco Dolstra1-0/+9
existing user environments continue to work). * `nix-store --verify': detect incomplete closures.
2005-02-01 * A GC setting `gc-keep-outputs' to specify whether output paths ofEelco Dolstra1-0/+21
derivations should be kept.
2005-02-01 * nix-build: use an indirection scheme to make it easier for users toEelco Dolstra1-0/+9
get rid of GC roots. Nix-build places a symlink `result' in the current directory. Previously, removing that symlink would not remove the store path being linked to as a GC root. Now, the GC root created by nix-build is actually a symlink in `/nix/var/nix/gcroots/auto' to `result'. So if that symlink is removed the GC root automatically becomes invalid (since it can no longer be resolved). The root itself is not automatically removed - the garbage collector should delete dangling roots.
2005-01-31 * Topologically sort paths under the references relation to ensureEelco Dolstra1-1/+0
that they are deleted in an order that maintains the closure invariant. * Presence of a path in a temporary roots file does not imply that all paths in its closure are also present, so add the closure.
2005-01-31 * Start of concurrent garbage collection. Processes write temporaryEelco Dolstra1-3/+10
roots to a per-process temporary file in /nix/var/nix/temproots while holding a write lock on that file. The garbage collector acquires read locks on all those files, thus blocking further progress in other Nix processes, and reads the sets of temporary roots.