aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2012-03-26Mac OS X fixEelco Dolstra
2012-03-26Delete non-directory valid paths right awayEelco Dolstra
It's unlikely that rename() is faster than unlink() on a regular file or symlink, so don't bother.
2012-03-26Make the garbage collector more concurrentEelco Dolstra
Make the garbage collector more concurrent by deleting valid paths outside the region where we're holding the global GC lock. This should greatly reduce the time during which new builds are blocked, since the deletion accounts for the vast majority of the time spent in the GC. To ensure that this is safe, the valid paths are invalidated and renamed to some arbitrary path while we're holding the lock. This ensures that we when we finally delete the path, it's not a (newly) valid or locked path.
2012-03-26Remove the --max-links GC optionEelco Dolstra
We don't need this anymore now that current filesystems support more than 32,000 files in a directory.
2012-03-20nix-store --clear-failed-paths: Clear derivation outputsEelco Dolstra
If the argument to ‘nix-store --clear-failed-paths’ is a derivation, then clear the failed state of its outputs.
2012-03-18Drop the externals directoryEelco Dolstra
Nix now requires SQLite and bzip2 to be pre-installed. SQLite is detected using pkg-config. We required DBD::SQLite anyway, so depending on SQLite is not a big problem. The --with-bzip2, --with-openssl and --with-sqlite flags are gone.
2012-03-13Ensure that Perl processes delete their entry in the temproots directoryEelco Dolstra
By moving the destructor object to libstore.so, it's also run when download-using-manifests and nix-prefetch-url exit. This prevents them from cluttering /nix/var/nix/temproots with stale files.
2012-03-05Fix compilation on FreeBSDEelco Dolstra
http://hydra.nixos.org/build/2213576 Not sure why compilation doesn't fail on other platforms...
2012-03-05Set the close-on-exec flag on file descriptorsEelco Dolstra
2012-03-05Don't leak a file descriptor in commonChildInit()Eelco Dolstra
2012-03-05nix-worker: put the pid of the caller in argv[1]Eelco Dolstra
This is useful for debugging.
2012-03-05Restore progress indication during nix-copy-closureEelco Dolstra
2012-03-01Remove dependency on sqlite3_table_column_metadataEelco Dolstra
Not all SQLite builds have the function sqlite3_table_column_metadata. We were only using it in a schema upgrade check for compatibility with databases that were probably never seen in the wild. So remove it.
2012-03-01Fix an uninitialised variableEelco Dolstra
The variable ‘useChroot’ was not initialised properly. This caused random failures if using the build hook. Seen on Mac OS X 10.7 with Clang. Thanks to KolibriFX for finding this :-)
2012-02-18Fix chroots buildsEelco Dolstra
Chroots are initialised by hard-linking inputs from the Nix store to the chroot. This doesn't work if the input has its immutable bit set, because it's forbidden to create hard links to immutable files. So temporarily clear the immutable bit when creating and destroying the chroot. Note that making regular files in the Nix store immutable isn't very reliable, since the bit can easily become cleared: for instance, if we run the garbage collector after running ‘nix-store --optimise’. So maybe we should only make directories immutable.
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.