Eelco Dolstra
6e5b02bee4
Add some instrumentation for debugging GC leaks
2014-09-17 15:19:07 +02:00
Eelco Dolstra
d37d012774
Settings: Add bool get()
2014-09-17 15:18:13 +02:00
Eelco Dolstra
9d65287b91
Fix dependency ordering
2014-09-04 20:02:08 +02:00
Eelco Dolstra
9472b4157d
Fix boost::too_many_args error
...
Fixes #333 .
2014-09-02 22:53:01 +02:00
Ludovic Courtès
8fb8c26b6d
Add an 'optimiseStore' remote procedure call.
2014-09-01 23:53:26 +02:00
Eelco Dolstra
b72e93bca8
Add disallowedReferences / disallowedRequisites
...
For the "stdenv accidentally referring to bootstrap-tools", it seems
easier to specify the path that we don't want to depend on, e.g.
disallowedRequisites = [ bootstrapTools ];
2014-08-28 18:57:13 +02:00
Gergely Risko
fd61069a42
Introduce allowedRequisites feature
2014-08-28 18:23:55 +02:00
Joel Taylor
b224ac1520
fix disappearing bash arguments
2014-08-21 23:17:50 +02:00
Eelco Dolstra
809ca33806
Use PR_SET_PDEATHSIG to ensure child cleanup
2014-08-21 15:31:43 +02:00
Eelco Dolstra
524f89f139
Use unshare() instead of clone()
...
It turns out that using clone() to start a child process is unsafe in
a multithreaded program. It can cause the initialisation of a build
child process to hang in setgroups(), as seen several times in the
build farm:
The reason is that Glibc thinks that the other threads of the parent
exist in the child, so in setxid_mark_thread() it tries to get a futex
that has been acquired by another thread just before the clone(). With
fork(), Glibc runs pthread_atfork() handlers that take care of this
(in particular, __reclaim_stacks()). But clone() doesn't do that.
Fortunately, we can use fork()+unshare() instead of clone() to set up
private namespaces.
See also https://www.mail-archive.com/lxc-devel@lists.linuxcontainers.org/msg03434.html .
2014-08-21 14:08:09 +02:00
Eelco Dolstra
fefd3650d4
Fix a segfault in ‘nix-env -qa’
...
This was triggered by 47e185847e
, which
turned globals.state into a pointer.
2014-08-21 00:05:17 +02:00
Eelco Dolstra
65243ee833
Flush std::cout before closing stdout
2014-08-20 21:44:55 +02:00
Eelco Dolstra
43579c9799
Use pager for more commands
2014-08-20 21:44:55 +02:00
Eelco Dolstra
9481f77693
Provide reasonable default flags for $LESS
...
Borrowed from systemd.
2014-08-20 21:22:41 +02:00
Eelco Dolstra
11849a320e
Use proper quotes everywhere
2014-08-20 18:03:48 +02:00
Eelco Dolstra
373fad75e1
Add some color
2014-08-20 16:50:17 +02:00
Eelco Dolstra
392430b2c4
nix-store -l: Automatically pipe output into $PAGER
2014-08-20 15:12:58 +02:00
Eelco Dolstra
954188af27
Filter Nix-specific ANSI escape sequences from stderr
...
The Nixpkgs stdenv prints some custom escape sequences to denote
nesting and stuff like that. Most terminals (e.g. xterm, konsole)
ignore them, but some do not (e.g. xfce4-terminal). So for the benefit
of the latter, filter them out.
2014-08-20 14:30:01 +02:00
Eelco Dolstra
029424d17d
Make hook shutdown more reliable
2014-08-19 17:47:30 +02:00
Eelco Dolstra
02843ba4cb
Fix --attr parsing
2014-08-18 15:48:23 +02:00
Eelco Dolstra
632f989b51
Doh
2014-08-18 11:35:50 +02:00
Eelco Dolstra
c160ead82f
Reduce verbosity
2014-08-17 19:11:50 +02:00
Eelco Dolstra
42e9ad8fd1
Propagate remote timeouts properly
2014-08-17 19:09:03 +02:00
Eelco Dolstra
ad716378dc
Fix download-via-ssh
...
http://hydra.nixos.org/build/13286020
2014-08-17 14:28:17 +02:00
Eelco Dolstra
fde819f2e2
nix-log2xml: Handle newlines
2014-08-13 19:06:20 +02:00
Eelco Dolstra
cb921f67c3
Remove log2html.xsl and friends
...
It's part of Hydra now.
2014-08-13 19:01:14 +02:00
Eelco Dolstra
e9b609bf9a
nix-log2xml: Handle UTF-8 characters
...
C++ chars can be negative...
2014-08-13 19:00:07 +02:00
Eelco Dolstra
9367046fef
Use regular file GC roots if possible
...
This makes hydra-eval-jobs create roots as regular files. See
1c208f2b7e
.
2014-08-13 17:44:41 +02:00
Eelco Dolstra
5f05197df4
Handle compound single dash options properly
...
So now
nix-instantiate --eval -E '{x}: x' --argstr x -xyzzy
correctly prints "-xyzzy", rather than giving an error.
Issue NixOS/hydra#176 .
2014-08-13 04:08:33 +02:00
Eelco Dolstra
47e185847e
Refactor option handling
2014-08-13 03:50:44 +02:00
Eelco Dolstra
5bed74d1b0
Fix warning about non-existant -I directories
2014-08-13 02:57:59 +02:00
Eelco Dolstra
401ab50566
Remove pointless NIX_LOG_TYPE environment variable
2014-08-13 01:19:02 +02:00
Eelco Dolstra
98873ff7de
Remove unnecessary call to addTempRoot()
2014-08-05 16:41:42 +02:00
Eelco Dolstra
f02c52e3d4
Doh
2014-08-05 10:19:57 +02:00
Eelco Dolstra
988bf59421
Move some options out of globals
2014-08-04 18:13:14 +02:00
Eelco Dolstra
daccd68999
Refactor
2014-08-04 18:02:29 +02:00
Eelco Dolstra
d5a076c36f
Add option ‘build-extra-chroot-dirs’
...
This is useful for extending (rather than overriding) the default set
of chroot paths.
2014-08-04 18:00:00 +02:00
Eelco Dolstra
4d73e2e893
Get rid of "killing <pid>" message for unused build hooks
2014-08-04 17:27:45 +02:00
Eelco Dolstra
bb45092f72
Make chroot builds easier to set up
...
By default, we now include /bin/sh as a bind-mount of bash.
2014-08-04 17:09:26 +02:00
Eelco Dolstra
51485dcda2
Remove ugly hack for detecting build environment setup errors
2014-08-01 19:38:21 +02:00
Eelco Dolstra
4c4b219c07
Call commonChildInit() before doing chroot init
...
This ensures that daemon clients see error messages from the chroot
setup.
2014-08-01 19:29:03 +02:00
Eelco Dolstra
eea0401d7a
Eliminate redundant copy
2014-08-01 17:30:51 +02:00
Eelco Dolstra
e0d7d0e45c
findRoots(): Prevent a call to lstat()
...
This means that getting the roots from /nix/var/nix/.../hydra-roots
doesn't need any I/O other than reading the directory.
2014-08-01 17:20:25 +02:00
Eelco Dolstra
daf3f2c11f
Make readDirectory() return inode / file type
2014-08-01 17:14:28 +02:00
Eelco Dolstra
1c208f2b7e
Allow regular files as GC roots
...
If a root is a regular file, then its name must denote a store
path. For instance, the existence of the file
/nix/var/nix/gcroots/per-user/eelco/hydra-roots/wzc3cy1wwwd6d0dgxpa77ijr1yp50s6v-libxml2-2.7.7
would cause
/nix/store/wzc3cy1wwwd6d0dgxpa77ijr1yp50s6v-libxml2-2.7.7
to be a root.
This is useful because it involves less I/O (no need for a readlink()
call) and takes up less disk space (the symlink target typically takes
up a full disk block, while directory entries are packed more
efficiently). This is particularly important for hydra.nixos.org,
which has hundreds of thousands of roots, and where reading the roots
can take 25 minutes.
2014-08-01 17:14:28 +02:00
Eelco Dolstra
50dc1f5b71
Restore default SIGPIPE handler before invoking ‘man’
...
Fixes NixOS/nixpkgs#3410 .
2014-07-31 10:31:17 +02:00
Eelco Dolstra
3d221a7bb1
Rename nixPath to __nixPath
...
The name ‘nixPath’ breaks existing code.
2014-07-30 11:28:39 +02:00
Eelco Dolstra
67937907ca
nix-daemon: Pass on the user's $SSH_AUTH_SOCK to the SSH substituter
2014-07-25 18:02:48 +02:00
Eelco Dolstra
71a20d4d95
Change the default for use-ssh-substituter to ‘true’
...
Now you only have to pass ‘--option ssh-substituter-hosts
nix-ssh@bla’ to enable SSH substitution.
2014-07-25 12:57:12 +02:00
Eelco Dolstra
1a44f1cb65
nix-copy-closure: Drop --bzip2, --xz, --show-progress
...
These are too difficult to implement via nix-store --serve.
‘--show-progress’ could be re-implemented fairly easily via a
sink/source wrapper class.
2014-07-24 17:11:54 +02:00