From: Pavel Sanda Date: Wed, 15 May 2013 06:59:42 +0000 (-0700) Subject: * header_check.sh: Apply new changes from Scott. X-Git-Tag: 2.1.0beta1~242 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=b1d8bdf6706fabb3e42bd465712c0d3ac08ad953;p=features.git * header_check.sh: Apply new changes from Scott. I see lot of errors like: The following string was expected to be '.cpp' or '.h': LyX.cpp: In member function 'void lyx::LyX::printError(const lyx::ErrorItem&)': Warning: the error was not parsed correctly. The following string was expected to be '.cpp' or '.h': LyX.cpp: In function 'void lyx::error_handler(int)': --- diff --git a/development/tools/header_check.sh b/development/tools/header_check.sh index ebf0eab5cc..4e88f4c1db 100644 --- a/development/tools/header_check.sh +++ b/development/tools/header_check.sh @@ -36,10 +36,33 @@ LOG_FILE="$(basename $0).log" # ifdefs... EXCLUDE='\(debug.h\|cstdio\)' +NCORES=$(grep "CPU" /proc/cpuinfo | wc -l) + function BUILD_FN () { + PREFIX='' + # This is not a clean make. - make -j$(grep "CPU" /proc/cpuinfo | wc -l) + IFS='' ERROR_OUTPUT=$(make -j${NCORES} 2>&1 >/dev/null) + ERROR_CODE=$? + + # Without the grep, ERROR_OUTPUT might contain messages such as: + # 2885 translated messages, 2169 fuzzy translations, 1356 untranslated messages. + ERROR_OUTPUT=$(echo "${ERROR_OUTPUT}" | grep -i "error") + + # The sed regex is more strict than it needs to be. + if (( ERROR_CODE != 0 )); then + cppORh=$(echo "${ERROR_OUTPUT}" | head -n 1 | \ + sed 's/.*\.\(cpp\|h\):[0-9]\+:[0-9]\+: error: .*/\1/') + if [ "${cppORh}" = "cpp" ]; then + PREFIX='suspicious: ' + elif [ "${cppORh}" != "h" ]; then + echo -e "Warning: the error was not parsed correctly."\ + "\nThe following string was expected to be"\ + "'.cpp' or '.h': \n ${cppORh}" >&2 + fi + fi + return "${ERROR_CODE}" } echo "BUILD_FN exited without error after removing @@ -60,7 +83,14 @@ do cp "${FILE_COPY}" "${FILE_}" \ || { echo "ERROR: restore copy failed" >&2; exit 1; } sed -i "s@${INCLUDE}@@" "${FILE_}" - ( BUILD_FN ) &>/dev/null && echo "${FILE_}::${INCLUDE}" >> "${LOG_FILE}" + + BUILD_FN + BUILD_FN_RET=$? + if [ "${BUILD_FN_RET}" = 0 ]; then + echo "${FILE_}::${INCLUDE}" >> "${LOG_FILE}" + elif [ -n "${PREFIX}" ]; then + echo "${PREFIX}${FILE_}::${INCLUDE}" >> "${LOG_FILE}" + fi fi done cp "${FILE_COPY}" "${FILE_}"