Eelco Dolstra
4e340a983f
forceString(): Accept pos argument
2014-11-25 10:23:36 +01:00
Eelco Dolstra
b7b6e3ddec
Build derivations in a more predictable order
...
Derivations are now built in order of derivation name, so a package
named "aardvark" is built before "baboon".
Fixes #399 .
2014-11-24 16:50:46 +01:00
Eelco Dolstra
9e3389c337
Don't create unnecessary substitution goals for derivations
2014-11-24 16:50:46 +01:00
Shea Levy
b0c5c2ac34
import derivation: cleanup
...
Before this there was a bug where a `find` was being called on a
not-yet-sorted set. The code was just a mess before anyway, so I cleaned
it up while fixing it.
2014-11-20 22:48:12 -05:00
Eelco Dolstra
8299aaf079
Disable vacuuming the DB after garbage collection
...
Especially in WAL mode on a highly loaded machine, this is not a good
idea because it results in a WAL file of approximately the same size
ad the database, which apparently cannot be deleted while anybody is
accessing it.
2014-11-19 18:14:24 +01:00
Eelco Dolstra
a3e5c99d66
nix-daemon: Call exit(), not _exit()
...
This was preventing destructors from running. In particular, it was
preventing the deletion of the temproot file for each worker
process. It may also have been responsible for the excessive WAL
growth on Hydra (due to the SQLite database not being closed
properly).
Apparently broken by accident in
8e9140cfde
.
2014-11-19 17:09:27 +01:00
Eelco Dolstra
1256ab3b44
Clean up temp roots in a more C++ way
2014-11-19 17:07:29 +01:00
Eelco Dolstra
35aad73bb6
Fix message
2014-11-17 01:00:39 +01:00
Shea Levy
2719627bbe
realiseContext: Handle all context types
...
Avoids an assertion
2014-11-15 21:43:51 -05:00
Shea Levy
997defa166
Add functors (callable attribute sets).
...
With this, attribute sets with a `__functor` attribute can be applied
just like normal functions. This can be used to attach arbitrary
metadata to a function without callers needing to treat it specially.
2014-11-15 16:12:05 -05:00
Eelco Dolstra
8cfe939b0f
Don't use ADDR_LIMIT_3GB
...
This gives 32-bit builds on x86_64-linux more memory.
2014-11-14 14:16:20 +01:00
Eelco Dolstra
bab8d9b52a
Make ~DerivationGoal more reliable
2014-11-12 11:35:53 +01:00
Eelco Dolstra
06a86aee15
nix-store --gc: Don't warn about missing manifests directory
2014-11-04 10:41:29 +01:00
Eelco Dolstra
526811c87a
nix-daemon: Get peer credentials on Mac OS X
...
This makes allowed-users and trusted-users work on Mac OS X.
2014-10-31 10:08:59 +01:00
Eelco Dolstra
e389f4ea55
Improve error message if the daemon worker fails to start
2014-10-31 09:36:09 +01:00
Eelco Dolstra
3a9b4a1467
Fix more warnings
2014-10-31 08:49:15 +01:00
Eelco Dolstra
80893a13a7
Shut up a clang warning
2014-10-31 08:49:15 +01:00
Eelco Dolstra
11aef17a77
Remove comments claiming we use a private PID namespace
...
This is no longer the case since
524f89f139
.
2014-10-29 15:49:34 +01:00
Shea Levy
6062b12160
Fix build on gcc < 4.7
2014-10-20 12:15:50 -04:00
Shea Levy
f040159f77
Revert "Drop support for pre-c++11 compilers."
...
The breakage this fixed can be worked around without removing support.
This reverts commit 84a13dc576
.
2014-10-20 11:33:48 -04:00
Eelco Dolstra
ecc2c8f464
Improve printing of ASTs
2014-10-20 09:13:21 +02:00
Shea Levy
84a13dc576
Drop support for pre-c++11 compilers.
...
In particular, gcc 4.6's std::exception::~exception has an exception
specification in c++0x mode, which requires us to use that deprecated
feature in nix (and led to breakage after some recent changes that were
valid c++11).
nix already uses several c++11 features and gcc 4.7 has been around for
over 2 years.
2014-10-18 22:44:59 -04:00
Shea Levy
0ee1ca628a
baseNameOf: Don't copy paths to the store first
2014-10-18 20:28:28 -04:00
Shea Levy
d16e3c7f09
Export realiseContext in libnixexpr
...
Useful for importNative plugins
2014-10-17 22:15:09 -04:00
Eelco Dolstra
d04e1ff12a
nix-store -q: Check for conflicting flags
...
Fixes #364 .
2014-10-14 12:15:39 +02:00
Eelco Dolstra
c6849e2dee
Remove redundant space in usage errors
2014-10-14 11:41:04 +02:00
Eelco Dolstra
2a4dbcff74
Improved error message when encountering unsupported file types
...
Fixes #269 .
2014-10-14 10:51:19 +02:00
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
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