forked from sftcd/surveys
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtry-render-problematic.sh
executable file
·184 lines (171 loc) · 3.98 KB
/
try-render-problematic.sh
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#!/bin/bash
# Copyright (C) 2018 Stephen Farrell, [email protected]
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
# set -x
# should we try one or all engines/formats?
all=False
seleng=False
if [ "$1" == "--all" ]
then
all=True
elif [ "$1" == "--sfdp" ]
then
seleng='sfdp'
elif [ "$1" == "--neato" ]
then
seleng='neato'
elif [ "$1" == "--dot" ]
then
seleng='dot'
elif [ "$1" == "--fdp" ]
then
seleng='fdp'
elif [ "$1" == "--circo" ]
then
seleng='circo'
elif [ "$1" == "--twopi" ]
then
seleng='twopi'
elif [ "$#" != "0" ]
then
echo "usage: $0 [--all|--sftp|--neato|--dot|--fdp|--circo|--twopi]"
exit 1
fi
# GraphKeyReUse3.py produces a summary file at the end that
# says which graphs couldn't be rendered for some reason
# This script tries again for those
# You should generally run this in the directory containing
# all the other graphs (outdir from GraphKeyReUse3) as that's
# where the summary.txt file will be put
list=`cat summary.txt | grep "not rendered" | tail -1\
| sed -e 's/^.*\[//' \
| sed -e 's/\].*$//' \
| sed -e 's/, / /g'`
if [ "$list" == "" ]
then
# see if there are any .dot with no matching .svg
dotlist=`ls graph*.dot`
for dotty in $dotlist
do
tbd="yes"
for format in $formats
do
if [ -f $dotty.$format ]
then
tbd="no"
break
fi
done
if [ "$tbd" == "yes" ]
then
gr=`echo $dotty | sed -e 's/graph//' | sed -e 's/.dot//'`
list="$list $gr"
fi
done
if [ "$list" == "" ]
then
echo "Nothing to do"
exit 0
fi
fi
# which graphviz engine
engines="sfdp neato dot fdp circo twopi"
# default to 1st from list above
engine=`echo $engines | cut -d" " -f1`
# which output format
formats="svg png"
# default to 1st from list above
format=`echo $formats | cut -d" " -f1`
if [ "$all" == "True" ]
then
engine=$engines
format=$formats
elif [ "$seleng" != "False" ]
then
engine=$seleng
fi
for eng in $engine
do
engparms=""
case $eng in
neato )
engparms="-Gepsilon=1.5"
;;
esac
for gr in $list
do
for fmt in $format
do
# don't re-do already done stuff
target=graph$gr.dot.$fmt
if [ ! -f $target ]
then
echo "Trying $gr with $eng and $fmt..."
timeout 120s $eng $engparms -T$fmt graph$gr.dot >$target
if (( $? != 0 ))
then
mv $target failed-$gr.dot.$fmt
else
echo "Did $gr seemingly ok"
break
fi
else
echo "Skipping $gr..."
break
fi
done
done
done
minsize=5000
baddies=""
# see who failed everything
for gr in $list
do
nogood=True
# note plural here - we check 'em all
for fmt in $formats
do
target=graph$gr.dot.$fmt
if [ -f $target ]
then
size=`ls -l $target | awk '{print $5}'`
if (( $size > $minsize ))
then
nogood=False
break
fi
fi
done
if [ "$nogood" == "True" ]
then
therealready=`echo $baddies | grep $gr`
if [[ "$theerealredy" == "" ]]
then
baddies+=" "$gr
fi
fi
done
echo "At the end, we still didn't manage to do $baddies"
echo ""
echo "The details: (output of 'ls -l graph\$NN.*')"
for gr in $baddies
do
ls -l graph$gr.*
done