#!/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 ***'