diff options
author | Måns Rullgård <mans@mansr.com> | 2010-07-27 03:44:09 +0400 |
---|---|---|
committer | Måns Rullgård <mans@mansr.com> | 2010-07-27 03:44:09 +0400 |
commit | a9dc61114588615633981acc7487c236e55c4f7c (patch) | |
tree | 1294d0e4339bcbf7c5c453865a50aab214d79bd0 /tests/fate.sh | |
parent | b82be636880a8dece6205bdcded8136bbd6ce5d6 (diff) |
fate: add fate session script
Originally committed as revision 24530 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'tests/fate.sh')
-rwxr-xr-x | tests/fate.sh | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/tests/fate.sh b/tests/fate.sh new file mode 100755 index 0000000000..af2e14f8bf --- /dev/null +++ b/tests/fate.sh @@ -0,0 +1,107 @@ +#! /bin/sh + +config=$1 + +die(){ + echo "$@" + exit 1 +} + +test -r "$config" || die "usage: fate.sh <config>" + +workdir=$(dirname $config) +make=make + +. "$config" + +test -n "$slot" || die "slot not specified" +test -n "$repo" || die "repo not specified" +test -d "$samples" || die "samples location not specified" + +lock(){ + lock=$1/fate.lock + (set -C; exec >$lock) 2>/dev/null || return + trap 'rm $lock' EXIT +} + +checkout(){ + case "$repo" in + file:*|/*) src="${repo#file:}" ;; + git:*) git clone "$repo" "$src" ;; + svn:*) svn co "$repo" "$src" ;; + esac +} + +update()( + cd ${src} || return + case "$repo" in + git:*) git pull ;; + svn:*) svn up ;; + esac +) + +configure()( + cd ${build} || return + ${src}/configure \ + --prefix="${inst}" \ + --samples="${samples}" \ + ${arch:+--arch=$arch} \ + ${cpu:+--cpu="$cpu"} \ + ${cross_prefix:+--cross-prefix="$cross_prefix"} \ + ${cc:+--cc="$cc"} \ + ${target_os:+--target-os="$target_os"} \ + ${sysroot:+--sysroot="$sysroot"} \ + ${target_exec:+--target-exec="$target_exec"} \ + ${target_path:+--target-path="$target_path"} \ + ${extra_cflags:+--extra-cflags="$extra_cflags"} \ + ${extra_ldflags:+--extra-ldflags="$extra_ldflags"} \ + ${extra_libs:+--extra-libs="$extra_libs"} \ + ${extra_conf} +) + +compile()( + cd ${build} || return + ${make} ${makeopts} && ${make} install +) + +fate()( + cd ${build} || return + ${make} ${makeopts} -k fate +) + +report(){ + date=$(date -u +%Y%m%d%H%M%S) + echo "fate:0:${date}:${slot}:${version}:$1:$2" >report + cat ${build}/config.fate ${build}/tests/data/fate/*.rep >>report + test -n "$fate_recv" && tar cz report *.log | $fate_recv +} + +fail(){ + report "$@" + exit +} + +mkdir -p ${workdir} || die "Error creating ${workdir}" +lock ${workdir} || die "${workdir} locked" +cd ${workdir} || die "cd ${workdir} failed" + +src=${workdir}/src +build=${workdir}/build +inst=${workdir}/install +report=tests/data/fate/report + +test -d "$src" && update || checkout || die "Error fetching source" + +cd ${workdir} + +version=$(${src}/version.sh ${src}) +test "$version" = "$(cat version 2>/dev/null)" && exit 0 +echo ${version} >version + +rm -rf "${build}" +mkdir -p ${build} + +configure >configure.log 2>&1 || fail $? "error configuring" +compile >compile.log 2>&1 || fail $? "error compiling" +fate >test.log 2>&1 || fail $? "error testing" +report 0 success |