forked from lix-project/lix
* Get the garbage collector to work again.
This commit is contained in:
parent
3509299aca
commit
8898e86b4f
|
@ -1,22 +0,0 @@
|
||||||
#! /usr/bin/perl -w
|
|
||||||
|
|
||||||
my $prefix = $ENV{"NIX"} || "/nix"; # !!! use prefix
|
|
||||||
my $linkdir = "$prefix/var/nix/links";
|
|
||||||
|
|
||||||
my %alive;
|
|
||||||
|
|
||||||
open HASHES, "nix closure \$(cat $linkdir/*.hash) |";
|
|
||||||
while (<HASHES>) {
|
|
||||||
chomp;
|
|
||||||
$alive{$_} = 1;
|
|
||||||
}
|
|
||||||
close HASHES;
|
|
||||||
|
|
||||||
open HASHES, "nix listinst |";
|
|
||||||
while (<HASHES>) {
|
|
||||||
chomp;
|
|
||||||
if (!$alive{$_}) {
|
|
||||||
print "$_\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close HASHES;
|
|
25
scripts/nix-collect-garbage.in
Executable file
25
scripts/nix-collect-garbage.in
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
#! /usr/bin/perl -w
|
||||||
|
|
||||||
|
my $linkdir = "@localstatedir@/nix/links";
|
||||||
|
my $storedir = "@prefix@/store";
|
||||||
|
|
||||||
|
my %alive;
|
||||||
|
|
||||||
|
open HASHES, "nix -qrh \$(cat $linkdir/*.hash) |" or die "in `nix -qrh'";
|
||||||
|
while (<HASHES>) {
|
||||||
|
chomp;
|
||||||
|
$alive{$_} = 1;
|
||||||
|
}
|
||||||
|
close HASHES;
|
||||||
|
|
||||||
|
opendir(DIR, $storedir) or die "cannot opendir $storedir: $!";
|
||||||
|
my @names = readdir(DIR);
|
||||||
|
closedir DIR;
|
||||||
|
|
||||||
|
foreach my $name (@names) {
|
||||||
|
next if ($name eq "." || $name eq "..");
|
||||||
|
$name = "$storedir/$name";
|
||||||
|
if (!$alive{$name}) {
|
||||||
|
print "$name\n";
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue