forked from lix-project/lix
Remove obsolete files (moved to release tree)
This commit is contained in:
parent
afa7b8a479
commit
0c4c8f7a9d
|
@ -1,2 +0,0 @@
|
||||||
./gc-releases.pl /data/releases/patches/all-patches $(find /data/releases -name MANIFEST) | sort > dead
|
|
||||||
cat dead | xargs -d '\n' sh -c 'find "$@" -mtime +100 -print' | xargs -d '\n' mv -v --target-directory=/data/releases/trash/
|
|
|
@ -1,58 +0,0 @@
|
||||||
#! /var/run/current-system/sw/bin/perl -w -I. -I..
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use NixManifest;
|
|
||||||
use readcache;
|
|
||||||
use File::Basename;
|
|
||||||
|
|
||||||
|
|
||||||
# Read the manifests.
|
|
||||||
my %narFiles;
|
|
||||||
my %patches;
|
|
||||||
|
|
||||||
foreach my $manifest (@ARGV) {
|
|
||||||
print STDERR "loading $manifest\n";
|
|
||||||
if (readManifest($manifest, \%narFiles, \%patches, 1) < 3) {
|
|
||||||
# die "manifest `$manifest' is too old (i.e., for Nix <= 0.7)\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Find the live archives.
|
|
||||||
my %usedFiles;
|
|
||||||
|
|
||||||
foreach my $narFile (keys %narFiles) {
|
|
||||||
foreach my $file (@{$narFiles{$narFile}}) {
|
|
||||||
$file->{url} =~ /\/([^\/]+)$/;
|
|
||||||
my $basename = $1;
|
|
||||||
die unless defined $basename;
|
|
||||||
# print $basename, "\n";
|
|
||||||
$usedFiles{$basename} = 1;
|
|
||||||
print STDERR "missing archive `$basename'\n"
|
|
||||||
unless defined $readcache::archives{$basename};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach my $patch (keys %patches) {
|
|
||||||
foreach my $file (@{$patches{$patch}}) {
|
|
||||||
$file->{url} =~ /\/([^\/]+)$/;
|
|
||||||
my $basename = $1;
|
|
||||||
die unless defined $basename;
|
|
||||||
# print $basename, "\n";
|
|
||||||
$usedFiles{$basename} = 1;
|
|
||||||
die "missing archive `$basename'"
|
|
||||||
unless defined $readcache::archives{$basename};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Print out the dead archives.
|
|
||||||
foreach my $archive (keys %readcache::archives) {
|
|
||||||
next if $archive eq "." || $archive eq "..";
|
|
||||||
if (!defined $usedFiles{$archive}) {
|
|
||||||
my $file = $readcache::archives{$archive};
|
|
||||||
print "$file\n";
|
|
||||||
my $hashFile = dirname($file) . "/.hash." . basename($file);
|
|
||||||
print "$hashFile\n" if -e $hashFile;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
package readcache;
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
# Read the archive directories.
|
|
||||||
our %archives;
|
|
||||||
|
|
||||||
sub readDir {
|
|
||||||
my $dir = shift;
|
|
||||||
opendir(DIR, "$dir") or die "cannot open `$dir': $!";
|
|
||||||
my @as = readdir DIR;
|
|
||||||
foreach my $archive (@as) {
|
|
||||||
next unless $archive =~ /^sha256_/ || $archive =~ /\.nar-bsdiff$/ || $archive =~ /\.nar\.bz2$/;
|
|
||||||
$archives{$archive} = "$dir/$archive";
|
|
||||||
}
|
|
||||||
closedir DIR;
|
|
||||||
}
|
|
||||||
|
|
||||||
readDir "/data/releases/nars";
|
|
||||||
readDir "/data/releases/patches";
|
|
||||||
|
|
||||||
print STDERR scalar (keys %archives), "\n";
|
|
|
@ -1,76 +0,0 @@
|
||||||
#! /usr/bin/perl -w -I. -I..
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use readmanifest;
|
|
||||||
use readcache;
|
|
||||||
|
|
||||||
|
|
||||||
my %allNarFiles;
|
|
||||||
my %allLocalPaths;
|
|
||||||
my %allPatches;
|
|
||||||
|
|
||||||
foreach my $manifest (glob "/data/webserver/dist/*/*/MANIFEST") {
|
|
||||||
print STDERR "loading $manifest\n";
|
|
||||||
readManifest($manifest, \%allNarFiles, \%allLocalPaths, \%allPatches, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach my $manifest (@ARGV) {
|
|
||||||
|
|
||||||
print STDERR "shrinking manifest $manifest...\n";
|
|
||||||
|
|
||||||
my %narFiles;
|
|
||||||
my %patches;
|
|
||||||
|
|
||||||
if (readManifest($manifest, \%narFiles, \%patches, 1) < 3) {
|
|
||||||
print STDERR "manifest `$manifest' is too old (i.e., for Nix <= 0.7)\n";
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
my %done;
|
|
||||||
|
|
||||||
sub traverse {
|
|
||||||
my $p = shift;
|
|
||||||
my $prefix = shift;
|
|
||||||
print "$prefix$p\n";
|
|
||||||
|
|
||||||
my $reachesNAR = 0;
|
|
||||||
|
|
||||||
foreach my $patch (@{$patches{$p}}) {
|
|
||||||
next if defined $done{$patch->{url}};
|
|
||||||
$done{$patch->{url}} = 1;
|
|
||||||
$reachesNAR = 1 if traverse ($patch->{basePath}, $prefix . " ");
|
|
||||||
}
|
|
||||||
|
|
||||||
$reachesNAR = 1 if defined $allNarFiles{$p};
|
|
||||||
|
|
||||||
print " $prefix$reachesNAR\n";
|
|
||||||
return $reachesNAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
# foreach my $p (keys %narFiles) {
|
|
||||||
# traverse ($p, "");
|
|
||||||
# }
|
|
||||||
|
|
||||||
my %newPatches;
|
|
||||||
|
|
||||||
foreach my $p (keys %patches) {
|
|
||||||
my $patchList = $patches{$p};
|
|
||||||
my @newList;
|
|
||||||
foreach my $patch (@{$patchList}) {
|
|
||||||
if (! defined $allNarFiles{$patch->{basePath}} ||
|
|
||||||
! defined $allNarFiles{$p} )
|
|
||||||
{
|
|
||||||
# print "REMOVING PATCH ", $patch->{basePath}, " -> ", $p, "\n";
|
|
||||||
} else {
|
|
||||||
# print "KEEPING PATCH ", $patch->{basePath}, " -> ", $p, "\n";
|
|
||||||
push @newList, $patch;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$newPatches{$p} = \@newList;
|
|
||||||
}
|
|
||||||
|
|
||||||
writeManifest ($manifest, \%narFiles, \%newPatches);
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue