diff --git a/Installation/cmake/modules/CGAL_SetupCGAL_Qt5Dependencies.cmake b/Installation/cmake/modules/CGAL_SetupCGAL_Qt5Dependencies.cmake index 804fff7b519..dae96c444e6 100644 --- a/Installation/cmake/modules/CGAL_SetupCGAL_Qt5Dependencies.cmake +++ b/Installation/cmake/modules/CGAL_SetupCGAL_Qt5Dependencies.cmake @@ -52,7 +52,7 @@ if(NOT CGAL_Qt5_MISSING_DEPS) include(${CMAKE_CURRENT_LIST_DIR}/CGAL_Qt5_moc_and_resource_files.cmake) - if(CGAL_HEADER_ONLY AND (WITH_demos OR WITH_examples OR NOT CGAL_BUILDING_LIBS) AND NOT TARGET CGAL_Qt5_moc_and_resources) + if(CGAL_HEADER_ONLY AND (WITH_demos OR WITH_examples OR WITH_tests OR NOT CGAL_BUILDING_LIBS) AND NOT TARGET CGAL_Qt5_moc_and_resources) add_library(CGAL_Qt5_moc_and_resources STATIC ${_CGAL_Qt5_MOC_FILES_private} ${CGAL_GRAPHICSVIEW_PACKAGE_DIR}/include/CGAL/Qt/GraphicsViewNavigation.h diff --git a/Scripts/developer_scripts/global_run_testsuite.sh b/Scripts/developer_scripts/global_run_testsuite.sh new file mode 100644 index 00000000000..f945a0a107a --- /dev/null +++ b/Scripts/developer_scripts/global_run_testsuite.sh @@ -0,0 +1,261 @@ +#!/bin/bash + +#!/bin/bash +#usage : script [-c -l -n -s -k] testsuite_dir + +########################## +#### LAUNCH CTEST #### +########################## + +export SHOW_PROGRESS="" +export KEEP_TESTS="" +export DO_NOT_UPLOAD="" +export DO_NOT_TEST="" +export SCP="scp" +export WGET="wget" +export WGET_OPTS="--no-check-certificate --no-verbose" +export CURL="curl" +export CURL_OPTS="-k --remote-name --silent --location-trusted" +export CGAL_URL="https://cgal.geometryfactory.com/CGAL/Members/Releases" +export UPLOAD_RESULT_DESTINATION="cgaltest@cgaltest.geometryfactory.com:incoming" +export LATEST_LOCATION="${CGAL_URL}/LATEST" +export TAR="tar" +export GZIP="gzip" +export GUNZIP="gunzip" +export COMPRESSOR="${GZIP}" +export CONSOLE_OUTPUT="y" +export CGAL_ROOT=`pwd` +export USE_TARGZ="n" +export USE_TARBZ="n" +export CGAL_RELEASE="" +export LOGS_DIR="" +export LOCK_FILE="" +export LIST_TEST_PACKAGES="" +export ACTUAL_LOGFILE="" +export CGAL_DIR="" +USE_LATEST_UNZIPPED="" +WITH_DOCKER="n" + +# ---------------------------------------------------------------------------------------- +# Downloads the file "LATEST" whose contents indicates which release to test +# ---------------------------------------------------------------------------------------- +download_latest() +{ + if [ -r "LATEST" ]; then + rm -rf LATEST + fi + log "${ACTUAL_LOGFILE}" "getting LATEST" + if [ -n "${USE_CURL}" ]; then + ${CURL} ${CURL_OPTS} "${LATEST_LOCATION}" >> "${ACTUAL_LOGFILE}" 2>&1 + else + ${WGET} ${WGET_OPTS} "${LATEST_LOCATION}" >> "${ACTUAL_LOGFILE}" 2>&1 + fi + if [ ! -f "LATEST" ]; then + error "COULD NOT DOWNLOAD LATEST!" + fi +} + +# ---------------------------------------------------------------------------------------- +# Exits the testsuite if the latest release has been already tested. +# This is tested by comparing files LATEST and RELEASE_NR, where +# RELEASE_NR is a copy of the previous LATEST. +# ---------------------------------------------------------------------------------------- +abort_if_latest_already_tested() +{ + if [ -r "RELEASE_NR" ]; then + cmp LATEST RELEASE_NR >> "${ACTUAL_LOGFILE}" + if [ ! ${?} != 0 ]; then + log "${ACTUAL_LOGFILE}" "This release has already been tested." + rm -f "$LOCK_FILE"; + exit 1; + fi + fi +} + + + +# ---------------------------------------------------------------------------------------- +# get CGAL +# ---------------------------------------------------------------------------------------- +get_cgal() +{ + if [ -z "$CGAL_LOCATION" ]; then + for i in `cat LATEST` + do + CGAL_LOCATION="${CGAL_URL}/${i}"; + CGAL_ZIPFILE="${i}"; + done + else + CGAL_ZIPFILE=`echo "$CGAL_LOCATION" | sed 's|.*/||'` + fi + + CGAL_RELEASE_ID=`echo $CGAL_ZIPFILE | sed "s/.tar.gz//"` + if [ ! "${CGAL_RELEASE_ID}" = "${CGAL_ZIPFILE}" ]; then + USE_TARGZ="y" + else + CGAL_RELEASE_ID=`echo $CGAL_ZIPFILE | sed "s/.tar.bz2//"` + if [ ! "${CGAL_RELEASE_ID}" = "${CGAL_ZIPFILE}" ]; then + USE_TARBZ="y" + fi + fi + + log "${ACTUAL_LOGFILE}" "CGAL_ZIPFILE = ${CGAL_ZIPFILE}" + log "${ACTUAL_LOGFILE}" "CGAL_RELEASE_ID = ${CGAL_RELEASE_ID}" + + log "${ACTUAL_LOGFILE}" "getting CGAL" + rm -f "${CGAL_ZIPFILE}" + if [ -n "${USE_CURL}" ]; then + ${CURL} ${CURL_OPTS} "${CGAL_LOCATION}" >> "${ACTUAL_LOGFILE}" 2>&1 + else + ${WGET} ${WGET_OPTS} "${CGAL_LOCATION}" >> "${ACTUAL_LOGFILE}" 2>&1 + fi + if [ ${?} != 0 ]; then + error "Could not get CGAL" + fi + log_done "${ACTUAL_LOGFILE}" +} + + +# ---------------------------------------------------------------------------------------- +# Unzips and untars the downloaded CGAL release +# ---------------------------------------------------------------------------------------- +unzip_cgal() +{ + cd "${CGAL_ROOT}" + + log "${ACTUAL_LOGFILE}" "unzipping CGAL" + if [ "${USE_TARGZ}" = "y" ]; then + DECOMPRESSOR="${GUNZIP}" + log_done "${ACTUAL_LOGFILE}" + fi + + if [ "${USE_TARBZ}" = "y" ]; then + DECOMPRESSOR="bunzip2" + fi + + log "${ACTUAL_LOGFILE}" "untarring CGAL" + ${DECOMPRESSOR} -c "${CGAL_ZIPFILE}" | ${TAR} xf - >> "${ACTUAL_LOGFILE}" 2>&1 + if [ ${?} != 0 ]; then + error "Could not untar CGAL" + fi + + # check, if CGAL_DIR exists + if [ -d "${CGAL_ROOT}/${CGAL_RELEASE_ID}" ]; then + # Reset CGAL-I symlink + log "${ACTUAL_LOGFILE}" "Resetting CGAL-I symlink to ${CGAL_ROOT}/${CGAL_RELEASE_ID}" + rm -f CGAL-I + ln -s "${CGAL_ROOT}/${CGAL_RELEASE_ID}" CGAL-I + # Reset CGAL-3.x-I symlink + CGAL_RELEASE=`echo "${CGAL_RELEASE_ID}" | sed 's/I\([^-]*\)-.*/I\1/'` + log "${ACTUAL_LOGFILE}" "Resetting ${CGAL_RELEASE} symlink to ${CGAL_ROOT}/${CGAL_RELEASE_ID}" + rm -f "${CGAL_RELEASE}" + ln -s "${CGAL_ROOT}/${CGAL_RELEASE_ID}" "${CGAL_RELEASE}" + else + error "directory ${CGAL_ROOT}/${CGAL_RELEASE_ID} does not exist" + fi + + log_done "${ACTUAL_LOGFILE}" +} + + + +# Parse command line arguments +for arg in "$@" +do + case "$arg" in + "-c") + echo "Using latest unzipped release instead of getting a new one from the server" + USE_LATEST_UNZIPPED="y" + ;; + "-l") + echo "Not uploading results to dashboard" + DO_NOT_UPLOAD="y" + ;; + "-n") + echo "No testsuite will be launched. Installation only." + DO_NOT_TEST="y" + ;; + "-s") + echo "Showing progress." + SHOW_PROGRESS="y" + ;; + "-k") + echo "Compiled test/ directory will be kept." + KEEP_TESTS="y" + ;; + "-d") + echo "The testsuite will be launched through docker" + WITH_DOCKER="y" + ;; + *) + CGAL_LOCATION=$arg + esac +done + +# Load settings +if [ -f "$CGAL_ROOT/.autocgalrc" ]; then + . "$CGAL_ROOT/.autocgalrc" +else + echo "CONFIGURATION FILE .autocgalrc NOT FOUND" >&2; + exit 1 +fi + + +CGAL_DIR=`readlink "${CGAL_ROOT}/CGAL-I"` +source "${CGAL_DIR}/developer_scripts/log.sh" +LOGS_DIR="${CGAL_ROOT}/AUTOTEST_LOGS" +LOCK_FILE="${CGAL_ROOT}/autotest_cgal_with_cmake.lock" +LIST_TEST_PACKAGES="${CGAL_ROOT}/list_test_packages" + +# Setup logfile +ACTUAL_LOGFILE="${CGAL_ROOT}/`basename ${0}`.log" +rm -f "${ACTUAL_LOGFILE}" + +echo "Running `basename ${0}` "'$Revision$' >> "${ACTUAL_LOGFILE}" + +cd "$CGAL_ROOT" + +# Starts the process + +if [ -z "${USE_LATEST_UNZIPPED}" ]; then + if [ -z "$CGAL_LOCATION" ]; then + download_latest + abort_if_latest_already_tested + fi + get_cgal + unzip_cgal +fi + +if [ "${WITH_DOCKER}" = "y" ]; then + #launch docker container + echo "export SHOW_PROGRESS=$SHOW_PROGRESS"> env.sh + echo "export KEEP_TESTS=$KEEP_TESTS">> env.sh + echo "export DO_NOT_UPLOAD=$DO_NOT_UPLOAD">> env.sh + echo "export DO_NOT_TEST=$DO_NOT_TEST">> env.sh + echo "export SCP=$SCP">> env.sh + echo "export WGET=$WGET">> env.sh + echo "export WGET_OPTS=\"$WGET_OPTS\"">> env.sh + echo "export CURL=$CURL">> env.sh + echo "export CURL_OPTS=\"$CURL_OPTS\"">> env.sh + echo "export CGAL_URL=$CGAL_URL">> env.sh + echo "export UPLOAD_RESULT_DESTINATION=$UPLOAD_RESULT_DESTINATION">> env.sh + echo "export LATEST_LOCATION=$LATEST_LOCATION">> env.sh + echo "export TAR=$TAR">> env.sh + echo "export GZIP=$GZIP">> env.sh + echo "export GUNZIP=$GUNZIP">> env.sh + echo "export COMPRESSOR=$COMPRESSOR">> env.sh + echo "export CONSOLE_OUTPUT=$CONSOLE_OUTPUT">> env.sh + echo "export CGAL_ROOT=/cgal_root">> env.sh + echo "export USE_TARGZ=$USE_TARGZ">> env.sh + echo "export USE_TARBZ=$USE_TARBZ">> env.sh + echo "export CGAL_RELEASE=$CGAL_RELEASE">> env.sh + echo "export CGAL_DIR=/cgal_root/\${CGAL_LAST}">>env.sh + echo "export LIST_TEST_PACKAGES=/cgal_root/list_test_packages">> env.sh + echo "export LOGS_DIR=/cgal_root/AUTOTEST_LOGS">> env.sh + echo "export LOCK_FILE=/cgal_root/autotest_cgal_with_cmake.lock">> env.sh + echo "export ACTUAL_LOGFILE=/cgal_root/\`basename \${0}\`.log">> env.sh + docker build -t debian:cross-compilation ${DOCKER_DIR_PATH} + docker run --rm -t -e CGAL_LAST=CGAL-4.14-Ic-140 -v ~/foutoir/ssh_testsuite/ssh:/tmp_ssh -v ~/3rdPartyLibs/RPi_libs:/deps -v ${CGAL_ROOT}/:/cgal_root debian:cross-compilation +else + bash ${CGAL_DIR}/developer_scripts/run_testsuite_with_cmake +fi diff --git a/Scripts/developer_scripts/log.sh b/Scripts/developer_scripts/log.sh new file mode 100644 index 00000000000..05ebc8eab64 --- /dev/null +++ b/Scripts/developer_scripts/log.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +log() +{ + LOGFILE=${1} + shift + if [ -n "${CONSOLE_OUTPUT}" ]; then + printf "${*} ...\n" + fi + printf "\n-------------------------------------------------------\n" >> "${LOGFILE}" + printf " ${*} ...\n" >> "${LOGFILE}" + printf "\n-------------------------------------------------------\n" >> "${LOGFILE}" +} + +log_done() +{ + if [ -n "${CONSOLE_OUTPUT}" ]; then + printf \ + " done\n-------------------------------------------------------\n" + fi + printf "\n-------------------------------------------------------\n" >> "${1}" + printf " **DONE**\n" >> "${1}" + printf "\n-------------------------------------------------------\n" >> "${1}" +} + diff --git a/Scripts/developer_scripts/run_testsuite_with_cmake b/Scripts/developer_scripts/run_testsuite_with_cmake index 67bb9c339e2..2be3b2884d6 100644 --- a/Scripts/developer_scripts/run_testsuite_with_cmake +++ b/Scripts/developer_scripts/run_testsuite_with_cmake @@ -5,6 +5,15 @@ #### LAUNCH CTEST #### ########################## +source "${CGAL_DIR}/developer_scripts/log.sh" +# Load settings +echo "CGAL_ROOT is $CGAL_ROOT" +if [ -f "$CGAL_ROOT/.autocgalrc" ]; then + . "$CGAL_ROOT/.autocgalrc" +else + echo "CONFIGURATION FILE .autocgalrc NOT FOUND" >&2; + exit 1 +fi # ---------------------------------------------------------------------------------------- # function to print the value of variable $1 @@ -113,8 +122,7 @@ build_platforms_list() setup_dirs() { # dir for the actual release - CGAL_DIR=`readlink "${CGAL_ROOT}/CGAL-I"` - + CGAL_TEST_DIR=${CGAL_DIR}/test if [ ! -d "${CGAL_DIR}/cmake" ]; then @@ -162,8 +170,6 @@ setup_dirs() collect_all_reference_platforms fi - #todo - PLATFORMS="raspberry" for PLATFORM in ${PLATFORMS}; do CGAL_BINARY_DIR=${CGAL_BINARY_DIR_BASE}/${PLATFORM} @@ -239,16 +245,15 @@ run_test_on_host_and_platform() NUMBER_OF_PROCESSORS="`value_of PROCESSORS_${HOST}`" CGAL_BINARY_DIR=${CGAL_BINARY_DIR_BASE}/${PLATFORM} - if [ -d "${REFERENCE_PLATFORMS_DIR}/${PLATFORM}" ] ; then - if [ -f "${REFERENCE_PLATFORMS_DIR}/${PLATFORM}/init.cmake" ]; then - INIT_FILE="${REFERENCE_PLATFORMS_DIR}/${PLATFORM}/init.cmake" - fi - fi cd "${CGAL_BINARY_DIR}" log "${ACTUAL_LOGFILE}.test.${PLATFORM}" "Testing on host ${HOST} and platform ${PLATFORM}" - #todo : check if that still works - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DBUILD_TESTING=OFF -DWITH_tests=OFF -DWITH_CGAL_Qt5=OFF -DCGAL_HEADER_ONLY=ON $CGAL_DIR > installation.log - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' VERBOSE=1 $CGAL_DIR + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DBUILD_TESTING=OFF -DWITH_tests=OFF -DWITH_CGAL_Qt5=OFF -DCGAL_HEADER_ONLY=ON $CGAL_DIR > installation.log 2>&1 + rm CMakeCache.txt + if [ -z "${SHOW_PROGRESS}" ]; then + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' VERBOSE=1 $CGAL_DIR >/dev/null 2>&1 + else + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' VERBOSE=1 $CGAL_DIR + fi LIST_TEST_FILE="${CGAL_ROOT}/list_test_packages" LIST_TEST_PACKAGES=$(source ${LIST_TEST_FILE}) TO_TEST="" @@ -261,8 +266,7 @@ run_test_on_host_and_platform() TO_TEST="${TO_TEST}|$pkg" fi done - NUMBER_OF_PROCESSORS="`value_of PROCESSORS_localhost`" - + CTEST_OPTS="-T Start -T Test -j${NUMBER_OF_PROCESSORS} ${DO_NOT_TEST:+-E execution___of__} --timeout 1200" if [ -z "${SHOW_PROGRESS}" ]; then ctest ${CTEST_OPTS} ${TO_TEST:+-L ${TO_TEST} } ${KEEP_TESTS:+-FC .}> tmp.txt @@ -273,6 +277,7 @@ run_test_on_host_and_platform() ## GET RESULTS ## ##################### TAG_DIR=$(awk '/^Create new tag: /{print $4F}' tmp.txt) + rm tmp.txt cd Testing/${TAG_DIR} #python $CGAL_DIR/test/parse-ctest-dashboard-xml.py $CGAL_TESTER $PLATFORM RESULT_FILE=./"results_${CGAL_TESTER}_${PLATFORM}.txt" @@ -287,13 +292,14 @@ run_test_on_host_and_platform() #echo "Host-specific installation log file: ../installation.log" >> "$RESULT_FILE" grep -e "^-- USING " "${CGAL_BINARY_DIR}/installation.log" >> $RESULT_FILE echo "------------" >> "$RESULT_FILE" - python3 /home/gimeno/CGAL/Testsuite/test/parse-ctest-dashboard-xml.py $CGAL_TESTER $PLATFORM + python3 ${CGAL_DIR}/test/parse-ctest-dashboard-xml.py $CGAL_TESTER $PLATFORM for file in $(ls|grep _Tests); do mv $file "$(echo "$file" | sed 's/_Tests//g')" done OUTPUT_FILE=results_${CGAL_TESTER}_${PLATFORM}.tar TEST_REPORT="TestReport_${CGAL_TESTER}_${PLATFORM}" + rm -f $OUTPUT_FILE $OUTPUT_FILE.gz tar cf $OUTPUT_FILE results_${CGAL_TESTER}_${PLATFORM}.txt */"$TEST_REPORT" echo @@ -306,10 +312,7 @@ run_test_on_host_and_platform() run_test_on_host() { HOST=${1} - - #todo PLATFORMS=`value_of COMPILERS_${HOST}` - PLATFORMS="raspberry" if [ "${PLATFORMS}" = "all" ]; then collect_all_current_platforms "${CGAL_BINARY_DIR_BASE}" fi @@ -344,7 +347,7 @@ log "${ACTUAL_LOGFILE}" "running the testsuites" if [ -n "${CONSOLE_OUTPUT}" ]; then printf "\n-------------------------------------------------------\n" fi - for HOST in ${BUILD_HOSTS}; do - run_test_on_host ${HOST} & + run_test_on_host ${HOST} done +