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