about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2017-09-08 nix copy: Add --substitute flagEelco Dolstra1-1/+9
2017-09-08 ThreadPool: On exception, interrupt the other worker threadsEelco Dolstra4-7/+14
2017-09-08 copyStorePath(): Fill in missing narHash regardless of checkSigsEelco Dolstra1-5/+1
I don't remember what the reasoning was here, but security is provided by the signatures, not by whether the hash is provided by the other store.
2017-09-08 nix copy: Don't open the --from store twiceEelco Dolstra1-1/+1
2017-09-08 ThreadPool: Improve exception handlingEelco Dolstra2-24/+53
In particular, process() won't return as long as there are active items. This prevents work item lambdas from referring to stack frames that no longer exist.
2017-09-08 nix copy: Add examplesEelco Dolstra1-1/+9
2017-09-08 Communicate the structured log FD to buildersEelco Dolstra1-1/+6
Since we may use a dedicated file descriptor in the future, this allows us to change it. So builders can do if [[ -n $NIX_LOG_FD ]]; then echo "@nix { message... }" >&$NIX_LOG_FD fi
2017-09-07 nix search: Add examplesEelco Dolstra1-0/+18
2017-09-07 nix eval: Add examplesEelco Dolstra1-0/+18
2017-09-07 nix log: Add examplesEelco Dolstra1-1/+19
2017-09-07 nix build: Add examplesEelco Dolstra1-0/+14
2017-09-07 nix run: Add some examplesEelco Dolstra1-0/+18
2017-09-06 nix build: Add --out-link and --no-link optionsEelco Dolstra4-10/+37
2017-09-06 nix build: Create result symlinksEelco Dolstra4-42/+105
2017-09-06 Fix abort when the GC thread gets an exceptionEelco Dolstra1-13/+21
2017-09-05 Add automatic garbage collectionEelco Dolstra5-1/+123
Nix can now automatically run the garbage collector during builds or while adding paths to the store. The option "min-free = <bytes>" specifies that Nix should run the garbage collector whenever free space in the Nix store drops below <bytes>. It will then delete garbage until "max-free" bytes are available. Garbage collection during builds is asynchronous; running builds are not paused and new builds are not blocked. However, there also is a synchronous GC run prior to the first build/substitution. Currently, no old GC roots are deleted (as in "nix-collect-garbage -d").
2017-09-05 GC: Don't delete own temproots fileEelco Dolstra3-34/+34
Since file locks are per-process rather than per-file-descriptor, the garbage collector would always acquire a lock on its own temproots file and conclude that it's stale.
2017-09-01 Abort curl downloads if there is no progress for 5 minutesEelco Dolstra1-1/+6
Maybe this will fix the curl hangs on macOS. (We could also use CURLOPT_TIMEOUT but that seems more of a sledgehammer.)
2017-09-01 Fix verbosity level for nix build --dry-runEelco Dolstra4-16/+16
2017-08-31 src/libmain/stack.cc: fix 'ucontext' usage on glibc-2.26Sergei Trofimovich1-2/+2
Build fails as: $ make CXX src/libmain/stack.o src/libmain/stack.cc: In function 'void nix::sigsegvHandler(int, siginfo_t*, void*)': src/libmain/stack.cc:21:21: error: 'ucontext' was not declared in this scope sp = (char *) ((ucontext *) ctx)->uc_mcontext.gregs[REG_RSP]; ^~~~~~~~ src/libmain/stack.cc:21:21: note: suggested alternative: 'ucontext_t' sp = (char *) ((ucontext *) ctx)->uc_mcontext.gregs[REG_RSP]; ^~~~~~~~ ucontext_t It's caused by upstream rename: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=251287734e89a52da3db682a8241eb6bccc050c9 which basically changes typedef struct ucontext {} ucontext_t; to typedef struct ucontext_t {} ucontext_t; The change uses ucontext_t. Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2017-08-31 Call queryMissing() prior to buildingEelco Dolstra2-0/+14
Without this, substitute info is fetched sequentially, which is superslow. In the old UI (e.g. nix-build), we call printMissing(), which calls queryMissing(), thereby preheating the binary cache cache. But the new UI doesn't do that.
2017-08-31 Add an activity for binary cache queriesEelco Dolstra4-4/+19
2017-08-31 Rename a few configuration optionsEelco Dolstra4-48/+60
In particular, drop the "build-" and "gc-" prefixes which are pointless. So now you can say nix build --no-sandbox instead of nix build --no-build-use-sandbox
2017-08-31 More macOS build fixesEelco Dolstra1-1/+3
2017-08-31 Fix build failure on non-LinuxEelco Dolstra1-1/+1
https://hydra.nixos.org/build/59649086
2017-08-31 Fix mismatched tag warningEelco Dolstra1-1/+1
https://hydra.nixos.org/build/59649086
2017-08-29 nix edit / log: Operate on a single InstallableEelco Dolstra6-89/+100
2017-08-29 nix search: Warn about cached resultsEelco Dolstra1-0/+2
2017-08-29 nix run: Flush the progress bar before starting the commandEelco Dolstra5-19/+28
2017-08-29 nix run: Add some flags for clearing/keeping the environmentEelco Dolstra1-0/+49
This is useful for testing commands in isolation. For example, $ nix run nixpkgs.geeqie -i -k DISPLAY -k XAUTHORITY -c geeqie runs geeqie in an empty environment, except for $DISPLAY and $XAUTHORITY.
2017-08-29 nix run: Allow passing a command to executeEelco Dolstra3-3/+19
E.g. nix run nixpkgs.hello -c hello --greeting Hallo Note that unlike "nix-shell --command", no quoting of arguments is necessary. "-c" (short for "--command") cannot be combined with "--" because they both consume all remaining arguments. But since installables shouldn't start with a dash, this is unlikely to cause problems.
2017-08-29 nix run: Fix chroot executionEelco Dolstra2-60/+110
Running "nix run" with a diverted store, e.g. $ nix run --store local?root=/tmp/nix nixpkgs.hello stopped working when Nix became multithreaded, because unshare(CLONE_NEWUSER) doesn't work in multithreaded processes. The obvious solution is to terminate all other threads first, but 1) there is no way to terminate Boehm GC marker threads; and 2) it appears that the kernel has a race where unshare(CLONE_NEWUSER) will still fail for some indeterminate amount of time after joining other threads. So instead, "nix run" will now exec() a single-threaded helper ("nix __run_in_chroot") that performs the actual unshare()/chroot()/exec().
2017-08-29 Hide commands that don't have a descriptionEelco Dolstra1-2/+5
These are assumed to be internal.
2017-08-29 readLink(): Handle symlinks in /procEelco Dolstra1-4/+5
Symlinks like /proc/self/exe report a stat() size of 0, so use a buffer of at least PATH_MAX instead.
2017-08-28 Give activities a verbosity level againEelco Dolstra10-19/+41
And print them (separately from the progress bar) given sufficient -v flags.
2017-08-28 Don't send progress messages to older clientsEelco Dolstra2-12/+19
2017-08-28 Tunnel progress messages from the daemon to the clientEelco Dolstra4-30/+124
This makes the progress bar work for non-root users.
2017-08-28 SimplifyEelco Dolstra2-18/+14
2017-08-28 Make TunnelLogger thread-safeEelco Dolstra1-109/+129
Now that we use threads in lots of places, it's possible for TunnelLogger::log() to be called asynchronously from other threads than the main loop. So we need to ensure that STDERR_NEXT messages don't clobber other messages.
2017-08-25 SimplifyEelco Dolstra3-29/+56
2017-08-25 DohEelco Dolstra1-0/+1
2017-08-25 Allow derivations to update the build phaseEelco Dolstra3-7/+24
So the progress bar can show [1/0/1 built, 0.0 MiB DL] building hello-2.10 (configuring): checking whether pread is declared without a macro... yes
2017-08-25 Allow activities to be nestedEelco Dolstra7-12/+55
In particular, this allows more relevant activities ("substituting X") to supersede inferior ones ("downloading X").
2017-08-25 Fix Debian buildEelco Dolstra1-1/+3
https://hydra.nixos.org/build/59390148
2017-08-25 Handle SIGWINCHEelco Dolstra3-8/+39
2017-08-25 When truncating the progress bar, take ANSI escape sequences into accountEelco Dolstra1-4/+41
2017-08-25 TypoEelco Dolstra1-1/+1
2017-08-25 Restore activity metadataEelco Dolstra4-20/+36
This allows the progress bar to display "building perl-5.22.3" instead of "building /nix/store/<hash>-perl-5.22.3.drv".
2017-08-21 Clean up JSON constructionEelco Dolstra1-3/+18
2017-08-21 Allow builders to create activitiesEelco Dolstra1-6/+72
Actually, currently they can only create download activities. Thus, downloads by builtins.fetchurl show up in the progress bar.