We could set WARN_AS_ERROR = YES, but that will just bail when the first error is found. So instead just fail the build in autobuild.sh and the submitter can look at doxygen.log to see what went wrong. Also change how doc make output is redirected to doxygen.log, so that the commands show up in the main build log instead of doxygen.log. That makes sure we can treat an empty doxygen.log file as a successful test. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Id3030d26e65c6c633b61855754e93b8b0b38b263 Reviewed-on: https://review.gerrithub.io/415873 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
133 lines
3.0 KiB
Bash
Executable File
133 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
rootdir=$(readlink -f $(dirname $0))
|
|
source "$rootdir/test/common/autotest_common.sh"
|
|
|
|
out=$PWD
|
|
|
|
umask 022
|
|
|
|
cd $rootdir
|
|
|
|
date -u
|
|
git describe --tags
|
|
|
|
# Print some test system info out for the log
|
|
echo "** START ** Info for Hostname: $HOSTNAME"
|
|
uname -a
|
|
$MAKE cc_version
|
|
$MAKE cxx_version
|
|
echo "** END ** Info for Hostname: $HOSTNAME"
|
|
|
|
timing_enter autobuild
|
|
|
|
./configure $config_params
|
|
|
|
timing_enter check_format
|
|
if [ $SPDK_RUN_CHECK_FORMAT -eq 1 ]; then
|
|
./scripts/check_format.sh
|
|
fi
|
|
timing_exit check_format
|
|
|
|
scanbuild=''
|
|
make_timing_label='make'
|
|
if [ $SPDK_RUN_SCANBUILD -eq 1 ] && hash scan-build; then
|
|
scanbuild="scan-build -o $out/scan-build-tmp --status-bugs"
|
|
make_timing_label='scanbuild_make'
|
|
report_test_completion "scanbuild"
|
|
|
|
fi
|
|
|
|
if [ $SPDK_RUN_VALGRIND -eq 1 ]; then
|
|
report_test_completion "valgrind"
|
|
fi
|
|
|
|
if [ $SPDK_RUN_ASAN -eq 1 ]; then
|
|
report_test_completion "asan"
|
|
fi
|
|
|
|
if [ $SPDK_RUN_UBSAN -eq 1 ]; then
|
|
report_test_completion "ubsan"
|
|
fi
|
|
|
|
echo $scanbuild
|
|
$MAKE $MAKEFLAGS clean
|
|
|
|
timing_enter "$make_timing_label"
|
|
fail=0
|
|
time $scanbuild $MAKE $MAKEFLAGS || fail=1
|
|
if [ $fail -eq 1 ]; then
|
|
if [ -d $out/scan-build-tmp ]; then
|
|
scanoutput=$(ls -1 $out/scan-build-tmp/)
|
|
mv $out/scan-build-tmp/$scanoutput $out/scan-build
|
|
rm -rf $out/scan-build-tmp
|
|
chmod -R a+rX $out/scan-build
|
|
fi
|
|
exit 1
|
|
else
|
|
rm -rf $out/scan-build-tmp
|
|
fi
|
|
timing_exit "$make_timing_label"
|
|
|
|
# Check for generated files that are not listed in .gitignore
|
|
timing_enter generated_files_check
|
|
if [ `git status --porcelain | wc -l` -ne 0 ]; then
|
|
echo "Generated files missing from .gitignore:"
|
|
git status --porcelain
|
|
exit 1
|
|
fi
|
|
timing_exit generated_files_check
|
|
|
|
# Check that header file dependencies are working correctly by
|
|
# capturing a binary's stat data before and after touching a
|
|
# header file and re-making.
|
|
timing_enter dependency_check
|
|
STAT1=`stat examples/nvme/identify/identify`
|
|
sleep 1
|
|
touch lib/nvme/nvme_internal.h
|
|
$MAKE $MAKEFLAGS
|
|
STAT2=`stat examples/nvme/identify/identify`
|
|
|
|
if [ "$STAT1" == "$STAT2" ]; then
|
|
echo "Header dependency check failed"
|
|
exit 1
|
|
fi
|
|
timing_exit dependency_check
|
|
|
|
# Test 'make install'
|
|
timing_enter make_install
|
|
rm -rf /tmp/spdk
|
|
mkdir /tmp/spdk
|
|
$MAKE $MAKEFLAGS install DESTDIR=/tmp/spdk prefix=/usr
|
|
ls -lR /tmp/spdk
|
|
rm -rf /tmp/spdk
|
|
timing_exit make_install
|
|
|
|
timing_enter doxygen
|
|
if [ $SPDK_BUILD_DOC -eq 1 ] && hash doxygen; then
|
|
$MAKE -C "$rootdir"/doc --no-print-directory $MAKEFLAGS &> "$out"/doxygen.log
|
|
if [ -s "$out"/doxygen.log ]; then
|
|
cat "$out"/doxygen.log
|
|
echo "Doxygen errors found!"
|
|
exit 1
|
|
fi
|
|
if hash pdflatex; then
|
|
$MAKE -C "$rootdir"/doc/output/latex --no-print-directory $MAKEFLAGS &>> "$out"/doxygen.log
|
|
fi
|
|
mkdir -p "$out"/doc
|
|
mv "$rootdir"/doc/output/html "$out"/doc
|
|
if [ -f "$rootdir"/doc/output/latex/refman.pdf ]; then
|
|
mv "$rootdir"/doc/output/latex/refman.pdf "$out"/doc/spdk.pdf
|
|
fi
|
|
$MAKE -C "$rootdir"/doc --no-print-directory $MAKEFLAGS clean &>> "$out"/doxygen.log
|
|
if [ -s "$out"/doxygen.log ]; then
|
|
rm "$out"/doxygen.log
|
|
fi
|
|
rm -rf "$rootdir"/doc/output
|
|
fi
|
|
timing_exit doxygen
|
|
|
|
timing_exit autobuild
|