Eelco Dolstra
6bb4c0b712
mkList: Scrub better
...
Clearing v.app.right was not enough, because the length field of a
list only takes 32 bits, so the most significant 32 bits of v.app.left
(a.k.a. v.thunk.env) would remain. This could cause Boehm GC to
interpret it as a valid pointer.
This change reduces maximum RSS for evaluating the ‘tested’ job in
nixos/release-small.nix from 1.33 GiB to 0.80 GiB, and runtime by
about 8%.
2014-10-09 13:08:53 +02:00
Eelco Dolstra
986fbd6fab
Typo
2014-10-09 11:34:48 +02:00
Eelco Dolstra
b6809608cc
Get rid of some unnecessary ExprConcatStrings nodes in dynamic attrs
...
This gives a ~18% speedup in NixOS evaluation (after converting
most calls to hasAttr/getAttr to dynamic attrs).
2014-10-05 01:04:58 +02:00
Eelco Dolstra
1418806969
Show total allocations
2014-10-05 00:39:28 +02:00
Eelco Dolstra
c3f0a489f9
Add primop ‘catAttrs’
2014-10-04 18:15:03 +02:00
Eelco Dolstra
d4fcbe1687
Add primop ‘attrValues’
2014-10-04 16:41:24 +02:00
Eelco Dolstra
58d8a213b0
Tweak
2014-10-04 11:27:23 +02:00
Eelco Dolstra
3f8576a6ab
Remove some duplicate code
2014-10-03 22:37:51 +02:00
Shea Levy
c08c802bf3
Add readDir primop
2014-10-03 22:32:11 +02:00
Eelco Dolstra
3b5fa8d50c
Don't recompile the same regex over and over
2014-10-03 21:29:40 +02:00
Eelco Dolstra
104e55bb7f
nix-env: Add regular expression support in selectors
...
So you can now do things like:
$ nix-env -qa '.*zip.*'
$ nix-env -qa '.*(firefox|chromium).*'
2014-10-03 21:29:40 +02:00
Eelco Dolstra
3800f441e4
createDirs(): Handle ‘path’ being a symlink
...
In particular, this fixes "nix-build -o /tmp/result" on Mac OS X
(where /tmp is a symlink).
2014-10-03 16:53:28 +02:00
Eelco Dolstra
a17c23426e
printValue(): Don't print <CYCLE> for repeated values
2014-10-01 15:54:40 +02:00
Eelco Dolstra
d61853430a
Support control characters in JSON output
2014-09-30 00:41:18 +02:00
Eelco Dolstra
f77be20c16
printMissing(): Print derivations in approximate build order
2014-09-26 14:09:20 +02:00
Eelco Dolstra
9b146a52f1
nix-daemon: Close unnecessary fd
2014-09-25 18:45:43 +02:00
Eelco Dolstra
0ed1b924be
Bindings: Remove copy constructor
2014-09-24 15:29:05 +02:00
Shell Turner
cf72a61af2
Add --force-name support for --set in nix-env, to support nix-install-package --set
2014-09-23 15:11:24 +02:00
Eelco Dolstra
ebb1dbb3e1
Add missing static
2014-09-23 15:08:27 +02:00
Eelco Dolstra
53b044c2f6
Don't evaluate inside a "throw"
...
Workaround for
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41174 . This caused
hydra-eval-jobs to ignore SIGINT.
2014-09-22 19:18:05 +02:00
Eelco Dolstra
0cd6596b0e
Add ‘deepSeq’ primop
...
Note that unlike ‘lib.deepSeq’ in Nixpkgs, this handles cycles.
2014-09-22 16:05:00 +02:00
Eelco Dolstra
831fc8ea21
Make forceValueDeep work on values with cycles
2014-09-22 16:05:00 +02:00
Eelco Dolstra
1e0a799bef
Rename strictForceValue -> forceValueDeep
2014-09-22 16:05:00 +02:00
Eelco Dolstra
022618c794
Handle cycles when printing a value
...
So this no longer crashes with a stack overflow:
nix-instantiate -E --eval 'let as = { x = as; }; in as'
Instead it prints:
{ x = { x = <CYCLE>; }; }
2014-09-22 16:05:00 +02:00
Eelco Dolstra
a54c263402
Add ‘seq’ primop
2014-09-22 16:05:00 +02:00
Eelco Dolstra
eff120d1b9
Add a function ‘valueSize’
...
It returns the size of value, including all other values and
environments reachable from it. It is intended for debugging memory
consumption issues.
2014-09-22 16:05:00 +02:00
Eelco Dolstra
2d6cd8aafd
attrNames: Don't allocate duplicates of the symbols
2014-09-19 18:11:46 +02:00
Eelco Dolstra
ea525a261f
Fix off-by-one
2014-09-19 18:08:14 +02:00
Eelco Dolstra
93e4f01ee3
Inline Bindings::find()
2014-09-19 16:56:13 +02:00
Eelco Dolstra
5b58991a71
Store Attrs inside Bindings
...
This prevents a double allocation per attribute set.
2014-09-19 16:49:41 +02:00
Eelco Dolstra
0342eb1705
Remove bogus comment
2014-09-19 15:07:22 +02:00
Eelco Dolstra
d4a71ec3bf
Update spec file
...
http://hydra.nixos.org/build/14344391
2014-09-18 15:42:01 +02:00
Eelco Dolstra
8be9990cdb
Install some pkgconfig files
2014-09-18 12:00:40 +02:00
Eelco Dolstra
d98bfcbf81
On Linux, disable address space randomization
2014-09-17 17:21:13 +02:00
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