set -xe ulimit -c unlimited export RUN_NIGHTLY=0 MAKECONFIG='CONFIG_DEBUG=y CONFIG_WERROR=y' case `uname` in FreeBSD) DPDK_DIR=/usr/local/share/dpdk/x86_64-native-bsdapp-clang MAKE=gmake MAKEFLAGS=${MAKEFLAGS:--j$(sysctl -a | egrep -i 'hw.ncpu' | awk '{print $2}')} ;; Linux) DPDK_DIR=/usr/local/share/dpdk/x86_64-native-linuxapp-gcc MAKE=make MAKEFLAGS=${MAKEFLAGS:--j$(nproc)} MAKECONFIG="$MAKECONFIG CONFIG_COVERAGE=y" ;; *) echo "Unknown OS in $0" exit 1 ;; esac if [ -f /usr/include/infiniband/verbs.h ]; then MAKECONFIG="$MAKECONFIG CONFIG_NVMF=y" fi if [ -z "$output_dir" ]; then if [ -z "$rootdir" ] || [ ! -d "$rootdir/../output" ]; then output_dir=. else output_dir=$rootdir/../output fi export output_dir fi if hash valgrind &> /dev/null; then valgrind='valgrind --leak-check=full --error-exitcode=2' else valgrind='' fi function timing() { direction="$1" testname="$2" now=$(date +%s) if [ "$direction" = "enter" ]; then export timing_stack="${timing_stack};${now}" export test_stack="${test_stack};${testname}" else child_time=$(grep "^${test_stack:1};" $output_dir/timing.txt | awk '{s+=$2} END {print s}') start_time=$(echo "$timing_stack" | sed -e 's@^.*;@@') timing_stack=$(echo "$timing_stack" | sed -e 's@;[^;]*$@@') elapsed=$((now - start_time - child_time)) echo "${test_stack:1} $elapsed" >> $output_dir/timing.txt test_stack=$(echo "$test_stack" | sed -e 's@;[^;]*$@@') fi } function timing_enter() { timing "enter" "$1" } function timing_exit() { timing "exit" "$1" } function timing_finish() { flamegraph='/usr/local/FlameGraph/flamegraph.pl' if [ -x "$flamegraph" ]; then "$flamegraph" \ --title 'Build Timing' \ --nametype 'Step:' \ --countname seconds \ $output_dir/timing.txt \ >$output_dir/timing.svg fi } function process_core() { ret=0 for core in $(find . -type f -name 'core*'); do exe=$(eu-readelf -n "$core" | grep psargs | sed "s/.*psargs: \([^ \'\" ]*\).*/\1/") echo "exe for $core is $exe" if [[ ! -z "$exe" ]]; then if hash gdb; then gdb -batch -ex "bt" $exe $core fi cp $exe $output_dir fi mv $core $output_dir chmod a+r $output_dir/$core ret=1 done return $ret } function killprocess() { # $1 = process pid if [ -z "$1" ]; then exit 1 fi echo "killing process with pid $1" kill $1 wait $1 || true }