aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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 gc-runtime testEelco Dolstra
It was failing on some platforms. http://hydra.nixos.org/build/39538866
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-08Fix test failureEelco Dolstra
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-09-07upload-release.pl: Update NixpkgsEelco Dolstra
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-31nix-daemon.service: Set $XDG_CACHE_HOMEEelco Dolstra
Nix requires either $HOME or $XDG_CACHE_HOME to be set.
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-30Drop Fedora 19/20 buildsEelco Dolstra
These don't support regex_replace either.
2016-08-30Fix Fedora buildEelco Dolstra
2016-08-30Revert "nix.spec.in: Build from the .tar.xz file."Eelco Dolstra
This reverts commit f32c6ed8730628d0cf32f7e124681b1011192a73. It breaks the RPM builds because Nixpkgs's rpmBuild function only copies in the .tar.gz file.
2016-08-30Drop Ubuntu 13.10, 14.04 buildsEelco Dolstra
These don't support regex_replace. http://hydra.nixos.org/build/39363999 http://hydra.nixos.org/build/39363981
2016-08-30Fix GC buildEelco Dolstra
2016-08-29Add script to automate creating Nix releasesEelco 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-26doc: move set functor para to Sets sectionDomen Kožar
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
2016-08-16switch to mmap strategyJude Taylor
2016-08-16Merge pull request #1031 from abbradar/replacestrings-contextEelco Dolstra
Allow contexted strings in replaceStrings
2016-08-16Allow contexted strings in replaceStringsNikolay Amiantov
2016-08-15ensure presence of directoriesJude Taylor
2016-08-15code review commentsJude Taylor
2016-08-15builtins.fetch{url,tarball}: Allow name attributeShea Levy
2016-08-14make inclusion conditionalJude Taylor
2016-08-14add a missing load commandJude Taylor
2016-08-13remove otool checkJude Taylor
2016-08-13remove old traces of resolve-system-dependenciesJude Taylor
2016-08-13resolve-system-dependencies: implement in C++Jude Taylor
2016-08-12launchd: Set $SSL_CERT_FILEEelco Dolstra
Otherwise in particular https://cache.nixos.org won't work in the daemon.