-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdistrun.sh
More file actions
executable file
·82 lines (66 loc) · 1.26 KB
/
distrun.sh
File metadata and controls
executable file
·82 lines (66 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/sh
#
# Distribute exection of an script in a make file with the option -j
# parameters are given as lists separated by space
#
# Juan-Carlos Maureira
# INRIA 2009
jflag=0
cflag=0
vflag=0
ncpus=1
while getopts 'j:v:c' OPTION
do
case $OPTION in
j) jflag=1
ncpus="$OPTARG"
;;
c) cflag=1
cmd="$OPTARG"
;;
v) vflag=1
param="$OPTARG"
;;
?) printf "Usage: %s: [-j num_cpus] [-v var=list] [-c command]\n" $(basename $0) >&2
exit 2
;;
esac
done
shift $(($OPTIND - 1))
if [ "$cflag" == "0" ]
then
echo "you must specify a command to run with the -c command args"
exit 1
fi
VARNAME=" "
VARLIST=" "
if [ "$vflag" == "1" ]
then
VARNAME=`echo $param | cut -d= -f 1`
VARLIST=`echo $param | cut -d= -f 2`
#echo "Variable: $VARNAME"
#echo "Values : $VARLIST"
fi
MAKEFILE=`mktemp`
count=0
MAKEFILE_BODY=""
MAKEFILE_PHONY=""
for param in $VARLIST
do
CMD="$cmd"
ARGS="$*"
ARGS=`echo $ARGS | awk -v search=$VARNAME -v repl=$param '{ gsub(search,repl,$0);print}'`
#echo "running $CMD $ARGS"
MAKEFILE_BODY="$MAKEFILE_BODY r$count:
$CMD $ARGS
"
MAKEFILE_PHONY="$MAKEFILE_PHONY r$count"
let count=$count+1
done
echo "
.PHONY: $MAKEFILE_PHONY
all: $MAKEFILE_PHONY
$MAKEFILE_BODY
" > $MAKEFILE
make -j$ncpus -f $MAKEFILE
rm $MAKEFILE