Eelco Dolstra
05879db628
* Memoize strict evaluation.
2007-01-13 15:41:54 +00:00
Eelco Dolstra
5011588459
* printTermAsXML: treat derivations specially; emit an element
...
<derivation outPath=... drvPath=...> attrs </derivation>. Only emit
the attributes of any specific derivation only. This prevents
exponententially large XML output due to the absense of sharing.
2007-01-13 15:11:10 +00:00
Eelco Dolstra
792878af91
* Make printing an expression as XML interruptible.
2007-01-13 14:48:41 +00:00
Eelco Dolstra
11158028be
* Cleanup.
2007-01-13 14:21:49 +00:00
Eelco Dolstra
1073b1780a
* Remove debug message.
2006-12-13 14:29:05 +00:00
Eelco Dolstra
a3e6415ba8
* New primop builtins.filterSource, which can be used to filter files
...
from a source directory. All files for which a predicate function
returns true are copied to the store. Typical example is to leave
out the .svn directory:
stdenv.mkDerivation {
...
src = builtins.filterSource
(path: baseNameOf (toString path) != ".svn")
./source-dir;
# as opposed to
# src = ./source-dir;
}
This is important because the .svn directory influences the hash in
a rather unpredictable and variable way.
2006-12-12 23:05:01 +00:00
Eelco Dolstra
1a7e88bbd9
* New built-in function `builtins.attrNames' that returns the
...
names of the attributes in an attribute set.
2006-12-12 16:14:31 +00:00
Eelco Dolstra
9c9cdb06d0
* Remove SwitchToOriginalUser, we're not going to need it anymore.
2006-12-02 14:34:14 +00:00
Eelco Dolstra
fcd9900d74
* Replace read-only calls to addTextToStore.
2006-12-01 21:00:39 +00:00
Eelco Dolstra
a824d58b56
* Merge addToStore and addToStoreFixed.
...
* addToStore now adds unconditionally, it doesn't use readOnlyMode.
Read-only operation is up to the caller (who can call
computeStorePathForPath).
2006-12-01 20:51:18 +00:00
Eelco Dolstra
6ecb840fd1
* Put building in the store API.
2006-11-30 18:02:04 +00:00
Eelco Dolstra
e2ef5e07fd
* Refactoring. There is now an abstract interface class StoreAPI
...
containing functions that operate on the Nix store. One
implementation is LocalStore, which operates on the Nix store
directly. The next step, to enable secure multi-user Nix, is to
create a different implementation RemoteStore that talks to a
privileged daemon process that uses LocalStore to perform the actual
operations.
2006-11-30 17:43:04 +00:00
Eelco Dolstra
7e85a2af5f
* Fix importing of derivation outputs.
2006-11-03 16:17:39 +00:00
Eelco Dolstra
dd300fb48d
* Some better error messages.
2006-10-23 16:45:19 +00:00
Eelco Dolstra
17f4883bfe
* Better message.
2006-10-19 17:43:58 +00:00
Eelco Dolstra
9bd93f7606
* toFile: maintain the references.
2006-10-19 17:39:02 +00:00
Eelco Dolstra
daa8f85fcd
* Backwards compatibility hack for user environments made by Nix <= 0.10.
2006-10-17 14:13:15 +00:00
Eelco Dolstra
24737f279e
* Backwards compatibility with old user environment manifests.
2006-10-17 14:01:45 +00:00
Eelco Dolstra
4bd5cdb90b
* Print out the offending path.
2006-10-17 14:01:28 +00:00
Eelco Dolstra
58ff6939f4
* An awful backwards compatibility hack.
2006-10-17 12:58:42 +00:00
Eelco Dolstra
3059df0f1e
* baseNameOf: paths don't have to be absolute.
2006-10-17 12:34:13 +00:00
Eelco Dolstra
be1961c9f8
* toPath: should be the identity on paths.
2006-10-17 11:07:11 +00:00
Eelco Dolstra
cba913c521
* dirOf: return a path if the argument is a path.
2006-10-17 11:05:34 +00:00
Eelco Dolstra
cf705eaf78
* toString: don't copy paths. So toString can be used to pass
...
non-store paths to a builder.
2006-10-17 10:58:12 +00:00
Eelco Dolstra
7de5fe2fc2
* Do the path check on the normal form.
2006-10-17 10:57:25 +00:00
Eelco Dolstra
d7efd76394
* Big cleanup of the semantics of paths, strings, contexts, string
...
concatenation and string coercion. This was a big mess (see
e.g. NIX-67). Contexts are now folded into strings, so that they
don't cause evaluation errors when they're not expected. The
semantics of paths has been clarified (see nixexpr-ast.def).
toString() and coerceToString() have been merged.
Semantic change: paths are now copied to the store when they're in a
concatenation (and in most other situations - that's the
formalisation of the meaning of a path). So
"foo " + ./bla
evaluates to "foo /nix/store/hash...-bla", not "foo
/path/to/current-dir/bla". This prevents accidental impurities, and
is more consistent with the treatment of derivation outputs, e.g.,
`"foo " + bla' where `bla' is a derivation. (Here `bla' would be
replaced by the output path of `bla'.)
2006-10-16 15:55:34 +00:00
Eelco Dolstra
7d4567f2cc
* Removed URIs from the evaluator (NIX-66). They are now just another
...
kind of notation for strings.
2006-10-11 21:59:33 +00:00
Eelco Dolstra
0c4c5c2020
* Quick hack to fix NIX-67: evaluation result differing if the Nix
...
expression resides in the store.
2006-10-10 21:23:35 +00:00
Eelco Dolstra
bd0c40e1e9
* import': unwrap the context. Necessary to make
import (x + y)'
...
work, where x is a store path.
2006-10-10 15:07:23 +00:00
Eelco Dolstra
5fd44654db
* toXML: propagate the context to allow derivations to be used in the
...
argument.
2006-10-03 15:38:59 +00:00
Eelco Dolstra
d20c3011a0
* toFile: added an additional argument to specify the store path
...
suffix, e.g., `builtins.toFile "builder.sh" "..."'.
* toFile: handle references to other files correctly.
2006-10-03 14:55:54 +00:00
Eelco Dolstra
ac19b333b3
* Finally, a real "let" syntax: `let x = ...; ... z = ...; in ...'.
2006-10-02 15:52:44 +00:00
Eelco Dolstra
7581cfdee4
* Hack for Bison 2.3 compatability.
2006-10-02 14:43:15 +00:00
Eelco Dolstra
e347033f71
* The result of a concatenation with a derivation on the left-hand
...
side should be a path, I guess.
* Handle paths that are in the store but not direct children of the
store directory.
* Ugh, hack to prevent double context wrapping.
2006-09-24 21:39:57 +00:00
Eelco Dolstra
0e705391db
* Primop `toPath' to convert a string to a path.
...
* Primop `pathExists' to check for path existence.
2006-09-24 18:23:32 +00:00
Eelco Dolstra
e47e0c2dbe
* Builtin function `getEnv' for getting environment variables.
2006-09-24 17:48:41 +00:00
Eelco Dolstra
df8873e14a
* lessThan primitive for integer comparison.
2006-09-24 15:21:48 +00:00
Eelco Dolstra
2ab4bc44c7
* Builtin function `add' to add integers.
...
* Put common test functions in tests/lang/lib.nix.
2006-09-22 15:29:21 +00:00
Eelco Dolstra
d315210612
* Added a builtin function `isList' to test whether a value is a list.
...
With this primitive, a list-flattening function can be implemented
(NIX-55, example is in tests/lang/eval-okay-flatten.nix).
2006-09-22 14:55:19 +00:00
Eelco Dolstra
c02a44183f
* Builtin functions head' and
tail' to return the head and tail of
...
list. Useful for lots of things, such as implementing a fold
function (see NIX-30, example is in tests/lang/eval-okay-list.nix).
2006-09-22 14:46:36 +00:00
Eelco Dolstra
8a1ab709a4
* New builtin functions builtins.{hasAttr, getAttr} to check for
...
attribute existence and to return an attribute from an attribute
set, respectively. Example: `hasAttr "foo" {foo = 1;}'. They
differ from the `?' and `.' operators in that the attribute name is
an arbitrary expression. (NIX-61)
2006-09-22 14:31:55 +00:00
Eelco Dolstra
4e91d8621f
* Fix comment.
2006-09-21 18:52:05 +00:00
Eelco Dolstra
1bdc152931
* Shut up a warning.
2006-09-20 16:36:29 +00:00
Eelco Dolstra
0623359fbc
* Print a better error message for wrong hashes (NIX-49).
2006-09-20 16:15:32 +00:00
Eelco Dolstra
01d169f817
* Support `++'.
...
* More follow restrictions on layout.
2006-09-11 13:05:15 +00:00
Eelco Dolstra
fc195519b5
* Sone missing #includes.
2006-09-05 08:54:48 +00:00
Eelco Dolstra
bafc1690fc
* Move setuid stuff to libutil.
...
* Install libexpr header files.
2006-09-04 22:55:28 +00:00
Eelco Dolstra
e5a6c09b12
* Install header files in /nix/include/nix.
2006-09-04 22:41:36 +00:00
Eelco Dolstra
4be5443882
* Remove unnecessary inclusions of aterm2.h.
2006-09-04 22:08:40 +00:00
Eelco Dolstra
e3ce954582
* Compile the lexer as C++ code. Remove all the redundant C/C++
...
marshalling code.
2006-09-04 21:36:15 +00:00
Eelco Dolstra
75068e7d75
* Use a proper namespace.
...
* Optimise header file usage a bit.
* Compile the parser as C++.
2006-09-04 21:06:23 +00:00
Eelco Dolstra
aab8812732
* Store the Nix libraries in ${libdir}/nix instead of ${libdir}.
2006-09-04 15:12:24 +00:00
Eelco Dolstra
7974aae81c
* New primop: builtins.toFile, which writes a string into the store
...
and returns its path. This can be used to (for instance) write
builders inside a Nix expression, e.g.,
stdenv.mkDerivation {
builder = "
source $stdenv/setup
...
";
...
}
2006-09-01 12:07:31 +00:00
Eelco Dolstra
de90fdf908
* Allow "$" in strings as long as they are not followed by "{". (Too
...
bad flex doesn't have lexical restrictions, the current solution
isn't quite right...)
2006-09-01 12:04:06 +00:00
Eelco Dolstra
f93f7b75be
* Okay, that's a bit harder than expected.
2006-08-30 13:10:04 +00:00
Eelco Dolstra
3151bdea55
* Uninitialised variable.
2006-08-30 12:00:27 +00:00
Eelco Dolstra
547b119f25
* Support singleton values and nested lists again in `args', but print
...
a warning.
2006-08-29 15:40:49 +00:00
Eelco Dolstra
2132d9ddeb
* Fix the ~ operator.
2006-08-29 15:29:38 +00:00
Eelco Dolstra
1ec9f55741
* In toString, deal with nested lists properly (i.e., flatten them).
2006-08-28 21:47:42 +00:00
Eelco Dolstra
1fca76870b
* Removed processBinding, instead we now apply toString to all
...
derivation attributes to flatten them into strings. This is
possible since string can nowadays be wrapped in contexts that
describe the derivations/sources referenced by the evaluation of the
string.
2006-08-28 13:31:06 +00:00
Eelco Dolstra
8a6080eb14
* Refactoring.
2006-08-26 16:48:01 +00:00
Eelco Dolstra
4b66cebe7b
* Remove those storePath attribute sets, we don't need 'em.
2006-08-25 17:09:55 +00:00
Eelco Dolstra
215ec2ddc6
* New primop __toXML (or builtins.toXML) to convert an expression to
...
an XML representation stored in a string. This should be useful to
pass structured information to builders.
2006-08-24 14:34:29 +00:00
Eelco Dolstra
f793caf936
* Refactoring.
2006-08-24 14:16:55 +00:00
Eelco Dolstra
da25d80152
* Strict evaluation and XML printing of lists.
2006-08-24 14:03:39 +00:00
Eelco Dolstra
943ab38a0d
* Refactoring: move strictEval to libexpr.
2006-08-24 13:39:22 +00:00
Eelco Dolstra
9638f3f393
* Pass the autoArgs to findAlongAttrPath so that "nix-instantiate
...
foo.nix -A attr --arg name value" will work if (name, value) is
needed in the evaluation leading up to "attr".
2006-08-23 16:20:14 +00:00
Eelco Dolstra
b19cebc513
* Quotes.
2006-08-23 15:46:27 +00:00
Eelco Dolstra
38f18aa6d4
* New primop: abort "error message".
2006-08-23 15:46:00 +00:00
Eelco Dolstra
4a053bfdfd
* A new primop `builtins', which returns an attribute set containing
...
all the primops. This allows Nix expressions to test for new
primops and take appropriate action if they're not available. For
instance, rather than calling a primop `foo' directly, they could
say `if builtins ? foo then builtins.foo ... else ...'.
2006-08-23 14:39:11 +00:00
Eelco Dolstra
2670642733
* Handle carriage returns. Fixes NIX-53.
2006-08-16 10:28:44 +00:00
Eelco Dolstra
a18d02e0b0
* Print a warning that the subpath operator (~) is deprecated.
2006-08-09 15:08:47 +00:00
Eelco Dolstra
1854f84e83
* Fix a few warnings.
2006-08-04 17:07:13 +00:00
Eelco Dolstra
4661282fde
* `nix-instantiate ... --arg NAME VALUE': allow arguments to be passed
...
to functions from the command line.
* nix-build: started removing backticks.
2006-07-28 16:03:28 +00:00
Eelco Dolstra
c11839d7b2
* `nix-instantiate --print-args': print out the valid values for
...
functions arguments that have a domain.
2006-07-28 14:01:29 +00:00
Eelco Dolstra
ca2238cf81
* Refactoring: get the selection path stuff out of getDerivations()
...
and put it into a separate function findAlongAttrPath().
2006-07-26 15:05:15 +00:00
Eelco Dolstra
2317d8f671
* `nix-instantiate --print-args' prints out the arguments of a
...
top-level function.
2006-07-25 21:21:50 +00:00
Eelco Dolstra
0e6dc72a7a
* Applied rbroek's patch from the branch at
...
https://svn.cs.uu.nl:12443/repos/trace/buildfarm-control/trunk/ext/nix/ ,
with some modifications. This allows `nix-env -qa' to show the
attribute path that can be used to unambiguously install a package
using `nix-env -i -A'. Example:
$ nix-env -f top-level/all-packages.nix -qaA subversion xorg-server
subversionWithJava subversion-1.2.3
subversion subversion-1.3.2
subversion14 subversion-1.4.0pre-rc1
xorg.xorgserver xorg-server-1.1.0
2006-07-25 16:40:38 +00:00
Eelco Dolstra
7a3a5d1608
* When there is a domain check, we have to evaluate the argument.
...
Can't be lazy!
2006-07-24 16:49:28 +00:00
Eelco Dolstra
f4c5531d92
* New language feature: domain checks, which check whether a function
...
argument has a valid value, i.e., is in a certain domain. E.g.,
{ foo : [true false]
, bar : ["a" "b" "c"]
}: ...
This previously could be done using assertions, but domain checks
will allow the buildfarm to automatically extract the configuration
space from functions.
2006-07-24 16:35:34 +00:00
Eelco Dolstra
57751fdb55
* Refactoring to support domain checks.
2006-07-24 15:16:03 +00:00
Eelco Dolstra
4f3725b167
* Better error messages (especially wrt types).
2006-07-19 15:36:15 +00:00
Eelco Dolstra
e10b830251
* Doh! Of couse we cannot memoize across scopes.
2006-07-11 10:29:52 +00:00
Eelco Dolstra
b1c63dc362
* Don't use badTerm, it gives awful error messages.
2006-05-30 11:31:33 +00:00
Eelco Dolstra
b5988004d6
* Support for srcdir != builddir (NIX-41).
2006-05-12 11:47:45 +00:00
Eelco Dolstra
9d72bf8835
* 64-bit compatibility fixes (for problems revealed by building on an Athlon
...
64 running 64-bit SUSE). A patched ATerm library is required to run Nix
succesfully.
2006-05-11 02:19:43 +00:00
Eelco Dolstra
5cabd47394
* Allow function argument default values to refer to other arguments
...
of the function. Implements NIX-45.
2006-05-08 12:52:47 +00:00
Eelco Dolstra
310e605995
* Show evaluation stats when NIX_SHOW_STATS=1.
2006-05-08 10:00:37 +00:00
Eelco Dolstra
0832956089
* Use the new ATermMap.
2006-05-04 12:21:08 +00:00
Eelco Dolstra
d300b4383d
* Optimise null-ary term builders. Also declare all term builder
...
functions as pure, which might improve performance a bit.
2006-05-02 21:58:46 +00:00
Eelco Dolstra
68174bdc7d
* Use a linked list of substitutions. This reduces the amount of
...
copying.
2006-05-02 21:39:02 +00:00
Eelco Dolstra
c791e94aee
* Removed a bunch of ATreverses.
2006-05-02 17:51:50 +00:00
Eelco Dolstra
b52e711910
* Huge reduction in memory use (2/3 or so on large nix-env -qas
...
operations): share ATermMaps between DrvInfos.
2006-05-02 17:12:03 +00:00
Eelco Dolstra
11ae2d1e7a
* Memory reduction: replaced expensive calls to ATmakeApplList by
...
ATmakeApplArray, and got rid of ATreverse in substitute().
2006-05-02 14:07:28 +00:00
Eelco Dolstra
dc719e6ba5
* Some preliminaries towards NIX-45.
2006-05-02 13:39:55 +00:00
Eelco Dolstra
7276e194ee
* Disallow unescaped $ in string literals.
2006-05-01 15:29:46 +00:00
Eelco Dolstra
0064599a27
* String interpolation. Expressions like
...
"--with-freetype2-library=" + freetype + "/lib"
can now be written as
"--with-freetype2-library=${freetype}/lib"
An arbitrary expression can be enclosed within ${...}, not just
identifiers.
* Escaping in string literals: \n, \r, \t interpreted as in C, any
other character following \ is interpreted as-is.
* Newlines are now allowed in string literals.
2006-05-01 14:01:47 +00:00
Eelco Dolstra
6cecad2be0
* Allow string concatenations involving derivations, e.g.,
...
configureFlags = "--with-freetype2-library="
+ freetype + "/lib";
2006-05-01 09:56:56 +00:00
Eelco Dolstra
ef2d4a2da9
* Print a more useful stack trace when an error occurs deep in the
...
derivation dependency graph.
2006-03-24 14:02:44 +00:00
Eelco Dolstra
b69e469328
* In `nix-env', look for derivations inside attribute sets that have
...
the `recurseForDerivations' attribute set to `true'.
2006-03-23 16:43:07 +00:00