[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