# HG changeset patch # User "Yann E. MORIN" # Date 1300575741 -3600 # Node ID 730e2d63296b74541c77e2044c73abdf2a94534c # Parent 006e955b23438fca76300a54e2e70c7cd9ad5760 scripts: leave changelog in build dir, copy to install dir Users tend to look for the build log in the current working directory, rather than in the toolchain's installation dir. While bundling the build log in the toolchain installation dir is nice for distribution and review, it can be easier to have the build log readily available in the working directory, as it is quicker to get to it. So, the build log stays in the working directory until the toolchain is completely and successfully built, and then a (compressed) copy is made. Reported-by: Trevor Woerner Signed-off-by: "Yann E. MORIN" diff -r 006e955b2343 -r 730e2d63296b .hgignore --- a/.hgignore Thu Mar 17 22:08:33 2011 +0100 +++ b/.hgignore Sun Mar 20 00:02:21 2011 +0100 @@ -18,7 +18,7 @@ # Temporaries .*.swp -log.* +build.log .config.old # This is the place where toolchains are built diff -r 006e955b2343 -r 730e2d63296b ct-ng.in --- a/ct-ng.in Thu Mar 17 22:08:33 2011 +0100 +++ b/ct-ng.in Sun Mar 20 00:02:21 2011 +0100 @@ -165,7 +165,7 @@ PHONY += clean clean:: @$(ECHO) " CLEAN log" - $(SILENT)rm -f log.* .config.* ..config* + $(SILENT)rm -f build.log .config.* ..config* PHONY += distclean distclean:: clean diff -r 006e955b2343 -r 730e2d63296b scripts/crosstool-NG.sh.in --- a/scripts/crosstool-NG.sh.in Thu Mar 17 22:08:33 2011 +0100 +++ b/scripts/crosstool-NG.sh.in Sun Mar 20 00:02:21 2011 +0100 @@ -222,8 +222,6 @@ # Don't eradicate directories if we need to restart if [ -z "${CT_RESTART}" ]; then # Get rid of pre-existing installed toolchain and previous build directories. - # We need to do that _before_ we can safely log, because the log file will - # most probably be in the toolchain directory. if [ "${CT_FORCE_DOWNLOAD}" = "y" -a -d "${CT_TARBALLS_DIR}" ]; then CT_DoForceRmdir "${CT_TARBALLS_DIR}" fi @@ -264,25 +262,9 @@ CT_DoExecLog DEBUG rm -f "${CT_PREFIX_DIR}/foo" # Kludge: CT_INSTALL_DIR and CT_PREFIX_DIR might have grown read-only if -# the previous build was successful. To be able to move the logfile there, -# switch them back to read/write +# the previous build was successful. CT_DoExecLog ALL chmod -R u+w "${CT_INSTALL_DIR}" "${CT_PREFIX_DIR}" -# Redirect log to the actual log file now we can -# It's quite understandable that the log file will be installed in the install -# directory, so we must first ensure it exists and is writeable (above) before -# we can log there -exec >/dev/null -case "${CT_LOG_TO_FILE}" in - y) CT_LOG_FILE="${CT_PREFIX_DIR}/build.log" - cat "${tmp_log_file}" >>"${CT_LOG_FILE}" - rm -f "${tmp_log_file}" - exec >>"${CT_LOG_FILE}" - ;; - *) rm -f "${tmp_log_file}" - ;; -esac - # Setting up the rest of the environment only if not restarting if [ -z "${CT_RESTART}" ]; then case "${CT_SYSROOT_NAME}" in @@ -624,7 +606,12 @@ CT_DoLog INFO "Finishing installation (may take a few seconds)..." exec >/dev/null 2>&1 -[ "${CT_LOG_FILE_COMPRESS}" = y ] && bzip2 -9 "${CT_LOG_FILE}" +if [ "${CT_LOG_TO_FILE}" = "y" ]; then + cp "${tmp_log_file}" "${CT_PREFIX_DIR}/build.log" + if [ "${CT_LOG_FILE_COMPRESS}" = y ]; then + bzip2 -9 "${CT_PREFIX_DIR}/build.log" + fi +fi [ "${CT_INSTALL_DIR_RO}" = "y" ] && chmod -R a-w "${CT_INSTALL_DIR}" [ "${CT_TEST_SUITE}" = "y" ] && chmod -R u+w "${CT_TEST_SUITE_DIR}" diff -r 006e955b2343 -r 730e2d63296b scripts/functions --- a/scripts/functions Thu Mar 17 22:08:33 2011 +0100 +++ b/scripts/functions Sun Mar 20 00:02:21 2011 +0100 @@ -15,7 +15,7 @@ for((depth=2; ${BASH_LINENO[$((${depth}-1))]}>0; depth++)); do CT_DoLog ERROR " called from '${BASH_SOURCE[${depth}]}' at line # ${BASH_LINENO[${depth}-1]} in function '${FUNCNAME[${depth}]}'" done - [ "${CT_LOG_TO_FILE}" = "y" ] && CT_DoLog ERROR "Look at '${CT_LOG_FILE}' for more info on this error." + [ "${CT_LOG_TO_FILE}" = "y" ] && CT_DoLog ERROR "Look at '${tmp_log_file}' for more info on this error." CT_STEP_COUNT=1 CT_DoEnd ERROR exit $ret @@ -40,8 +40,9 @@ # Log policy: # - first of all, save stdout so we can see the live logs: fd #6 exec 6>&1 -# - then point stdout to the log file (temporary for now) -tmp_log_file="${CT_TOP_DIR}/log.$$" +# - then point stdout to the log file +tmp_log_file="${CT_TOP_DIR}/build.log" +rm -f "${tmp_log_file}" exec >>"${tmp_log_file}" # The different log levels: @@ -1024,15 +1025,13 @@ CT_DoTarballIfExists "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${state_dir}/cc_core_shared_prefix_dir" CT_DoTarballIfExists "${CT_PREFIX_DIR}" "${state_dir}/prefix_dir" --exclude '*.log' - if [ "${CT_LOG_TO_FILE}" = "y" ]; then - CT_DoLog STATE " Saving log file" - exec >/dev/null - case "${CT_DEBUG_CT_SAVE_STEPS_GZIP}" in - y) gzip -3 -c "${CT_LOG_FILE}" >"${state_dir}/log.gz";; - *) cat "${CT_LOG_FILE}" >"${state_dir}/log";; - esac - exec >>"${CT_LOG_FILE}" - fi + CT_DoLog STATE " Saving log file" + exec >/dev/null + case "${CT_DEBUG_CT_SAVE_STEPS_GZIP}" in + y) gzip -3 -c "${tmp_log_file}" >"${state_dir}/log.gz";; + *) cat "${tmp_log_file}" >"${state_dir}/log";; + esac + exec >>"${tmp_log_file}" } # This function restores a previously saved state @@ -1072,15 +1071,13 @@ CT_STOP="${old_STOP}" unset old_stop old_restart - if [ "${CT_LOG_TO_FILE}" = "y" ]; then - CT_DoLog STATE " Restoring log file" - exec >/dev/null - case "${CT_DEBUG_CT_SAVE_STEPS_GZIP}" in - y) zcat "${state_dir}/log.gz" >"${CT_LOG_FILE}";; - *) cat "${state_dir}/log" >"${CT_LOG_FILE}";; - esac - cat "${state_dir}/tail.log" >>"${CT_LOG_FILE}" - exec >>"${CT_LOG_FILE}" - rm -f "${state_dir}/tail.log" - fi + CT_DoLog STATE " Restoring log file" + exec >/dev/null + case "${CT_DEBUG_CT_SAVE_STEPS_GZIP}" in + y) zcat "${state_dir}/log.gz" >"${tmp_log_file}";; + *) cat "${state_dir}/log" >"${tmp_log_file}";; + esac + cat "${state_dir}/tail.log" >>"${tmp_log_file}" + exec >>"${tmp_log_file}" + rm -f "${state_dir}/tail.log" }