[Collab-qa-commits] r796 - svnbuildstat/trunk/script
goneri at alioth.debian.org
goneri at alioth.debian.org
Fri Apr 18 22:52:29 UTC 2008
Author: goneri
Date: 2008-04-18 22:52:28 +0000 (Fri, 18 Apr 2008)
New Revision: 796
Modified:
svnbuildstat/trunk/script/svnbuildstat_agent.pl
Log:
still improve the purge
Modified: svnbuildstat/trunk/script/svnbuildstat_agent.pl
===================================================================
--- svnbuildstat/trunk/script/svnbuildstat_agent.pl 2008-04-17 22:23:00 UTC (rev 795)
+++ svnbuildstat/trunk/script/svnbuildstat_agent.pl 2008-04-18 22:52:28 UTC (rev 796)
@@ -45,7 +45,7 @@
$ENV{LC_ALL} = 'C';
$ENV{LANG} = 'C';
-sub purgeDir {
+sub basicPurge {
die "please create: `".$vardir unless -d $vardir;
# TODO check for running script in background
@@ -64,8 +64,34 @@
}
}
+sub deepPurge {
+ # TODO: looks for mounted filesystem here and try
+ # to umount them
+
+ # !!! Maybe danger if $pbuilderplace is unset
+ # so I do another check here!
+ die "DANGER: pbuilderplace not correct!" unless $pbuilderplace =~ /\/./;
+
+ foreach (bsd_glob($pbuilderplace.'/*')) {
+ next if /tar.gz$/; # pbuilder tarball
+ system ("rm -r $_");
+ }
+ basicPurge();
+
+}
+
+sub debcachePurge {
+
+ `rm -f $aptcachedir/*` unless $keeptmpdir;
+
+}
+
sub checkSanity {
+ if (isDiskFull($aptcachedir)) {
+ debcachePurge();
+ }
+
if (isMemFull()||isDiskFull($workplace)||isDiskFull($buildarea)||isDiskFull('/tmp')) {
print "checkSanity(): disk or memory full!!!\n";
if (%job&&(isDiskFull($workplace)||isDiskFull($buildarea))) {
@@ -80,8 +106,7 @@
delete ($job{$_});
}
- `rm -f $aptcachedir/*` unless $keeptmpdir;
- purgeDir() unless $keeptmpdir;
+ basicPurge() unless $keeptmpdir;
}
}
}
@@ -110,7 +135,6 @@
$free = $1;
}
}
- print "disk for $path: $free\n";
$free < 300000;
}
@@ -126,8 +150,7 @@
foreach (<MEMINFO>) {
$free += $2 if /^(MemFree|SwapFree):\s+(\d+)\s+kB/;
}
- print "mem: ".$free."\n";
- # 50MB is not enough
+ # IMO, 50MB is not enough to continue a build
$free < 50000;
}
@@ -279,12 +302,16 @@
print "dsc: ".$report->{dsc}."\n";
my $tarballdir;
- my $cmd = "cd $threadworkplace; dget -qx ".$report->{dsc};
+ # The archive are not signed for the moment
+ my $cmd = "cd $threadworkplace; dget -qxu ".$report->{dsc};
foreach (`$cmd`) {
$tarballdir = $1 if /dpkg-source:\sextracting\s\S+\sin\s(\S+)/;
}
print "tarballdir: $threadworkplace; $tarballdir\n";
- return unless $tarballdir;
+ if (!$tarballdir) {
+ system("rm -r $threadworkplace") unless $keeptmpdir;
+ return;
+ }
$report->{'stamp_build-start'} = time;
my $dsc_localpath = $threadworkplace.'/'.basename($report->{dsc});
@@ -303,9 +330,9 @@
##################################################################
##################################################################
###### Main
-purgeDir();
+deepPurge();
-while (sleep 15) { # TODO replace by a more important values
+while (sleep 1) {
checkSanity();
upgradeChroot();
More information about the Collab-qa-commits
mailing list