comparison SCRIPTS/process-piper.sh @ 120:4729c8589274 emscripten-piper

Add piper builds
author Chris Cannam
date Fri, 11 Nov 2016 15:49:32 +0000
parents
children
comparison
equal deleted inserted replaced
119:4d3bba3c0fe7 120:4729c8589274
1 #!/bin/bash
2
3 set -e
4
5 mydir=$(dirname "$0")
6 case "$mydir" in /*);; *) mydir=$(pwd)/"$mydir";; esac
7
8 . "$mydir"/include.sh
9
10 do_rebuild=""
11
12 pubtag="piper"
13
14 if [ t"$1" = t"-c" ]; then
15 echo "(Building from clean)"
16 do_rebuild=yes
17 shift
18 fi
19
20 plugindirs="$@"
21 if [ -z "$plugindirs" ]; then
22 plugindirs=$(cat METADATA/repos.txt |
23 grep -v vamp-plugin-sdk |
24 grep -v vamp-plugin-tester |
25 grep -v '^piper' |
26 awk '{ print $1; }')
27 else
28 for dir in $plugindirs ; do
29 if [ ! -d "$dir" ]; then
30 echo "ERROR: Directory $dir not found"
31 usage
32 fi
33 done
34 fi
35
36 set -u
37
38 reportdir="REPORTS/piper-js"
39 packagedir="PACKAGES/piper-js"
40
41 mkdir -p "$reportdir" "$packagedir" || exit 1
42
43 built="/tmp/built.$$.txt"
44 testfailed="/tmp/testfailed.$$.txt"
45 envcheckfailed="/tmp/envcheckfailed.$$.txt"
46 notbuilt="/tmp/notbuilt.$$.txt"
47
48 trap 'rm -f "$built" "$envcheckfailed" "$testfailed" "$notbuilt"' 0
49 touch "$built" "$envcheckfailed" "$testfailed" "$notbuilt"
50
51 logfile_for() {
52 local activity="$1"
53 local dir="$2"
54 echo "$reportdir/$dir.$activity.txt"
55 }
56
57 build_dir_for() {
58 local dir="$1"
59 echo "piper-vamp-js-builds/$dir"
60 }
61
62 build() {
63 local dir="$1"
64 local log=$(logfile_for build "$dir")
65 local build_dir=$(build_dir_for "$dir")
66 make -C "$build_dir" em 2>&1 | tee "$log"
67 return ${PIPESTATUS[0]}
68 }
69
70 rebuild() {
71 local dir="$1"
72 local log=$(logfile_for build "$dir")
73 local build_dir=$(build_dir_for "$dir")
74 if make -C "$build_dir" distclean; then
75 build "$dir"
76 elif make -C "$build_dir" clean; then
77 build "$dir"
78 else
79 echo "*** Failed to 'make clean' in $dir!" | tee "$log"
80 return 1
81 fi
82 }
83
84 build_or_rebuild() {
85 local dir="$1"
86 if [ -n "$do_rebuild" ]; then
87 rebuild "$dir"
88 else
89 build "$dir"
90 fi
91 }
92
93 package() {
94 local dir="$1"
95 local id=$(vcs_id "$dir")
96 local pstub="$dir-$pubtag-$id"
97 local pdir="$packagedir/$pstub"
98 local build_dir=piper-vamp-js-builds/"$dir"
99 mkdir -p "$pdir"
100 ( cd "$dir" ;
101 cp -av \
102 [Rr][Ee][Aa][Dd][Mm][Ee]* \
103 [Cc][Oo][Pp][Yy][Ii][Nn][Gg]* \
104 [Ll][Ii][Cc][Ee][Nn][CcSs][Ee]* \
105 [Cc][Ii][Tt][Aa][Tt][Ii][Oo][Nn]* \
106 [Cc][Hh][Aa][Nn][Gg][Ee][Ll][Oo][Gg]* \
107 ../"$pdir"/ || true
108 )
109 cp "$build_dir"/*.js "$pdir/"
110 ( cd "$packagedir";
111 tar cvjf "$pstub".tar.bz2 "$pstub"
112 rm -rf "$pstub"
113 )
114 }
115
116 for dir in $plugindirs ; do
117 dir=${dir%/*}
118 build_dir=piper-vamp-js-builds/"$dir"
119 echo
120 echo "Processing: $dir"
121 if [ ! -d "$dir" ]; then
122 echo "Directory $dir not found!"
123 echo "$dir" >> "$notbuilt"
124 elif [ ! -d "$build_dir" ]; then
125 echo "Directory $dir lacks Piper build dir $build_dir"
126 echo "Skipping"
127 echo "$dir" >> "$notbuilt"
128 elif build_or_rebuild "$dir"; then
129 echo "$dir" >> "$built"
130 else
131 echo "$dir" >> "$notbuilt"
132 fi
133 slog=$(logfile_for summary "$dir")
134 echo "initialising logfile $slog for $dir"
135 cat /dev/null > "$slog"
136 done
137
138 cat "$built" | while read dir; do
139 package "$dir"
140 done
141
142 echo
143 echo "** Built and packaged:"
144 cat "$built" | while read dir; do
145 slog=$(logfile_for summary "$dir")
146 echo "$dir"
147 echo "$dir: OK: Success" >> "$slog"
148 done | sort
149
150 echo
151 echo "** Failed to build:"
152 cat "$notbuilt" | sort | while read dir; do
153 slog=$(logfile_for summary "$dir")
154 echo "$dir"
155 echo "$dir: BUILD_FAILED: Failed to build" >> "$slog"
156 done
157
158 echo