about summary refs log tree commit diff
path: root/src/nix-worker/nix-worker.cc
AgeCommit message (Collapse)AuthorFilesLines
2012-07-31 Pass all --option flags to the daemonEelco Dolstra1-0/+8
2012-07-30 Refactor settings processingEelco Dolstra1-20/+12
Put all Nix configuration flags in a Settings object.
2012-07-30 WhitespaceEelco Dolstra1-32/+32
2012-07-18 Merge branch 'master' into no-manifestsEelco Dolstra1-0/+9
2012-07-17 Add function queryPathFromHashPart()Eelco Dolstra1-0/+9
To implement binary caches efficiently, Hydra needs to be able to map the hash part of a store path (e.g. "gbg...zr7") to the full store path (e.g. "/nix/store/gbg...kzr7-subversion-1.7.5"). (The binary cache mechanism uses hash parts as a key for looking up store paths to ensure privacy.) However, doing a search in the Nix store for /nix/store/<hash>* is expensive since it requires reading the entire directory. queryPathFromHashPart() prevents this by doing a cheap database lookup.
2012-07-11 Replace hasSubstitutes() with querySubstitutablePaths()Eelco Dolstra1-2/+11
querySubstitutablePaths() takes a set of paths, so this greatly reduces daemon <-> client latency.
2012-07-11 Add a function queryValidPaths()Eelco Dolstra1-0/+9
queryValidPaths() combines multiple calls to isValidPath() in one. This matters when using the Nix daemon because it reduces latency. For instance, on "nix-env -qas \*" it reduces execution time from 5.7s to 4.7s (which is indistinguishable from the non-daemon case).
2012-07-11 Rename queryValidPaths() to queryAllValidPaths()Eelco Dolstra1-2/+2
2012-07-11 Implement querySubstitutablePathInfos() in the daemonEelco Dolstra1-8/+28
Also removed querySubstitutablePathInfo().
2012-06-27 nix-store -r: do substitutions in parallelEelco Dolstra1-2/+2
I.e. when multiple non-derivation arguments are passed to ‘nix-store -r’ to be substituted, do them in parallel.
2012-06-18 Support socket-based, on-demand activation of the Nix daemon with systemdEelco Dolstra1-30/+46
Systemd can start the Nix daemon on demand when the Nix daemon socket is first accessed. This is signalled through the LISTEN_FDS environment variable, so all we need to do is check for that and then use file descriptor 3 as the listen socket instead of creating one ourselves.
2012-05-29 Reserve some disk space for the garbage collectorEelco Dolstra1-1/+5
We can't open a SQLite database if the disk is full. Since this prevents the garbage collector from running when it's most needed, we reserve some dummy space that we can free just before doing a garbage collection. This actually revives some old code from the Berkeley DB days. Fixes #27.
2012-04-30 * Add an option ‘build-use-substitutes’, which can be set to ‘false’Eelco Dolstra1-1/+6
to disable use of substitutes; i.e., force building from source. Fixes Nix/221.
2012-04-15 Set a few more close-on-exec flagsEelco Dolstra1-0/+4
2012-03-26 Remove the --max-links GC optionEelco Dolstra1-1/+1
We don't need this anymore now that current filesystems support more than 32,000 files in a directory.
2012-03-13 Ensure that Perl processes delete their entry in the temproots directoryEelco Dolstra1-2/+0
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-05 nix-worker: put the pid of the caller in argv[1]Eelco Dolstra1-1/+20
This is useful for debugging.
2012-02-09 Use data() instead of c_str() where appropriateEelco Dolstra1-1/+1
2011-12-20 * Fix the build.Eelco Dolstra1-1/+1
2011-12-16 * Sync with the trunk.Eelco Dolstra1-37/+49
2011-12-16 * importPath() -> importPaths(). Because of buffering of the inputEelco Dolstra1-15/+13
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 Dolstra1-10/+5
2011-12-16 * Make the import operation through the daemon much more efficientEelco Dolstra1-8/+16
(way fewer roundtrips) by allowing the client to send data in bigger chunks. * Some refactoring.
2011-12-15 * Refactoring: move sink/source buffering into separate classes.Eelco Dolstra1-5/+3
* 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-14 * Buffer writes in FdSink. This significantly reduces the number ofEelco Dolstra1-7/+9
system calls / context switches when dumping a NAR and in the worker protocol.
2011-12-01 * Slight improvement.Eelco Dolstra1-3/+2
2011-12-01 * When doing "nix-store --add-fixed" without "--recursive" via the NixEelco Dolstra1-2/+14
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-06 Include all outputs of derivations in the closure of explicitly-passed ↵Shea Levy1-0/+10
derivation paths This required adding a queryOutputDerivationNames function in the store API
2010-12-17 * Propagate the "100" exit status for failed builds through the NixEelco Dolstra1-2/+3
daemon.
2010-12-13 * Update some comments.Eelco Dolstra1-3/+2
2010-11-17 * Before a build, show the disk space that the downloaded store pathsEelco Dolstra1-0/+2
will approximately require.
2010-11-17 * Implement RemoteStore::queryPathInfo().Eelco Dolstra1-0/+13
2010-08-24 * Sync with the trunk.Eelco Dolstra1-0/+3
2010-08-12 * Make --cores work when building through the Nix daemon.Eelco Dolstra1-0/+3
2010-08-04 * Sync with the trunk.Eelco Dolstra1-0/+2
2010-06-24 Include <cstring> to ensure that strcpy(), strlen(), and memset() are declared.Peter Simons1-0/+2
An "using namespace std" was added locally in those functions that refer to names from <cstring>. That is not pretty, but it's a very portable solution, because strcpy() and friends will be found in both the 'std' and in the global namespace.
2010-05-04 * Allow unprivileged users to do `nix-store --clear-failed-paths' andEelco Dolstra1-0/+17
`nix-store --query-failed-paths'.
2010-02-26 * Implement RemoteStore::queryValidPaths().Eelco Dolstra1-0/+8
2010-02-25 * Implement RemoteStore::queryDerivationOutputs().Eelco Dolstra1-2/+4
2010-02-24 * `helpText' is now zero-terminated.Eelco Dolstra1-1/+1
2009-11-20 * Remove the --use-atime / --max-atime garbage collector flags. ManyEelco Dolstra1-2/+3
(Linux) machines no longer maintain the atime because it's too expensive, and on the machines where --use-atime is useful (like the buildfarm), reading the atimes on the entire Nix store takes way too much time to make it practical.
2009-09-30 * Support platforms that don't have O_ASYNC (e.g. OpenSolarisEelco Dolstra1-3/+17
apparently).
2009-03-23 * Shut up a GCC warning.Eelco Dolstra1-2/+2
2008-12-16 * Pass --use-atime / --max-atime to the daemon.Eelco Dolstra1-0/+4
2008-12-12 * We can't use string objects in signal handlers because they mightEelco Dolstra1-4/+4
allocate memory, which is verboten in signal handlers. This caused random failures in the test suite on Mac OS X (triggered by the spurious SIGPOLL signals on Mac OS X, which should also be fixed).
2008-12-03 * addToStore() in nix-worker: don't write the NAR dump received fromEelco Dolstra1-6/+52
the client to a temporary directory, as that is highly inefficient.
2008-12-03 * Backwards compatibility.Eelco Dolstra1-4/+9
2008-12-03 * Pass HashType values instead of strings.Eelco Dolstra1-1/+1
2008-12-03 * Unify the treatment of sources copied to the store, and recursiveEelco Dolstra1-2/+2
SHA-256 outputs of fixed-output derivations. I.e. they now produce the same store path: $ nix-store --add x /nix/store/j2fq9qxvvxgqymvpszhs773ncci45xsj-x $ nix-store --add-fixed --recursive sha256 x /nix/store/j2fq9qxvvxgqymvpszhs773ncci45xsj-x the latter being the same as the path that a derivation derivation { name = "x"; outputHashAlgo = "sha256"; outputHashMode = "recursive"; outputHash = "..."; ... }; produces. This does change the output path for such fixed-output derivations. Fortunately they are quite rare. The most common use is fetchsvn calls with SHA-256 hashes. (There are a handful of those is Nixpkgs, mostly unstable development packages.) * Documented the computation of store paths (in store-api.cc).
2008-11-20 * Nix daemon: reload the configuration file after forking (NIX-100).Eelco Dolstra1-1/+5