about summary refs log tree commit diff
path: root/src/normalise.cc
AgeCommit message (Collapse)AuthorFilesLines
2003-10-15 * Refactoring: move all database manipulation into store.cc.Eelco Dolstra1-50/+3
* Removed `--query --generators'.
2003-10-10 * Reverse mappings for the successor and substitute mappings.Eelco Dolstra1-7/+0
2003-10-08 * Get rid of identifiers since they are redundant now. This greatlyEelco Dolstra1-102/+183
simplifies stuff. * The format of Nix expressions and the database schema changed because of this, so it's best to delete old Nix installations.
2003-10-07 * Synchronise terminology with the ICSE paper (e.g., slice -> closure,Eelco Dolstra1-90/+91
fstate -> Nix expression). * Fix src/test.cc.
2003-08-28 * Do not try to remove write permission from symlinks, since chmod()Eelco Dolstra1-1/+1
follows symlinks. (Note that the permissions on symlinks are ignored anyway.)
2003-08-25 * Fix the atrocious (exponential? factorial?) time complexity inEelco Dolstra1-4/+9
`nix --query --requisites'.
2003-08-22 * Remove write permission from output paths after they have been built.Eelco Dolstra1-2/+13
* Point $HOME to a non-existing path when building to prevent certain tools (such as wget) from falling back on /etc/passwd to locate the home directory (which we don't want them to look at since it's not declared as an input).
2003-08-20 * Use maps and sets in the FState data type. This ensures normalisation ofEelco Dolstra1-67/+51
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-34/+19
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-20 * Fixed a serious bug in the computation of slices. Sometimes the slicesEelco Dolstra1-20/+61
would not be properly closed under the path reference relation.
2003-08-18 * Most shells initialise PATH to some default (/bin:/usr/bin:...)Eelco Dolstra1-0/+5
when PATH is not set. We don't want this, so fill it in with some dummy value.
2003-08-15 * Derivation expressions now can specify arguments to be passed to theEelco Dolstra1-1/+1
builder. Note that this unfortunately causes all Fix-computed hashes to change.
2003-08-05 * Delete obstructed paths prior to building.Eelco Dolstra1-3/+12
2003-08-04 * Path locking in addToStore() and expandPath().Eelco Dolstra1-1/+1
2003-08-01 * In normaliseFState(), wrap registration of the output paths and theEelco Dolstra1-16/+23
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-08-01 * Defensive programming against POSIX locking idiocy.Eelco Dolstra1-25/+0
* Simplified realiseSlice().
2003-08-01 * normaliseFState() now locks all output paths prior to building, thusEelco Dolstra1-28/+83
ensuring that simultaneous invocations of Nix don't clobber each other's builds. * Fixed a bug in `make install'.
2003-07-31 * Enclose most operations that update the database in transactions.Eelco Dolstra1-1/+3
* Open all database tables (Db objects) at initialisation time, not every time they are used. This is necessary because tables have to outlive all transactions that refer to them.
2003-07-31 * Started using Berkeley DB environments. This is necessary forEelco Dolstra1-6/+6
transaction support (but we don't actually use transactions yet).
2003-07-29 * Get garbage collection and cache population to work *properly*.Eelco Dolstra1-4/+16
Renamed `fstateRefs' to `fstateRequisites'. The semantics of this function is that it returns a list of all paths necessary to realise a given expression. For a derive expression, this is the union of requisites of the inputs; for a slice expression, it is the path of each element in the slice. Also included are the paths of the expressions themselves. Optionally, one can also include the requisites of successor expressions (to recycle intermediate results). * `nix-switch' now distinguishes between an expression and its normal form. Usually, only the normal form is registered as a root of the garbage collector. With the `--source-root' flag, it will also register the original expression as a root. * `nix-collect-garbage' now has a flag `--keep-successors' which causes successors not to be included in the list of garbage paths. * `nix-collect-garbage' now has a flag `--invert' which will print all paths that should *not* be garbage collected.
2003-07-29 * `fstateRefs' now works on derive expressions as well. TODO: makeEelco Dolstra1-9/+25
this more efficient. * A flag `-n' in 'nix --query' to normalise the argument. Default is not to normalise.
2003-07-29 * Let `nix --install' print out the id of the normal form.Eelco Dolstra1-26/+25
* Some minor refactoring.
2003-07-24 * Fix message.Eelco Dolstra1-1/+2
2003-07-24 * The `-v' flag no longer takes an argument; it should be repeatedEelco Dolstra1-8/+8
instead (e.g., `-vvvv' for lots of output). Default is to only print error messages.
2003-07-24 * Debug levels. Use `--verbose / -v LEVEL' to display only messagesEelco Dolstra1-4/+2
up to the given verbosity levels. These currently are: lvlError = 0, lvlNormal = 5, lvlDebug = 10, lvlDebugMore = 15 although only lvlError and lvlDebug are actually used right now.
2003-07-22 * Substitutes now should produce a path with the same id as they areEelco Dolstra1-6/+6
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 * Check for errors.Eelco Dolstra1-1/+1
2003-07-21 * Allow the output/expression id to be forced to a certain Eelco Dolstra1-4/+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-21 * Changes to the command line syntax of Nix.Eelco Dolstra1-5/+44
* A function to find all Nix expressions whose output ids are completely contained in some set. Useful for uploading relevant Nix expressions to a shared cache.
2003-07-20 * Refactorings.Eelco Dolstra1-0/+265