about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2006-01-19 * Don't show cycles, they're not very useful.Eelco Dolstra1-2/+4
2006-01-09 * dirOf: return "/", not "", for paths in the root directory. Fixes NIX-26.Eelco Dolstra2-3/+3
2006-01-08 * Resolve all symlink components in the location of the temporaryEelco Dolstra2-4/+25
build directory (TMPDIR, i.e., /tmp). Fixes NIX-26.
2005-12-25 * More GCC 2.95 compatibility.Eelco Dolstra1-1/+1
2005-12-25 * Hack around a GCC 2.95 bug.Eelco Dolstra1-2/+2
2005-12-24 * GCC 2.95 compatibility.Eelco Dolstra1-1/+1
2005-12-24 * Documentation fixes.Eelco Dolstra1-2/+2
2005-12-23 * Added a flag `--ignore-liveness' to `nix-store --delete'. ItEelco Dolstra3-6/+12
deletes a path even if it is reachable from a root. However, it won't delete a path that still has referrers (since that would violate store invariants). Don't try this at home. It's a useful hack for recovering from certain situations in a somewhat clean way (e.g., holes in closures due to disk corruption).
2005-12-23 * Revived the old "nix-store --delete" operation that deletes theEelco Dolstra4-11/+45
specified paths from the Nix store. However, this operation is safe: it refuses to delete anything that the garbage collector wouldn't delete.
2005-12-15 * `nix-store --gc' prints out the number of bytes freed on stdoutEelco Dolstra7-11/+45
(even when it is interrupted by a signal).
2005-12-15 * Split the database upgrade into multiple transactions to preventEelco Dolstra1-2/+11
Berkeley DB from running out of locks.
2005-12-13 * Change `referer' to `referrer' throughout. In particular, theEelco Dolstra7-49/+50
nix-store query options `--referer' and `--referer-closure' have been changed to `--referrer' and `--referrer-closure' (but the old ones are still accepted for compatibility).
2005-12-12 * Automatically delete the old referers table.Eelco Dolstra3-5/+31
2005-12-12 * Fix NIX-23: quadratic complexity in maintaining the referersEelco Dolstra4-40/+107
mapping. The referer table is replaced by a referrer table (note spelling fix) that stores each referrer separately. That is, instead of having referer[P] = {Q_1, Q_2, Q_3, ...} we store referer[(P, Q_1)] = "" referer[(P, Q_2)] = "" referer[(P, Q_3)] = "" ... To find the referrers of P, we enumerate over the keys with a value lexicographically greater than P. This requires the referrer table to be stored as a B-Tree rather than a hash table. (The tuples (P, Q) are stored as P + null-byte + Q.) Old Nix databases are upgraded automatically to the new schema.
2005-12-09 * Use Berkeley DB 4.4's process registry feature to recover fromEelco Dolstra2-102/+56
crashed Nix instances, and toss out our own recovery code.
2005-12-06 * Require Berkeley DB 4.4.Eelco Dolstra1-1/+3
* Checkpoint after an upgrade.
2005-11-16 * Did something useful while waiting at IAD: reference scanning is nowEelco Dolstra5-31/+52
much faster.
2005-11-04 * Install signal handlers for SIGTERM and SIGHUP. This ensures thatEelco Dolstra1-0/+4
Nix is properly shut down when it receives those signals. In particular this ensures that killing the garbage collector doesn't cause a subsequent database recovery.
2005-11-04 * Memoise checkVarDefs since internally produced terms (i.e., not theEelco Dolstra1-9/+24
result of parsing) can have very heavy sharing, causing exponential complexity if we naively recurse into them. ATerms are graphs, not trees!
2005-10-29 * Turn off build hooks in nix-push because of an impurity (NIX-21).Eelco Dolstra1-1/+1
2005-10-29 * Repair the referers table from the references table.Rob Vermaas1-0/+3
2005-10-20 * Prevent uids from being used for more than one buildEelco Dolstra1-36/+120
simultaneously. We do this using exclusive locks on uid files in /nix/var/nix/userpool, e.g., /nix/var/nix/userpool/123 for uid 123.
2005-10-19 * Oops. Fixed-output derivations were broken.Eelco Dolstra1-1/+0
2005-10-17 * Also kill all processes of the build user after the build. This isEelco Dolstra1-0/+8
critical to prevent certain kinds of 0wnage.
2005-10-17 * Before starting a build under some uid, kill all current processesEelco Dolstra1-0/+48
running under that uid.
2005-10-17 * Check that the build result is owned by the build user, and thatEelco Dolstra1-2/+13
nobody else has write permission to the build result. This catches most hack attempts.
2005-10-17 * Don't use FIFOs to make Nix create the output path on behalf of theEelco Dolstra1-68/+17
builder. Instead, require that the Nix store has sticky permission (S_ISVTX); everyone can created files in the Nix store, but they cannot delete, rename or modify files created by others.
2005-10-17 * Beginning of secure multi-user Nix stores. If Nix is started asEelco Dolstra4-58/+219
root (or setuid root), then builds will be performed under one of the users listed in the `build-users' configuration variables. This is to make it impossible to influence build results externally, allowing locally built derivations to be shared safely between users (see ASE-2005 paper). To do: only one builder should be active per build user.
2005-10-06 * Swap the system and version comparion columns.Eelco Dolstra1-2/+2
2005-10-06 * Only colorise if we are attached to a terminal.Eelco Dolstra1-0/+3
2005-10-06 * New query option: `--compare-versions' or `-c' to compare installedEelco Dolstra2-19/+89
versions to available versions, or vice versa. For example, the following compares installed versions to available versions: $ nix-env -qc autoconf-2.59 = 2.59 automake-1.9.4 < 1.9.6 f-spot-0.0.10 - ? firefox-1.0.4 < 1.0.7 ... I.e., there are newer versions available (in the current default Nix expression) for Automake and Firefox, but not for Autoconf, and F-Spot is missing altogether. Conversely, the available versions can be compared to the installed versions: $ nix-env -qac autoconf-2.59 = 2.59 automake-1.9.6 > 1.9.4 bash-3.0 - ? firefox-1.0.7 > 1.0.4 ... Note that bash is available but no version of it is installed. If multiple versions are available for comparison, then the highest is used. E.g., if Subversion 1.2.0 is installed, and Subversion 1.1.4 and 1.2.3 are available, then `nix-env -qc' will print `< 1.2.3', not `> 1.1.4'. If higher versions are available, the version column is printed in red (using ANSI escape codes).
2005-10-05 * log2xml -> nix-log2xml.Eelco Dolstra7-1/+1
2005-10-05 * Install the XSL stylesheets for log to html conversion.Eelco Dolstra1-6/+14
2005-09-22 * Lets not go wild with templates.Eelco Dolstra1-4/+6
2005-09-22 * Parse multi-valued options.Eelco Dolstra4-15/+53
2005-09-21 * Configuration options for trusted local builds.Eelco Dolstra2-5/+12
2005-09-20 * Typo.Eelco Dolstra1-1/+1
2005-09-14 * List concatenation must be right-associative for efficiency.Eelco Dolstra1-1/+1
2005-09-13 * Missing #include.Eelco Dolstra1-0/+2
2005-09-01 * `nix-env -e' corrupts memory due to incorrect use of iterators.Eelco Dolstra1-2/+6
Reported by Rob Vermaas.
2005-08-14 * `dependencyClosure' now allows a search path, e.g.,Eelco Dolstra1-20/+69
dependencyClosure { ... searchPath = [ ../foo ../bar ]; ... } * Primop `dirOf' to return the directory part of a path (e.g., dirOf /a/b/c == /a/b). * Primop `relativise' (according to Webster that's a real word!) that given paths A and B returns a string representing path B relative path to A; e.g., relativise /a/b/c a/b/x/y => "../x/y".
2005-08-14 * A primitive operation `dependencyClosure' to do automatic dependencyEelco Dolstra1-0/+112
determination (e.g., finding the header files dependencies of a C file) in Nix low-level builds automatically. For instance, in the function `compileC' in make/lib/default.nix, we find the header file dependencies of C file `main' as follows: localIncludes = dependencyClosure { scanner = file: import (findIncludes { inherit file; }); startSet = [main]; }; The function works by "growing" the set of dependencies, starting with the set `startSet', and calling the function `scanner' for each file to get its dependencies (which should yield a list of strings representing relative paths). For instance, when `scanner' is called on a file `foo.c' that includes the line #include "../bar/fnord.h" then `scanner' should yield ["../bar/fnord.h"]. This list of dependencies is absolutised relative to the including file and added to the set of dependencies. The process continues until no more dependencies are found (hence its a closure). `dependencyClosure' yields a list that contains in alternation a dependency, and its relative path to the directory of the start file, e.g., [ /bla/bla/foo.c "foo.c" /bla/bar/fnord.h "../bar/fnord.h" ] These relative paths are necessary for the builder that compiles foo.c to reconstruct the relative directory structure expected by foo.c. The advantage of `dependencyClosure' over the old approach (using the impure `__currentTime') is that it's completely pure, and more efficient because it only rescans for dependencies (i.e., by building the derivations yielded by `scanner') if sources have actually changed. The old approach rescanned every time.
2005-08-14 * nix-hash: option `--truncate' to truncate the hash to 160 bits. Hmm,Eelco Dolstra2-0/+4
kind of ad hoc ;-)
2005-08-01 * Escape ASCII characters < 32 to Unicode FFFD (REPLACEMENT CHARACTER)Eelco Dolstra1-1/+2
so that we don't produce un-wellformed XML.
2005-08-01 * Oops. XSL stylesheet to mark errors.Eelco Dolstra1-0/+24
2005-08-01 * Mark error lines in red, and expand subtrees containing errorsEelco Dolstra2-2/+14
automatically.
2005-07-25 * Added a list concatenation operator:Eelco Dolstra6-12/+27
[1 2 3] ++ [4 5 6] => [1 2 3 4 5 6]
2005-07-22 * Build dynamic libraries.Eelco Dolstra9-20/+20
2005-07-19 * Prevent repeated wrapping of closed termsEelco Dolstra1-1/+6
(closed(closed(closed(...)))) since this reduces performance by producing bigger terms and killing caching (which incidentally also prevents useful infinite recursion detection).
2005-07-16 * Wat cleanups.Eelco Dolstra1-10/+5