Chris@1
|
1 #!/bin/bash
|
Chris@1
|
2
|
Chris@1
|
3 ## Things to test:
|
Chris@1
|
4 ## the plugin builds!
|
Chris@1
|
5 ## plugin loads
|
Chris@1
|
6 ## passes vamp-plugin-tester tests
|
Chris@1
|
7 ## does not export any unnecessary symbols
|
Chris@1
|
8 ## has valid .cat and .n3
|
Chris@1
|
9
|
Chris@1
|
10 platform=linux
|
Chris@2
|
11 bits=64
|
Chris@1
|
12
|
Chris@4
|
13 configure() {
|
Chris@4
|
14 dir="$1"
|
Chris@4
|
15 if [ -f "$dir/configure" ] ; then
|
Chris@4
|
16 ( cd "$dir" ; ./configure )
|
Chris@4
|
17 fi
|
Chris@4
|
18 }
|
Chris@4
|
19
|
Chris@1
|
20 configure_maybe() {
|
Chris@1
|
21 dir="$1"
|
Chris@1
|
22 if [ ! -f "$dir/Makefile" ] ; then
|
Chris@4
|
23 configure "$dir"
|
Chris@1
|
24 fi
|
Chris@1
|
25 }
|
Chris@1
|
26
|
Chris@1
|
27 find_makefile() {
|
Chris@1
|
28 dir="$1"
|
Chris@2
|
29 for f in Makefile Makefile.$platform Makefile.$platform$bits build/$platform/Makefile build/$platform/Makefile.$platform build/$platform/Makefile.$platform$bits; do
|
Chris@1
|
30 if [ -f "$dir/$f" ]; then
|
Chris@1
|
31 echo $f
|
Chris@1
|
32 break
|
Chris@1
|
33 fi
|
Chris@1
|
34 done
|
Chris@1
|
35 }
|
Chris@1
|
36
|
Chris@4
|
37 build() {
|
Chris@4
|
38 dir="$1"
|
Chris@1
|
39 if configure_maybe "$dir"; then
|
Chris@1
|
40 mfile=$(find_makefile "$dir")
|
Chris@1
|
41 if [ -n "$mfile" ]; then
|
Chris@1
|
42 make -C "$dir" -f "$mfile"
|
Chris@1
|
43 else
|
Chris@1
|
44 echo "Failed to find a Makefile in $dir"
|
Chris@4
|
45 return 1
|
Chris@1
|
46 fi
|
Chris@1
|
47 fi
|
Chris@4
|
48 }
|
Chris@4
|
49
|
Chris@4
|
50 rebuild() {
|
Chris@4
|
51 dir="$1"
|
Chris@4
|
52 if configure "$dir"; then
|
Chris@4
|
53 mfile=$(find_makefile "$dir")
|
Chris@4
|
54 if [ -n "$mfile" ]; then
|
Chris@4
|
55 make -C "$dir" -f "$mfile" clean
|
Chris@4
|
56 make -C "$dir" -f "$mfile"
|
Chris@4
|
57 else
|
Chris@4
|
58 echo "Failed to find a Makefile in $dir"
|
Chris@4
|
59 return 1
|
Chris@4
|
60 fi
|
Chris@4
|
61 fi
|
Chris@4
|
62 }
|
Chris@4
|
63
|
Chris@5
|
64 run_tester() {
|
Chris@5
|
65 ##!!! todo: list the plugins in each library and run the tester
|
Chris@5
|
66 ##!!! separately on each -- that way we can report on specific
|
Chris@5
|
67 ##!!! plugins rather than whole libraries (though for the
|
Chris@5
|
68 ##!!! "printout" report we should include the whole library test,
|
Chris@5
|
69 ##!!! just for information's sake?) and we can have separate
|
Chris@5
|
70 ##!!! nondeterministic statuses
|
Chris@5
|
71 dir="$1"
|
Chris@5
|
72 extra=""
|
Chris@5
|
73 if grep -q "^$dir\$" nondeterministic.txt; then
|
Chris@5
|
74 extra="-n"
|
Chris@5
|
75 fi
|
Chris@5
|
76 if VAMP_PATH="$dir" vamp-plugin-tester/vamp-plugin-tester "$extra" -a ; then
|
Chris@5
|
77 echo "OK"
|
Chris@5
|
78 else
|
Chris@5
|
79 echo
|
Chris@5
|
80 echo "Tester failed: running again with valgrind and verbose for a report..."
|
Chris@5
|
81 VAMP_PATH="$dir" valgrind vamp-plugin-tester/vamp-plugin-tester -v "$extra" -a
|
Chris@5
|
82 fi
|
Chris@5
|
83 }
|
Chris@5
|
84
|
Chris@4
|
85 successes="/tmp/successes.$$.txt"
|
Chris@5
|
86 partials="/tmp/successes.$$.txt"
|
Chris@4
|
87 failures="/tmp/failures.$$.txt"
|
Chris@5
|
88 trap 'rm -f "$successes" "$partials" "$failures"' 0
|
Chris@4
|
89
|
Chris@5
|
90 if ! build "vamp-plugin-sdk"; then
|
Chris@5
|
91 echo "Failed to build Vamp plugin SDK!"
|
Chris@5
|
92 exit 1
|
Chris@5
|
93 fi
|
Chris@5
|
94
|
Chris@5
|
95 if ! build "vamp-plugin-tester"; then
|
Chris@5
|
96 echo "Failed to build Vamp plugin tester!"
|
Chris@5
|
97 exit 1
|
Chris@5
|
98 fi
|
Chris@5
|
99
|
Chris@5
|
100 for dir in $(cat .hgsub | grep -v vamp-plugin-sdk | grep -v vamp-plugin-tester | awk '{ print $1; }') ; do
|
Chris@4
|
101 echo
|
Chris@4
|
102 echo "Processing: $dir"
|
Chris@4
|
103 if build "$dir"; then
|
Chris@5
|
104 if run_tester "$dir"; then
|
Chris@5
|
105 echo "$dir" >> "$successes"
|
Chris@5
|
106 else
|
Chris@5
|
107 echo "$dir" >> "$partials"
|
Chris@5
|
108 fi
|
Chris@4
|
109 else
|
Chris@4
|
110 echo "$dir" >> "$failures"
|
Chris@4
|
111 fi
|
Chris@1
|
112 done
|
Chris@1
|
113
|
Chris@4
|
114 echo
|
Chris@5
|
115 echo "** Successfully built and tested:"
|
Chris@4
|
116 cat "$successes"
|
Chris@4
|
117
|
Chris@4
|
118 echo
|
Chris@5
|
119 echo "** Built, but failed tests:"
|
Chris@5
|
120 cat "$partials"
|
Chris@5
|
121
|
Chris@5
|
122 echo
|
Chris@4
|
123 echo "** Failed to build:"
|
Chris@4
|
124 cat "$failures"
|
Chris@4
|
125
|
Chris@4
|
126 echo
|