#!/bin/sh # collect_cgal_testresults_from_cmake # =================================== # collect all files to generate the html page # containing the testsuite results # # to be run in the CGAL/test directory or a local test directory. # CGAL_TESTER, CGAL_TESTER_NAME, CGAL_TESTER_ADDRESS are environment variables. if [ -z "${CGAL_TEST_PLATFORM}" ]; then CGAL_TEST_PLATFORM=`dirname $PWD` echo "CGAL_TEST_PLATFORM not in the environment, setting it to ${CGAL_TEST_PLATFORM}" fi if [ -z "$1" ] ; then TEST_DIRECTORIES=`ls` else TEST_DIRECTORIES="$*" fi GENERAL_BUILD_LOGFILE='' PLATFORM_BUILD_LOGFILE='' TEST_REPORT='' RESULT_FILE='' #print_testresult # print result on stdout # print timings on fd3 print_testresult() { if [ -f skipped ]; then RESULT="s" TIMING="0" elif [ ! -f ErrorOutput_$1 ] ; then RESULT="?" TIMING="?" else if eval grep ERROR ErrorOutput_$1 > /dev/null ; then RESULT="n" else # grep -q means "quiet": no output, the return code is 0 iff the file # matches the regular expression. # grep -i means "case insensitive". # grep -E means "extended regular expressions". # All those three options are in the Single Unix Specification version 3 # The extended regular expression '[^a-zA-Z_,:-]warning matches any # string "warning" preceded with a letter that is not a letter or '_' # or ',' or ':'. That avoids some false positives such as # '-read_only_relocs,warning' or '-D_CRT_SECURE_NO_WARNINGS', or # 'QMessageBox::warning'. if grep -v -F 'CMake Warning at /usr/share/cmake/Modules/FindBoost' CompilerOutput_$1 ProgramOutput.*.$1 | grep -i -E -q '(^|[^a-zA-Z_,:-])warning' then if grep -v -F 'CMake Warning at /usr/share/cmake/Modules/FindBoost' CompilerOutput_$1 ProgramOutput.*.$1 | grep -i -E '(^|[^a-zA-Z_,:-])warning' | grep -i -q "include[/\]CGAL\|cmake\|CGAL warning" then RESULT="w" else RESULT="t" fi else if grep -E -q 'NOTICE: .*(need|require|incompatible).*will not be' CompilerOutput_$1 then RESULT="r" else RESULT="y" fi fi fi TIMING=`awk '/^ # Running time: / {print $4}' < ErrorOutput_$1` fi echo "$2 $TIMING" >&3 echo "$2 $RESULT" } parse_flags_and_third_party_choices() { grep -e "^-- USING " ${PLATFORM_BUILD_LOGFILE} >> $RESULT_FILE echo "------------" >> $RESULT_FILE } output_main_logs() { [ -e Installation ] || mkdir "Installation" INSTALLATION_TEST_REPORT="Installation/$TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo " General Build Log " >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo "" >> "$INSTALLATION_TEST_REPORT" if [ -f "${GENERAL_BUILD_LOGFILE}" ] ; then cat "${GENERAL_BUILD_LOGFILE}" >> "$INSTALLATION_TEST_REPORT" else echo "Not found!" >> "$INSTALLATION_TEST_REPORT" fi echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo " Platform-specific Build Log " >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo "" >> "$INSTALLATION_TEST_REPORT" if [ -f "${PLATFORM_BUILD_LOGFILE}" ] ; then cat "${PLATFORM_BUILD_LOGFILE}" >> "$INSTALLATION_TEST_REPORT" else echo "Not found!" >> "$INSTALLATION_TEST_REPORT" fi if [ -f "$HOME/.autocgal_with_cmake_rc" ] ; then echo "" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo " .autocgal_with_cmake_rc" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo "" >> "$INSTALLATION_TEST_REPORT" cat "$HOME/.autocgal_with_cmake_rc" >> "$INSTALLATION_TEST_REPORT" else if [ -f "$HOME/.autocgalrc" ] ; then echo "" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo " .autocgalrc" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo "" >> "$INSTALLATION_TEST_REPORT" cat "$HOME/.autocgalrc" >> "$INSTALLATION_TEST_REPORT" fi fi if [ -f "../setup" ] ; then echo "" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo " setup" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo "" >> "$INSTALLATION_TEST_REPORT" cat "../setup" >> "$INSTALLATION_TEST_REPORT" fi echo "" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo " CMakeCache.txt" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo "" >> "$INSTALLATION_TEST_REPORT" if [ -f "../CMakeCache.txt" ] ; then cat "../CMakeCache.txt" >> "$INSTALLATION_TEST_REPORT" else echo "Not found!" >> "$INSTALLATION_TEST_REPORT" fi echo "" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo " include/CGAL/compiler_config.h" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo "" >> "$INSTALLATION_TEST_REPORT" if [ -f "../include/CGAL/compiler_config.h" ] ; then cat "../include/CGAL/compiler_config.h" >> "$INSTALLATION_TEST_REPORT" else echo "Not found!" >> "$INSTALLATION_TEST_REPORT" fi echo "" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo " CGALConfig.cmake" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo "" >> "$INSTALLATION_TEST_REPORT" if [ -f "../CGALConfig.cmake" ] ; then cat "../CGALConfig.cmake" >> "$INSTALLATION_TEST_REPORT" else echo "Not found!" >> "$INSTALLATION_TEST_REPORT" fi echo "" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo " CMakeError.log" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo "" >> "$INSTALLATION_TEST_REPORT" if [ -f "../CMakeFiles/CMakeError.log" ] ; then cat "../CMakeFiles/CMakeError.log" >> "$INSTALLATION_TEST_REPORT" else echo "Not found!" >> "$INSTALLATION_TEST_REPORT" fi echo "" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo " CMakeOutput.log" >> "$INSTALLATION_TEST_REPORT" echo "---------------------------------------------------------------" >> "$INSTALLATION_TEST_REPORT" echo "" >> "$INSTALLATION_TEST_REPORT" if [ -f "../CMakeFiles/CMakeOutput.log" ] ; then cat "../CMakeFiles/CMakeOutput.log" >> "$INSTALLATION_TEST_REPORT" else echo "Not found!" >> "$INSTALLATION_TEST_REPORT" fi } echo "---------------------------------------------------------------" echo " Collecting results of platform $CGAL_TEST_PLATFORM" echo "---------------------------------------------------------------" CURRENT_DIR=`pwd` TESTER=${CGAL_TESTER:-${USER:-`whoami`}} TESTER_NAME="${CGAL_TESTER_NAME:-${TESTER}}" TESTER_ADDRESS="${CGAL_TESTER_ADDRESS:-${TESTER}}" TEST_REPORT="TestReport_${TESTER}_${CGAL_TEST_PLATFORM}" RESULT_FILE="$CURRENT_DIR/results_${TESTER}_${CGAL_TEST_PLATFORM}.txt" TIMING_FILE="$CURRENT_DIR/timings_${TESTER}_${CGAL_TEST_PLATFORM}.txt" CGAL_DIR=../../../.. GENERAL_BUILD_LOGFILE="../../installation.log" PLATFORM_BUILD_LOGFILE="../installation.log" rm -f "$RESULT_FILE" "$TIMING_FILE" touch "$RESULT_FILE" "$TIMING_FILE" sed -n '/CGAL_VERSION /s/#define //p' < "$CGAL_DIR/include/CGAL/version.h" >> "$RESULT_FILE" echo "TESTER ${TESTER}" >> "$RESULT_FILE" echo "TESTER_NAME ${TESTER_NAME}" >> "$RESULT_FILE" echo "TESTER_ADDRESS ${TESTER_ADDRESS}" >> "$RESULT_FILE" echo "CGAL_TEST_PLATFORM ${CGAL_TEST_PLATFORM}" >> "$RESULT_FILE" echo "General installation log file: ${GENERAL_BUILD_LOGFILE}" >> "$RESULT_FILE" echo "Host-specific installation log file: ${PLATFORM_BUILD_LOGFILE}" >> "$RESULT_FILE" output_main_logs parse_flags_and_third_party_choices for DIR in $TEST_DIRECTORIES ; do if [ -d "$DIR" ] ; then echo " $DIR ..." cd "$DIR" print_testresult "$CGAL_TEST_PLATFORM" "$DIR" >> "$RESULT_FILE" 3>>"$TIMING_FILE" if [ ! "$DIR" = "Installation" ] ; then rm -f "${TEST_REPORT}" touch "$TEST_REPORT" fi if [ -f .scm-urls ]; then echo " Test files from:" >> "$TEST_REPORT" cat .scm-urls >> "$TEST_REPORT" echo >> "$TEST_REPORT" elif [ -f ../../../../../.scm-branch ]; then cat ../../../../../.scm-branch >> "$TEST_REPORT" echo >> "$TEST_REPORT" fi if [ ! -f ErrorOutput_${CGAL_TEST_PLATFORM} ] ; then echo "Error: file $DIR/ErrorOutput_${CGAL_TEST_PLATFORM} does not exist!" else cat ErrorOutput_${CGAL_TEST_PLATFORM} >> "$TEST_REPORT" fi if [ ! -f CompilerOutput_${CGAL_TEST_PLATFORM} ] ; then echo "Error: file $DIR/CompilerOutput_${CGAL_TEST_PLATFORM} does not exist!" else cat CompilerOutput_${CGAL_TEST_PLATFORM} >> "$TEST_REPORT" fi if 2>&1 eval ls ProgramOutput.*.${CGAL_TEST_PLATFORM} > /dev/null ; then PROGRAM_OUTPUT=`ls ProgramOutput.*"$CGAL_TEST_PLATFORM"*` for FILE in $PROGRAM_OUTPUT ; do echo >> "$TEST_REPORT" echo "------------------------------------------------------------------" >> "$TEST_REPORT" echo "- $FILE" >> "$TEST_REPORT" echo "------------------------------------------------------------------" >> "$TEST_REPORT" cat $FILE >> "$TEST_REPORT" done fi cd .. fi done OUTPUT_FILE=results_${TESTER}_${CGAL_TEST_PLATFORM}.tar rm -f $OUTPUT_FILE $OUTPUT_FILE.gz tar cf $OUTPUT_FILE results_${TESTER}_${CGAL_TEST_PLATFORM}.txt timings_${TESTER}_${CGAL_TEST_PLATFORM}.txt */"$TEST_REPORT" echo echo "compressing ..." gzip -9f $OUTPUT_FILE echo "results written to file $OUTPUT_FILE.gz" echo # Local Variables: # standard-indent: 2 # End: