aboutsummaryrefslogtreecommitdiffstats
path: root/modules/mirror_cleaner
diff options
context:
space:
mode:
Diffstat (limited to 'modules/mirror_cleaner')
-rwxr-xr-xmodules/mirror_cleaner/files/orphans_cleaner.pl41
-rw-r--r--modules/mirror_cleaner/manifests/orphans.pp17
2 files changed, 33 insertions, 25 deletions
diff --git a/modules/mirror_cleaner/files/orphans_cleaner.pl b/modules/mirror_cleaner/files/orphans_cleaner.pl
index ff4f12e5..73e08912 100755
--- a/modules/mirror_cleaner/files/orphans_cleaner.pl
+++ b/modules/mirror_cleaner/files/orphans_cleaner.pl
@@ -10,7 +10,7 @@ use File::Basename;
use File::Copy;
use File::Path qw(make_path);
-my @arches = ('i586','x86_64');
+my @arches = ('i586','x86_64', 'aarch64');
my @sections = ('core','nonfree','tainted');
my @medias = ('backports', 'backports_testing', 'release', 'updates', 'updates_testing');
my $move_delay = 60*60*24*14;
@@ -23,21 +23,22 @@ my %hash ;
my ($filename, $srpm, $dest_rpm);
-my ($source_hdlist, $binary_hdlist, $rpm_path);
+my ($source_hdlist, $binary_hdlist, $rpm_path, $srpm_path);
foreach my $a ( @arches ) {
foreach my $s ( @sections ) {
foreach my $m ( @medias ) {
$rpm_path = "$path/$a/media/$s/$m";
+ $srpm_path = "$path/SRPMS/$s/$m";
$binary_hdlist = "$rpm_path/media_info/hdlist.cz";
- $source_hdlist = "$path/SRPMS/$s/$m/media_info/hdlist.cz";
+ $source_hdlist = "$srpm_path/media_info/hdlist.cz";
- next if not -f $source_hdlist;
- next if not -f $binary_hdlist;
+ next if not -f $source_hdlist;
+ next if not -f $binary_hdlist;
- next if stat($source_hdlist)->size() <= 64;
- next if stat($binary_hdlist)->size() <= 64;
+ next if stat($source_hdlist)->size() <= 64;
+ next if stat($binary_hdlist)->size() <= 64;
open(my $hdfh, "zcat '$binary_hdlist' 2>/dev/null |") or die "Can't open $_";
while (my $hdr = stream2header($hdfh)) {
@@ -54,19 +55,21 @@ foreach my $a ( @arches ) {
}
close($hdfh);
- foreach my $v ( values %hash )
+ foreach my $s ( keys %hash )
{
- foreach my $rpm ( @{$v} ) {
- $rpm = "$rpm_path/$rpm";
- # sometimes, packages are removed without hdlist to be updated
- next if not -f "$rpm";
- if (time() > $move_delay + stat("$rpm")->ctime()) {
- ( $dest_rpm = $rpm ) =~ s/$path/$dest_path/;
- my $dir = dirname $dest_rpm;
- make_path $dir if not -d $dir;
- move($rpm, $dest_rpm)
- }
- }
+ # Be safe, maybe hdlists were not in sync
+ next if -f "$srpm_path/$s";
+ foreach my $rpm ( @{$hash{$s}} ) {
+ $rpm = "$rpm_path/$rpm";
+ # sometimes, packages are removed without hdlist to be updated
+ next if not -f "$rpm";
+ if (time() > $move_delay + stat("$rpm")->ctime()) {
+ ( $dest_rpm = $rpm ) =~ s/$path/$dest_path/;
+ my $dir = dirname $dest_rpm;
+ make_path $dir if not -d $dir;
+ move($rpm, $dest_rpm)
+ }
+ }
}
}
}
diff --git a/modules/mirror_cleaner/manifests/orphans.pp b/modules/mirror_cleaner/manifests/orphans.pp
index c04192f6..90be9a8c 100644
--- a/modules/mirror_cleaner/manifests/orphans.pp
+++ b/modules/mirror_cleaner/manifests/orphans.pp
@@ -7,14 +7,19 @@ define mirror_cleaner::orphans($base) {
ensure => directory
}
- cron { "clean orphans $name":
- command => "/usr/local/bin/orphans_cleaner.pl $base/$name $orphan_dir",
- hour => 5,
- minute => 30,
- user => root,
- }
+# Disable cleaning as the ruby version is smarter and this one tends to break things
+# It should probably be deleted
+#
+# cron { "clean orphans ${name}":
+# command => "/usr/local/bin/orphans_cleaner.pl ${base}/${name} ${orphan_dir}",
+# hour => 5,
+# minute => 30,
+# weekday => 1,
+# user => root,
+# }
tidy { $orphan_dir:
+ type => 'ctime',
age => '4w',
recurse => true,
matches => ['*.rpm'],