Merge pull request #559 from stilor/fix-log-save-restore

Fix log saving/restoring
This commit is contained in:
Alexey Neyman 2017-01-25 17:32:21 -08:00 committed by GitHub
commit 8168cab172
2 changed files with 21 additions and 19 deletions

View File

@ -22,8 +22,8 @@
# Read the sample settings # Read the sample settings
CT_LoadConfig CT_LoadConfig
# Yes! We can do full logging from now on! # Yes! We can do full logging from now on! Clean any old log file content.
CT_LogEnable CT_LogEnable clean=yes
# Check running as root # Check running as root
if [ -z "${CT_ALLOW_BUILD_AS_ROOT_SURE}" ]; then if [ -z "${CT_ALLOW_BUILD_AS_ROOT_SURE}" ]; then

View File

@ -152,7 +152,7 @@ CT_OnError() {
CT_STEP_COUNT=1 # To have a zero-indentation CT_STEP_COUNT=1 # To have a zero-indentation
CT_DoLog ERROR ">>" CT_DoLog ERROR ">>"
if [ "${CT_LOG_TO_FILE}" = "y" ]; then if [ "${CT_LOG_TO_FILE}" = "y" ]; then
CT_DoLog ERROR ">> For more info on this error, look at the file: '${tmp_log_file#${CT_TOP_DIR}/}'" CT_DoLog ERROR ">> For more info on this error, look at the file: '${CT_BUILD_LOG#${CT_TOP_DIR}/}'"
fi fi
CT_DoLog ERROR ">> There is a list of known issues, some with workarounds, in:" CT_DoLog ERROR ">> There is a list of known issues, some with workarounds, in:"
CT_DoLog ERROR ">> '${CT_DOC_DIR#${CT_TOP_DIR}/}/B - Known issues.txt'" CT_DoLog ERROR ">> '${CT_DOC_DIR#${CT_TOP_DIR}/}/B - Known issues.txt'"
@ -186,10 +186,16 @@ set +o hashall
# FIXME: it doesn't look like anyone is overriding stdin/stderr. Do we need # FIXME: it doesn't look like anyone is overriding stdin/stderr. Do we need
# to save/restore them? # to save/restore them?
CT_LogEnable() { CT_LogEnable() {
local clean=no
local arg
for arg in "$@"; do eval "$arg"; done
exec 6>&1 7>&2 8<&0 exec 6>&1 7>&2 8<&0
CT_BUILD_LOG="${CT_TOP_DIR}/build.log" CT_BUILD_LOG="${CT_TOP_DIR}/build.log"
CT_LOG_ENABLED=y CT_LOG_ENABLED=y
if [ "$clean" = "yes" ]; then
rm -f "${CT_BUILD_LOG}" rm -f "${CT_BUILD_LOG}"
fi
exec >>"${CT_BUILD_LOG}" exec >>"${CT_BUILD_LOG}"
} }
@ -1558,12 +1564,12 @@ CT_DoSaveState() {
CT_DoTarballIfExists "${CT_PREFIX_DIR}" "${state_dir}/prefix_dir" --exclude '*.log' CT_DoTarballIfExists "${CT_PREFIX_DIR}" "${state_dir}/prefix_dir" --exclude '*.log'
CT_DoLog STATE " Saving log file" CT_DoLog STATE " Saving log file"
exec >/dev/null CT_LogDisable
case "${CT_DEBUG_CT_SAVE_STEPS_GZIP}" in case "${CT_DEBUG_CT_SAVE_STEPS_GZIP}" in
y) gzip -3 -c "${tmp_log_file}" >"${state_dir}/log.gz";; y) gzip -3 -c "${CT_BUILD_LOG}" >"${state_dir}/log.gz";;
*) cat "${tmp_log_file}" >"${state_dir}/log";; *) cat "${CT_BUILD_LOG}" >"${state_dir}/log";;
esac esac
exec >>"${tmp_log_file}" CT_LogEnable
} }
# This function restores a previously saved state # This function restores a previously saved state
@ -1576,11 +1582,6 @@ CT_DoLoadState(){
CT_TestOrAbort "The previous build did not reach the point where it could be restarted at '${CT_RESTART}'" -d "${state_dir}" CT_TestOrAbort "The previous build did not reach the point where it could be restarted at '${CT_RESTART}'" -d "${state_dir}"
# We need to do something special with the log file!
if [ "${CT_LOG_TO_FILE}" = "y" ]; then
exec >"${state_dir}/tail.log"
fi
CT_DoLog INFO "Restoring state at step '${state_name}', as requested." CT_DoLog INFO "Restoring state at step '${state_name}', as requested."
CT_DoExtractTarballIfExists "${state_dir}/prefix_dir" "${CT_PREFIX_DIR}" CT_DoExtractTarballIfExists "${state_dir}/prefix_dir" "${CT_PREFIX_DIR}"
@ -1597,14 +1598,15 @@ CT_DoLoadState(){
unset old_stop old_restart unset old_stop old_restart
CT_DoLog STATE " Restoring log file" CT_DoLog STATE " Restoring log file"
exec >/dev/null CT_LogDisable
mv "${CT_BUILD_LOG}" "${CT_BUILD_LOG}.tail"
case "${CT_DEBUG_CT_SAVE_STEPS_GZIP}" in case "${CT_DEBUG_CT_SAVE_STEPS_GZIP}" in
y) gzip -dc "${state_dir}/log.gz" >"${tmp_log_file}";; y) gzip -dc "${state_dir}/log.gz" >"${CT_BUILD_LOG}";;
*) cat "${state_dir}/log" >"${tmp_log_file}";; *) cat "${state_dir}/log" >"${CT_BUILD_LOG}";;
esac esac
cat "${state_dir}/tail.log" >>"${tmp_log_file}" cat "${CT_BUILD_LOG}.tail" >>"${CT_BUILD_LOG}"
exec >>"${tmp_log_file}" CT_LogEnable
rm -f "${state_dir}/tail.log" rm -f "${CT_BUILD_LOG}.tail"
} }
# This function sets a kconfig option to a specific value in a .config file # This function sets a kconfig option to a specific value in a .config file