chiark / gitweb /
README with final notes
[version-charset-test.git] / invoke
diff --git a/invoke b/invoke
index fc67da9063f752764a623bbf7aed84d0d7735228..1f0540277b8d324368fc8968d5202e0266d471b0 100755 (executable)
--- a/invoke
+++ b/invoke
@@ -1,8 +1,49 @@
 #!/bin/bash
 set -o pipefail
-set -ex
+set -e
 
-./generate "$@" | ../dpkg/src/dpkg --filter-valid-versions | ./escape | ./check 
+cpus=$(
+       perl -we '
+           use strict;
+           require Sys::CPU;
+           my $ncpus = Sys::CPU::cpu_count();
+           $ncpus *= 1.5;
+           print $ncpus, " " or die $!;
+            print join " ", (0 .. $ncpus-1) or die $!;
+           print "\n" or die $!;
+       ' ||
+       echo 3 0 1 2
+)
+
+ncpus=${cpus%% *}
+cpus=${cpus#* }
+
+echo >&2 "ncpus=$ncpus cpus=($cpus)"
+
+pids=()
+
+for cpu in $cpus; do
+       (
+       ./generate $cpu/$ncpus "$@"                             | \
+       ../dpkg/src/dpkg --filter-valid-versions                | \
+       ./escape                                                | \
+       perl -pe 's#^#refs/tags/#'                              | \
+       ../git/git-check-ref-format --report-errors --stdin
+       echo >&2 "cpu $cpu ok"
+       ) &
+       pids+=( $! )
+done
+
+set +e
+ok=true
+for pid in ${pids[*]}; do
+       wait $pid || ok=false
+done
+set -e
+
+$ok || echo >&2 'BAD'
+
+$ok
 
 echo '*** OK EVERYTHING IS FINE ***'