about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2008-04-09 * sockaddr_un doesn't allow path names of more than 108 characters.Eelco Dolstra2-6/+26
This isn't usually a problem, except that it causes tests to fail when performed in a directory with a very long path name. So chdir to the socket directory and use a relative path name.
2008-03-27 * Use /tmp/nix-build-<drvpath>-<counter> instead ofEelco Dolstra3-8/+17
/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.
2008-03-20 * Disable the don't-run-as-root sanity check because it breaks RPMEelco Dolstra1-0/+2
builds (which are done as root...).
2008-03-20 * Note that the SDF grammar isn't used.Eelco Dolstra1-0/+3
2008-03-01 * A transaction is unnecessary since the path cannot beEelco Dolstra1-8/+3
garbage-collected (it's a temporary root).
2008-02-21 * checkVarDefs: don't check in closed terms, which don't haveEelco Dolstra1-1/+5
undefined variables by definition. This matters for the implementation of "with", which does a call to checkVarDefs to see if the body of the with has no undefined variables. (It can't be checked at parse time because you don't know which variables are in the "with" attribute set.) If we check closed terms, then we check not just the with body but also the substituted terms, which are typically very large. This is the cause of the poor nix-env performance on Nixpkgs lately. It didn't happen earlier because "with" wasn't used very often in the past. This fix improves nix-env performance roughly 60x on current Nixpkgs. nix-env -qa is down from 29.3s to 0.5s on my laptop, and nix-env -qa --out-path is down from 229s to 3.39s. Not bad for a 1-line fix :-)
2008-02-05 * Fix the parsing ofEelco Dolstra1-1/+5
'' '${foo}' '' where the antiquote should work as expected, instead of giving the string "'${foo}'".
2008-01-29 * nix-store --dump-db / --load-db to dump/load the Nix DB.Eelco Dolstra8-137/+117
* nix-store --register-validity: option to supply the content hash of each path. * Removed compatibility with Nix <= 0.7 stores.
2008-01-20 Probably fixed __exprToStringMichael Raskin1-1/+4
2008-01-15 Fixed exportBuildReferenceGraphMichael Raskin2-12/+77
2008-01-04 * New primop `unsafeDiscardStringContext' to get rid of stringEelco Dolstra1-0/+10
contexts. Needed to prevent unnecessary dependencies when building the NixOS manual.
2007-12-31 * More documentation.Eelco Dolstra1-2/+1
2007-12-31 * More release notes.Eelco Dolstra1-2/+2
2007-12-30 Added a way to include derivation with its outputs and dependencies - ↵Michael Raskin1-0/+38
exportBuildReferenceGraph
2007-12-14 * Use strsignal if available to give better error messages forEelco Dolstra1-2/+10
builders that fail due to a signal.
2007-12-13 * Mac OS X 10.5 compatibility.Eelco Dolstra1-0/+1
2007-12-10 corrected --help message for nix-store a bitMichael Raskin1-2/+7
2007-12-06 * Syntax to escape '', ${.Eelco Dolstra1-0/+12
2007-11-30 * Added a new kind of multi-line string literal delimited by twoEelco Dolstra3-3/+122
single quotes. Example (from NixOS): job = '' start on network-interfaces start script rm -f /var/run/opengl-driver ${if videoDriver == "nvidia" then "ln -sf ${nvidiaDrivers} /var/run/opengl-driver" else if cfg.driSupport then "ln -sf ${mesa} /var/run/opengl-driver" else "" } rm -f /var/log/slim.log end script ''; This style has two big advantages: - \, ' and " aren't special, only '' and ${. So you get a lot less escaping in shell scripts / configuration files in Nixpkgs/NixOS. The delimiter '' is rare in scripts (and can usually be written as ""). ${ is also fairly rare. Other delimiters such as <<...>>, {{...}} and <|...|> were also considered but this one appears to have the fewest drawbacks (thanks Martin). - Indentation is intelligently stripped so that multi-line strings can follow the nesting structure of the containing Nix expression. E.g. in the example above 6 spaces are stripped from the start of each line. This prevents unnecessary indentation in generated files (which sometimes even breaks things). See tests/lang/eval-okay-ind-string.nix for some examples.
2007-11-29 * nix-env -e: support uninstalling by path, so that one can sayEelco Dolstra6-50/+70
$ 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-11-21 * New primop `readFile' to get the contents of a file as a string.Eelco Dolstra1-0/+12
2007-11-16 * Flag `--no-build-hook' to disable distributed builds.Eelco Dolstra8-5/+22
* queryDeriver in daemon mode: don't barf if the other side returns an empty string (which means there is no deriver).
2007-11-16 * nix-store --import: add a flag --require-signature.Eelco Dolstra1-2/+7
2007-11-15 * Don't need gc.hh.Eelco Dolstra2-7/+2
2007-11-15 Added possibility to specify garbage collection levels for store paths; so ↵Michael Raskin2-4/+21
packages can share intermediate results of compilation and GC will collect it automatically while never touching tarballs, for example.
2007-10-31 * Documented multi-user Nix.Eelco Dolstra1-0/+3
2007-10-29 * Make the `--prebuilt-only' / `-b' option work not just for queriesEelco Dolstra2-16/+22
but installations/upgrades as well. So `nix-env -ub \*' will upgrade only those packages for which a substitute is available (or to be precise, it will upgrade each package to the highest version for which a substitute is available).
2007-10-29 * On FreeBSD, sys/mount.h needs sys/param.h.Eelco Dolstra1-1/+5
2007-10-27 * Detect whether chroot / bind-mount support is available.Eelco Dolstra1-4/+21
2007-10-27 * Delete the chroot directory automatically.Eelco Dolstra3-19/+39
* Removed some debug messages.
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).