fix errors

This commit is contained in:
Laurent Rineau 2025-05-26 17:44:00 +02:00
parent b8d043ff76
commit d4f790def6
3 changed files with 208 additions and 200 deletions

View File

@ -9,11 +9,6 @@ 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/Releases"
export UPLOAD_RESULT_DESTINATION="cgaltest@cgaltest.geometryfactory.com:incoming"
export UPLOAD_DEMOS_DESTINATION="cgaltest@cgaltest.geometryfactory.com:public_html/incoming"
@ -22,7 +17,8 @@ export TAR="tar"
export GUNZIP="gunzip"
export COMPRESSOR="gzip"
export CONSOLE_OUTPUT="y"
export CGAL_HOME=$(pwd | sed -E 's/\/cygdrive\/([a-z])\//\U\1:\//')
CGAL_HOME=$(pwd | sed -E 's/\/cygdrive\/([a-z])\//\U\1:\//')
export CGAL_HOME
export USE_TARGZ="y"
export USE_TARBZ="n"
export CGAL_RELEASE=""
@ -34,14 +30,10 @@ export INSTALLATION_DIR=""
export TESTSUITE_DIR=""
USE_LATEST_UNZIPPED=""
# ----------------------------------------------------------------------------------------
# produce a string containing the actual date/time
# (used to identify files)
# ----------------------------------------------------------------------------------------
datestr()
{
date +%d%m%Y%H%M
}
WGET="wget"
WGET_OPTS=(--no-check-certificate --no-verbose)
CURL="curl"
CURL_OPTS=(-k --remote-name --silent --location-trusted)
# ----------------------------------------------------------------------------------------
# Logging functions
@ -51,11 +43,13 @@ log()
LOGFILE=${1}
shift
if [ -n "${CONSOLE_OUTPUT}" ]; then
printf "${*} ...\n"
printf "%s ...\n" "${*}"
fi
printf "\n-------------------------------------------------------\n" >> "${LOGFILE}"
printf " ${*} ...\n" >> "${LOGFILE}"
printf "\n-------------------------------------------------------\n" >> "${LOGFILE}"
{
printf "\n-------------------------------------------------------\n"
printf " %s ...\n" "$*"
printf "\n-------------------------------------------------------\n"
} >> "${LOGFILE}"
}
log_done()
@ -64,30 +58,42 @@ log_done()
printf \
" done\n-------------------------------------------------------\n"
fi
printf "\n-------------------------------------------------------\n" >> "${1}"
printf " **DONE**\n" >> "${1}"
printf "\n-------------------------------------------------------\n" >> "${1}"
{
printf "\n-------------------------------------------------------\n"
printf " **DONE**\n"
printf "\n-------------------------------------------------------\n"
} >> "${1}"
}
error()
{
if [ -n "${CONSOLE_OUTPUT}" ]; then
printf "\nERROR: ${*}, exiting.\n" >&2
printf "\nERROR: %s, exiting.\n" "$*" >&2
fi
printf "\nERROR: ${*}, exiting.\n" >> "${ACTUAL_LOGFILE}"
${COMPRESSOR} -9f "${ACTUAL_LOGFILE}"
FILENAME="${CGAL_RELEASE_ID}-log`datestr`.gz"
mv "${ACTUAL_LOGFILE}.gz" "${LOGS_DIR}/${FILENAME}"
if [ ! "${MAIL_ADDRESS}" = "must_be_set_in_.autocgalrc" ]; then
for i in ${MAIL_ADDRESS}; do
printf "ERROR\n${LOGS_DIR}/${FILENAME}\n" | \
${SENDMAIL} -s "completed autotest" "${i}"
printf "\nERROR: %s, exiting.\n" "$*" >> "$ACTUAL_LOGFILE"
"$COMPRESSOR" -9f "$ACTUAL_LOGFILE"
FILENAME="${CGAL_RELEASE_ID}-log$(date_str).gz"
mv "${ACTUAL_LOGFILE}.gz" "$LOGS_DIR/$FILENAME"
if [ ! "$MAIL_ADDRESS" = "must_be_set_in_.autocgalrc" ]; then
for i in $MAIL_ADDRESS; do
printf "ERROR\n%s\n" "$LOGS_DIR/$FILENAME" | \
"$SENDMAIL" -s "completed autotest" "$i"
done
fi
rm -rf "$LOCK_FILE";
rm -rf "$LOCK_FILE"
exit 1
}
# ----------------------------------------------------------------------------------------
# produce a string containing the actual date/time
# (used to identify files)
# ----------------------------------------------------------------------------------------
date_str()
{
date +%d%m%Y%H%M
}
# ----------------------------------------------------------------------------------------
# Downloads the file "LATEST" whose contents indicates which release to test
# ----------------------------------------------------------------------------------------
@ -96,14 +102,8 @@ download_latest()
if [ -r "LATEST" ]; then
rm -rf LATEST
fi
log "${ACTUAL_LOGFILE}" "getting LATEST"
if [ -n "${USE_CURL}" ]; then
echo "using curl..."
${CURL} ${CURL_OPTS} "${LATEST_LOCATION}" >> "${ACTUAL_LOGFILE}" 2>&1
else
echo "using wget..."
${WGET} ${WGET_OPTS} "${LATEST_LOCATION}" >> "${ACTUAL_LOGFILE}" 2>&1
fi
log "$ACTUAL_LOGFILE" "getting LATEST"
download_file "$LATEST_LOCATION" >> "$ACTUAL_LOGFILE" 2>&1
if [ ! -f "LATEST" ]; then
error "COULD NOT DOWNLOAD LATEST!"
fi
@ -133,40 +133,34 @@ abort_if_latest_already_tested()
get_cgal()
{
if [ -z "$CGAL_LOCATION" ]; then
for i in `cat LATEST`
do
CGAL_LOCATION="${CGAL_URL}/${i}";
CGAL_ZIPFILE="${i}";
done
while IFS= read -r i; do
CGAL_LOCATION="${CGAL_URL}/$i"
CGAL_ZIPFILE="$i"
done < LATEST
else
CGAL_ZIPFILE=`echo "$CGAL_LOCATION" | sed 's|.*/||'`
CGAL_ZIPFILE="${CGAL_LOCATION##*/}"
fi
CGAL_RELEASE_ID=`echo $CGAL_ZIPFILE | sed "s/.tar.gz//"`
echo ${CGAL_RELEASE_ID} |tee last_release_id
if [ ! "${CGAL_RELEASE_ID}" = "${CGAL_ZIPFILE}" ]; then
CGAL_RELEASE_ID="${CGAL_ZIPFILE%.tar.gz}"
echo "$CGAL_RELEASE_ID" | tee last_release_id
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
CGAL_RELEASE_ID="${CGAL_ZIPFILE%.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" "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
log "$ACTUAL_LOGFILE" "getting CGAL"
rm -f "$CGAL_ZIPFILE"
if ! download_file "$CGAL_LOCATION" >> "$ACTUAL_LOGFILE" 2>&1; then
error "Could not get CGAL"
fi
log_done "${ACTUAL_LOGFILE}"
log_done "$ACTUAL_LOGFILE"
}
@ -175,40 +169,39 @@ get_cgal()
# ----------------------------------------------------------------------------------------
unzip_cgal()
{
cd "${CGAL_HOME}"
cd "$CGAL_HOME" || exit
log "${ACTUAL_LOGFILE}" "unzipping CGAL"
if [ "${USE_TARGZ}" = "y" ]; then
DECOMPRESSOR="${GUNZIP}"
log_done "${ACTUAL_LOGFILE}"
log "$ACTUAL_LOGFILE" "unzipping CGAL"
if [ "$USE_TARGZ" = "y" ]; then
DECOMPRESSOR="$GUNZIP"
log_done "$ACTUAL_LOGFILE"
fi
if [ "${USE_TARBZ}" = "y" ]; then
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"
log "$ACTUAL_LOGFILE" "untarring CGAL"
if ! "$DECOMPRESSOR" -c "$CGAL_ZIPFILE" | "$TAR" xf - >> "$ACTUAL_LOGFILE" 2>&1; then
error "Could not extract CGAL"
fi
# check, if CGAL_DIR exists
if [ -d "${CGAL_HOME}/${CGAL_RELEASE_ID}" ]; then
if [ -d "$CGAL_HOME/$CGAL_RELEASE_ID" ]; then
# Reset CGAL-I symlink
log "${ACTUAL_LOGFILE}" "Resetting CGAL-I symlink to ${CGAL_HOME}/${CGAL_RELEASE_ID}"
log "$ACTUAL_LOGFILE" "Resetting CGAL-I symlink to $CGAL_HOME/$CGAL_RELEASE_ID"
rm -f CGAL-I
ln -s "${CGAL_HOME}/${CGAL_RELEASE_ID}" CGAL-I
ln -s "$CGAL_HOME/$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_HOME}/${CGAL_RELEASE_ID}"
rm -f "${CGAL_RELEASE}"
ln -s "${CGAL_HOME}/${CGAL_RELEASE_ID}" "${CGAL_RELEASE}"
CGAL_RELEASE="${CGAL_RELEASE_ID%%-*}"
log "$ACTUAL_LOGFILE" "Resetting $CGAL_RELEASE symlink to $CGAL_HOME/$CGAL_RELEASE_ID"
rm -f "$CGAL_RELEASE"
ln -s "$CGAL_HOME/$CGAL_RELEASE_ID" "$CGAL_RELEASE"
else
error "directory ${CGAL_HOME}/${CGAL_RELEASE_ID} does not exist"
error "directory $CGAL_HOME/$CGAL_RELEASE_ID does not exist"
fi
log_done "${ACTUAL_LOGFILE}"
log_done "$ACTUAL_LOGFILE"
}
@ -237,7 +230,7 @@ do
echo "Compiled test/ directory will be kept."
KEEP_TESTS="y"
;;
"-g")
"-g")
echo "Run testsuite from GIT branch"
export INSTALLATION_DIR="Installation/"
export TESTSUITE_DIR="Testsuite/"
@ -250,26 +243,37 @@ do
done
# Load settings
if [ -f "${CGAL_HOME}/.autocgalrc" ]; then
# shellcheck source=/dev/null
. "${CGAL_HOME}/.autocgalrc"
else
echo "CONFIGURATION FILE .autocgalrc NOT FOUND" >&2;
exit 1
fi
if [ -n "$USE_CURL" ]; then
download_file() {
"$CURL" "${CURL_OPTS[@]}" "$1"
}
else
download_file() {
"$WGET" "${WGET_OPTS[@]}" "$1"
}
fi
LOGS_DIR="${CGAL_HOME}/AUTOTEST_LOGS"
LOCK_FILE="${CGAL_HOME}/autotest_cgal_with_cmake.lock"
# Setup logfile
ACTUAL_LOGFILE="${CGAL_HOME}/`basename ${0}`.log"
ACTUAL_LOGFILE="${CGAL_HOME}/$(basename "${0}").log"
rm -f "${ACTUAL_LOGFILE}"
echo "Running `basename ${0}` "'$Revision$' >> "${ACTUAL_LOGFILE}"
echo "Running $(basename "${0}") \$Revision\$" >> "${ACTUAL_LOGFILE}"
cd "$CGAL_HOME"
cd "$CGAL_HOME" || exit
# Starts the process
if [ -z "${USE_LATEST_UNZIPPED}" -a -z "${SCRIPTS_DIR}" ]; then
if [ -z "${USE_LATEST_UNZIPPED}" ] && [ -z "${SCRIPTS_DIR}" ]; then
if [ -z "$CGAL_LOCATION" ]; then
download_latest
abort_if_latest_already_tested
@ -279,59 +283,19 @@ if [ -z "${USE_LATEST_UNZIPPED}" -a -z "${SCRIPTS_DIR}" ]; then
fi
#reset CGAL-DIR with the updated CGAL-I
if [ -n "${SCRIPTS_DIR}" ]; then
CGAL_DIR=`readlink "${CGAL_HOME}/CGAL-git"`
CGAL_DIR=$(readlink "${CGAL_HOME}/CGAL-git")
else
CGAL_DIR=`readlink "${CGAL_HOME}/CGAL-I"`
CGAL_DIR=$(readlink "${CGAL_HOME}/CGAL-I")
fi
CGAL_DIR=$(echo "$CGAL_DIR" | sed -E 's/\/cygdrive\/([a-z])\//\U\1:\//')
CGAL_RELEASE_ID=$(cat last_release_id)
for HOST in ${BUILD_HOSTS}; do
if [ "$HOST" != "localhost" ]; 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 GUNZIP=$GUNZIP">> env.sh
echo "export COMPRESSOR=$COMPRESSOR">> env.sh
echo "export CONSOLE_OUTPUT=$CONSOLE_OUTPUT">> env.sh
echo "export CGAL_HOME=/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 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
echo "export REFERENCE_PLATFORMS_DIR=$REFERENCE_PLATFORMS_DIR">>env.sh
echo "export INSTALLATION_DIR=$INSTALLATION_DIR">>env.sh
echo "export TESTSUITE_DIR=$TESTSUITE_DIR">>env.sh
echo "export SCRIPTS_DIR=$SCRIPTS_DIR">>env.sh
docker pull cgal/testsuite-docker:debian-stable-cross-compilation-for-arm
if [ -z "${SCRIPTS_DIR}" ]; then #if not from branch
echo "export CGAL_DIR=/cgal_root/\${CGAL_LAST}">>env.sh
docker run --rm -t -e CGAL_LAST="${CGAL_RELEASE_ID}" -e HOST="${HOST}" -v ${CGAL_HOME}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_HOME}:/cgal_root cgal/testsuite-docker:debian-stable-cross-compilation-for-arm
else
echo "export CGAL_DIR=/cgal_root/CGAL-git">>env.sh
docker run --rm -t -e HOST="${HOST}" -v ${CGAL_HOME}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_HOME}:/cgal_root -v${CGAL_DIR}:/cgal_root/CGAL-git cgal/testsuite-docker:debian-stable-cross-compilation-for-arm
fi
else
HOST=$HOST bash -$- ${CGAL_DIR}/${SCRIPTS_DIR}developer_scripts/run_testsuite_with_ctest
fi
HOST=$HOST bash -$- "${CGAL_DIR}/${SCRIPTS_DIR}developer_scripts/run_testsuite_with_ctest"
done
cd "${CGAL_HOME}"
cd "${CGAL_HOME}" || exit
if [ -e "LATEST" ]; then
mv LATEST RELEASE_NR
fi

