Mercurial > hg > vamp-build-and-test
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 |