about summary refs log tree commit diff
path: root/src/libexpr/primops.cc
AgeCommit message (Collapse)AuthorFilesLines
2007-01-29 * computeStorePathForText: take the references into account whenEelco Dolstra1-1/+1
computing the store path (NIX-77). This is an important security property in multi-user Nix stores. Note that this changes the store paths of derivations (since the derivation aterms are added using addTextToStore), but not most outputs (unless they use builtins.toFile).
2007-01-29 * Don't capitalise the primop functions.Eelco Dolstra1-76/+81
2007-01-29 * Organise primops.cc a bit better.Eelco Dolstra1-321/+376
2007-01-29 New primitives:Eelco Dolstra1-1/+43
* `sub' to subtract two numbers. * `stringLength' to get the length of a string. * `substring' to get a substring of a string. These should be enough to allow most string operations to be expressed.
2007-01-29 * filterSource: pass strings to the predicate function instead ofEelco Dolstra1-1/+1
paths. Paths can have unexpected semantics.
2007-01-15 * builtins.filterSource: pass the type of the file ("regular",Eelco Dolstra1-1/+18
"directory", "symlink") as the second argument to the filter predicate.
2007-01-13 * Cleanup.Eelco Dolstra1-5/+5
2006-12-13 * Remove debug message.Eelco Dolstra1-1/+0
2006-12-12 * New primop builtins.filterSource, which can be used to filter filesEelco Dolstra1-0/+38
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 * New built-in function `builtins.attrNames' that returns theEelco Dolstra1-0/+21
names of the attributes in an attribute set.
2006-12-01 * Replace read-only calls to addTextToStore.Eelco Dolstra1-1/+3
2006-11-30 * Put building in the store API.Eelco Dolstra1-2/+1
2006-11-30 * Refactoring. There is now an abstract interface class StoreAPIEelco Dolstra1-3/+3
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-03 * Fix importing of derivation outputs.Eelco Dolstra1-2/+9
2006-10-23 * Some better error messages.Eelco Dolstra1-3/+10
2006-10-19 * Better message.Eelco Dolstra1-1/+1
2006-10-19 * toFile: maintain the references.Eelco Dolstra1-10/+4
2006-10-17 * baseNameOf: paths don't have to be absolute.Eelco Dolstra1-1/+1
2006-10-17 * toPath: should be the identity on paths.Eelco Dolstra1-3/+1
2006-10-17 * dirOf: return a path if the argument is a path.Eelco Dolstra1-2/+6
2006-10-17 * toString: don't copy paths. So toString can be used to passEelco Dolstra1-3/+4
non-store paths to a builder.
2006-10-16 * Big cleanup of the semantics of paths, strings, contexts, stringEelco Dolstra1-233/+75
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-11 * Removed URIs from the evaluator (NIX-66). They are now just anotherEelco Dolstra1-2/+1
kind of notation for strings.
2006-10-10 * Quick hack to fix NIX-67: evaluation result differing if the NixEelco Dolstra1-9/+8
expression resides in the store.
2006-10-10 * `import': unwrap the context. Necessary to make `import (x + y)'Eelco Dolstra1-13/+14
work, where x is a store path.
2006-10-03 * toXML: propagate the context to allow derivations to be used in theEelco Dolstra1-2/+3
argument.
2006-10-03 * toFile: added an additional argument to specify the store pathEelco Dolstra1-3/+32
suffix, e.g., `builtins.toFile "builder.sh" "..."'. * toFile: handle references to other files correctly.
2006-09-24 * The result of a concatenation with a derivation on the left-handEelco Dolstra1-4/+12
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 * Primop `toPath' to convert a string to a path.Eelco Dolstra1-7/+26
* Primop `pathExists' to check for path existence.
2006-09-24 * Builtin function `getEnv' for getting environment variables.Eelco Dolstra1-6/+18
2006-09-24 * lessThan primitive for integer comparison.Eelco Dolstra1-0/+9
2006-09-22 * Builtin function `add' to add integers.Eelco Dolstra1-0/+9
* Put common test functions in tests/lang/lib.nix.
2006-09-22 * Added a builtin function `isList' to test whether a value is a list.Eelco Dolstra1-0/+9
With this primitive, a list-flattening function can be implemented (NIX-55, example is in tests/lang/eval-okay-flatten.nix).
2006-09-22 * Builtin functions `head' and `tail' to return the head and tail ofEelco Dolstra1-0/+25
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 * New builtin functions builtins.{hasAttr, getAttr} to check forEelco Dolstra1-0/+16
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-21 * Fix comment.Eelco Dolstra1-3/+1
2006-09-20 * Print a better error message for wrong hashes (NIX-49).Eelco Dolstra1-3/+6
2006-09-04 * Use a proper namespace.Eelco Dolstra1-4/+12
* Optimise header file usage a bit. * Compile the parser as C++.
2006-09-01 * New primop: builtins.toFile, which writes a string into the storeEelco Dolstra1-0/+14
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-08-29 * Support singleton values and nested lists again in `args', but printEelco Dolstra1-1/+5
a warning.
2006-08-29 * Fix the ~ operator.Eelco Dolstra1-1/+1
2006-08-28 * In toString, deal with nested lists properly (i.e., flatten them).Eelco Dolstra1-0/+21
2006-08-28 * Removed processBinding, instead we now apply toString to allEelco Dolstra1-138/+138
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-26 * Refactoring.Eelco Dolstra1-6/+1
2006-08-25 * Remove those storePath attribute sets, we don't need 'em.Eelco Dolstra1-12/+1
2006-08-24 * New primop __toXML (or builtins.toXML) to convert an expression toEelco Dolstra1-0/+10
an XML representation stored in a string. This should be useful to pass structured information to builders.
2006-08-23 * Quotes.Eelco Dolstra1-1/+1
2006-08-23 * New primop: abort "error message".Eelco Dolstra1-0/+8
2006-08-23 * A new primop `builtins', which returns an attribute set containingEelco Dolstra1-0/+26
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-09 * Print a warning that the subpath operator (~) is deprecated.Eelco Dolstra1-0/+5