annotate ffmpeg/tests/fate.sh @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents f445c3017523
children
rev   line source
yading@11 1 #! /bin/sh
yading@11 2
yading@11 3 config=$1
yading@11 4
yading@11 5 die(){
yading@11 6 echo "$@"
yading@11 7 exit 1
yading@11 8 }
yading@11 9
yading@11 10 test -r "$config" || die "usage: fate.sh <config>"
yading@11 11
yading@11 12 workdir=$(cd $(dirname $config) && pwd)
yading@11 13 make=make
yading@11 14 tar='tar c'
yading@11 15
yading@11 16 . "$config"
yading@11 17
yading@11 18 test -n "$slot" || die "slot not specified"
yading@11 19 test -n "$repo" || die "repo not specified"
yading@11 20 test -d "$samples" || die "samples location not specified"
yading@11 21
yading@11 22 lock(){
yading@11 23 lock=$1/fate.lock
yading@11 24 (set -C; exec >$lock) 2>/dev/null || return
yading@11 25 trap 'rm $lock' EXIT
yading@11 26 }
yading@11 27
yading@11 28 checkout(){
yading@11 29 case "$repo" in
yading@11 30 file:*|/*) src="${repo#file:}" ;;
yading@11 31 git:*) git clone "$repo" "$src" ;;
yading@11 32 esac
yading@11 33 }
yading@11 34
yading@11 35 update()(
yading@11 36 cd ${src} || return
yading@11 37 case "$repo" in
yading@11 38 git:*) git pull --quiet ;;
yading@11 39 esac
yading@11 40 )
yading@11 41
yading@11 42 configure()(
yading@11 43 cd ${build} || return
yading@11 44 ${shell} ${src}/configure \
yading@11 45 --prefix="${inst}" \
yading@11 46 --samples="${samples}" \
yading@11 47 --enable-gpl \
yading@11 48 --enable-memory-poisoning \
yading@11 49 ${arch:+--arch=$arch} \
yading@11 50 ${cpu:+--cpu="$cpu"} \
yading@11 51 ${cross_prefix:+--cross-prefix="$cross_prefix"} \
yading@11 52 ${cc:+--cc="$cc"} \
yading@11 53 ${ld:+--ld="$ld"} \
yading@11 54 ${target_os:+--target-os="$target_os"} \
yading@11 55 ${sysroot:+--sysroot="$sysroot"} \
yading@11 56 ${target_exec:+--target-exec="$target_exec"} \
yading@11 57 ${target_path:+--target-path="$target_path"} \
yading@11 58 ${extra_cflags:+--extra-cflags="$extra_cflags"} \
yading@11 59 ${extra_ldflags:+--extra-ldflags="$extra_ldflags"} \
yading@11 60 ${extra_libs:+--extra-libs="$extra_libs"} \
yading@11 61 ${extra_conf}
yading@11 62 )
yading@11 63
yading@11 64 compile()(
yading@11 65 cd ${build} || return
yading@11 66 ${make} ${makeopts} && ${make} install
yading@11 67 )
yading@11 68
yading@11 69 fate()(
yading@11 70 cd ${build} || return
yading@11 71 ${make} ${makeopts} -k fate
yading@11 72 )
yading@11 73
yading@11 74 clean(){
yading@11 75 rm -rf ${build} ${inst}
yading@11 76 }
yading@11 77
yading@11 78 report(){
yading@11 79 date=$(date -u +%Y%m%d%H%M%S)
yading@11 80 echo "fate:0:${date}:${slot}:${version}:$1:$2:${comment}" >report
yading@11 81 cat ${build}/config.fate ${build}/tests/data/fate/*.rep >>report
yading@11 82 test -n "$fate_recv" && $tar report *.log | gzip | $fate_recv
yading@11 83 }
yading@11 84
yading@11 85 fail(){
yading@11 86 report "$@"
yading@11 87 clean
yading@11 88 exit
yading@11 89 }
yading@11 90
yading@11 91 mkdir -p ${workdir} || die "Error creating ${workdir}"
yading@11 92 lock ${workdir} || die "${workdir} locked"
yading@11 93 cd ${workdir} || die "cd ${workdir} failed"
yading@11 94
yading@11 95 src=${workdir}/src
yading@11 96 : ${build:=${workdir}/build}
yading@11 97 : ${inst:=${workdir}/install}
yading@11 98
yading@11 99 test -d "$src" && update || checkout || die "Error fetching source"
yading@11 100
yading@11 101 cd ${workdir}
yading@11 102
yading@11 103 version=$(${src}/version.sh ${src})
yading@11 104 test "$version" = "$(cat version-$slot 2>/dev/null)" && exit 0
yading@11 105 echo ${version} >version-$slot
yading@11 106
yading@11 107 rm -rf "${build}" *.log
yading@11 108 mkdir -p ${build}
yading@11 109
yading@11 110 configure >configure.log 2>&1 || fail $? "error configuring"
yading@11 111 compile >compile.log 2>&1 || fail $? "error compiling"
yading@11 112 fate >test.log 2>&1 || fail $? "error testing"
yading@11 113 report 0 success
yading@11 114 clean