about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2018-08-03 Make adding paths via nix-store --serve run in constant memoryEelco Dolstra4-15/+70
It adds a new operation, cmdAddToStoreNar, that does the same thing as the corresponding nix-daemon operation, i.e. call addToStore(). This replaces cmdImportPaths, which has the major issue that it sends the NAR first and the store path second, thus requiring us to store the incoming NAR either in memory or on disk until we decide what to do with it. For example, this reduces the memory usage of $ nix copy --to 'ssh://localhost?remote-store=/tmp/nix' /nix/store/95cwv4q54dc6giaqv6q6p4r02ia2km35-blender-2.79 from 267 MiB to 12 MiB. Probably fixes #1988.
2018-08-03 cmdDumpStorePath: Support chroot storesEelco Dolstra1-1/+1
2018-08-03 Support escaping in store URIsEelco Dolstra1-2/+18
2018-08-03 SSHMaster: Bypass SSH when connecting to localhostEelco Dolstra2-7/+16
This is primarily useful for testing since it removes the need to have SSH working.
2018-08-03 LegacySSHStore: Add remote-store optionEelco Dolstra1-1/+4
This is primarily useful for testing, e.g. $ nix copy --to 'ssh://localhost?remote-store=/tmp/nix' ...
2018-08-03 Merge pull request #2326 from aszlig/fix-symlink-leakEelco Dolstra1-4/+10
Fix symlink leak in restricted eval mode
2018-08-03 Merge pull request #2323 from samueldr/feature/selective-impurityEelco Dolstra1-1/+6
Allows selectively adding environment variables to pure shells.
2018-08-03 Fix symlink leak in restricted eval modeaszlig1-4/+10
In EvalState::checkSourcePath, the path is checked against the list of allowed paths first and later it's checked again *after* resolving symlinks. The resolving of the symlinks is done via canonPath, which also strips out "../" and "./". However after the canonicalisation the error message pointing out that the path is not allowed prints the symlink target in the error message. Even if we'd suppress the message, symlink targets could still be leaked if the symlink target doesn't exist (in this case the error is thrown in canonPath). So instead, we now do canonPath() without symlink resolving first before even checking against the list of allowed paths and then later do the symlink resolving and checking the allowed paths again. The first call to canonPath() should get rid of all the "../" and "./", so in theory the only way to leak a symlink if the attacker is able to put a symlink in one of the paths allowed by restricted evaluation mode. For the latter I don't think this is part of the threat model, because if the attacker can write to that path, the attack vector is even larger. Signed-off-by: aszlig <aszlig@nix.build>
2018-08-02 Allows selectively adding environment variables to pure shells.Samuel Dionne-Riel1-1/+6
Includes documentation and test.
2018-08-02 s3 binary cache: support specifying an endpointGraham Christensen4-8/+16
Works for uploading and not downloading.
2018-08-01 Removes unused variable from `nix-build/nix-shell`Samuel Dionne-Riel1-1/+0
This particular `shell` variable wasn't used, since a new one was declared in the only side of the `if` branch that used a `shell` variable. It could realistically confuse developers thinking it could use `$SHELL` under some situations.
2018-07-31 Merge branch 'prim_mapAttr-fix' of https://github.com/volth/nixEelco Dolstra2-8/+3
2018-07-31 Fix race downloading into a sinkEelco Dolstra1-6/+8
This fixes 'error 10 while decompressing xz file'. https://hydra.nixos.org/build/78308551
2018-07-31 Add a check for broken Boost versionsEelco Dolstra1-0/+4
In some Boost versions, coroutines don't propagate exceptions properly, causing Nix to fail with the exception 'coroutine has finished'.
2018-07-24 copyPathsToStore: honour keep-goingLinus Heckemann1-2/+12
2018-07-23 Merge pull request #2303 from volth/patch-4Eelco Dolstra1-2/+2
parser.y: fix assoc of -> and < > <= >=
2018-07-23 parser.y: right-associativity of ->volth1-1/+1
2018-07-21 parser.y: fix assoc of -> and < > <= >=volth1-2/+2
The parser allowed senseless `a > b > c` but disallowed `a -> b -> c` which seems valid It might be a typo
2018-07-21 prim_foldlStrict: call forceValue() before value is copiedvolth1-6/+7
forceValue() were called after a value is copied effectively forcing only one of the copies keeping another copy not evaluated. This resulted in its evaluation of the same lazy value more than once (the number of hits is not big though)
2018-07-12 nix-prefetch-url: Download file in constant memoryEelco Dolstra1-7/+17
Before: $ command time nix-prefetch-url https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.17.6.tar.xz 1.19user 1.02system 0:41.96elapsed 5%CPU (0avgtext+0avgdata 182720maxresident)k After: 1.38user 1.05system 0:39.73elapsed 6%CPU (0avgtext+0avgdata 16204maxresident)k Note however that addToStore() can still take a lot of memory (e.g. RemoteStore::addToStore() is constant space, but LocalStore::addToStore() isn't; that's fixed by https://github.com/edolstra/nix/commit/c94b4fc7ee0c7b322a5f3c7ee784063b47a11d98 though). Fixes #1400.
2018-07-11 Fix build on 32-bit systems and macOSEelco Dolstra1-1/+1
Apparently, on macOS, 'long' != 'int64_t'. https://hydra.nixos.org/build/77100756
2018-07-11 Shup up a warningEelco Dolstra1-1/+1
2018-07-11 Remove unused function printStats2()Eelco Dolstra2-15/+0
Closes #2282.
2018-07-07 prim_map, prim_genList: no need to force function argument which will be ↵volth1-2/+0
stored in mkApp
2018-07-06 prim_mapAttrs: `f' must be evaluated lazily to avoid infinite recursionvolth2-6/+3
2018-07-06 Merge pull request #2250 from dtzWill/feature/repl-progress-bar-buildsEelco Dolstra1-1/+1
repl: use `nix build` for building instead of `nix-store -r`
2018-07-05 prim_concatMap: no need to force valuevolth1-1/+0
2018-07-05 prim_mapAttrs: must be lazy to avoid infinite recursionvolth1-4/+5
2018-07-05 prim_concatMap: allocate intermediate list on stackvolth1-7/+15
2018-07-05 primops.cc: fix commentvolth1-1/+1
2018-07-05 lib.concatMap and lib.mapAttrs to be builtinsvolth1-0/+42
2018-07-03 nix-daemon: Respect --storeEelco Dolstra1-3/+7
For example, this allows you to do run nix-daemon as a non-privileged user: eelco$ NIX_STATE_DIR=~/my-nix/nix/var nix-daemon --store ~/my-nix/ The NIX_STATE_DIR is still needed because settings.nixDaemonSocketFile is not derived from settings.storeUri (and we can't derive it from the store's state directory because we don't want to open the store in the parent process).
2018-07-03 Include cpptoml for build simplicityEelco Dolstra3-1/+3476
2018-07-03 Add a fromTOML primopEelco Dolstra1-0/+77
This is primarily useful for processing Cargo.lock files.
2018-07-03 Store floating point numbers in double precisionEelco Dolstra2-1/+2
Even on 32-bit systems, Value has enough space to hold a double.
2018-07-03 nix why-depends: render output into $PAGERMaximilian Bosch1-0/+2
2018-07-02 Merge pull request #2158 from Ma27/improve-search-uxEelco Dolstra1-10/+20
search.cc: improve UX for `nix search`
2018-07-02 search.cc: improve UX for `nix search`Maximilian Bosch1-10/+20
As proposed in #1634 the `nix search` command could use some improvements. Initially 0413aeb35d6ee869a98b6565781c1cf47dc80080 added some basic sorting behavior using `std::map`, a next step would be an improvement of the output. This patch includes the following changes: * Use `$PAGER` for outputs with `RunPager` from `shared.hh`: The same behavior is defined for `nix-env --query`, furthermore it makes searching huge results way easier. * Simplified result blocks: The new output is heavily inspired by the output from `nox`, the first line shows the attribute path and the derivaiton name (`attribute path (derivation name)`) and the description in the second line.
2018-06-23 repl: use `nix build` for building instead of `nix-store -r`Will Dietz1-1/+1
progress bar!
2018-06-18 progress-bar: re-draw last update if nothing new for 1sec.Will Dietz1-2/+3
Slightly nicer behavior when updates are somewhat far apart (during a long linking step, perhaps) ensuring things don't appear unresponsive. If we wait the maximum amount for the update, don't bother waiting another 50ms (for rate-limiting purposes) and just check if we should quit. This also ensures we'll notice the request to quit within 1s if quit is signalled but there is not an udpate. (I'm not sure if this happens or not)
2018-06-18 sync.hh: return cv_status instead of dropping it, in case useful.Will Dietz1-2/+2
2018-06-18 Detect redirect loopsEelco Dolstra1-0/+2
Fixes #2225.
2018-06-18 Merge pull request #2234 from symphorien/esrch2Eelco Dolstra1-1/+1
libstore/gc.cc: ignore ESRCH when reading symlinks in /proc
2018-06-16 libstore/gc.cc: ignore ESRCH when reading symlinks in /procSymphorien Gibol1-1/+1
readlink is also affected by the problem fixed for regular files in c567afe355df
2018-06-14 Fix optimise-store.cc to skip more paths on macOSMatthew Justin Bauer1-2/+1
I hate to make this such a large check but the lack of documentation means we really have no idea what's allowed. All of them reported so far have been within ".app/Contents" directories. That appears to be a safe starting point. However, I would not be surprised to also find more paths that are disallowed for instance in .framework or .bundle directories. Fixes #2031 Fixes #2229
2018-06-13 nix: Remove special handling of .drv filesEelco Dolstra1-22/+2
This makes 'nix copy' and 'nix path-info' work on .drv store paths. Removing special treatment of .drv files seems the most future-proof approach given the possible removal of .drv files in the future. Note that 'nix build' will still build (rather than substitute) .drv paths due to the unfortunate overloading in Store::buildPaths().
2018-06-13 hashDerivationModulo(): Handle chroot storesEelco Dolstra1-1/+1
This makes 'nix copy --to /mnt /nix/store/bla.drv' work.
2018-06-13 std::random_shuffle -> std::shuffleEelco Dolstra1-1/+3
The former is removed in C++17.
2018-06-12 Move EvalState from the stack to the heapEelco Dolstra5-46/+46
EvalState contains a few counters (e.g. nrValues) that increase quickly enough that they end up being interpreted as pointers by the garbage collector. Moving it to the heap makes them invisible to the garbage collector. This reduces the max RSS doing 100 evaluations of nixos.tests.firefox.x86_64-linux.drvPath from 455 MiB to 292 MiB. Note: ideally, allocations would be much further up in the 64-bit address space to reduce the odds of an integer being misinterpreted as a pointer. Maybe we can use some linker magic to move the .bss segment to a higher address.
2018-06-12 GC_malloc -> GC_MALLOCEelco Dolstra2-9/+3
This makes it possible to build with -DGC_DEBUG.