summaryrefslogtreecommitdiff
path: root/tcwg-benchmark.sh
blob: 326b2ce1d68b0ed8b1164407b8d420ddc8687cb2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/bash

# Clean: shellcheck -e 2001 ./tcwg-benchmark.sh

set -exu

usage ()
{
    echo "ERROR: Unsupported options:" "$@"
    exit 1
}

while [ $# -ge 1 ]; do
    case "$1" in
	--toolchain_url) toolchain_url="$2" ;;
	--bench_list) bench_list="$2" ;;
	--config) config="$2" ;;
	--cflags) cflags="$2" ;;
	--extension) extension="$2" ;;
	--testmode) testmode="$2" ;;
	--iterations) iterations="$2" ;;
	--sysroot) sysroot="$2" ;;
	--fileserver) fileserver="$2" ;;
	--forceinstall) forceinstall="$2" ;;
	--label) label="$2"; label="$label" ;;
	--build_number) BUILD_NUMBER="$2" ;;
	--node_name) NODE_NAME="$2" ;;
	--workspace) WORKSPACE="$2" ;;
	*) usage "$@" ;;
    esac
    shift 2
done

./start-container-docker.sh --arch amd64 --node "$NODE_NAME" --distro trusty --task build --prefix build_ > build-container.sh
build_container_host=
build_container_port=
. ./build-container.sh

# Make sure to cleanup build container if something goes
# wrong when preparing the test environment
trap "cleanup_all_containers" EXIT

case "$toolchain_url" in
    "ssh://"*)
	ccprefix="${toolchain_url##ssh://}"
	if [ x"$sysroot" = x"tarball" ]; then
            echo "ERROR: Unsupported sysroot $sysroot for toolchain_url $toolchain_url"
            exit 1
	fi
	;;
    "http://"*|"https://"*)
	wget --progress=dot:giga --no-check-certificate "${toolchain_url}"
	tarball=$(basename "${toolchain_url}")
	tar xf "${tarball}"
	toolchaindir=$(echo "${tarball}" | sed 's/.tar.xz//')
	ccpath=$(find "$WORKSPACE/$toolchaindir" -name "*-gcc")
	ccprefix=$(echo "$ccpath" | sed -e 's/-gcc$/-/')
	ccprefix="$build_container_host:$build_container_port:$ccprefix"
	if [ x"$sysroot" = x"tarball" ]; then
	    sysroot="$(find "$WORKSPACE/$toolchaindir" -name "libc")"
	fi
	;;
esac

# Slaves for this job are virtual slaves on dev-01,
# convert the slave name into the target board name
boardname=$(echo "${NODE_NAME}" | sed 's/-bmk//').tcwglab

rsync -az --delete bmk-scripts/ "$boardname:bmk-scripts/"

case "$testmode" in
    build|verify) input_size="test" ;;
    benchmark) input_size="ref" ;;
esac

build_container_exec ssh -t "$boardname" bmk-scripts/run.sh \
                     --bench "$(printf '%q' "$bench_list")" \
                     --config "${config}" \
                     --cflags "$(printf '%q' "$cflags")" \
                     --ccprefix "$ccprefix" \
		     --extension "$extension" \
		     --input_size "$input_size" \
		     --iterations "$iterations" \
		     --run_profile "$run_profile" \
                     "${sysroot:+--sysroot "$sysroot"}" \
                     --toolchain gnu \
                     --resultsdest "${fileserver}:results/${BUILD_NUMBER}-$run_profile/${NODE_NAME}" \
                     --nodename "${NODE_NAME}" \
                     --forceinstall "${forceinstall}" \
                     --verbose true

exit 0