about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2016-10-21 BinaryCacheStore: Optionally write a NAR listingEelco Dolstra10-20/+81
The store parameter "write-nar-listing=1" will cause BinaryCacheStore to write a file ‘<store-hash>.ls.xz’ for each ‘<store-hash>.narinfo’ added to the binary cache. This file contains an XZ-compressed JSON file describing the contents of the NAR, excluding the contents of regular files. E.g. { "version": 1, "root": { "type": "directory", "entries": { "lib": { "type": "directory", "entries": { "Mcrt1.o": { "type": "regular", "size": 1288 }, "Scrt1.o": { "type": "regular", "size": 3920 }, } } } ... } } (The actual file has no indentation.) This is intended to speed up the NixOS channels programs index generator [1], since fetching gazillions of large NARs from cache.nixos.org is currently a bottleneck for updating the regular (non-small) channel. [1] https://github.com/NixOS/nixos-channel-scripts/blob/master/generate-programs-index.cc
2016-10-19 Merge branch 'priorityqueue' of https://github.com/groxxda/nixEelco Dolstra1-12/+17
2016-10-19 Merge branch 'regex' of https://github.com/groxxda/nixEelco Dolstra5-93/+16
2016-10-19 fixup! replace own regex class with std::regexAlexander Ried1-1/+4
2016-10-19 Fix Darwin buildEelco Dolstra2-6/+6
Done slightly differently from https://github.com/NixOS/nix/pull/1093.
2016-10-19 Handle $TMPDIR ending with a slashEelco Dolstra2-2/+2
This caused the gc test to fail on Darwin.
2016-10-19 Shut up clang warningEelco Dolstra1-1/+1
2016-10-19 Fix uninitialised variableEelco Dolstra1-1/+1
2016-10-19 Merge pull request #1096 from groxxda/gitignoreEelco Dolstra1-7/+6
.gitignore: catch up with perl -> c conversion
2016-10-18 replace own regex class with std::regexAlexander Ried5-94/+14
2016-10-18 downloader: use priority_queueAlexander Ried1-12/+17
2016-10-17 .gitignore: catch up with perl -> c conversionAlexander Ried1-7/+6
2016-10-14 Fix /dev/ptmx in sandboxesEelco Dolstra1-1/+6
This was broken since ff0c0b645cc1448959126185bb2fafe41cf0bddf. Since I can't figure out how to mount a devpts instance in the sandbox, let's just bind-mount the host devpts.
2016-10-14 CURL_AT_LEAST_VERSION -> LIBCURL_VERSION_NUMEelco Dolstra1-4/+3
http://hydra.nixos.org/build/42025230
2016-10-13 Fix HTTP/2 supportEelco Dolstra1-3/+3
Commit 86e8c67efc33cf756500a1dec7fd6313658f2664 broke it, because CURL_* are not actually #defines.
2016-10-13 SSL_CERT_FILE -> NIX_SSL_CERT_FILEEelco Dolstra5-13/+14
This prevents collisions with the "native" OpenSSL, in particular on OS X. Fixes #921.
2016-10-12 Shut up some warningsEelco Dolstra2-2/+2
2016-10-12 Add some functions needed by hydraEelco Dolstra3-0/+17
2016-10-07 querySubstitutablePaths(): Don't query paths for which we already have a ↵Eelco Dolstra1-3/+16
substituter
2016-10-07 LocalStore::querySubstitutablePaths(): Implement using queryValidPaths()Eelco Dolstra1-7/+3
2016-10-07 Store::queryValidPaths(): Use async queryPathInfo()Eelco Dolstra1-4/+39
This allows the binary cache substituter to pipeline requests.
2016-10-07 Implement generic Store::queryValidPaths()Eelco Dolstra3-4/+12
2016-10-07 Add copyClosure utility function for HydraEelco Dolstra2-0/+29
2016-10-07 importPaths(): Fix accessor support for HydraEelco Dolstra4-7/+27
2016-10-06 toJSON(): Support some more typesEelco Dolstra2-0/+12
2016-10-06 Fix getS3Stats()Eelco Dolstra2-2/+2
2016-10-06 Merge pull request #998 from veprbl/rx_chmod_fixEelco Dolstra1-4/+5
override rx directory permissions in deletePath()
2016-10-05 Use std::random_deviceEelco Dolstra1-0/+1
2016-10-04 Fix build with older versions of libcurlEelco Dolstra1-0/+6
2016-09-22 Handle the case where signed-binary-caches consists of whitespaceEelco Dolstra1-1/+1
2016-09-22 <nix/fetchurl.nix>: Support nix-prefetch-urlEelco Dolstra1-0/+3
2016-09-21 Add sandbox-dev-shm-size optionEelco Dolstra2-1/+15
Fixes #1069.
2016-09-21 nix-build, nix-shell: Don't print error message if nix-store/nix-instantiate ↵Eelco Dolstra3-6/+39
fails
2016-09-21 printMsg(lvlError, ...) -> printError(...) etc.Eelco Dolstra30-140/+140
2016-09-21 Some notational convenience for formatting stringsEelco Dolstra6-22/+81
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-21 Merge pull request #1068 from zimbatm/doc-set-toStringEelco Dolstra1-2/+2
Document the { __toString } interface
2016-09-21 Document the { __toString } interfacezimbatm1-2/+2
2016-09-20 Merge pull request #1066 from adevress/disable-docEelco Dolstra3-0/+17
Add a new option to disable documentation generation at configure time
2016-09-20 TweakEelco Dolstra3-8/+5
2016-09-20 Improve robustnessEelco Dolstra1-2/+6
2016-09-20 Fix "Promise already satisfied" errorEelco Dolstra1-1/+3
2016-09-20 Add a new option to disable documentation generation at configure timeAdrien Devresse3-0/+17
2016-09-20 nix-shell: Fix $PATH handling in the impure caseEelco Dolstra3-29/+55
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-20 nix-shell: Restore CPU affinityEelco Dolstra1-6/+10
Otherwise the shell and its children will be bound to one CPU core...
2016-09-16 armv5tel can be built by armv6l and armv7l (#1063)Eric Litak1-0/+1
2016-09-16 Make computeFSClosure() single-threaded againEelco Dolstra16-202/+385
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-16 printMsg(): Don't check for interruptsEelco Dolstra3-17/+15
Having the logger function potentially throw exceptions is Heisenbuggy.
2016-09-14 nix path-info: Add some more examplesEelco Dolstra1-1/+9
2016-09-14 Revive binary-caches-parallel-connectionsEelco Dolstra2-6/+11
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-14 Enable HTTP/2 supportEelco Dolstra9-207/+430
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.