From 7746415b7dc0ce7a822a8cb2920d14220b7fe5c1 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Sun, 17 Jun 2007 14:51:37 +0000 Subject: The log file is no longer configurable: it is always "${CT_PREFIX_DIR}/build.log". Add an option to compress the log file upon successfull build. Make rendering the toolchain read-only optional. A few eye-candy fixes. diff --git a/config/global.in b/config/global.in index ca5b2b9..7f1ba81 100644 --- a/config/global.in +++ b/config/global.in @@ -9,7 +9,7 @@ config FOOBAR menu "Paths and misc options" -comment "Crosstool behavior" +comment "Crosstool-ng behavior" config EXPERIMENTAL bool @@ -194,6 +194,16 @@ config REMOVE_DOCS Remove the installed documentation (man and info pages). Gains around 8MiB for a uClibc-based, C and C++ compiler. +config INSTALL_DIR_RO + bool + prompt "Render the toolchain read-only" + default n + help + Render the directory of the toolchain (and its sub-directories) + read-only. + + Usefull for toolchains destined for production. + comment "Downloading" config FORCE_DOWNLOAD @@ -252,7 +262,7 @@ config LOG_ERROR prompt "ERROR" help The build will be silent. - Only if there is an error will you see a mesage. + Only if there is an error will you see a message. config LOG_WARN bool @@ -297,17 +307,19 @@ config LOG_LEVEL_MAX config LOG_SEE_TOOLS_WARN bool - prompt "Warnings from the tool builds as CT warnings" + prompt "Warnings from the tools' builds" default n depends on ! LOG_ERROR help - Treat warnings fron the different tools as crosstool warnings. + Treat warnings from the different tools as crosstool-ng warnings. If you say 'y' here, then those warnings will be prefixed with '[WARN ]' instead of the default '[ALL ]'. You can safely say 'n' here. Those warnings will anyway be recorded in the log file (provided you configured one). + Tools error will always be logged as crosstool-ng errors. + config LOG_PROGRESS_BAR bool prompt "Progress bar" @@ -330,19 +342,20 @@ config LOG_TO_FILE default y help Save *full* logs to a file. Even log levels you didn't specify above - will be available in this file. + will be available in this file. The log file will be named build.log + and stored in the toolchain prefix dir (set above). As a bonus, there is a script in tools/extractConfig.sh that is able to extract the configuration of crosstool-NG from the log file. Definitely, say Y. -config LOG_FILE - string - prompt "Log file" - default "${CT_PREFIX_DIR}/${CT_TARGET}.log" +config LOG_FILE_COMPRESS + bool + prompt "Compress the log file" + default n depends on LOG_TO_FILE help - File name into which to put logs. + Compress the log file once the toolchain is successfully built. endmenu diff --git a/docs/overview.txt b/docs/overview.txt index 6620366..2082d7e 100644 --- a/docs/overview.txt +++ b/docs/overview.txt @@ -133,10 +133,6 @@ CT_PREFIX_DIR: This is where the toolchain will be installed in (and for now, where it will run from). -CT_LOG_FILE: - The file where *all* log messages will go. Keep the default, in goes in - ${CT_PREFIX_DIR}/${CT_TARGET}.log - CT_TARGET_VENDOR: An identifier for your toolchain, will take place in the vendor part of the target triplet. It shall *not* contain spaces or dashes. Usually, keep it diff --git a/samples/Makefile b/samples/Makefile index 5b9b91f..0bdc1fe 100644 --- a/samples/Makefile +++ b/samples/Makefile @@ -34,7 +34,6 @@ regtest: sed -i -r -e 's:^.*(CT_LOG_ERROR).*$$:\1=y:;' .config && \ sed -i -r -e 's:^(CT_LOG_LEVEL_MAX)=.*$$:\1="ERROR":;' .config && \ sed -i -r -e 's:^.*(CT_LOG_TO_FILE).*$$:\1=y:;' .config && \ - sed -i -r -e 's:^.*(CT_LOG_FILE).*$$:\1="$${CT_PREFIX_DIR}/build.log":;' .config && \ sed -i -r -e 's:^.*(CT_LOG_PROGRESS_BAR).*$$:\1=y:;' .config && \ yes "" |make -C $(CT_TOP_DIR) defoldconfig >/dev/null 2>&1 && \ make -C $(CT_TOP_DIR) && \ diff --git a/scripts/crosstool.sh b/scripts/crosstool.sh index 6a88211..9b0fd95 100755 --- a/scripts/crosstool.sh +++ b/scripts/crosstool.sh @@ -211,19 +211,14 @@ chmod -R u+w "${CT_INSTALL_DIR}" "${CT_PREFIX_DIR}" # 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},${CT_LOG_FILE}" in - ,*) rm -f "${tmp_log_file}" - ;; - y,/*) mkdir -p "`dirname \"${CT_LOG_FILE}\"`" - cat "${tmp_log_file}" >>"${CT_LOG_FILE}" - rm -f "${tmp_log_file}" - exec >>"${CT_LOG_FILE}" - ;; - y,*) mkdir -p "`pwd`/`dirname \"${CT_LOG_FILE}\"`" - cat "${tmp_log_file}" >>"`pwd`/${CT_LOG_FILE}" - rm -f "${tmp_log_file}" - exec >>"${CT_LOG_FILE}" - ;; +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 is not restarting @@ -303,7 +298,7 @@ if [ -z "${CT_RESTART}" ]; then # Ah! Recent versions of binutils need some of the build and/or host system # (read CT_BUILD and CT_HOST) tools to be accessible (ar is but an example). # Do that: - CT_DoLog EXTRA "Making build system tools available" + CT_DoLog DEBUG "Making build system tools available" mkdir -p "${CT_PREFIX_DIR}/bin" for tool in ar as dlltool gcc g++ gnatbind gnatmake ld nm ranlib strip windres objcopy objdump; do if [ -n "`which ${tool}`" ]; then @@ -455,22 +450,24 @@ if [ "${CT_ONLY_DOWNLOAD}" != "y" -a "${CT_ONLY_EXTRACT}" != "y" ]; then rm -rf "${CT_DEBUG_INSTALL_DIR}/"{,usr/}{man,info} fi - CT_DoLog EXTRA "Removing access to the build system tools" + CT_DoLog DEBUG "Removing access to the build system tools" find "${CT_PREFIX_DIR}/bin" -name "${CT_BUILD}-"'*' -exec rm -fv {} \+ |CT_DoLog DEBUG find "${CT_PREFIX_DIR}/bin" -name "${CT_UNIQ_BUILD}-"'*' -exec rm -fv {} \+ |CT_DoLog DEBUG find "${CT_PREFIX_DIR}/bin" -name "${CT_HOST}-"'*' -exec rm -fv {} \+ |CT_DoLog DEBUG fi -# OK, now we're done, set the toolchain read-only -# Don't log, the log file may become read-only any moment... -chmod -R a-w "${CT_INSTALL_DIR}" - -# We still have some small bits to log -chmod u+w "${CT_LOG_FILE}" - CT_DoEnd INFO -# All files should now be read-only, log file included -chmod a-w "${CT_LOG_FILE}" +if [ "${CT_LOG_FILE_COMPRESS}" = y ]; then + CT_DoLog EXTRA "Compressing log file" + exec >/dev/null + bzip2 -9 "${CT_LOG_FILE}" +fi + +if [ "${CT_INSTALL_DIR_RO}" = "y" ]; then + # OK, now we're done, set the toolchain read-only + # Don't log, the log file may become read-only any moment... + chmod -R a-w "${CT_INSTALL_DIR}" >/dev/null 2>&1 +fi trap - EXIT diff --git a/scripts/tarball.sh b/scripts/tarball.sh index febc2a6..8e6c312 100755 --- a/scripts/tarball.sh +++ b/scripts/tarball.sh @@ -92,5 +92,7 @@ CT_DoLog DEBUG "Getting rid of working directories" rm -f "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2" rm -rf "${tempdir}" -# Render the install directory non-writable -chmod u-w "${CT_PREFIX_DIR}" +if [ "${CT_INSTALL_DIR_RO}" = "y" ]; then + # Render the install directory non-writable + chmod u-w "${CT_PREFIX_DIR}" +fi -- cgit v0.10.2-6-g49f6