View File

@ -5,11 +5,13 @@ log()
LOGFILE=${1}
shift
if [ -n "${CONSOLE_OUTPUT}" ]; then
printf "${*} ...\n"
printf "%s ...\n" "${*}"
fi
printf "\n-------------------------------------------------------\n" >> "${LOGFILE}"
printf " ${*} ...\n" >> "${LOGFILE}"
printf "\n-------------------------------------------------------\n" >> "${LOGFILE}"
{
printf "\n-------------------------------------------------------\n"
printf " %s ...\n" "$*"
printf "\n-------------------------------------------------------\n"
} >> "${LOGFILE}"
}
log_done()
@ -18,8 +20,10 @@ log_done()
printf \
" done\n-------------------------------------------------------\n"
fi
printf "\n-------------------------------------------------------\n" >> "${1}"
printf " **DONE**\n" >> "${1}"
printf "\n-------------------------------------------------------\n" >> "${1}"
{
printf "\n-------------------------------------------------------\n"
printf " **DONE**\n"
printf "\n-------------------------------------------------------\n"
} >> "${1}"
}

View File

@ -1,13 +1,25 @@
#!/bin/bash
#usage : script [-c -l -n -s -k] testsuite_dir
if command -v rsync >/dev/null 2>&1; then
rsync_scp() {
rsync -avz --chmod=ugo=rwX "$@"
}
else
rsync_scp() {
command scp "$@"
}
fi
##########################
#### LAUNCH CTEST ####
##########################
# shellcheck source=/dev/null
source "${CGAL_DIR}/${SCRIPTS_DIR}developer_scripts/log.sh"
# Load settings
if [ -f "${CGAL_HOME}/.autocgalrc" ]; then
# shellcheck source=/dev/null
. "${CGAL_HOME}/.autocgalrc"
else
echo "CONFIGURATION FILE .autocgalrc NOT FOUND" >&2;
@ -19,7 +31,7 @@ fi
# ----------------------------------------------------------------------------------------
value_of()
{
_value=`eval "printf '$'${1}"`
_value=$(eval "printf '$'${1}")
eval "printf \"${_value}\""
}
@ -27,7 +39,7 @@ value_of()
# produce a string containing the actual date/time
# (used to identify files)
# ----------------------------------------------------------------------------------------
datestr()
date_str()
{
date +%d%m%Y%H%M
}
@ -70,7 +82,7 @@ collect_all_reference_platforms()
{
log "${ACTUAL_LOGFILE}" "Indicated to build on ALL platform folders"
if [ -d "${REFERENCE_PLATFORMS_DIR}" ]; then
cd "${REFERENCE_PLATFORMS_DIR}"
cd "${REFERENCE_PLATFORMS_DIR}" || exit 1
for PLATFORM in * ; do
if [ -d "${PLATFORM}" ]; then
add_to_platforms "${PLATFORM}"
@ -88,7 +100,7 @@ collect_all_reference_platforms()
collect_all_current_platforms()
{
PLATFORMS=""
cd "${1}"
cd "${1}" || exit 1
for PLATFORM in * ; do
if [ -d "${PLATFORM}" ]; then
PLATFORMS="${PLATFORMS} ${PLATFORM}"
@ -121,10 +133,10 @@ build_platforms_list()
setup_dirs()
{
# dir for the actual release
if [ ! -d ${CGAL_DIR}/test ]; then
mkdir ${CGAL_DIR}/test
if [ ! -d "${CGAL_DIR}/test" ]; then
mkdir "${CGAL_DIR}/test"
#give all rights so that, if it is first created by docker, it is still editable without root access by the local user.
chmod 777 ${CGAL_DIR}/test
chmod 777 "${CGAL_DIR}/test"
fi
CGAL_TEST_DIR=${CGAL_DIR}/test
@ -142,7 +154,7 @@ setup_dirs()
CGAL_RELEASE_DIR="${CGAL_DIR}"
if [ -z "$SCRIPTS_DIR" ]; then
CGAL_RELEASE_ID=`basename "${CGAL_RELEASE_DIR}"`
CGAL_RELEASE_ID=$(basename "${CGAL_RELEASE_DIR}")
else
CGAL_GIT_VERSION=$(sed -n '/CGAL_VERSION /s/#define CGAL_VERSION //p'<"$CGAL_DIR/${INSTALLATION_DIR}include/CGAL/version.h" | sed -n 's/-\w*//p')
MINIMALIST_DATE=$(date +%y%m%d)
@ -170,8 +182,8 @@ setup_dirs()
# directories existing in the reference release are added to $PLATFORMS
#
PLATFORMS=""
build_platforms_list "`value_of BUILD_ON_${HOST}`"
build_platforms_list "`value_of COMPILERS_${HOST}`"
build_platforms_list "$(value_of "BUILD_ON_${HOST}")"
build_platforms_list "$(value_of "COMPILERS_${HOST}")"
if [ -n "${USE_REFERENCE_PLATFORMS}" ]; then
collect_all_reference_platforms
@ -207,14 +219,14 @@ put_on_web()
{
log "${ACTUAL_LOGFILE}" "Uploading results ${1} to $UPLOAD_RESULT_DESTINATION/$2"
"$SCP" "${1}" "$UPLOAD_RESULT_DESTINATION/$2" >> "${ACTUAL_LOGFILE}"
rsync_scp "${1}" "$UPLOAD_RESULT_DESTINATION/$2" >> "${ACTUAL_LOGFILE}"
}
# ----------------------------------------------------------------------------------------
put_demos_on_web()
{
log "${ACTUAL_LOGFILE}" "Uploading demos ${1} to $UPLOAD_DEMOS_DESTINATION/$2"
"$SCP" "${1}" "$UPLOAD_DEMOS_DESTINATION/$2" >> "${ACTUAL_LOGFILE}"
rsync_scp "${1}" "$UPLOAD_DEMOS_DESTINATION/$2" >> "${ACTUAL_LOGFILE}"
}
@ -222,7 +234,7 @@ collect_demos_binaries()
{
PLATFORM=${1}
cd "${CGAL_TEST_DIR}"
cd "${CGAL_TEST_DIR}" || exit 1
echo "COLLECT_DEMOS_BINARIES=$COLLECT_DEMOS_BINARIES"
if [ -n "$COLLECT_DEMOS_BINARIES" ]; then
@ -232,19 +244,19 @@ collect_demos_binaries()
DEMOS_TEST_DIR="${CGAL_DIR}/cmake/platforms/${PLATFORM}/test"
cp "${CGAL_DIR}/${SCRIPTS_DIR}developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh" "${DEMOS_TEST_DIR}"
cd ${DEMOS_TEST_DIR}
cd "${DEMOS_TEST_DIR}" || exit 1
for demo_dir in *_Demo; do
echo "pushd ${demo_dir}"
pushd "${demo_dir}"
bash ${DEMOS_TEST_DIR}/cgal_demo_copy_all_dlls_cygwin.sh "${demo_dir}_with_dlls" "${CONFIG_TYPE}"
mv "${demo_dir}_with_dlls" ${DEMOS_TEST_DIR}
popd
pushd "${demo_dir}" || exit 1
bash "${DEMOS_TEST_DIR}/cgal_demo_copy_all_dlls_cygwin.sh" "${demo_dir}_with_dlls" "${CONFIG_TYPE}"
mv "${demo_dir}_with_dlls" "${DEMOS_TEST_DIR}"
popd || exit 1
done
${TAR} cf "demos_${CGAL_TESTER}_${PLATFORM}.tar" *_Demo_with_dlls/*;
${TAR} cf "demos_${CGAL_TESTER}_${PLATFORM}.tar" ./*_Demo_with_dlls/*;
${COMPRESSOR} -9f "demos_${CGAL_TESTER}_${PLATFORM}.tar"
mv "demos_${CGAL_TESTER}_${PLATFORM}.tar.gz" ${CGAL_TEST_DIR}
mv "demos_${CGAL_TESTER}_${PLATFORM}.tar.gz" "${CGAL_TEST_DIR}"
else
echo "Don't collect demos binaries for platform $PLATFORM";
fi
@ -256,7 +268,7 @@ publish_results()
#
# collect results and put them on the web
#
cd "${CGAL_TEST_DIR}"
cd "${CGAL_TEST_DIR}" || exit 1
log "${ACTUAL_LOGFILE}.test.${PLATFORM}" "COLLECTING RESULTS ${PLATFORM}-${HOST}"
@ -270,11 +282,11 @@ publish_results()
${TAR} cf "test_results-${HOST}_${PLATFORM}.tar" "results_${CGAL_TESTER}_${PLATFORM}.tar.gz" "results_${CGAL_TESTER}_${PLATFORM}.txt"
${COMPRESSOR} -9f "test_results-${HOST}_${PLATFORM}.tar"
COMPILER=`printf "%s" "$1" | tr -c '[A-Za-z0-9]./[=-=]*_\'\''\":?() ' 'x'`
COMPILER=$(printf "%s" "$1" | tr -c '[A-Za-z0-9]./[=-=]*_'\''":?() ' 'x')
FILENAME="${CGAL_RELEASE_ID}_${CGAL_TESTER}-test`datestr`-${COMPILER}-cmake.tar.gz"
FILENAME="${CGAL_RELEASE_ID}_${CGAL_TESTER}-test$(date_str)-${COMPILER}-cmake.tar.gz"
LOGFILENAME="${CGAL_RELEASE_ID}-log`datestr`-${HOST}.gz"
LOGFILENAME="${CGAL_RELEASE_ID}-log$(date_str)-${HOST}.gz"
${COMPRESSOR} -9f "${ACTUAL_LOGFILE}.test.${PLATFORM}"
mv "${ACTUAL_LOGFILE}.test.${PLATFORM}.gz" "${LOGS_DIR}/${LOGFILENAME}"
@ -296,36 +308,46 @@ run_test_on_platform()
{
PLATFORM=${1}
NUMBER_OF_PROCESSORS="`value_of PROCESSORS_${HOST}`"
NUMBER_OF_PROCESSORS=$(value_of "PROCESSORS_${HOST}")
if [ -z "${NUMBER_OF_PROCESSORS}" ]; then
NUMBER_OF_PROCESSORS=1
fi
CGAL_BINARY_DIR=${CGAL_BINARY_DIR_BASE}/${PLATFORM}
cd "${CGAL_BINARY_DIR}"
cd "${CGAL_BINARY_DIR}" || exit 1
log "${ACTUAL_LOGFILE}.test.${PLATFORM}" "Testing on host ${HOST} and platform ${PLATFORM}"
if [ -f "${CGAL_HOME}/${REFERENCE_PLATFORMS_DIR}/${PLATFORM}/setup" ]; then
# shellcheck source=/dev/null
source "${CGAL_HOME}/${REFERENCE_PLATFORMS_DIR}/${PLATFORM}/setup"
else
INIT_FILE="${CGAL_HOME}/${REFERENCE_PLATFORMS_DIR}/${PLATFORM}.cmake"
if ! [ -f "${INIT_FILE}" ]; then
INIT_FILE=""
fi
fi
if [ ! -f "${INIT_FILE}" ]; then
echo "error NEED A INIT FILE !"
fi
cmake ${INIT_FILE:+"-C${INIT_FILE}"} -DCGAL_ENABLE_TESTING=ON -DWITH_tests=ON -DCGAL_TEST_SUITE=ON $CGAL_DIR>installation.log 2>&1
# cspell:disable-next-line
cmake ${INIT_FILE:+"-C${INIT_FILE}"} -DCGAL_ENABLE_TESTING=ON -DWITH_tests=ON -DCGAL_TEST_SUITE=ON "$CGAL_DIR" > installation.log 2>&1
rm CMakeCache.txt
CMAKE_OPTS="-DCGAL_TEST_SUITE=ON -DCMAKE_VERBOSE_MAKEFILE=ON -DWITH_tests=ON"
CMAKE_OPTS=()
if [ -n "${INIT_FILE}" ]; then
CMAKE_OPTS+=("-C${INIT_FILE}")
fi
CMAKE_OPTS+=("-DCGAL_ENABLE_TESTING=ON" "-DCGAL_TEST_SUITE=ON" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DWITH_tests=ON")
if [ -n "${SCRIPTS_DIR}" ]; then
CMAKE_OPTS="${CMAKE_OPTS} -DWITH_examples=ON -DWITH_demos=ON"
CMAKE_OPTS+=("-DWITH_examples=ON" "-DWITH_demos=ON")
fi
if [ -z "${SHOW_PROGRESS}" ]; then
cmake ${INIT_FILE:+"-C${INIT_FILE}"} -DCGAL_ENABLE_TESTING=ON ${CMAKE_OPTS} $CGAL_DIR >package_installation.log 2>&1
cmake "${CMAKE_OPTS[@]}" "$CGAL_DIR" > package_installation.log 2>&1
else
cmake ${INIT_FILE:+"-C${INIT_FILE}"} -DCGAL_ENABLE_TESTING=ON ${CMAKE_OPTS} $CGAL_DIR 2>&1 |tee package_installation.log
cmake "${CMAKE_OPTS[@]}" "$CGAL_DIR" 2>&1 | tee package_installation.log
fi
LIST_TEST_FILE="${CGAL_HOME}/list_test_packages"
if [ -f ${LIST_TEST_FILE} ]; then
LIST_TEST_PACKAGES=$(source ${LIST_TEST_FILE})
if [ -f "${LIST_TEST_FILE}" ]; then
# shellcheck source=/dev/null
LIST_TEST_PACKAGES=$(source "${LIST_TEST_FILE}")
fi
INIT=""
for pkg in $LIST_TEST_PACKAGES; do
@ -336,18 +358,27 @@ run_test_on_platform()
TO_TEST="${TO_TEST}|$pkg"
fi
done
#unsets the limit of 1024 bits for the logs through ssh
#unset the limit of 1024 bits for the logs through ssh
echo "SET(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 1000000000)" > CTestCustom.cmake
echo "SET(CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE 1000000000)" >> CTestCustom.cmake
CTEST_OPTS="-T Start -T Test --timeout 1200 ${DO_NOT_TEST:+-E execution___of__}"
# add a configuration file for the tests (required since CMake-3.32)
cat <<EOF > CTestConfiguration.ini
SourceDirectory: ${CGAL_RELEASE_DIR}
BuildDirectory: ${CGAL_BINARY_DIR}
EOF
CTEST_OPTS=(-T Start -T Test --timeout 1200)
if [ -n "${DO_NOT_TEST}" ]; then
CTEST_OPTS+=(-E execution___of__)
fi
if [ -n "$CONFIG_TYPE" ]; then
CTEST_OPTS="-C ${CONFIG_TYPE} ${CTEST_OPTS}"
CTEST_OPTS=(-C "${CONFIG_TYPE}" "${CTEST_OPTS[@]}")
fi
if [ -z "${SHOW_PROGRESS}" ]; then
ctest ${TO_TEST:+-L ${TO_TEST} } ${CTEST_OPTS} -j${NUMBER_OF_PROCESSORS} ${KEEP_TESTS:+-FC .}>tmp.txt
ctest ${TO_TEST:+-L "${TO_TEST}"} "${CTEST_OPTS[@]}" "-j${NUMBER_OF_PROCESSORS}" ${KEEP_TESTS:+-FC .} > tmp.txt
else
ctest ${TO_TEST:+-L ${TO_TEST} } ${CTEST_OPTS} -j${NUMBER_OF_PROCESSORS} ${KEEP_TESTS:+-FC .}|tee tmp.txt
ctest ${TO_TEST:+-L "${TO_TEST}"} "${CTEST_OPTS[@]}" "-j${NUMBER_OF_PROCESSORS}" ${KEEP_TESTS:+-FC .} | tee tmp.txt
fi
#####################
@ -355,25 +386,33 @@ run_test_on_platform()
#####################
TAG_DIR=$(awk '/^Create new tag: /{print $4F}' tmp.txt)
rm tmp.txt
cd Testing/${TAG_DIR}
cd "Testing/${TAG_DIR}" || exit 1
RESULT_FILE=./"results_${CGAL_TESTER}_${PLATFORM}.txt"
rm -f "$RESULT_FILE"
touch "$RESULT_FILE"
if [ -z "${SCRIPTS_DIR}" ]; then
sed -n '/CGAL_VERSION /s/#define //p' < "$CGAL_DIR/${INSTALLATION_DIR}include/CGAL/version.h" >> "$RESULT_FILE"
else
echo "CGAL_VERSION ${CGAL_GIT_VERSION}">> "$RESULT_FILE"
fi
sed -n '/The CXX compiler/s/-- The CXX compiler identification is/COMPILER_VERSION =/p' < "${CGAL_BINARY_DIR}/installation.log" |sed -E "s/ = (.*)/\ = '\1\'/">> "$RESULT_FILE"
echo "TESTER ${CGAL_TESTER}" >> "$RESULT_FILE"
echo "TESTER_NAME ${CGAL_TESTER}" >> "$RESULT_FILE"
echo "TESTER_ADDRESS ${TESTER_ADDRESS}" >> "$RESULT_FILE"
echo "CGAL_TEST_PLATFORM ${PLATFORM}" >> "$RESULT_FILE"
grep -e "^-- USING " "${CGAL_BINARY_DIR}/installation.log"|sort -u >> $RESULT_FILE
#Use sed to get the content of DEBUG or RELEASE CXX FLAGS so that Multiconfiguration platforms do provide their CXXXFLAGS to the testsuite page (that greps USING CXXFLAGS to get info)
sed -i -E 's/(^-- USING )(DEBUG|RELEASE) (CXXFLAGS)/\1\3/' $RESULT_FILE
sed -n '/^-- Third-party library /p' "${CGAL_BINARY_DIR}/installation.log" >> $RESULT_FILE
echo "------------" >> "$RESULT_FILE"
{
if [ -z "${SCRIPTS_DIR}" ]; then
sed -n '/CGAL_VERSION /s/#define //p' < "$CGAL_DIR/${INSTALLATION_DIR}include/CGAL/version.h"
else
echo "CGAL_VERSION ${CGAL_GIT_VERSION}"
fi
sed -n '/The CXX compiler/s/-- The CXX compiler identification is/COMPILER_VERSION =/p' < "${CGAL_BINARY_DIR}/installation.log" |sed -E "s/ = (.*)/\ = '\1\'/"
if [ -n "${CGAL_SUMMARY_NAME}" ]; then
echo "CGAL_SUMMARY_NAME ${CGAL_SUMMARY_NAME}"
fi
echo "TESTER ${CGAL_TESTER}"
echo "TESTER_NAME ${CGAL_TESTER}"
echo "TESTER_ADDRESS ${TESTER_ADDRESS}"
echo "CGAL_TEST_PLATFORM ${PLATFORM}"
grep -e "^-- Operating system: " "${CGAL_BINARY_DIR}/installation.log"
grep -e "^-- USING " "${CGAL_BINARY_DIR}/installation.log"|sort -u
} >> "$RESULT_FILE"
#Use sed to get the content of DEBUG or RELEASE CXX FLAGS so that multi-configuration platforms do provide their CXXFLAGS to the testsuite page (that greps USING CXXFLAGS to get info)
sed -i -E 's/(^-- USING )(DEBUG|RELEASE) (CXXFLAGS)/\1\3/' "$RESULT_FILE"
{
sed -n '/^-- Third-party library /p' "${CGAL_BINARY_DIR}/installation.log"
echo "------------"
} >> "$RESULT_FILE"
#if git branch, create empty scm file for python script
if [ -n "${SCRIPTS_DIR}" ]; then
touch ../../../../../.scm-branch
@ -382,10 +421,11 @@ run_test_on_platform()
# python3: can't open file '/cygdrive/c/CGAL_ROOT/CGAL-5.5-Ic-68/C:/CGAL_ROOT/CGAL-5.5-Ic-68/test/parse-ctest-dashboard-xml.py': [Errno 2] No such file or directory
# It seems Python 3.9 from Cygwin cannot understand the Windows paths,
# but its `open` function can.
python3 -c "exec(open(\"${CGAL_DIR}/${TESTSUITE_DIR}test/parse-ctest-dashboard-xml.py\").read())" $CGAL_TESTER $PLATFORM
python3 -c "exec(open(\"${CGAL_DIR}/${TESTSUITE_DIR}test/parse-ctest-dashboard-xml.py\").read())" "$CGAL_TESTER" "$PLATFORM"
for file in $(ls|grep _Tests); do
mv $file "$(echo "$file" | sed 's/_Tests//g')"
for file in *_Tests; do
[ -e "$file" ] || continue
mv -- "$file" "${file//_Tests/}"
done
OUTPUT_FILE=results_${CGAL_TESTER}_${PLATFORM}.tar
TEST_REPORT="TestReport_${CGAL_TESTER}_${PLATFORM}"
@ -394,14 +434,14 @@ run_test_on_platform()
cat "${CGAL_BINARY_DIR}/package_installation.log" >> "Installation/${TEST_REPORT}"
#call the python script to complete the results report.
python3 -c "exec(open(\"${CGAL_DIR}/${TESTSUITE_DIR}test/post_process_ctest_results.py\").read())" Installation/${TEST_REPORT} ${TEST_REPORT} results_${CGAL_TESTER}_${PLATFORM}.txt
rm -f $OUTPUT_FILE $OUTPUT_FILE.gz
python3 -c "exec(open(\"${CGAL_DIR}/${TESTSUITE_DIR}test/post_process_ctest_results.py\").read())" "Installation/${TEST_REPORT}" "${TEST_REPORT}" "results_${CGAL_TESTER}_${PLATFORM}.txt"
rm -f "$OUTPUT_FILE" "$OUTPUT_FILE.gz"
if [ -n "${SCRIPTS_DIR}" ]; then
rm ../../../../../.scm-branch
fi
tar cf $OUTPUT_FILE results_${CGAL_TESTER}_${PLATFORM}.txt */"$TEST_REPORT"
tar cf "$OUTPUT_FILE" "results_${CGAL_TESTER}_${PLATFORM}.txt" ./*/"$TEST_REPORT"
echo
gzip -9f $OUTPUT_FILE
gzip -9f "$OUTPUT_FILE"
cp "${OUTPUT_FILE}.gz" "results_${CGAL_TESTER}_${PLATFORM}.txt" "${CGAL_TEST_DIR}"
}
# ----------------------------------------------------------------------------------------
@ -409,7 +449,7 @@ run_test_on_platform()
# ----------------------------------------------------------------------------------------
run_test_on_host()
{
PLATFORMS=`value_of COMPILERS_${HOST}`
PLATFORMS=$(value_of "COMPILERS_${HOST}")
if [ "${PLATFORMS}" = "all" ]; then
collect_all_current_platforms "${CGAL_BINARY_DIR_BASE}"
fi
@ -427,7 +467,7 @@ run_test_on_host()
publish_results "${PLATFORM}"
if [ -z "${KEEP_TESTS}" ]; then
rm -rf $CGAL_DIR/cmake/platforms/${PLATFORM}
rm -rf "$CGAL_DIR/cmake/platforms/${PLATFORM}"
fi
done
}