about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2007-10-27 * Support for doing builds in a chroot under Linux. The builder isEelco Dolstra3-16/+162
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-10-26 * "trace" primop: write the trace to standard error.Eelco Dolstra1-6/+7
2007-10-22 (no commit message)Eelco Dolstra1-1/+1
2007-10-10 * Doh.Eelco Dolstra1-1/+1
2007-10-10 * Doh! Don't change the permissions on /nix/store.Eelco Dolstra1-9/+8
2007-10-10 * nix-store --optimise: flag "--dry-run" to just query what the diskEelco Dolstra2-18/+26
savings would be.
2007-10-09 * New command `nix-store --optimise' to reduce Nix store disk spaceEelco Dolstra4-8/+188
usage by finding identical files in the store and hard-linking them to each other. It typically reduces the size of the store by something like 25-35%. This is what the optimise-store.pl script did, but the new command is faster and more correct (it's safe wrt garbage collection and concurrent builds).
2007-10-09 * listToAttrs: the list now should consist of {name, value} attributeEelco Dolstra1-28/+29
sets instead of {attr, value}. "name" is better than "attr" because the *combination* of the two forms the attribute.
2007-09-18 * Ignore dangling symlinks in ~/.nix-defexpr.Eelco Dolstra1-1/+6
2007-09-18 * Pass various options to the worker so that flags like -K or -j workEelco Dolstra5-7/+49
in multi-user Nix (NIX-72). * Client/worker: exchange a protocol version number for future compatibility.
2007-09-17 * nix-env -qa: make the "-A" flag do the expected thing, namely followEelco Dolstra1-78/+103
the given attribute path (just as -A does with other option) (NIX-83). So you can now say $ nix-env -qa -A nixpkgs_unstable.gnome \* atk-1.12.4 esound-0.2.36 ... to see the packages in the "gnome" attribute in Nixpkgs. To *print* the attribute path, you should now use "--attr-path" / "-P" (running out of letters...).
2007-09-17 * nix-env: allow ~/.nix-defexpr to be a directory. If it is, then theEelco Dolstra3-22/+51
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-30 * Create the Nix daemon socket in a separate directoryEelco Dolstra2-4/+10
(/nix/var/nix/daemon-socket). This allows access to the Nix daemon to be restricted by setting the mode/ownership on that directory as desired, e.g. $ chmod 770 /nix/var/nix/daemon-socket $ chown root.wheel /nix/var/nix/daemon-socket to allow only users in the wheel group to use Nix. Setting the ownership on a socket is much trickier, since the socket must be deleted and recreated every time the daemon is started (which would require additional Nix configuration file directives to specify the mode/ownership, and wouldn't support arbitrary ACLs), some BSD variants appear to ignore permissions on sockets, and it's not clear whether the umask is respected on every platform when creating sockets.
2007-08-28 * When there are multiple substituters, make sure to release theEelco Dolstra1-0/+5
lock on the output path after trying each. Otherwise the pathIsLockedByMe() test gets confused.
2007-08-28 * Fix a race condition with parallel builds where multipleEelco Dolstra3-10/+96
fixed-output derivations or substitutions try to build the same store path at the same time. Locking generally catches this, but not between multiple goals in the same process. This happened especially often (actually, only) in the build farm with fetchurl downloads of the same file being executed on multiple machines and then copied back to the main machine where they would clobber each other (NIXBF-13). Solution: if a goal notices that the output path is already locked, then go to sleep until another goal finishes (hopefully the one locking the path) and try again.
2007-08-28 * PathLocks::lockPaths: don't allow reacquiring a lock we alreadyEelco Dolstra2-5/+5
hold.
2007-08-18 primop functions listToAttrs (+test), __isAttrs, __trace addedMarc Weber1-0/+53
new configuration style proposal in lib/default-unstable.nix
2007-08-13 * Bump the Nix database schema version number; delete the substitutesEelco Dolstra2-5/+33
table.
2007-08-13 * Backwards compatibility.Eelco Dolstra1-2/+2
2007-08-12 * Get rid of the substitutes database table (NIX-47). Instead, if weEelco Dolstra20-387/+309
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-08-07 * Don't allocate input files on the stack.Eelco Dolstra1-14/+2
2007-08-06 * Optionally warn about packages that give an assertion failure.Eelco Dolstra1-1/+1
2007-07-05 * Properly keep packages during upgrades.Eelco Dolstra1-1/+4
2007-06-12 * Support queryDeriver() in multi-user installations.Eelco Dolstra10-16/+42
2007-06-11 * Check against creation of GC roots in the store. Those roots don'tEelco Dolstra1-1/+5
work, because findRoots() stops when it encounters a symlink to the store. And of course the store is supposed to be read-only.
2007-05-16 * New builtin function "isFunction". You're not supposed to use itEelco Dolstra2-1/+14
;-) * Channels: fix channels that are plain lists of derivations (like strategoxt-unstable) instead of functions (like nixpkgs-unstable). This fixes the error message "error: the left-hand side of the function call is neither a function nor a primop (built-in operation) but a list".
2007-05-15 * Allow empty argument lists in function definitions (e.g., `{}:Eelco Dolstra1-0/+1
bla'). Also allow trailing commas (`{x, y,}: ...') as a unintented consequence. Hopefully the reduce/reduce conflict won't cause any problems.
2007-05-14 * Typo (reported by Marc Weber).Eelco Dolstra1-1/+1
2007-05-07 * Create the database directory if it doesn't exist.Eelco Dolstra1-0/+9
2007-05-01 * Give unpacked channels more sensible names than 0, 1, ... They nowEelco Dolstra1-3/+12
get the basename of the channel URL (e.g., nixpkgs-unstable). The top-level Nix expression of the channel is now an attribute set, the attributes of which are the individual channels (e.g., {nixpkgs_unstable = ...; strategoxt_unstable = ...}). This makes attribute paths ("nix-env -qaA" and "nix-env -iA") more sensible, e.g., "nix-env -iA nixpkgs_unstable.subversion".
2007-05-01 * nix-env -i: instead of breaking package ties by version, break themEelco Dolstra3-13/+48
by priority and version install. That is, if there are multiple packages with the same name, then pick the package with the highest priority, and only use the version if there are multiple packages with the same priority. This makes it possible to mark specific versions/variant in Nixpkgs more or less desirable than others. A typical example would be a beta version of some package (e.g., "gcc-4.2.0rc1") which should not be installed even though it is the highest version, except when it is explicitly selected (e.g., "nix-env -i gcc-4.2.0rc1"). * Idem for nix-env -u, only the semantics are a bit trickier since we also need to take into account the priority of the currently installed package (we never upgrade to a lower priority, unless --always is given).
2007-05-01 * Set a terminate() handler to ensure that we leave the BDBEelco Dolstra6-8/+55
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-05-01 * Make --verify more interruptable.Eelco Dolstra1-0/+1
2007-05-01 * `nix-env -q --xml --meta' to show all meta attributes.Eelco Dolstra2-1/+17
2007-04-30 * Doh.Eelco Dolstra1-1/+1
2007-04-27 * Package flag "keep" that prevents a package from being removed fromEelco Dolstra1-1/+6
a user environment by an install or upgrade action. This is particularly useful if you have a version installed that you don't want to upgrade (e.g., because the newer versions are broken). Example: $ nix-env -u zapping --dry-run (dry run; not doing anything) upgrading `zapping-0.9.6' to `zapping-0.10cvs6' $ nix-env --set-flag keep true zapping $ nix-env -u zapping --dry-run (dry run; not doing anything) However, "-e" will still uninstall the package. (Maybe we should require the keep flag to be explicitly set to false before it can be uninstalled.)
2007-04-26 * nix-env -q now has a flag --prebuilt-only (-b<) that causes nix-envEelco Dolstra2-6/+16
to show only those derivations whose output is already in the Nix store or that can be substituted (i.e., downloaded from somewhere). In other words, it shows the packages that can be installed “quickly”, i.e., don’t need to be built from source.
2007-04-16 * New primop "throw <string>" to throw an error. This is like abort,Eelco Dolstra3-0/+13
only thrown errors are caught by the top-level derivation evaluation in nix-env -qa / -i.
2007-04-16 * Remove a warning.Eelco Dolstra1-1/+1
2007-03-30 * Work around a bug in Apple's GCC preprocessor.Eelco Dolstra3-4/+5
2007-03-28 * Handle ECONNRESET from the client. Also, don't abort() if there areEelco Dolstra1-4/+9
unexpected conditions in the SIGPOLL handler, since that messes up the Berkeley DB environment (which a client must never be able to trigger).
2007-03-20 * Override the setuid helper using NIX_SETUID_HELPER.Eelco Dolstra1-1/+2
2007-03-19 * Terminate build hooks and substitutes with a TERM signal, not a KILLEelco Dolstra3-10/+27
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-03-19 * Undocumented option `gc-check-reachability' to allow reachabilityEelco Dolstra1-7/+9
checking to be turned off on machines with way too many roots.
2007-03-07 * Delete the output paths before invoking the build hook.Eelco Dolstra1-14/+14
2007-03-01 * Look for the openssl program at compile time. If not found, callEelco Dolstra1-2/+2
openssl through $PATH at runtime.
2007-03-01 * Don't check the signature unless we have to.Eelco Dolstra1-21/+23
2007-02-27 * Doh! The deriver can be empty.Eelco Dolstra1-1/+2
2007-02-27 * Greatly reduced the amount of stack space used by the Nix expressionEelco Dolstra1-188/+274
evaluator. This was important because the NixOS expressions started to hit 2 MB default stack size on Linux. GCC is really dumb about stack space: it just adds up all the local variables and temporaries of every scope into one huge stack frame. This is really bad for deeply recursive functions. For instance, every `throw Error(format("error message"))' causes a format object of a few hundred bytes to be allocated on the stack. As a result, every recursive call to evalExpr2() consumed 4680 bytes. By splitting evalExpr2() and by moving the exception-throwing code out of the main functions, evalExpr2() now only consumes 40 bytes. Similar for evalExpr().
2007-02-27 * When NIX_SHOW_STATS=1, show the amount of stack space consumed byEelco Dolstra1-2/+10
the Nix expression evaluator.