yading@11: #! /bin/sh yading@11: yading@11: config=$1 yading@11: yading@11: die(){ yading@11: echo "$@" yading@11: exit 1 yading@11: } yading@11: yading@11: test -r "$config" || die "usage: fate.sh " yading@11: yading@11: workdir=$(cd $(dirname $config) && pwd) yading@11: make=make yading@11: tar='tar c' yading@11: yading@11: . "$config" yading@11: yading@11: test -n "$slot" || die "slot not specified" yading@11: test -n "$repo" || die "repo not specified" yading@11: test -d "$samples" || die "samples location not specified" yading@11: yading@11: lock(){ yading@11: lock=$1/fate.lock yading@11: (set -C; exec >$lock) 2>/dev/null || return yading@11: trap 'rm $lock' EXIT yading@11: } yading@11: yading@11: checkout(){ yading@11: case "$repo" in yading@11: file:*|/*) src="${repo#file:}" ;; yading@11: git:*) git clone "$repo" "$src" ;; yading@11: esac yading@11: } yading@11: yading@11: update()( yading@11: cd ${src} || return yading@11: case "$repo" in yading@11: git:*) git pull --quiet ;; yading@11: esac yading@11: ) yading@11: yading@11: configure()( yading@11: cd ${build} || return yading@11: ${shell} ${src}/configure \ yading@11: --prefix="${inst}" \ yading@11: --samples="${samples}" \ yading@11: --enable-gpl \ yading@11: --enable-memory-poisoning \ yading@11: ${arch:+--arch=$arch} \ yading@11: ${cpu:+--cpu="$cpu"} \ yading@11: ${cross_prefix:+--cross-prefix="$cross_prefix"} \ yading@11: ${cc:+--cc="$cc"} \ yading@11: ${ld:+--ld="$ld"} \ yading@11: ${target_os:+--target-os="$target_os"} \ yading@11: ${sysroot:+--sysroot="$sysroot"} \ yading@11: ${target_exec:+--target-exec="$target_exec"} \ yading@11: ${target_path:+--target-path="$target_path"} \ yading@11: ${extra_cflags:+--extra-cflags="$extra_cflags"} \ yading@11: ${extra_ldflags:+--extra-ldflags="$extra_ldflags"} \ yading@11: ${extra_libs:+--extra-libs="$extra_libs"} \ yading@11: ${extra_conf} yading@11: ) yading@11: yading@11: compile()( yading@11: cd ${build} || return yading@11: ${make} ${makeopts} && ${make} install yading@11: ) yading@11: yading@11: fate()( yading@11: cd ${build} || return yading@11: ${make} ${makeopts} -k fate yading@11: ) yading@11: yading@11: clean(){ yading@11: rm -rf ${build} ${inst} yading@11: } yading@11: yading@11: report(){ yading@11: date=$(date -u +%Y%m%d%H%M%S) yading@11: echo "fate:0:${date}:${slot}:${version}:$1:$2:${comment}" >report yading@11: cat ${build}/config.fate ${build}/tests/data/fate/*.rep >>report yading@11: test -n "$fate_recv" && $tar report *.log | gzip | $fate_recv yading@11: } yading@11: yading@11: fail(){ yading@11: report "$@" yading@11: clean yading@11: exit yading@11: } yading@11: yading@11: mkdir -p ${workdir} || die "Error creating ${workdir}" yading@11: lock ${workdir} || die "${workdir} locked" yading@11: cd ${workdir} || die "cd ${workdir} failed" yading@11: yading@11: src=${workdir}/src yading@11: : ${build:=${workdir}/build} yading@11: : ${inst:=${workdir}/install} yading@11: yading@11: test -d "$src" && update || checkout || die "Error fetching source" yading@11: yading@11: cd ${workdir} yading@11: yading@11: version=$(${src}/version.sh ${src}) yading@11: test "$version" = "$(cat version-$slot 2>/dev/null)" && exit 0 yading@11: echo ${version} >version-$slot yading@11: yading@11: rm -rf "${build}" *.log yading@11: mkdir -p ${build} yading@11: yading@11: configure >configure.log 2>&1 || fail $? "error configuring" yading@11: compile >compile.log 2>&1 || fail $? "error compiling" yading@11: fate >test.log 2>&1 || fail $? "error testing" yading@11: report 0 success yading@11: clean