9 my $ncpus = Sys::CPU::cpu_count();
11 print join " ", (0 .. $ncpus-1) or die $!;
29 #git commit --allow-empty -m 'Test object'
30 #head=`git rev-parse HEAD`
42 my @freecpus = qw('"$cpus"');
44 print STDERR "check using cpus @freecpus\n";
47 my ($pid, $cpu, $oldbatch) = @{ shift @tasks };
48 waitpid $pid, 0 == $pid or die $!;
49 die "$oldbatch $?" if $?;
50 unlink "b$oldbatch" or die "$oldbatch $!";
51 print STDERR "check completed $oldbatch [$pid] #$cpu\n";
55 sub complete_batch () {
58 close $file or die $!;
60 print STDERR "check closing $batch ($count)\n";
62 await_task unless @freecpus;
64 my $cpu = shift @freecpus;
66 my $pid = fork // die $!;
71 open STDIN, "<", "b$batch" or die $batch;
72 chdir "c$cpu" or die "$cpu $!";
73 exec qw(eatmydata git update-ref --stdin);
76 print STDERR "check spawned $batch ($count) [$pid] #$cpu\n";
77 push @tasks, [ $pid, $cpu, $batch ];
84 #print STDERR ">$_<\n";
85 $file ||= new IO::File "b$batch", ">" or die $!;
87 print $file "delete refs/tags/$_\n" or die $!;
88 $count++ < 100000 or complete_batch;
90 #print STDERR "FOO\n";
91 STDIN->error and die $!;
93 await_task while @tasks;