aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2012-02-15On Linux, make the Nix store really read-only by using the immutable bitEelco Dolstra
I was bitten one time too many by Python modifying the Nix store by creating *.pyc files when run as root. On Linux, we can prevent this by setting the immutable bit on files and directories (as in ‘chattr +i’). This isn't supported by all filesystems, so it's not an error if setting the bit fails. The immutable bit is cleared by the garbage collector before deleting a path. The only tricky aspect is in optimiseStore(), since it's forbidden to create hard links to an immutable file. Thus optimiseStore() temporarily clears the immutable bit before creating the link.
2012-02-15Fix a broken guard around utime()Eelco Dolstra
Because of an outdated check for a timestamp of 0, we were calling utime() even when it wasn't necessary.
2012-02-15Don't use deletePath() to delete a single fileEelco Dolstra
2012-02-09Fix error messageEelco Dolstra
This fixes the error message error: file `' was not found in the Nix search path (add it using $NIX_PATH or -I)
2012-02-09Use data() instead of c_str() where appropriateEelco Dolstra
2012-02-04* Inline some functions and get rid of the indirection throughEelco Dolstra
EvalState::eval(). This gives a 12% speedup on ‘nix-instantiate /etc/nixos/nixos/ -A system --readonly-mode’ (from 1.01s to 0.89s).
2012-02-04* Print elapsed evaluation time.Eelco Dolstra
2012-01-26* Fix importing a derivation. This gave a segfault.Eelco Dolstra
2012-01-19* Allow comparisons between derivations by comparing the outPathEelco Dolstra
attributes.
2012-01-19* Add some debug output to print the derivation name once it's known.Eelco Dolstra
This makes it easier to pinpoint the source of a crash.
2012-01-17* Added a command ‘nix-store --print-env $drvpath’ that prints out theEelco Dolstra
environment of the given derivation in a format that can be sourced by the shell, e.g. $ eval "$(nix-store --print-env $(nix-instantiate /etc/nixos/nixpkgs -A pkg))" $ NIX_BUILD_TOP=/tmp $ source $stdenv/setup This is especially useful to reproduce the environment used to build a package outside of its builder for development purposes. TODO: add a nix-build option to do the above and fetch the dependencies of the derivation as well.
2012-01-07* Don't create thunks for simple constants (integers, strings, paths)Eelco Dolstra
and allocate them only once. * Move Value and related functions into value.hh.
2012-01-04* Remove dead code.Eelco Dolstra
2012-01-04* Don't use dynamic_cast, it's very slow. "nix-instantiateEelco Dolstra
/etc/nixos/nixos -A system" spent about 10% of its time in dynamic_cast.
2012-01-03* Drop the inefficient "Path" suffix in output attribute names.Eelco Dolstra
2012-01-03* Move the implementation of the ‘derivation’ primop into a separateEelco Dolstra
file.
2012-01-03* Sync with the trunk.Eelco Dolstra
2012-01-03* Refactoring: Get rid of a few subdirectories in corepkgs/, and someEelco Dolstra
other simplifications. * Use <nix/...> to locate the corepkgs. This allows them to be overriden through $NIX_PATH. * Use bash's pipefail option in the NAR builder so that we don't need to create a temporary file.
2011-12-30* Support multiple outputs in nix-store (specifically the ‘--query’Eelco Dolstra
and ‘--realise’ actions).
2011-12-30* Oops.Eelco Dolstra
2011-12-30* Move topoSortPaths() out of gc.cc.Eelco Dolstra
2011-12-30* Reject a build if there is a cycle among the outputs. This isEelco Dolstra
necessary because existing code assumes that the references graph is acyclic.
2011-12-30* Sync with the trunk.Eelco Dolstra
2011-12-25* Make sure that lock files are cleaned up properly when buildingEelco Dolstra
through the build hook.
2011-12-22* Oops.Eelco Dolstra
2011-12-22* In the garbage collector, delete invalid paths before deletingEelco Dolstra
unreachable paths. This matters when using --max-freed etc.: unreachable paths could become reachable again, so it's nicer to keep them if there is "real" garbage to be deleted. Also, don't use readDirectory() but read the Nix store and delete invalid paths in parallel. This reduces GC latency on very large Nix stores.
2011-12-22* Drop unnecessary call to canonPath() (nixStore is already canonical).Eelco Dolstra
2011-12-21* Another case of lock file permissions being too liberal.Eelco Dolstra
2011-12-21* The ‘foo.drvPath’ feature was already broken in read-only mode.Eelco Dolstra
Since it's rarely used and fixing it is too much work right now, just document it.
2011-12-21Revert previous commitShea Levy
It doesn't detect indirect references
2011-12-21Detect and reject mutually-referential outputsShea Levy
There is probably a more efficient way to do this.
2011-12-21* Simplify the context handling logic.Eelco Dolstra
2011-12-20* Fix the build.Eelco Dolstra
2011-12-16* Sync with the trunk.Eelco Dolstra
2011-12-16* importPath() -> importPaths(). Because of buffering of the inputEelco Dolstra
stream it's now necessary for the daemon to process the entire sequence of exported paths, rather than letting the client do it.
2011-12-16* Avoid expensive conversions from char arrays to STL strings.Eelco Dolstra
2011-12-16* Make the import operation through the daemon much more efficientEelco Dolstra
(way fewer roundtrips) by allowing the client to send data in bigger chunks. * Some refactoring.
2011-12-16* Clean up exception handling.Eelco Dolstra
2011-12-15* Refactoring: move sink/source buffering into separate classes.Eelco Dolstra
* Buffer the HashSink. This speeds up hashing a bit because it prevents lots of calls to the hash update functions (e.g. nix-hash went from 9.3s to 8.7s of user time on the closure of my /var/run/current-system).
2011-12-15* Buffer reads in FdSource. Together with write buffering, thisEelco Dolstra
significantly cuts down the number of syscalls (e.g., for "nix-store -qR /var/run/current-system" via the daemon, it reduced the number of syscalls in the client from 29134 to 4766 and in the daemon from 44266 to 20666).
2011-12-14* Buffer writes in FdSink. This significantly reduces the number ofEelco Dolstra
system calls / context switches when dumping a NAR and in the worker protocol.
2011-12-14* Remove the terminate handler, which was only really needed becauseEelco Dolstra
of Berkeley DB (see r8632).
2011-12-05* Remove unnecessary quotes. showPaths() already adds quotes.Eelco Dolstra
2011-12-02* In ‘nix-store --verify --check-contents’, repair missing hashesEelco Dolstra
rather than complain about them.
2011-12-02* Move parseHash16or32 into libutil, and use in nix-hash.Eelco Dolstra
2011-12-01* Allow '<nixexpr>' syntax to be used in nix-instantiate, nix-buildEelco Dolstra
and nix-env, e.g., $ nix-env -f '<nixpkgs>' -i patchelf or $ nix-build '<nixos/tests>' -A login.test
2011-12-01* Slight improvement.Eelco Dolstra
2011-12-01* When doing "nix-store --add-fixed" without "--recursive" via the NixEelco Dolstra
daemon (which is an error), print a nicer error message than "Connection reset by peer" or "broken pipe". * In the daemon, log errors that occur during request parameter processing.
2011-11-29* Get rid of some superfluous error messages if a substituter fails.Eelco Dolstra
* Say "fetch" instead of "substitute".
2011-11-23* Add an API function exportPaths() that provides the functionality ofEelco Dolstra
‘nix-store --export’. * Add a Perl module that provides the functionality of ‘nix-copy-closure --to’. This is used by build-remote.pl so it no longer needs to start a separate nix-copy-closure process. Also, it uses the Perl API to do the export, so it doesn't need to start a separate nix-store process either. As a result, nix-copy-closure and build-remote.pl should no longer fail on very large closures due to an "Argument list too long" error. (Note that having very many dependencies in a single derivation can still fail because the environment can become too large. Can't be helped though.)