diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-07-29 14:28:17 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-07-29 14:28:17 +0000 |
commit | 884646593488bfacd851bec72b7ac1a4841bf458 (patch) | |
tree | 0417e939be5e5d12645966da3fe6f41fefde0ea2 /scripts/nix-collect-garbage.in | |
parent | dc14a3de46ee08a28158a886b6abba2c4144f6cd (diff) |
* 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.
Diffstat (limited to 'scripts/nix-collect-garbage.in')
-rwxr-xr-x | scripts/nix-collect-garbage.in | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/scripts/nix-collect-garbage.in b/scripts/nix-collect-garbage.in index 8f54ba20f..eaa706578 100755 --- a/scripts/nix-collect-garbage.in +++ b/scripts/nix-collect-garbage.in @@ -5,13 +5,27 @@ my $storedir = "@prefix@/store"; my %alive; -open HASHES, "nix --query --refs \$(cat $linkdir/*.hash) |" or die "in `nix -qrh'"; +my $keepsuccessors = 0; +my $invert = 0; + +foreach my $arg (@ARGV) { + if ($arg eq "--keep-successors") { $keepsuccessors = 1; } + if ($arg eq "--invert") { $invert = 1; } + else { die "unknown argument `$arg'" }; +} + +my $extraarg = ""; +if ($keepsuccessors) { $extraarg = "--include-successors"; }; +open HASHES, "nix --query --requisites $extraarg \$(cat $linkdir/*.id) |" or die "in `nix -qrh'"; while (<HASHES>) { chomp; $alive{$_} = 1; + if ($invert) { print "$_\n"; }; } close HASHES; +exit 0 if ($invert); + opendir(DIR, $storedir) or die "cannot opendir $storedir: $!"; my @names = readdir(DIR); closedir DIR; |