9 my $ncpus = Sys::CPU::cpu_count();
11 print join " ", (0 .. $ncpus-1) or die $!;
19 mkdir -p version-charset-test
20 cd version-charset-test
34 #git commit --allow-empty -m 'Test object'
35 #head=`git rev-parse HEAD`
47 my @freecpus = qw('"$cpus"');
49 print STDERR "check using cpus @freecpus\n";
52 my ($pid, $cpu, $oldbatch) = @{ shift @tasks };
53 waitpid $pid, 0 == $pid or die $!;
54 die "$oldbatch $?" if $?;
55 unlink "b$oldbatch" or die "$oldbatch $!";
56 print STDERR "check completed $oldbatch [$pid] #$cpu\n";
60 sub complete_batch () {
63 close $file or die $!;
65 print STDERR "check closing $batch ($count)\n";
67 await_task unless @freecpus;
69 my $cpu = shift @freecpus;
71 my $pid = fork // die $!;
76 open STDIN, "<", "b$batch" or die $batch;
77 chdir "c$cpu" or die "$cpu $!";
78 exec qw(eatmydata git update-ref --stdin);
81 print STDERR "check spawned $batch ($count) [$pid] #$cpu\n";
82 push @tasks, [ $pid, $cpu, $batch ];
89 #print STDERR ">$_<\n";
90 $file ||= new IO::File "b$batch", ">" or die $!;
92 print $file "delete refs/tags/$_\n" or die $!;
93 $count++ < 100000 or complete_batch;
95 #print STDERR "FOO\n";
96 STDIN->error and die $!;
98 await_task while @tasks;