bin/waitfordeb
branchrsync
changeset 27 9a44b04eec4f
child 41 40df28fd3562
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/waitfordeb	Mon Sep 19 13:12:10 2011 +0200
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+
+use v5.10;
+use strict;
+use warnings;
+
+my $to = 600;
+my $i = "$ENV{HOME}/incoming";
+
+# XXX
+#$| = 1;
+
+my $s = time;
+
+if ($ARGV[0] =~ m,^(\Q$i\E/)?repair_.*\.changes$,) {
+    my $d = "$i/$&";
+    $d =~ s/\.changes$/.deb/;
+    my $p = qr/^\Q$d\E:( [0-9]+[cefFrm]*)+$/;
+
+    { # 'last' needs this in a 'do ... while' loop? see 'man perlsyn'
+	do {
+
+	    if (-e $d) {
+
+		$_ = qx(fuser $d);
+
+		die "output from 'fuser' expected but got none - is it in \$PATH?" unless defined;
+		last if $_ eq '';
+		die "unexpected output - please check" unless /$p/;
+
+	    }
+
+	    die "timeout exceeded while waiting for package file '$d'" if time - $s > $to;
+
+	} while (sleep 10);
+
+    }
+
+}
+
+exec "$ENV{HOME}/bin/rpi";