Commit 69e4062c authored by Sergei Golubchik's avatar Sergei Golubchik Committed by Aleksey Midenkov

Remove capture_warnings.sh and print_warnings.cmake

This is a separate feature, unrelated to system versioning

We may keep it or not, but either way, it's a separate discussion,
if we keep it, it won't be in the system versioning branch
parent 3198bc83
#!/bin/bash
warn_path=$1
warn_mode=$2 # 'late', 'early' or 'both'
shift 2
warn_file="$warn_path/compile.warnings"
suppress_file="$warn_path/suppress.warnings"
# suppress_warnings:
#
# 1. treat STDIN as sequence of warnings (w) delimited by ^~~~... lines
#
# 2. sanitize each w to matchable m:
# a. ignore 'In file included from' lines;
# b. protect BRE chars;
# c. ignore text coords (NNN:NNN);
# d. convert multiline to X-delimited single line.
#
# 3. match sanitized m against X-delimited suppress.warnings:
# if match not found print w to STDOUT.
suppress_warnings()
{
[ -f "$suppress_file" ] || {
cat
return
}
[ -z "$suppress_file" ] && {
cat > /dev/null
return
}
local m w from
IFS=""
while read -r l
do
w="$w$l"$'\n'
[[ $l =~ ^"In file included from " ]] && {
from=1
continue
}
[[ $from && $l =~ ^[[:space:]]+"from " ]] &&
continue
unset from
if [[ $l =~ ^[[:space:]]*~*\^~*$ ]]
then
cat "$suppress_file" | tr '\n' 'X' | /bin/grep -Gq "$m" ||
echo "$w"
unset m w
else
# Protect BRE metacharacters \.[*^$
l=${l//\\/\\\\}
l=${l//./\\.}
l=${l//[/\\[}
l=${l//-/\\-}
l=${l//\*/\\*}
l=${l//^/\\^}
l=${l//\$/\\\$}
# replace text coords line:char with BRE wildcard
[[ $l =~ ^(.*:)[[:digit:]]+:[[:digit:]]+(.*)$ ]] &&
l=${BASH_REMATCH[1]}[[:digit:]]\\+:[[:digit:]]\\+${BASH_REMATCH[2]}
m="$m$l"$'X'
fi
done
}
exec 3>&1
"$@" 2>&1 1>&3 | suppress_warnings | (
cmderr=`cat`
if [[ -n "$cmderr" ]]; then
if [[ "$cmderr" =~ error: ]]; then
echo "$cmderr" >&2
exit
fi
[[ "$warn_mode" != "late" ]] &&
echo "$cmderr" >&2
[[ "$warn_mode" != "early" && "$cmderr" =~ (warning|note): ]] &&
echo "$cmderr" >> "$warn_file"
fi
)
exit ${PIPESTATUS}
......@@ -503,5 +503,3 @@ IF(NON_DISTRIBUTABLE_WARNING)
MESSAGE(WARNING "
You have linked MariaDB with GPLv3 libraries! You may not distribute the resulting binary. If you do, you will put yourself into a legal problem with Free Software Foundation.")
ENDIF()
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/print_warnings.cmake)
IF(DEFINED WARN_MODE)
IF(NOT WARN_MODE STREQUAL "early" AND
NOT WARN_MODE STREQUAL "late" AND
NOT WARN_MODE STREQUAL "both")
MESSAGE(FATAL_ERROR "Unknown WARN_MODE: expected 'early', 'late' or 'both'")
ENDIF()
SET_DIRECTORY_PROPERTIES(PROPERTIES RULE_LAUNCH_COMPILE
"bash ${CMAKE_SOURCE_DIR}/BUILD/capture_warnings.sh ${CMAKE_BINARY_DIR} ${WARN_MODE}")
SET_DIRECTORY_PROPERTIES(PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
"${CMAKE_BINARY_DIR}/compile.warnings")
ADD_CUSTOM_TARGET(rm_compile.warnings ALL
COMMAND rm -f compile.warnings
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
ADD_CUSTOM_TARGET(print_warnings ALL
COMMAND bash -c '[ -f compile.warnings ] && { echo "Warnings found:" \; cat compile.warnings \; echo "" \; } \; true'
DEPENDS mysqld rm_compile.warnings
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
IF(TARGET explain_filename-t)
ADD_DEPENDENCIES(print_warnings explain_filename-t)
ENDIF()
IF(TARGET mysql_client_test)
ADD_DEPENDENCIES(print_warnings mysql_client_test)
ENDIF()
IF(TARGET udf_example)
ADD_DEPENDENCIES(print_warnings udf_example)
ENDIF()
ENDIF()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment