Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3-lrineau

# Conflicts:
#	Installation/CHANGES.md
This commit is contained in:
Jane Tournois
2025-06-10 11:18:38 +02:00
471 changed files with 50959 additions and 758 deletions
@@ -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
@@ -33,7 +33,7 @@ PROJECT_NAME = "CGAL ${CGAL_DOC_VERSION} - Put title of project here"
descrstring = \
r"""// PRETTY PACKAGE NAME should equal the project title in Doxyfile.in
/// \defgroup PkgPACKAGERef PRETTY PACKAGE NAME Reference
/// \defgroup PkgPACKAGERef Reference Manual
/// \defgroup PkgPACKAGEConcepts Concepts
/// \ingroup PkgPACKAGERef
@@ -47,6 +47,7 @@ r"""// PRETTY PACKAGE NAME should equal the project title in Doxyfile.in
/// \ingroup PkgPACKAGERef
/*!
\addtogroup PkgPACKAGERef
\cgalPkgDescriptionBegin{PACKAGE NAME,PkgPACKAGE}
\cgalPkgPicture{pkg-small.png}
+11 -7
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}"
}
+332
View File
@@ -0,0 +1,332 @@
#!/bin/bash
set -o errexit -o nounset -o pipefail
# Color output setup
if [ -t 1 ]; then
COLOR_BOLD="\033[1m"
COLOR_GREEN="\033[32m"
COLOR_RESET="\033[0m"
else
COLOR_BOLD=""
COLOR_GREEN=""
COLOR_RESET=""
fi
color_echo() {
# Print with color unless line starts with two spaces
if [[ "$1" =~ ^\ \ ]]; then
echo "$1"
else
echo -e "${COLOR_BOLD}${COLOR_GREEN}$1${COLOR_RESET}"
fi
}
color_printf() {
# Print with color unless first arg starts with two spaces
local fmt="$1"
if [[ "$fmt" =~ ^\ \ ]]; then
printf "$@"
else
echo -e "${COLOR_BOLD}${COLOR_GREEN}"
printf "$@"
echo -e "${COLOR_RESET}"
fi
}
print_command() {
if [ ! -t 0 ]; then
while IFS= read -r line; do
printf ' | %s\n' "$line" >&2
done
fi
printf ' > %s\n' "$*" >&2
}
install_packages() {
local packages=("$@")
if [ "${#packages[@]}" -eq 0 ]; then
return
fi
color_echo "Installing '${packages[*]}' (requires sudo privileges)..."
local package_manager=""
if command -v dnf &>/dev/null; then
package_manager=dnf
elif command -v apt &>/dev/null; then
package_manager=apt
elif command -v pacman &>/dev/null; then
package_manager=pacman
else
echo "Could not find a supported package manager to install '${packages[*]}'."
exit 1
fi
case "$package_manager" in
dnf)
$SUDO_OR_PRINT dnf install -y "${packages[@]}"
;;
apt)
$SUDO_OR_PRINT apt update
$SUDO_OR_PRINT apt install -y "${packages[@]}"
;;
pacman)
$SUDO_OR_PRINT pacman -Sy --noconfirm "${packages[@]}"
;;
esac
}
SUDO_OR_PRINT="sudo"
if [ "${1:-}" = "--dry-run" ]; then
SUDO_OR_PRINT=print_command
echo "Running in dry-run mode. No changes will be made."
fi
# Ensure gh CLI and jq are installed
required_pkgs=()
for pkg in gh jq; do
command -v "$pkg" &>/dev/null || required_pkgs+=("$pkg")
done
install_packages "${required_pkgs[@]}"
if ! gh auth status &>/dev/null; then
echo "GitHub CLI is not authenticated. Attempting to log in..."
gh auth login || {
echo "Failed to authenticate with GitHub CLI."
exit 1
}
fi
# Fetch members and real names using GraphQL
GF_GRAPHQL_QUERY='
query {
organization(login: "CGAL") {
team(slug: "GeometryFactory") {
members(first: 100) {
edges {
node {
login
name
publicKeys(first: 100) {
edges {
node {
id
key
}
}
}
}
}
}
}
}
}'
# Fetch team members and their names from GitHub GraphQL API
GRAPH_QL_RESULT=$(gh api graphql -f query="$GF_GRAPHQL_QUERY" --jq '.data.organization.team.members.edges.[].node')
if [ -z "$GRAPH_QL_RESULT" ]; then
echo "Error: No members found in the GeometryFactory team." >&2
exit 1
fi
GF_MEMBERS=()
declare -A GF_REAL_NAMES=()
declare -A GF_SSH_KEYS=()
# Parse the JSON result for logins, and names
while IFS=$'\t' read -r login name; do
GF_MEMBERS+=("$login")
GF_REAL_NAMES["$login"]="$name"
done < <(
jq -r '[ .login, .name ] | @tsv' <<<"$GRAPH_QL_RESULT"
)
# Parse the SSH keys and associate them with the respective members
for login in "${GF_MEMBERS[@]}"; do
keys=$(jq -r --arg login "$login" 'select(.login == $login) | (.publicKeys.edges[].node.key // empty)' <<<"$GRAPH_QL_RESULT")
GF_SSH_KEYS["$login"]=""
while IFS=$'\n' read -r key; do
[[ -z "$key" ]] && continue
GF_SSH_KEYS["$login"]+="$key"$'\n'
done <<<"$keys"
done
# Mapping from GitHub login to local username (if different)
declare -A GF_USERNAMES=(
["janetournois"]="jtournois"
["LeoValque"]="lvalque"
["MaelRL"]="mrouxell"
["SaillantNicolas"]="nsaillant"
)
# Correcting the real names for specific users
GF_REAL_NAMES["LeoValque"]="Léo Valque"
GF_REAL_NAMES["MaelRL"]="Maël Rouxel-Labbé"
GF_REAL_NAMES["sloriot"]="Sébastien Loriot"
# Mapping from GitHub login to extra groups (if any)
declare -A GF_GROUPS=(
["lrineau"]="wheel,docker"
["SaillantNicolas"]="wheel,docker"
["sloriot"]="wheel,docker"
)
color_echo "Members of the geometryfactory team:"
for m in "${GF_MEMBERS[@]}"; do
keys="${GF_SSH_KEYS[$m]}"
nb_of_keys=$(printf '%s' "$keys" | wc -l)
color_printf " %s (%s) has %d ssh keys in Github\n" "$m" "${GF_REAL_NAMES[$m]:-$m}" "$nb_of_keys"
done
# Ensure groups exists
for group in geometryfactory docker; do
if ! getent group "$group" >/dev/null; then
$SUDO_OR_PRINT groupadd "$group"
fi
done
for member in "${GF_MEMBERS[@]}"; do
user="${GF_USERNAMES[$member]:-$member}"
groups="geometryfactory"
if [[ -n "${GF_GROUPS[$member]:-}" ]]; then
groups="geometryfactory,${GF_GROUPS[$member]}"
fi
if ! getent passwd "$user" >/dev/null; then
color_echo "Creating user $user and adding to group(s) $groups."
$SUDO_OR_PRINT useradd -m -s /bin/bash -c "${GF_REAL_NAMES[$member]:-$user}" "$user" -G "$groups"
else
color_echo "User $user already exists, adding to group(s) $groups."
$SUDO_OR_PRINT usermod -aG "$groups" -c "${GF_REAL_NAMES[$member]:-$user}" "$user"
fi
$SUDO_OR_PRINT chmod o+rx "/home/$user"
$SUDO_OR_PRINT mkdir -p "/home/$user/.ssh"
$SUDO_OR_PRINT chown "$user:$user" "/home/$user/.ssh"
$SUDO_OR_PRINT chmod 700 "/home/$user/.ssh"
# Add SSH keys from GraphQL
color_echo " Adding SSH keys for user $member from Github."
count=0
auth_keys_file="/home/$user/.ssh/authorized_keys"
if ! sudo test -f "$auth_keys_file"; then
$SUDO_OR_PRINT install -m 600 -o "$user" -g "$user" /dev/null "$auth_keys_file"
fi
if [[ -n "${GF_SSH_KEYS[$member]:-}" ]]; then
while IFS=$'\n' read -r key; do
[[ -z "$key" ]] && continue
if ! $SUDO_OR_PRINT grep -qF -- "$key" "$auth_keys_file" </dev/null; then
if [ "$SUDO_OR_PRINT" = "sudo" ]; then
echo "$key" | sudo tee -a "$auth_keys_file" >/dev/null
fi
count=$((count + 1))
fi
done <<<"${GF_SSH_KEYS[$member]}"
fi
color_echo " Added $count SSH keys for user $user."
key_count=$(sudo bash -c "[ -f '$auth_keys_file' ] && wc -l <'$auth_keys_file' || echo 0")
color_echo " User $user has $key_count SSH keys in $auth_keys_file"
done
# Add cgaltest user if not exists, and create SSH key
if ! getent passwd cgaltest >/dev/null; then
color_echo "Creating user cgaltest."
$SUDO_OR_PRINT useradd -m -s /bin/bash -c "CGAL Test User" cgaltest
fi
$SUDO_OR_PRINT mkdir -p /home/cgaltest/.ssh
$SUDO_OR_PRINT chown cgaltest:cgaltest /home/cgaltest/.ssh
$SUDO_OR_PRINT chmod 700 /home/cgaltest/.ssh
$SUDO_OR_PRINT usermod -aG docker cgaltest
$SUDO_OR_PRINT loginctl enable-linger cgaltest
keyfile="/home/cgaltest/.ssh/id_ed25519"
if ! $SUDO_OR_PRINT test -f "$keyfile"; then
color_echo "Generating SSH key for cgaltest."
if [ "$SUDO_OR_PRINT" = "sudo" ]; then
sudo -u cgaltest ssh-keygen -t ed25519 -N "" -f "$keyfile"
else
ssh-keygen -t ed25519 -N "" -f "$keyfile"
fi
else
color_echo "SSH key for cgaltest already exists."
$SUDO_OR_PRINT cat "$keyfile.pub"
fi
color_echo "All users have been processed."
color_echo "Remove users not in the GeometryFactory team."
current_members=$(getent group geometryfactory | awk -F: '{print $4}' | tr ',' ' ')
for user in $current_members; do
# Map local usernames to GitHub logins if needed
login="$user"
for k in "${!GF_USERNAMES[@]}"; do
if [[ "${GF_USERNAMES[$k]}" == "$user" ]]; then
login="$k"
break
fi
done
found=false
for m in "${GF_MEMBERS[@]}"; do
if [[ "$login" == "$m" ]]; then
found=true
break
fi
done
if ! $found; then
color_echo " Removing user $user but keep its home directory."
read -p " Are you sure you want to remove user $user? [y/N] " confirm
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
color_echo " Skipping removal of user $user."
continue
fi
$SUDO_OR_PRINT userdel -f "$user"
fi
done
# Optionally install bat, strace, and podman-docker if not present
need_install=()
for cmd in bat strace python3-docker python3-pyxdg python3-sdnotify; do
command -v "$cmd" &>/dev/null || need_install+=("$cmd")
done
# Check if docker is missing or not emulated by podman
need_podman_docker=false
if ! command -v docker &>/dev/null; then
need_podman_docker=true
elif docker --version 2>&1 | grep -q "podman"; then
need_podman_docker=true
fi
if $need_podman_docker; then
if [[ ! " ${need_install[*]} " =~ " podman-docker " ]]; then
need_install+=("podman-docker")
fi
fi
install_packages "${need_install[@]}"
color_echo "Update the systemd tmpfiles configuration for podman."
$SUDO_OR_PRINT touch /etc/containers/nodocker
$SUDO_OR_PRINT mkdir -p /etc/tmpfiles.d
sed 's|podman 0700 root root|podman 0770 root docker|g' /usr/lib/tmpfiles.d/podman.conf |
$SUDO_OR_PRINT tee /etc/tmpfiles.d/podman.conf >/dev/null
color_echo "Update the systemd socket configuration for podman."
$SUDO_OR_PRINT mkdir -p /etc/systemd/system/podman.socket.d
$SUDO_OR_PRINT tee /etc/systemd/system/podman.socket.d/override.conf >/dev/null <<EOF
[Socket]
SocketMode=0660
SocketUser=root
SocketGroup=docker
SELinuxContextFromNet=true
SELinuxContext=system_u:object_r:container_var_run_t:s0
EOF
color_echo "Reloading systemd and enabling podman.socket."
$SUDO_OR_PRINT systemctl daemon-reload
$SUDO_OR_PRINT systemctl enable --now podman.socket
$SUDO_OR_PRINT systemctl restart podman.socket
color_echo "All done!"
@@ -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=rX "$@"
}
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,29 +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"
if [ -n "${CGAL_SUMMARY_NAME}" ]; then
echo "CGAL_SUMMARY_NAME ${CGAL_SUMMARY_NAME}" >> "$RESULT_FILE"
fi
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 "^-- Operating system: " "${CGAL_BINARY_DIR}/installation.log" >> "$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
@@ -386,10 +421,11 @@ fi
# 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}"
@@ -398,14 +434,14 @@ fi
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}"
}
# ----------------------------------------------------------------------------------------
@@ -413,7 +449,7 @@ fi
# ----------------------------------------------------------------------------------------
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
@@ -431,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
}