Eelco Dolstra
31a1a8ed3c
Merge pull request #815 from vcunat/p/outputsToInstall
...
nix-env: respect meta.outputsToInstall
2016-04-14 20:55:41 +02:00
Eelco Dolstra
5169a6da98
Make $NIX_PATH parsing more robust
2016-04-14 17:29:08 +02:00
Eelco Dolstra
363f37d084
Make the search path lazier with non-fatal errors
...
Thus, -I / $NIX_PATH entries are now downloaded only when they are
needed for evaluation. An error to download an entry is a non-fatal
warning (just like non-existant paths).
This does change the semantics of builtins.nixPath, which now returns
the original, rather than resulting path. E.g., before we had
[ { path = "/nix/store/hgm3yxf1lrrwa3z14zpqaj5p9vs0qklk-nixexprs.tar.xz"; prefix = "nixpkgs"; } ... ]
but now
[ { path = "https://nixos.org/channels/nixos-16.03/nixexprs.tar.xz "; prefix = "nixpkgs"; } ... ]
Fixes #792 .
2016-04-14 15:32:24 +02:00
Eelco Dolstra
12b257f045
Make primop registration pluggable
...
This way we don't have to put all primops in one giant file.
2016-04-14 12:50:01 +02:00
Nikolay Amiantov
f7f0116dd7
Propagate path context via builtins.readFile
2016-03-04 14:04:51 +03:00
Eelco Dolstra
e9c50064b5
Add an HTTP binary cache store
...
Allowing stuff like
NIX_REMOTE=https://cache.nixos.org nix-store -qR /nix/store/x1p1gl3a4kkz5ci0nfbayjqlqmczp1kq-geeqie-1.1
or
NIX_REMOTE=https://cache.nixos.org nix-store --export /nix/store/x1p1gl3a4kkz5ci0nfbayjqlqmczp1kq-geeqie-1.1 | nix-store --import
2016-02-29 18:15:20 +01:00
Scott Olson
6498adb002
Throw a specific error for incomplete parse errors.
...
`nix-repl` will use this for deciding whether to keep waiting for input or
error out right away.
2016-02-24 04:32:21 -06:00
Vladimír Čunát
03cbb9ad59
nix-env: respect meta.outputsToInstall
...
Discussed on https://github.com/NixOS/nixpkgs/pull/12653#discussion_r51601849
2016-02-23 14:19:14 +01:00
Eelco Dolstra
7a173a7be1
JSONObject: Support floats and booleans
2016-02-19 14:24:04 +01:00
Eelco Dolstra
e03d6e0998
Fix broken number parsing in fromJSON
...
The call to tmp_number.append had its arguments mixed up. Also, JSON
does not allow a trailing "," after array/object members.
2016-02-15 15:01:26 +01:00
Eelco Dolstra
b3e8d72770
Merge pull request #762 from ctheune/ctheune-floats
...
Implement floats
2016-02-12 12:49:59 +01:00
Eelco Dolstra
fa7cd5369b
StoreAPI -> Store
...
Calling a class an API is a bit redundant...
2016-02-04 14:48:42 +01:00
Eelco Dolstra
c10c61449f
Eliminate the "store" global variable
...
Also, move a few free-standing functions into StoreAPI and Derivation.
Also, introduce a non-nullable smart pointer, ref<T>, which is just a
wrapper around std::shared_ptr ensuring that the pointer is never
null. (For reference-counted values, this is better than passing a
"T&", because the latter doesn't maintain the refcount. Usually, the
caller will have a shared_ptr keeping the value alive, but that's not
always the case, e.g., when passing a reference to a std::thread via
std::bind.)
2016-02-04 14:28:26 +01:00
Eelco Dolstra
5d8b7eb3e1
Revert "Revert "next try for "don't abort when given unmatched '}' with 'start-condition stack underflow'. This fixes #751 """
...
This reverts commit b669d3d2e8
.
2016-01-20 16:34:42 +01:00
Eelco Dolstra
b669d3d2e8
Revert "next try for "don't abort when given unmatched '}' with 'start-condition stack underflow'. This fixes #751 ""
...
This reverts commit ed23c8568e
. Let's
merge this *after* the 1.11.1 release.
2016-01-20 00:05:28 +01:00
Fabian Schmitthenner
ed23c8568e
next try for "don't abort when given unmatched '}' with 'start-condition stack underflow'. This fixes #751 "
...
This reverts commit 8120b6fb8a
and fixes the regression introduced in
8d22b26448
.
2016-01-19 20:35:35 +00:00
Eelco Dolstra
8120b6fb8a
Revert "don't abort when given unmatched '}' with 'start-condition stack underflow'. This fixes #751 "
...
This reverts commit 8d22b26448
. It
breaks Nixpkgs:
$ nix-env -qa
error: syntax error, unexpected IND_STR, expecting '}', at /home/eelco/Dev/nixpkgs-stable/pkgs/top-level/python-packages.nix:7605:8
2016-01-19 20:33:32 +01:00
Fabian Schmitthenner
8d22b26448
don't abort when given unmatched '}' with 'start-condition stack underflow'. This fixes #751
2016-01-12 20:40:41 +00:00
Eelco Dolstra
9aac1861f7
Fix some signedness warnings
2016-01-07 14:37:39 +01:00
Christian Theune
934642155c
@eelco's feedback: downgrade to regular float for size, remove unused function.
2016-01-06 08:25:58 +01:00
Fabian Schmitthenner
39d1da7b51
Better error message
...
Also show types when nix cannot compare values of different types.
This is also more consistent since types are already shown when comparing values of the same not comparable type.
2016-01-05 14:13:54 +01:00
Shea Levy
14080f3e4b
Use __toString when coercing sets to strings.
...
For example, "${{ foo = "bar"; __toString = x: x.foo; }}" evaluates
to "bar".
With this, we can delay calling functions like mkDerivation,
buildPythonPackage, etc. until we actually need a derivation, enabling
overrides and other modifications to happen by simple attribute set
update.
2016-01-05 13:55:06 +01:00
Vladimír Čunát
29c0199d5c
manual: document builtins.functionArgs
...
The text is just a conversion of comment from src/libexpr/primops.cc
2016-01-05 13:29:17 +01:00
Christian Theune
a12a43046b
Edge condition: parser did not pick up floats starting exactly with 0.
2016-01-05 09:54:49 +01:00
Christian Theune
f872262e08
Fix up float parsing.
2016-01-05 09:46:37 +01:00
Christian Theune
494fc5acbb
Try a simplified version of float lexing that didn't work.
...
The last one I tried was botchered anyway ...
2016-01-05 00:53:22 +01:00
Christian Theune
14ebde5289
First hit at providing support for floats in the language.
2016-01-05 00:40:40 +01:00
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
Eelco Dolstra
fa47279440
Print some Boehm GC stats
2015-03-18 16:24:54 +01:00
Eelco Dolstra
7a84143910
valueSize(): Take into account list/bindings/env size
2015-03-18 14:41:28 +01:00
Daniel Hahler
e659978ced
Fix typos: s/the the/the/
2015-03-06 16:43:22 +01:00
Eelco Dolstra
17c71334e1
forceValueDeep: Add to error prefix
2015-03-06 15:10:12 +01:00
Eelco Dolstra
5badc8f975
Improve error message
2015-03-06 14:24:08 +01:00
Eelco Dolstra
15d2d3c34e
Add restricted evaluation mode
...
If ‘--option restrict-eval true’ is given, the evaluator will throw an
exception if an attempt is made to access any file outside of the Nix
search path. This is primarily intended for Hydra, where we don't want
people doing ‘builtins.readFile ~/.ssh/id_dsa’ or stuff like that.
2015-02-23 15:54:31 +01:00
Eelco Dolstra
c33244d7c1
Merge branch 'tilde-paths' of https://github.com/shlevy/nix
2015-02-19 14:55:06 +01:00
Shea Levy
c4653afbcd
tilde paths: The rest of the string has to start with a slash anyway
2015-02-19 08:52:13 -05:00
Shea Levy
e3e38a048e
tilde paths: construct the entire path at parse time
2015-02-19 08:51:21 -05:00
Shea Levy
4b7c9f834c
tilde paths: get HOME at parse time
2015-02-19 08:49:10 -05:00
Eelco Dolstra
9bedd9b09b
Remove obsolete reference to ~ operator
2015-02-19 14:41:22 +01:00
Shea Levy
4646e94610
ExprConcatStrings: canonicalize concatenated paths
2015-02-19 08:39:25 -05:00
Shea Levy
e0953d53de
Allow the leading component of a path to be a ~
2015-02-19 08:05:16 -05:00
Eelco Dolstra
2be7f79fd4
Remove tab
2015-02-05 17:21:30 +01:00
Shea Levy
73bf32ce94
Merge remote-tracking branch 'shlevy/baseNameOf-no-copy'
...
baseNameOf: Don't copy paths to the store first
2015-01-29 03:29:09 -05:00
Eelco Dolstra
c2a8b5c42d
Fix assertion failure in nix-env
...
$ nix-env -f ~/Dev/nixops/ -iA foo
nix-env: src/libexpr/eval.hh:57: void nix::Bindings::push_back(const nix::Attr&): Assertion `size_ < capacity' failed.
Aborted
2015-01-15 12:15:22 +01:00
Eelco Dolstra
2a3b1df423
Fix builtins.readDir on XFS
...
The DT_UNKNOWN fallback code was getting the type of the wrong path,
causing readDir to report "directory" as the type of every file.
Reported by deepfire on IRC.
2015-01-09 14:56:25 +01:00
Eelco Dolstra
153a943de7
Show position info for failing <...> lookups
2015-01-07 13:43:55 +01:00
Eelco Dolstra
6fec43ccb3
Remove quotes around filenames in position info
2015-01-07 12:08:10 +01:00
Eelco Dolstra
4e0607369e
Pedantry
2014-12-14 01:51:14 +01:00
Eelco Dolstra
8aedaf111e
Remove canary stuff
2014-12-12 10:59:50 +01:00
Shea Levy
50c3352811
builtins.readFile: realise context associated with the path
2014-12-10 12:26:53 +01:00
Shea Levy
608110804c
Make all ExternalValueBase functions const
2014-12-02 10:27:10 -05:00