mirror of
https://github.com/NixOS/nix
synced 2025-07-05 08:11:47 +02:00
* Get garbage collection and cache population to work *properly*.
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.
This commit is contained in:
parent
dc14a3de46
commit
8846465934
7 changed files with 85 additions and 29 deletions
15
src/nix.cc
15
src/nix.cc
|
@ -95,18 +95,22 @@ FSId maybeNormalise(const FSId & id, bool normalise)
|
|||
/* Perform various sorts of queries. */
|
||||
static void opQuery(Strings opFlags, Strings opArgs)
|
||||
{
|
||||
enum { qList, qRefs, qGenerators, qExpansion, qGraph
|
||||
enum { qList, qRequisites, qGenerators, qExpansion, qGraph
|
||||
} query = qList;
|
||||
bool normalise = false;
|
||||
bool includeExprs = true;
|
||||
bool includeSuccessors = false;
|
||||
|
||||
for (Strings::iterator i = opFlags.begin();
|
||||
i != opFlags.end(); i++)
|
||||
if (*i == "--list" || *i == "-l") query = qList;
|
||||
else if (*i == "--refs" || *i == "-r") query = qRefs;
|
||||
else if (*i == "--requisites" || *i == "-r") query = qRequisites;
|
||||
else if (*i == "--generators" || *i == "-g") query = qGenerators;
|
||||
else if (*i == "--expansion" || *i == "-e") query = qExpansion;
|
||||
else if (*i == "--graph") query = qGraph;
|
||||
else if (*i == "--normalise" || *i == "-n") normalise = true;
|
||||
else if (*i == "--exclude-exprs") includeExprs = false;
|
||||
else if (*i == "--include-successors") includeSuccessors = true;
|
||||
else throw UsageError(format("unknown flag `%1%'") % *i);
|
||||
|
||||
switch (query) {
|
||||
|
@ -126,13 +130,14 @@ static void opQuery(Strings opFlags, Strings opArgs)
|
|||
break;
|
||||
}
|
||||
|
||||
case qRefs: {
|
||||
case qRequisites: {
|
||||
StringSet paths;
|
||||
for (Strings::iterator i = opArgs.begin();
|
||||
i != opArgs.end(); i++)
|
||||
{
|
||||
Strings paths2 = fstateRefs(
|
||||
maybeNormalise(argToId(*i), normalise));
|
||||
Strings paths2 = fstateRequisites(
|
||||
maybeNormalise(argToId(*i), normalise),
|
||||
includeExprs, includeSuccessors);
|
||||
paths.insert(paths2.begin(), paths2.end());
|
||||
}
|
||||
for (StringSet::iterator i = paths.begin();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue