#!/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" ;; --cflags) cflags="$2" ;; --extension) extension="$2" ;; --testmode) testmode="$2" ;; --iterations) iterations="$2" ;; --run_profile) run_profile="$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 . jenkins-helpers.sh 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://"*".tar.xz"|"https://"*".tar.xz") wget_wildcard_url "$toolchain_url" --no-check-certificate tarball="$(ls $(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="$build_container_host:$(find "$WORKSPACE/$toolchaindir" -name "libc")" fi ;; *) echo "ERROR: Cannot handle toolchain_url: $toolchain_url" exit 1 ;; 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 "${BUILD_NUMBER}-$run_profile" \ --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