Eelco Dolstra
a9faa7bbce
showId: Handle empty attribute names
...
We should probably disallow these, but until then, we shouldn't barf
with an assertion failure.
Fixes #738 .
2015-12-17 15:15:28 +01:00
Shea Levy
f327970129
Merge branch 'auto-call-functor'
...
autoCallFunction now auto-calls functors
2015-11-25 11:57:31 -05:00
Shea Levy
9533532ce2
autoCallFunction: Auto-call functors
2015-11-25 11:56:14 -05:00
Eelco Dolstra
cad40adce5
Merge pull request #704 from ysangkok/freebsd-support
...
FreeBSD support with knowledge about Linux emulation
2015-11-24 19:24:21 +01:00
Eelco Dolstra
5c28943e8f
int2String() -> std::to_string()
2015-10-29 13:26:55 +01:00
Eelco Dolstra
51cf4455b2
isFunctor: Simplify
2015-10-08 13:22:11 +02:00
Mathnerd314
8a87521636
forceFunction: allow functors as well
2015-10-08 13:19:44 +02:00
Manuel Jacob
12c1776df9
Don't try to link libdl on FreeBSD.
...
There is no libdl on FreeBSD. Instead the symbols are included in libc.
2015-10-06 22:28:30 +02:00
Eelco Dolstra
4ba6bc184c
Shut up clang warnings
2015-09-18 01:22:35 +02:00
Iwan Aucamp
3db950aab7
Removed unnecessary included
2015-08-03 11:48:34 +02:00
Eelco Dolstra
2bac04c5ff
Fix stack consumption
2015-07-31 20:28:25 +02:00
Iwan Aucamp
75837651f1
Output line number on infinite recursion
2015-07-31 20:26:44 +02:00
Eelco Dolstra
76cc8e97a2
Add sort primop
2015-07-28 18:39:39 +02:00
Eelco Dolstra
50807f3dd5
Add primop genList
...
This can be used to implement functions like ‘imap’ (or for that
matter, ‘map’) without the quadratic complexity incurred by calling
‘++’ repeatedly.
2015-07-28 17:28:35 +02:00
Eelco Dolstra
d6d5885c15
Add replaceStrings primop
...
This is a generalisation of replaceChars in Nixpkgs.
2015-07-24 15:32:24 +02:00
Eelco Dolstra
2e8fd4c5cd
Add concatStringsSep as a primop
...
This fixes the quadratic behaviour of concatStrings/concatStringsSep
in Nixpkgs.
2015-07-24 02:38:09 +02:00
Eelco Dolstra
cb4320c1a0
Cleanup
2015-07-23 23:14:07 +02:00
Eelco Dolstra
c8bb2371eb
Optimize empty sets
...
This reduces the number of Bindings allocations by about 10%.
2015-07-23 23:11:08 +02:00
Eelco Dolstra
19eddecc0f
Merge branch 'attr-set-hh' of https://github.com/nbp/nix
...
Conflicts:
src/libexpr/eval.cc
2015-07-23 22:16:01 +02:00
Eelco Dolstra
b83801f8b3
Optimize small lists
...
The value pointers of lists with 1 or 2 elements are now stored in the
list value itself. In particular, this makes the "concatMap (x: if
cond then [(f x)] else [])" idiom cheaper.
2015-07-23 22:05:09 +02:00
Eelco Dolstra
14be783676
Add primops all and any
...
These are used thousands of times during NixOS evaluation, so it's
useful to speed them up.
2015-07-23 19:23:11 +02:00
Shea Levy
39e27a04b8
Importing derivations: Add name attribute to make a valid drv
2015-07-23 17:04:07 +02:00
Shea Levy
1ed55234d9
Allow derivations-as-srcs in the context of builtins.toFile files
2015-07-23 17:03:47 +02:00
Eelco Dolstra
61af14a921
Add foldl' primop
2015-07-23 17:03:02 +02:00
Eelco Dolstra
0a2bee307b
Make <nix/fetchurl.nix> a builtin builder
...
This ensures that 1) the derivation doesn't change when Nix changes;
2) the derivation closure doesn't contain Nix and its dependencies; 3)
we don't have to rely on ugly chroot hacks.
2015-07-20 04:38:46 +02:00
Eelco Dolstra
6bd2c7bb38
OCD: foreach -> C++11 ranged for
2015-07-17 20:13:56 +02:00
Eelco Dolstra
f39979c6d3
Make printValue() interruptible
...
Fixes #572 .
2015-07-17 11:33:39 +02:00
Nicolas B. Pierron
db21cfa688
Move attribute set data structures into their own header file.
...
This modification moves Attr and Bindings structures into their own header
file which is dedicated to the attribute set representation. The goal of to
isolate pieces of code which are related to the attribute set
representation. Thus future modifications of the attribute set
representation will only have to modify these files, and not every other
file across the evaluator.
2015-07-14 19:23:17 +02:00
Guillaume Maudoux
467977f203
Fix the parsing of "$"'s in strings.
2015-07-03 14:09:58 +02:00
Guillaume Maudoux
65e4dcd69b
Fix the hack that resets the scanner state.
2015-07-03 13:53:36 +02:00
Eelco Dolstra
65f17cd330
Support URLs in $NIX_PATH
...
This didn't work (despite claims in the manual), because the colon in
"http://" was parsed as a element separator. So handle "://"
specially.
2015-06-17 16:20:11 +02:00
Eelco Dolstra
bc51175dc0
Add tarball tests
2015-06-01 16:18:23 +02:00
Eelco Dolstra
da196ec68f
Document tarball downloading
2015-06-01 15:14:44 +02:00
Eelco Dolstra
c1323b53e3
Fix fetchurl/fetchTarball
2015-06-01 15:08:09 +02:00
Eelco Dolstra
1c88e100e7
readFile: Check against nul bytes
2015-06-01 15:07:42 +02:00
Eelco Dolstra
920f5fd4dd
Fix import-from-derivation in restricted eval mode
...
This relaxes restricted mode to allow access to anything in the
store. In the future, it would be better to allow access to only paths
that have been constructed in the current evaluation (so a hard-coded
/nix/store/blabla in a Nix expression would still be
rejected). However, note that reading /nix/store itself is still
rejected, so you can't use this so get access to things you don't know
about.
2015-05-22 12:18:23 +02:00
Eelco Dolstra
6519f06f39
nix-env/nix-instantiate/nix-build: Support URIs
...
For instance, you can install Firefox from a specific Nixpkgs revision
like this:
$ nix-env -f 63def04891
.tar.gz -iA firefox
Or build a package from the latest nixpkgs-unstable channel:
$ nix-build https://nixos.org/channels/nixpkgs-unstable/nixexprs.tar.xz -A hello
2015-05-06 14:54:31 +02:00
Eelco Dolstra
9451ef3731
Allow URLs in the Nix search path
...
E.g. to install "hello" from the latest Nixpkgs:
$ nix-build '<nixpkgs>' -A hello -I nixpkgs=https://nixos.org/channels/nixpkgs-unstable/nixexprs.tar.xz
Or to install a specific version of NixOS:
$ nixos-rebuild switch -I nixpkgs=63def04891
.tar.gz
2015-05-05 17:09:42 +02:00
Eelco Dolstra
35d30d67eb
Make downloads interruptable
2015-05-05 14:39:48 +02:00
Eelco Dolstra
035aeb9547
Fix using restricted mode with chroots
2015-04-16 18:46:17 +02:00
Eelco Dolstra
4ed2187377
Use cached result if there is a network error
2015-04-09 12:49:13 +02:00
Eelco Dolstra
1fc905ad4c
Move curl stuff into a separate file
2015-04-09 12:12:50 +02:00
Eelco Dolstra
c1f04fae35
Implement a TTL on cached fetchurl/fetchTarball results
...
This is because we don't want to do HTTP requests on every evaluation,
even though we can prevent a full redownload via the cached ETag. The
default is one hour.
2015-04-09 11:55:36 +02:00
Eelco Dolstra
60340ce3e2
Implement caching of fetchurl/fetchTarball results
...
ETags are used to prevent redownloading unchanged files.
2015-04-09 11:42:04 +02:00
Eelco Dolstra
000b5a000f
Add fetchTarball builtin
...
This function downloads and unpacks the given URL at evaluation
time. This is primarily intended to make it easier to deal with Nix
expressions that have external dependencies. For instance, to fetch
Nixpkgs 14.12:
with import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-14.12.tar.gz ) {};
Or to fetch a specific revision:
with import (fetchTarball 2766a4b44e
.tar.gz) {};
This patch also adds a ‘fetchurl’ builtin that downloads but doesn't
unpack its argument. Not sure if it's useful though.
2015-03-25 17:29:09 +01:00
Eelco Dolstra
7ea6ecf855
addToStore(): Take explicit name argument
2015-03-25 17:06:12 +01:00
Eelco Dolstra
6f0c6e20e0
Don't rely on __noChroot for corepkgs
...
This doesn't work anymore if the "strict" chroot mode is
enabled. Instead, add Nix's store path as a dependency. This ensures
that its closure is present in the chroot.
2015-03-24 11:15:45 +01:00
Eelco Dolstra
b005e63ccf
Disable scanning for interior pointers
...
This may remove the "Repeated allocation of very large block"
warnings.
2015-03-19 20:10:08 +01:00
Eelco Dolstra
726f7f7fc9
Fix Boehm API violation
...
We were calling GC_INIT() after doing an allocation (in the baseEnv
construction), which is not allowed.
2015-03-19 20:02:37 +01:00
Eelco Dolstra
da6b704b19
Check return values from malloc/strdup
2015-03-19 14:11:35 +01:00