summaryrefslogtreecommitdiff
path: root/coccinelle
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-06-11 15:58:09 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-06-13 10:52:33 +0200
commit3b253ad6890af0fda91fed8b67ad0805b6ff1a3d (patch)
tree6736fd6620528804ddb946ae57589aa42c029f40 /coccinelle
parentfbbe6d65b49454c84fb538dcd7cce6099d678007 (diff)
cocinelle: use GNU parallel to run spatch
spatch is single-threaded, i.e. slow. On my machine it allocates 5 GB of memory and starts swapping, which makes it even slower. Using parallel makes the whole thing pleasantly fast.
Diffstat (limited to 'coccinelle')
-rwxr-xr-xcoccinelle/run-coccinelle.sh10
1 files changed, 8 insertions, 2 deletions
diff --git a/coccinelle/run-coccinelle.sh b/coccinelle/run-coccinelle.sh
index a18da58a3e..22ab66d3dd 100755
--- a/coccinelle/run-coccinelle.sh
+++ b/coccinelle/run-coccinelle.sh
@@ -11,11 +11,17 @@ case "$1" in
;;
esac
+if ! parallel -h >/dev/null; then
+ echo 'Please install GNU parallel (package "parallel")'
+ exit 1
+fi
+
for SCRIPT in ${@-$top/coccinelle/*.cocci} ; do
echo "--x-- Processing $SCRIPT --x--"
TMPFILE=`mktemp`
echo "+ spatch --sp-file $SCRIPT $args ..."
- spatch --sp-file $SCRIPT $args $files 2>"$TMPFILE" || cat "$TMPFILE"
- rm "$TMPFILE"
+ parallel --halt now,fail=1 --keep-order --noswap --max-args=20 \
+ spatch --sp-file $SCRIPT $args ::: $files \
+ 2>"$TMPFILE" || cat "$TMPFILE"
echo -e "--x-- Processed $SCRIPT --x--\n"
done