aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2005-11-16* Did something useful while waiting at IAD: reference scanning is nowEelco Dolstra
much faster.
2005-11-04* Install signal handlers for SIGTERM and SIGHUP. This ensures thatEelco Dolstra
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 Dolstra
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 Dolstra
2005-10-29* Repair the referers table from the references table.Rob Vermaas
2005-10-20* Prevent uids from being used for more than one buildEelco Dolstra
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 Dolstra
2005-10-17* Also kill all processes of the build user after the build. This isEelco Dolstra
critical to prevent certain kinds of 0wnage.
2005-10-17* Before starting a build under some uid, kill all current processesEelco Dolstra
running under that uid.
2005-10-17* Check that the build result is owned by the build user, and thatEelco Dolstra
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 Dolstra
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 Dolstra
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 Dolstra
2005-10-06* Only colorise if we are attached to a terminal.Eelco Dolstra
2005-10-06* New query option: `--compare-versions' or `-c' to compare installedEelco Dolstra
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 Dolstra
2005-10-05* Install the XSL stylesheets for log to html conversion.Eelco Dolstra
2005-09-22* Lets not go wild with templates.Eelco Dolstra
2005-09-22* Parse multi-valued options.Eelco Dolstra
2005-09-21* Configuration options for trusted local builds.Eelco Dolstra
2005-09-20* Typo.Eelco Dolstra
2005-09-14* List concatenation must be right-associative for efficiency.Eelco Dolstra
2005-09-13* Missing #include.Eelco Dolstra
2005-09-01* `nix-env -e' corrupts memory due to incorrect use of iterators.Eelco Dolstra
Reported by Rob Vermaas.
2005-08-14* `dependencyClosure' now allows a search path, e.g.,Eelco Dolstra
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 Dolstra
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 Dolstra
kind of ad hoc ;-)
2005-08-01* Escape ASCII characters < 32 to Unicode FFFD (REPLACEMENT CHARACTER)Eelco Dolstra
so that we don't produce un-wellformed XML.
2005-08-01* Oops. XSL stylesheet to mark errors.Eelco Dolstra
2005-08-01* Mark error lines in red, and expand subtrees containing errorsEelco Dolstra
automatically.
2005-07-25* Added a list concatenation operator:Eelco Dolstra
[1 2 3] ++ [4 5 6] => [1 2 3 4 5 6]
2005-07-22* Build dynamic libraries.Eelco Dolstra
2005-07-19* Prevent repeated wrapping of closed termsEelco Dolstra
(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 Dolstra
2005-07-16* Define paths using regexps, as is done in the Flex definition.Eelco Dolstra
2005-07-16* Make the rejects a bit more compact.Eelco Dolstra
* Add lexical restrictions for keywords.
2005-07-16* Fix ambiguity.Eelco Dolstra
2005-07-16* Revive and update the SDF grammar for Nix expressions.Eelco Dolstra
2005-07-12* In nix-instantiate, at top-level, call functions that have argumentsEelco Dolstra
with default values automatically. I.e., e -> e {}. This feature makes convenience expressions such as pkgs/system/i686-linux.nix in Nixpkgs obsolete, since we can just do $ nix-instantiate ./pkgs/system/all-packages.nix since all-packages.nix takes a single argument (system) that has a default value (__thisSystem).
2005-05-18* Added a primop `removeAttrs' to remove attributes from a set, e.g.,Eelco Dolstra
`removeAttrs attrs ["x", "y"]' returns the set `attrs' with the attributes named `x' and `y' removed. It is not an error for the named attributes to be missing from the input set.
2005-05-10* Ignore (with a warning) invalid garbage collector roots.Eelco Dolstra
2005-05-10* Typo.Eelco Dolstra
2005-05-09* Handle store path arguments in `nix-env -i' correctly again.Eelco Dolstra
2005-05-09* Automatically upgrade the Berkeley DB environment if necessary.Eelco Dolstra
2005-05-08* Lazily compute the derivation and output paths of derivations. ThisEelco Dolstra
makes most query and installation operations much faster (e.g., `nix-env -qa' on the current Nixpkgs is about 10 times faster).
2005-05-08* ATermMap needs an assignment operator, otherwise we are screwed.Eelco Dolstra
2005-05-07Commit 3000!Eelco Dolstra
* Make the `derivation' primitive much more lazy. The expression `derivation attrs' now evaluates to (essentially) attrs // { type = "derivation"; outPath = derivation! attrs; drvPath = derivation! attrs; } where `derivation!' is a primop that does the actual derivation instantiation (i.e., it does what `derivation' used to do). The advantage is that it allows commands such as `nix-env -qa' and `nix-env -i' to be much faster since they no longer need to instantiate all derivations, just the `name' attribute. (However, `nix-env' doesn't yet take advantage of this since it still always evaluates the `outPath' and `drvPath' attributes). Also, this allows derivations to cyclically reference each other, for example, webServer = derivation { ... hostName = "svn.cs.uu.nl"; services = [svnService]; }; svnService = derivation { ... hostName = webServer.hostName; }; Previously, this would yield a black hole (infinite recursion).
2005-05-07* Don't try to register GC roots in read-only mode.Eelco Dolstra
2005-05-04* Include some required header files.Eelco Dolstra
2005-05-04* FreeBSD 4.x doesn't have stdint.h, use inttypes.h instead (which isEelco Dolstra
also part of ISO C).