about summary refs log tree commit diff
path: root/src/fstate.cc
AgeCommit message (Collapse)AuthorFilesLines
2003-08-20 * Use maps and sets in the FState data type. This ensures normalisation ofEelco Dolstra1-18/+17
slices and derivations w.r.t. order of paths, slice elements, etc.
2003-08-20 * Change the abstract syntax of slices. It used to be that ids were used asEelco Dolstra1-24/+37
keys to reference slice elements, e.g., Slice(["1ef7..."], [("/nix/store/1ef7...-foo", "1ef7", ["8c99..."]), ...]) This was wrong, since ids represent contents, not locations. Therefore we now have: Slice(["/nix/store/1ef7..."], [("/nix/store/1ef7...-foo", "1ef7", ["/nix/store/8c99-..."]), ...]) * Fix a bug in the computation of slice closures that could cause slice elements to be duplicated.
2003-08-15 * Derivation expressions now can specify arguments to be passed to theEelco Dolstra1-6/+27
builder. Note that this unfortunately causes all Fix-computed hashes to change.
2003-08-01 * In normaliseFState(), wrap registration of the output paths and theEelco Dolstra1-1/+4
normal form in a single transaction to ensure that if we crash, either everything is registered or nothing is. This is for recoverability: unregistered paths in the store can be deleted arbitrarily, while registered paths can only be deleted by running the garbage collector.
2003-07-22 * Substitutes now should produce a path with the same id as they areEelco Dolstra1-3/+0
substituting for (obvious, really). * For greater efficiency, nix-pull/unnar will place the output in a path that is probably the same as what is actually needed, thus preventing a path copy. * Even if a output id is given in a Fix package expression, ensure that the resulting Nix derive expression has a different id. This is because Nix expressions that are semantically equivalent (i.e., build the same result) might be different w.r.t. efficiency or divergence. It is absolutely vital for the substitute mechanism that such expressions are not used interchangeably.
2003-07-21 * Allow the output/expression id to be forced to a certain Eelco Dolstra1-2/+3
value; this potentially dangerous feature enables better sharing for those paths for which the content is known in advance (e.g., because a content hash is given). * Fast builds: if we can expand all output paths of a derive expression, we don't have to build.
2003-07-20 * Refactorings.Eelco Dolstra1-454/+101
2003-07-16 * Bug fix: slices are transitive, so if we detect that an Eelco Dolstra1-5/+10
input path is referenced in an output paths, we also have to add all ids referenced by that input path. * Better debug assertions to catch these sorts of errors.
2003-07-16 * Substitute fixes.Eelco Dolstra1-7/+38
2003-07-16 * Fix the -qr query.Eelco Dolstra1-6/+30
2003-07-16 * Fix self-referential outputs.Eelco Dolstra1-10/+20
* Fix -qp query.
2003-07-15 * Get Fix and Nix to work again.Eelco Dolstra1-223/+42
2003-07-15 * The new normaliser now passes the unit tests.Eelco Dolstra1-15/+103
2003-07-15 * Basic work on allowing derive expressions to build multiple paths.Eelco Dolstra1-28/+210
This is not entirely trivial since this introduces the possibility of mutual recursion. * Made normal forms self-contained. * Use unique ids, not content hashes, for content referencing.
2003-07-14 * After building, scan for actual file system references asEelco Dolstra1-3/+32
opposed to declared references. This prunes the reference graph, thus allowing better garbage collection and more efficient derivate distribution.
2003-07-10 * A command to register successor fstate expressions.Eelco Dolstra1-1/+7
Unifying substitutes and successors isn't very feasible for now, since substitutes are only used when no path with a certain is known. Therefore, a normal form of some expression stored as a substitute would not be used unless the expression itself was missing.
2003-07-10 * The policy-free derivate sharing now *almost* works. :-) For anyEelco Dolstra1-0/+6
hash for which no local expansion is available, Nix can execute a `substitute' which should produce a path with such a hash. This is policy-free since Nix does not in any way specify how the substitute should work, i.e., it's an arbitrary (unnormalised) fstate expression. For example, `nix-pull' registers substitutes that fetch Nix archives from the network (through `wget') and unpack them, but any other method is possible as well. This is an improvement over the old Nix sharing scheme, which had a policy (fetching through `wget') built in. The sharing scheme doesn't work completely yet because successors from fstate rewriting have to be registered on the receiving side. Probably the whole successor stuff can be folded up into the substitute mechanism; this would be a nice simplification.
2003-07-10 * Get `nix-push' working again. It now uses Nix/Fix to create NixEelco Dolstra1-21/+1
archives (using the package in corepkgs/nar). * queryPathByHash -> expandHash, and it takes an argument specifying the target path (which may be empty). * Install the core Fix packages in $prefix/share/fix. TODO: bootstrap Nix and install Nix as a Fix package.
2003-07-09 * Outline of the new scheme for derivate distribution.Eelco Dolstra1-0/+5
2003-07-09 * When computing the set of paths referenced by an expression, alsoEelco Dolstra1-36/+51
include the paths of the subterms.
2003-07-08 * Canonicalise paths so that Fix produces identical NixEelco Dolstra1-1/+1
expressions for identical inputs.
2003-07-08 * The output of a Derive() node is not a referenced path.Eelco Dolstra1-2/+0
2003-07-08 * A command to query the paths referenced by an fstate expression.Eelco Dolstra1-52/+96
* Use a temporary directory for build actions.
2003-07-07 * Make dbRefs a mapping from Hash to [Path].Eelco Dolstra1-4/+4
2003-07-07 * Refactoring on the file names.Eelco Dolstra1-0/+340