aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2016-10-07importPaths(): Fix accessor support for HydraEelco Dolstra
2016-10-06toJSON(): Support some more typesEelco Dolstra
2016-10-06Fix getS3Stats()Eelco Dolstra
2016-10-06Merge pull request #998 from veprbl/rx_chmod_fixEelco Dolstra
override rx directory permissions in deletePath()
2016-10-05Use std::random_deviceEelco Dolstra
2016-10-04Fix build with older versions of libcurlEelco Dolstra
2016-09-22Handle the case where signed-binary-caches consists of whitespaceEelco Dolstra
2016-09-21Add sandbox-dev-shm-size optionEelco Dolstra
Fixes #1069.
2016-09-21nix-build, nix-shell: Don't print error message if nix-store/nix-instantiate ↵Eelco Dolstra
fails
2016-09-21printMsg(lvlError, ...) -> printError(...) etc.Eelco Dolstra
2016-09-21Some notational convenience for formatting stringsEelco Dolstra
We can now write throw Error("file '%s' not found", path); instead of throw Error(format("file '%s' not found") % path); and similarly printError("file '%s' not found", path); instead of printMsg(lvlError, format("file '%s' not found") % path);
2016-09-20TweakEelco Dolstra
2016-09-20Improve robustnessEelco Dolstra
2016-09-20Fix "Promise already satisfied" errorEelco Dolstra
2016-09-20nix-shell: Fix $PATH handling in the impure caseEelco Dolstra
We were passing "p=$PATH" rather than "p=$PATH;", resulting in some invalid shell code. Also, construct a separate environment for the child rather than overwriting the parent's.
2016-09-20nix-shell: Restore CPU affinityEelco Dolstra
Otherwise the shell and its children will be bound to one CPU core...
2016-09-16armv5tel can be built by armv6l and armv7l (#1063)Eric Litak
2016-09-16Make computeFSClosure() single-threaded againEelco Dolstra
The fact that queryPathInfo() is synchronous meant that we needed a thread for every concurrent binary cache lookup, even though they end up being handled by the same download thread. Requiring hundreds of threads is not a good idea. So now there is an asynchronous version of queryPathInfo() that takes a callback function to process the result. Similarly, enqueueDownload() now takes a callback rather than returning a future. Thus, a command like nix path-info --store https://cache.nixos.org/ -r /nix/store/slljrzwmpygy1daay14kjszsr9xix063-nixos-16.09beta231.dccf8c5 that returns 4941 paths now takes 1.87s using only 2 threads (the main thread and the downloader thread). (This is with a prewarmed CloudFront.)
2016-09-16printMsg(): Don't check for interruptsEelco Dolstra
Having the logger function potentially throw exceptions is Heisenbuggy.
2016-09-14nix path-info: Add some more examplesEelco Dolstra
2016-09-14Revive binary-caches-parallel-connectionsEelco Dolstra
It's a slight misnomer now because it actually limits *all* downloads, not just binary cache lookups. Also add a "enable-http2" option to allow disabling use of HTTP/2 (enabled by default).
2016-09-14Enable HTTP/2 supportEelco Dolstra
The binary cache store can now use HTTP/2 to do lookups. This is much more efficient than HTTP/1.1 due to multiplexing: we can issue many requests in parallel over a single TCP connection. Thus it's no longer necessary to use a bunch of concurrent TCP connections (25 by default). For example, downloading 802 .narinfo files from https://cache.nixos.org/, using a single TCP connection, takes 11.8s with HTTP/1.1, but only 0.61s with HTTP/2. This did require a fairly substantial rewrite of the Downloader class to use the curl multi interface, because otherwise curl wouldn't be able to do multiplexing for us. As a bonus, we get connection reuse even with HTTP/1.1. All downloads are now handled by a single worker thread. Clients call Downloader::enqueueDownload() to tell the worker thread to start the download, getting a std::future to the result.
2016-09-14Add a toLower utility functionEelco Dolstra
2016-09-14Move some .drv parsing functions out of utilEelco Dolstra
2016-09-12Fix build on GCC 4.9Eelco Dolstra
GCC 4.9 doesn't like reassigning a std::stringstream. http://hydra.nixos.org/build/40371644
2016-09-12Write "T x" instead of "auto x = T"Eelco Dolstra
That's just silly. Hopefully this also fixes the Debian build failure: http://hydra.nixos.org/build/40371644
2016-09-08Don't run builds as root in the user namespaceEelco Dolstra
This largely reverts c68e5913c71badc89ff346d1c6948517ba720c93. Running builds as root breaks "cp -p", since when running as root, "cp -p" assumes that it can succesfully chown() files. But that's not actually the case since the user namespace doesn't provide a complete uid mapping. So it barfs with a fatal error message ("cp: failed to preserve ownership for 'foo': Invalid argument").
2016-09-08Give a better error message if a path in build-sandbox-paths is invalidEelco Dolstra
2016-09-08Fix assertion failure after early build setup failureEelco Dolstra
2016-09-08Fix early removal of rc-file for nix-shellShea Levy
BASH_ENV causes all non-interactive shells called via eg. /etc/bashrc to remove the rc-file before the main shell gets to run it. Completion scripts will often do this. Fixes #976. Adapted from and fixes #1034.
2016-08-31Merge branch 'nix-build-c++'Shea Levy
2016-08-31nix-build: Clean up a bitShea Levy
2016-08-31download.hh: Fix conflicts from nix-channel-c++ mergeShea Levy
2016-08-31Merge branch 'nix-channel-c++'Shea Levy
2016-08-31Merge pull request #1030 from pikajude/rsd-ccEelco Dolstra
Implement resolve-system-dependencies in C++
2016-08-30Fix 32-bit buildEelco Dolstra
2016-08-30Increase the sleep time between download retriesEelco Dolstra
2016-08-30Fix --fallbackEelco Dolstra
This fixes an assertion failure in "assert(goal);" in Worker::waitForInput() after a substitution goal is cancelled by the termination of another goal. The problem was the line //worker.childTerminated(shared_from_this()); // FIXME in the SubstitutionGoal destructor. This was disabled because shared_from_this() obviously doesn't work from a destructor. So we now use a real pointer for object identity.
2016-08-30Fix Fedora buildEelco Dolstra
2016-08-30Fix GC buildEelco Dolstra
2016-08-29forceBool(): Show position infoEelco Dolstra
2016-08-29Add builtin function "partition"Eelco Dolstra
The implementation of "partition" in Nixpkgs is O(n^2) (because of the use of ++), and for some reason was causing stack overflows in multi-threaded evaluation (not sure why). This reduces "nix-env -qa --drv-path" runtime by 0.197s and memory usage by 298 MiB (in non-Boehm mode).
2016-08-29nix path-info: Add --json flagEelco Dolstra
Also, factor out JSON generation from value-to-json.{cc,hh}, and support producing indented JSON.
2016-08-29callFunction: Copy functors to the heapShea Levy
Normally it's impossible to take a reference to the function passed to callFunction, so some callers (e.g. ExprApp::eval) allocate that value on the stack. For functors, a reference to the functor itself may be kept, so we need to have it on the heap. Fixes #1045
2016-08-24Fix queryPathFromHashPart()Eelco Dolstra
The inner lambda was returning a SQLite-internal char * rather than a std::string, leading to Hydra errors liks Caught exception in Hydra::Controller::Root->narinfo "path ‘ø˜£â€™ is not in the Nix store at /nix/store/6mvvyb8fgwj23miyal5mdr8ik4ixk15w-hydra-0.1.1234.abcdef/libexec/hydra/lib/Hydra/Controller/Root.pm line 352."
2016-08-23nix build: Use Nix search pathEelco Dolstra
That is, unless --file is specified, the Nix search path is synthesized into an attribute set. Thus you can say $ nix build nixpkgs.hello assuming $NIX_PATH contains an entry of the form "nixpkgs=...". This is more verbose than $ nix build hello but is less ambiguous.
2016-08-17iterate through fat_headers correctlyJude Taylor
2016-08-17Add a mechanism for derivation attributes to reference the derivation's outputsEelco Dolstra
For example, you can now say: configureFlags = "--prefix=${placeholder "out"} --includedir=${placeholder "dev"}"; The strings returned by the ‘placeholder’ builtin are replaced at build time by the actual store paths corresponding to the specified outputs. Previously, you had to work around the inability to self-reference by doing stuff like: preConfigure = '' configureFlags+=" --prefix $out --includedir=$dev" ''; or rely on ad-hoc variable interpolation semantics in Autoconf or Make (e.g. --prefix=\$(out)), which doesn't always work.
2016-08-16remove double castingJude Taylor
2016-08-16account for unknown magic numbersJude Taylor