Age | Commit message (Collapse) | Author | Files | Lines |
|
expression, we should invalidate it and go back to the derivation
for which it is a successor.
|
|
|
|
|
|
|
|
* A better substitute mechanism.
Instead of generating a store expression for each store path for
which we have a substitute, we can have a single store expression
that builds a generic program that is invoked to build the desired
store path, which is passed as an argument.
This means that operations like `nix-pull' only produce O(1) files
instead of O(N) files in the store when registering N substitutes.
(It consumes O(N) database storage, of course, but that's not a
performance problem).
* Added a test for the substitute mechanism.
* `nix-store --substitute' reads the substitutes from standard input,
instead of from the command line. This prevents us from running
into the kernel's limit on command line length.
|
|
|
|
approach. This makes it much easier to add extra complexity in the
normaliser / realiser (e.g., build hooks, substitutes).
|
|
|
|
|
|
in parallel. Hooks are more efficient: locks on output paths are
only acquired when the hook says that it is willing to accept a
build job. Hooks now work in two phases. First, they should first
tell Nix whether they are willing to accept a job. Nix guarantuees
that no two hooks will ever be in the first phase at the same time
(this simplifies the implementation of hooks, since they don't have
to perform locking (?)). Second, if they accept a job, they are
then responsible for building it (on the remote system), and copying
the result back. These can be run in parallel with other hooks and
locally executed jobs.
The implementation is a bit messy right now, though.
* The directory `distributed' shows a (hacky) example of a hook that
distributes build jobs over a set of machines listed in a
configuration file.
|
|
|
|
no limit).
* Add missing file to distribution.
|
|
|
|
|
|
parallel as possible (similar to GNU Make's `-j' switch). This is
useful on SMP systems, but it is especially useful for doing builds
on multiple machines. The idea is that a large derivation is
initiated on one master machine, which then distributes
sub-derivations to any number of slave machines. This should not
happen synchronously or in lock-step, so the master must be capable
of dealing with multiple parallel build jobs. We now have the
infrastructure to support this.
TODO: substitutes are currently broken.
|
|
possible.
This test fails right now because this hasn't been implemented right
now. Yes, I'm doing Test-Driven Development! ;-)
|
|
* A test to verify that locking of output paths (caused by concurrent
invocations of Nix) works correctly.
|
|
|
|
|
|
environment variables.
* Started adding some automatic tests.
* Do a `make check' when building RPMs.
|