Eelco Dolstra
7de5fe2fc2
* Do the path check on the normal form.
2006-10-17 10:57:25 +00:00
Eelco Dolstra
46b631b6c4
* Don't generate an empty drvPath attribute in the manifest.
2006-10-17 10:15:42 +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
37c8a664f3
* A helpful message.
2006-10-13 11:49:55 +00:00
Eelco Dolstra
e4af398681
* Don't crash when upgrading the Berkeley DB environment.
2006-10-13 11:15:53 +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
9e08f5efe1
* Documented nix-store --dump / --restore.
2006-10-05 22:57:07 +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
4ad6fb7ea3
* Fix setuid builds.
2006-09-27 21:04:07 +00:00
Eelco Dolstra
3632019b73
* Quick hack to let nix-install-package set the package name properly
...
(e.g., "java-front-0.9pre15899" instead of "java-front";
particularly important when doing upgrades later on).
2006-09-25 14:00:59 +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
666babbbfa
* Use a bounded amount of memory in scanForReferences() by not reading
...
regular files into memory all at once.
2006-09-22 13:10:30 +00:00
Eelco Dolstra
d22d7565f3
* Don't allocate the buffer twice.
2006-09-22 11:28:23 +00:00
Eelco Dolstra
b43aeadbc9
* Don't allocate more than SIZE_MAX bytes.
2006-09-22 11:13:35 +00:00
Eelco Dolstra
25df501704
* GC options in nix-store --help (NIX-15).
2006-09-21 19:06:34 +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
e0afaf1857
* Wow, that bug has been there since r764.
2006-09-14 22:48:59 +00:00
Eelco Dolstra
86cbd93ec1
* nix-env --switch-generation / --list-generations /
...
--delete-generations: lock the profile to prevent (extremely
unlikely) race conditions.
2006-09-14 22:33:53 +00:00
Eelco Dolstra
5c38c863bd
* Fix a huge gaping hole in nix-env w.r.t. the garbage collector.
...
Nix-env failed to call addPermRoot(), which is necessary to safely
add a new root. So if nix-env started after and finished before the
garbage collector, the user environment (plus all other new stuff)
it built might be garbage collected, leading to a dangling symlink
chain in ~/.nix-profile...
* Be more explicit if we block on the GC lock ("waiting for the big
garbage collector lock...").
* Don't loop trying to create a new generation. It's not necessary
anymore since profiles are locked nowadays.
2006-09-14 22:30:33 +00:00
Eelco Dolstra
01d169f817
* Support `++'.
...
* More follow restrictions on layout.
2006-09-11 13:05:15 +00:00
Eelco Dolstra
feb63da431
* Remove debug message.
2006-09-08 09:31:07 +00:00
Eelco Dolstra
a89a201598
* Missing #include.
2006-09-05 10:32:47 +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
2382a729e0
* Don't need extern "C".
2006-09-04 21:50:39 +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
c25f688e23
* Doh! Doh! Doh!
2006-08-31 15:38:43 +00:00
Eelco Dolstra
354d58b3d7
* Better error checking.
2006-08-31 11:40:39 +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
3e8dccf6ab
* Escape newlines in XML attributes to prevent them from being
...
normalised away.
2006-08-24 15:02:39 +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
f41297fdce
* Allow --arg in nix-env as well, example:
...
$ nix-env -qa --system-filter \* --arg system '"powerpc-darwin"'
to override the system from the default value (__currentSystem in
all-packages.nix).
2006-08-23 16:33:21 +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
24e234a2fa
* Print attributes in sorted order, rather than the arbitrary order
...
produced by ATermMap. Necessary for testing.
* `--strict' should also work on stdin.
2006-08-17 08:53:08 +00:00
Eelco Dolstra
22ba63df16
* More XML output. `--strict' to strictly evaluate attribute sets and
...
so on.
* Removed `--print-args', it's subsumed by `--eval-only --xml'.
2006-08-16 21:59:53 +00:00
Eelco Dolstra
18e4ac0fc6
* `nix-instantiate --{eval|parse}-only --xml': print an XML
...
representation instead of an ATerm.
* Indent XML output.
2006-08-16 10:32:30 +00:00
Eelco Dolstra
2670642733
* Handle carriage returns. Fixes NIX-53.
2006-08-16 10:28:44 +00:00
Martin Bravenboer
3e5b68068b
On cygwin, disable the check that the output is not group or world
...
writable. File permissions on Cygwin are rather complex, and in this
case this check introduced a problem with build jobs invoke from
outside of Cygwin (MSYS). It seemed almost impossible to fix the
permissions of the directory, so for now this safety check is disabled
on Cygwin.
2006-08-15 21:37:48 +00:00
Eelco Dolstra
7455fd8835
* Put the value in an attribute.
2006-08-14 14:24:18 +00:00
Eelco Dolstra
4250b641d8
* `nix-store --gc --print-dead': print the total size of the store
...
objects that would be freed.
2006-08-11 20:26:49 +00:00
Eelco Dolstra
92f7dfa5b7
* Don't assume that paths returned by the runtime root finder are
...
valid.
2006-08-11 20:15:20 +00:00
Eelco Dolstra
d19b6521fc
* New configuration setting `build-max-jobs' which sets the default
...
for the `-j' flag (i.e., the maximum number of jobs to execute in
parallel). Useful on multi-processor machines.
2006-08-10 20:19:13 +00:00
Eelco Dolstra
f1aa71a92f
* Fix the help message wrt --attr.
2006-08-09 15:12:34 +00:00
Eelco Dolstra
a18d02e0b0
* Print a warning that the subpath operator (~) is deprecated.
2006-08-09 15:08:47 +00:00
Eelco Dolstra
a0607be7f4
* Workaround for a bug (?) in GCC 2.95.
2006-08-07 19:48:38 +00:00
Eelco Dolstra
1854f84e83
* Fix a few warnings.
2006-08-04 17:07:13 +00:00
Eelco Dolstra
dcff8cdb76
* Weird issue on Cygwin with the include file order.
2006-08-04 16:01:26 +00:00
Eelco Dolstra
339e6f0e1d
* `nix-env -q --xml': show query result in XML format for easier
...
automated processing.
2006-08-03 15:52:09 +00:00
Eelco Dolstra
0e267e2625
* `nix-instantiate --print-args': produce XML output so that the
...
result can be used more easily by scripts.
2006-08-03 14:49:57 +00:00
Eelco Dolstra
4750f6c5ed
* Simple class for writing XML files.
2006-08-03 13:21:21 +00:00
Eelco Dolstra
6ac237e242
* Show some progress.
2006-08-01 09:43:41 +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
5744dd5480
* Support the --attr / -A flag in nix-env as well. So now we can do,
...
e.g.,
$ nix-env -i -A subversion xorg.xorgserver
The main advantage over using symbolic names is that using attribute
names is unambiguous and much, much faster.
2006-07-25 11:53:22 +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
a4273156c4
* Use $(libexecdir) to find find-runtime-roots.pl.
2006-07-20 13:21:37 +00:00
Eelco Dolstra
ee2cf45d76
* Use debug().
2006-07-20 12:19:55 +00:00
Eelco Dolstra
c15f544356
* Call find-runtime-roots.pl from the garbage collector to prevent
...
running applications etc. from being garbage collected.
2006-07-20 12:17:25 +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
d51aede4af
* Allow the canonical system name to be specified at runtime in the
...
Nix config file.
2006-07-06 15:30:37 +00:00
Eelco Dolstra
a945fb7905
* `nix-env --upgrade --eq': only upgrade if the old version is equal
...
to the new version. This is actually useful.
2006-06-27 12:17:25 +00:00
Eelco Dolstra
dbf6d7e783
* Concurrent GC on Cygwin.
2006-06-20 17:48:10 +00:00
Eelco Dolstra
cc51f9c539
* Oops.
2006-06-19 16:35:35 +00:00
Eelco Dolstra
5bb3444032
* _exit() doesn't seem to work right on Cygwin.
2006-06-19 16:24:15 +00:00
Eelco Dolstra
b35735d8b2
* On Windows we cannot delete open (lock) files, so we delete lock
...
files after we've closed them. Since this only succeeds if the lock
is no longer opened by any process, the token trick used on Unix is
not necessary.
2006-06-19 14:43:13 +00:00
Eelco Dolstra
0e783e5579
* Write messages to stderr in a slightly more atomic way. Useful when
...
there are several parallel processes.
2006-06-19 14:37:35 +00:00
Eelco Dolstra
c937b73622
* Show when we're blocked waiting for a lock.
2006-06-16 10:13:03 +00:00
Eelco Dolstra
588cb0eade
* In `nix-env -i|-u|-e', lock the profile to prevent races between
...
concurrent nix-env operations on the same profile. Fixes NIX-7.
2006-06-15 11:56:49 +00:00
Eelco Dolstra
b454977909
* Fix for a problem with BSD's group ownership semantics when the user
...
is not in the "wheel" group.
2006-06-14 11:53:55 +00:00
Eelco Dolstra
23960e92df
* Minor cleanup.
2006-06-01 18:13:33 +00:00
Eelco Dolstra
50fe85f016
* For fixed-output derivations, pass the environment variables listed
...
in the attribute variable `impureEnvVars' from the caller to the
builder.
2006-05-31 09:51:45 +00:00
Eelco Dolstra
1390ce4142
* Not all platforms have sys/select.h.
2006-05-30 11:37:21 +00:00
Eelco Dolstra
b1c63dc362
* Don't use badTerm, it gives awful error messages.
2006-05-30 11:31:33 +00:00
Eelco Dolstra
58b4198ed8
* Disable the concurrent garbage collector on Cygwin for now.
2006-05-29 20:46:51 +00:00
Eelco Dolstra
d764409d97
* Some Cygwin fixes.
2006-05-24 13:23:20 +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
c54287eafe
* GCC 2.95 compatibility.
2006-05-08 15:15:13 +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
Eelco Dolstra
49ce8b57dd
* Hm.
2006-03-23 16:37:49 +00:00
Eelco Dolstra
fdea084c36
* Allow `make check' to work in directories that have symlink
...
components.
2006-03-10 22:27:26 +00:00
Eelco Dolstra
37d1b1cafd
* `nix-env -qa --description' shows human-readable descriptions of
...
packages (provided that they have a `meta.description' attribute).
E.g.,
$ ./src/nix-env/nix-env -qa --description gcc
gcc-4.0.2 GNU Compiler Collection, 4.0.x (cross-compiler for sparc-linux)
gcc-4.0.2 GNU Compiler Collection, 4.0.x (cross-compiler for mips-linux)
gcc-4.0.2 GNU Compiler Collection, 4.0.x (cross-compiler for arm-linux)
gcc-4.0.2 GNU Compiler Collection, 4.0.x
2006-03-10 16:20:42 +00:00
Eelco Dolstra
2b3b6c9b34
* In theory, this should reduce the number of ATermMap
...
re-allocations.
2006-03-10 16:14:13 +00:00
Eelco Dolstra
4ada6db1fc
* `nix-env -q' now accepts arguments that allow specific derivations
...
to be queried, e.g., `nix-env -qa firefox'. This does require the
argument '*' to be passed if one wants information about all
derivations, so the old `nix-env -qa' now is `nix-env -qa "*"'.
2006-03-10 10:24:46 +00:00
Eelco Dolstra
18c321308d
* Ugh, printHash() was very inefficient because it used
...
ostringstreams. Around 11% of execution time was spent here (now
it's 0.5%).
2006-03-09 17:07:25 +00:00
Eelco Dolstra
b90c00e63f
* Regression: semantics of the result of getDerivation() changed.
2006-03-09 15:10:01 +00:00
Eelco Dolstra
922697c8b2
* Big speedup (factor > 2.5) in all nix-env operations that do actual
...
instantiation, e.g. "nix-env -i" and "nix-env -qas" (but not
"nix-env -qa"). It turns out that many redundant calls to
addToStore(path) were made, which reads and hashes the entire path.
For instance, the bash bootstrap binary in Nixpkgs would be read and
hashed many times. As a result nix-env would spend around 92% of
its time in the function sha256_block (according to callgrind).
Some simple memoization fixes this.
2006-03-09 15:09:18 +00:00
Eelco Dolstra
6dca5c9099
* When obtaining derivations from Nix expressions, ignore all
...
expressions that cause an assertion failure (like `assert system ==
"i686-linux"'). This allows all-packages.nix in Nixpkgs to be used
on all platforms, even if some Nix expressions don't work on all
platforms.
Not sure if this is a good idea; it's a bit hacky. In particular,
due to laziness some derivations might appear in `nix-env -qa' but
disappear in `nix-env -qas' or `nix-env -i'.
Commit 5000!
2006-03-08 16:03:58 +00:00
Eelco Dolstra
9088dee9e2
* Some refactoring of the exception handling code so that we can catch
...
Nix expression assertion failures.
2006-03-08 14:11:19 +00:00
Eelco Dolstra
fa72ae1e9c
* GCC 4.1 compatibility.
2006-03-06 14:40:10 +00:00
Eelco Dolstra
c8bfb11b34
* `nix-env (-i|-u) --dry-run' now shows exactly which missing paths
...
will be built or substituted.
2006-03-06 11:21:15 +00:00
Eelco Dolstra
7ba1fd2029
* Regularise help text a bit.
2006-03-06 11:04:39 +00:00
Eelco Dolstra
70dee0f8ca
* Flags --to-base32' and
--to-base16' to convert between hex and
...
base-32 hashes.
2006-03-01 18:05:47 +00:00
Eelco Dolstra
e136532800
* Ouch, parseHash32 was completely broken. All digits >= 4 were
...
parsed as 4.
For a moment I worried that printHash32 was broken, and that would
have been really, *really* bad ;-)
2006-03-01 17:59:08 +00:00
Eelco Dolstra
74166f2f44
* db.hh shouldn't depend on the Berkeley DB headers.
2006-03-01 17:44:28 +00:00
Eelco Dolstra
d822bf32e4
* Close the database before the destructor runs.
2006-03-01 16:36:35 +00:00
Eelco Dolstra
b6780b9e10
* Uninitialised variable. Fixes the --delete test.
2006-03-01 14:39:42 +00:00
Eelco Dolstra
b602d2dfdf
* Wrong delete. Thanks valgrind.
2006-03-01 14:39:10 +00:00
Eelco Dolstra
458820df6c
* Generate valid HTML.
2006-03-01 13:24:47 +00:00
Eelco Dolstra
6b8bb8d74a
* Remove dead code.
2006-03-01 12:51:39 +00:00
Eelco Dolstra
46f0cb0869
* In "nix-env -i", print a warning if there are multiple derivations
...
with the same name *and* version number, and pick the first one
(this means that the order in which channels appear in
~/.nix-channels matters). E.g.:
$ nix-env ii aterm
warning: there are multiple derivations named `aterm-2.4.2'; using the first one
installing `aterm-2.4.2'
2006-02-17 18:11:45 +00:00
Eelco Dolstra
7a3e715980
* Fix for NIX-31: "nix-env -i foo" installing all derivations named
...
foo. Now it will only install the one with the highest version
number.
2006-02-17 17:47:54 +00:00
Eelco Dolstra
889ef564fd
* Fix the infamous NIX-17: nix-env -i prints misleading messages
...
("installing `foo'" followed by "uninstalling `foo'").
2006-02-17 16:26:28 +00:00
Eelco Dolstra
345a95afe9
* Allow the size of the GC reserved file to be specified in nix.conf
...
through the new `gc-reserved-space' option.
2006-02-16 13:58:10 +00:00
Eelco Dolstra
651ab439cf
* A simple hack to fix NIX-18: the garbage collector cannot run when
...
the disk is full (because to delete something from the Nix store, we
need a Berkeley DB transaction, which takes up disk space). Under
normal operation, we make sure that there exists a file
/nix/var/nix/db/reserved of 1 MB. When running the garbage
collector, we delete that file before we open the Berkeley DB
environment.
2006-02-16 13:19:15 +00:00
Eelco Dolstra
d6f586d0ea
* Optional switch "--with-openssl=<PATH>" to use OpenSSL's
...
implementations of MD5, SHA-1 and SHA-256. The main benefit is that
we get assembler-optimised implementations of MD5 and SHA-1 (though
not SHA-256 (at least on x86), unfortunately). OpenSSL's SHA-1
implementation on Intel is twice as fast as ours.
2006-02-13 19:52:43 +00:00
Eelco Dolstra
e8475bbd5b
* Use a union.
2006-02-13 18:00:08 +00:00
Eelco Dolstra
2d2e28d02c
* Override YYMALLOC and YYFREE so that we can call AT[un]protectMemory
...
on the Bison parse stack. Otherwise, a garbage collect during
parsing could lead to a crash.
2006-02-13 13:09:23 +00:00
Eelco Dolstra
982399bb14
* Enable the --attr in nix-build as well (and add -A as an alias).
...
Example:
$ nix-build ./all-packages.nix -A xlibs.libX11
So finally it's easy to perform a test build of a Nix expression!
2006-02-10 17:37:35 +00:00
Eelco Dolstra
c6120352b3
* In nix-instantiate, allow us to specify a "path" to the
...
derivation(s) we're interested, e.g.,
$ nix-instantiate ./all-packages.nix --attr xlibs.libX11
List elements can also be selected:
$ nix-instantiate ./build-for-release.nix --attr 0.subversion
This allows a non-ambiguous specification of a derivation. Of
course, this should also be added to nix-env and nix-build.
2006-02-10 17:25:59 +00:00
Eelco Dolstra
9e51abc7dc
* Make --parse-only work when *not* reading from stdin.
2006-02-10 15:28:47 +00:00
Eelco Dolstra
f848a45739
* Cleanup: use the code shared with nix-env.
2006-02-10 15:14:57 +00:00
Eelco Dolstra
4eb637c799
* When querying all derivations, filter out syntactically equal derivations.
2006-02-08 16:15:07 +00:00
Eelco Dolstra
8688e83194
* When evaluating, automatically call functions with default arguments.
2006-02-08 15:22:30 +00:00
Eelco Dolstra
287d0ef41c
* Oops, fix breakage.
2006-02-08 14:32:33 +00:00
Eelco Dolstra
39f50db731
* Refactoring: move derivation evaluation to libexpr.
2006-02-08 13:21:16 +00:00
Eelco Dolstra
81de538e46
* Use setsid instead of setpgrp in child processes. This not only
...
creates a new process group but also a new session. New sessions
have no controlling tty, so child processes like ssh cannot open
/dev/tty (which is bad).
2006-02-03 14:20:59 +00:00
Eelco Dolstra
b90daaaf6c
* When killing a build hook, kill the entire process group (as
...
intended). This ensures that any ssh child processes to remote
machines are also killed, and thus the Nix process on the remote
machine also exits. Without this, the remote Nix process will
continue until it exists or until its stdout buffer gets full and it
locks up. (Partially fixes NIX-35.)
2006-02-02 16:27:31 +00:00
Eelco Dolstra
6e2eaaec96
* Print a better error message when writing the patched file (e.g.,
...
"No space left on device" instead of "Success"). Reported by Karina
Olmos.
2006-02-01 17:28:13 +00:00
Eelco Dolstra
8291f6d968
* bsdiff updated to 4.3. This makes Nix depend on libbz2.
2006-02-01 16:48:49 +00:00
Eelco Dolstra
9e4ffc43a2
* The "S" bit should be based on the output path, not the derivation path.
2006-02-01 16:47:51 +00:00
Eelco Dolstra
db2275cb99
* Oops, the "I" bit in "nix-env -qas" was broken. Reported by Nicolae Vintila.
2006-01-26 23:18:26 +00:00
Eelco Dolstra
1029716a8a
* Don't show cycles, they're not very useful.
2006-01-19 15:35:34 +00:00
Eelco Dolstra
5b527901ae
* dirOf: return "/", not "", for paths in the root directory. Fixes NIX-26.
2006-01-09 14:52:46 +00:00
Eelco Dolstra
04be39734f
* Resolve all symlink components in the location of the temporary
...
build directory (TMPDIR, i.e., /tmp). Fixes NIX-26.
2006-01-08 17:16:03 +00:00
Eelco Dolstra
0f8d3c871b
* More GCC 2.95 compatibility.
2005-12-25 11:29:12 +00:00
Eelco Dolstra
52d20ef124
* Hack around a GCC 2.95 bug.
2005-12-25 02:02:29 +00:00
Eelco Dolstra
1440419b45
* GCC 2.95 compatibility.
2005-12-24 23:32:59 +00:00
Eelco Dolstra
1d2460ee5d
* Documentation fixes.
2005-12-24 23:22:05 +00:00
Eelco Dolstra
f96d2dea26
* Added a flag --ignore-liveness' to
nix-store --delete'. It
...
deletes a path even if it is reachable from a root. However, it
won't delete a path that still has referrers (since that would
violate store invariants).
Don't try this at home. It's a useful hack for recovering from
certain situations in a somewhat clean way (e.g., holes in closures
due to disk corruption).
2005-12-23 21:36:44 +00:00
Eelco Dolstra
4b9e7f59ca
* Revived the old "nix-store --delete" operation that deletes the
...
specified paths from the Nix store. However, this operation is
safe: it refuses to delete anything that the garbage collector
wouldn't delete.
2005-12-23 21:08:42 +00:00
Eelco Dolstra
530b27df1e
* `nix-store --gc' prints out the number of bytes freed on stdout
...
(even when it is interrupted by a signal).
2005-12-15 21:11:39 +00:00
Eelco Dolstra
b1eed6b586
* Split the database upgrade into multiple transactions to prevent
...
Berkeley DB from running out of locks.
2005-12-15 16:53:21 +00:00
Eelco Dolstra
ab5c6bb3a3
* Change referer' to
referrer' throughout. In particular, the
...
nix-store query options `--referer' and `--referer-closure' have
been changed to `--referrer' and `--referrer-closure' (but the old
ones are still accepted for compatibility).
2005-12-13 21:04:48 +00:00
Eelco Dolstra
d87549c1c7
* Automatically delete the old referers table.
2005-12-12 19:14:38 +00:00
Eelco Dolstra
8463f27d8c
* Fix NIX-23: quadratic complexity in maintaining the referers
...
mapping. The referer table is replaced by a referrer table (note
spelling fix) that stores each referrer separately. That is,
instead of having
referer[P] = {Q_1, Q_2, Q_3, ...}
we store
referer[(P, Q_1)] = ""
referer[(P, Q_2)] = ""
referer[(P, Q_3)] = ""
...
To find the referrers of P, we enumerate over the keys with a value
lexicographically greater than P. This requires the referrer table
to be stored as a B-Tree rather than a hash table.
(The tuples (P, Q) are stored as P + null-byte + Q.)
Old Nix databases are upgraded automatically to the new schema.
2005-12-12 18:24:42 +00:00
Eelco Dolstra
a33b561a6b
* Use Berkeley DB 4.4's process registry feature to recover from
...
crashed Nix instances, and toss out our own recovery code.
2005-12-09 22:55:07 +00:00
Eelco Dolstra
760264bffe
* Require Berkeley DB 4.4.
...
* Checkpoint after an upgrade.
2005-12-06 15:00:04 +00:00
Eelco Dolstra
b7f008fc35
* Did something useful while waiting at IAD: reference scanning is now
...
much faster.
2005-11-16 08:27:06 +00:00
Eelco Dolstra
9311ab76a5
* Install signal handlers for SIGTERM and SIGHUP. This ensures that
...
Nix is properly shut down when it receives those signals. In
particular this ensures that killing the garbage collector doesn't
cause a subsequent database recovery.
2005-11-04 15:34:09 +00:00
Eelco Dolstra
5bf939885a
* Memoise checkVarDefs since internally produced terms (i.e., not the
...
result of parsing) can have very heavy sharing, causing exponential
complexity if we naively recurse into them. ATerms are graphs, not
trees!
2005-11-04 15:17:05 +00:00
Eelco Dolstra
221c79013f
* Turn off build hooks in nix-push because of an impurity (NIX-21).
2005-10-29 18:17:45 +00:00
Rob Vermaas
f0856fd905
* Repair the referers table from the references table.
2005-10-29 15:44:02 +00:00
Eelco Dolstra
92d599c6a7
* Prevent uids from being used for more than one build
...
simultaneously. We do this using exclusive locks on uid files in
/nix/var/nix/userpool, e.g., /nix/var/nix/userpool/123 for uid 123.
2005-10-20 16:58:34 +00:00
Eelco Dolstra
e932c40f8e
* Oops. Fixed-output derivations were broken.
2005-10-19 14:27:44 +00:00
Eelco Dolstra
13b089c890
* Also kill all processes of the build user after the build. This is
...
critical to prevent certain kinds of 0wnage.
2005-10-17 17:43:21 +00:00
Eelco Dolstra
f1b3a418fa
* Before starting a build under some uid, kill all current processes
...
running under that uid.
2005-10-17 17:35:37 +00:00
Eelco Dolstra
439823ae80
* Check that the build result is owned by the build user, and that
...
nobody else has write permission to the build result. This catches
most hack attempts.
2005-10-17 16:59:25 +00:00