Only create the state dir if asked for a restartable build:
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Mar 27 23:40:07 2009 +0000 (2009-03-27)
changeset 1272ddac62e7c428
parent 1271 f96f26d4a855
child 1273 33f0fcab7f03
Only create the state dir if asked for a restartable build:
- introduce the config dir, where components can store their config files
- move the munged uClibc config file to the config dir
- now, the state dir really is an indication that a build can be restarted

Thanks to Groleo Marius <groleo@gmail.com> for spotting the inconsistency
of the state dir usage, and suggesting this change.

/trunk/scripts/build/libc/uClibc.sh | 6 3 3 0 +++---
/trunk/scripts/crosstool-NG.sh.in | 9 7 2 0 +++++++--
/trunk/scripts/functions | 15 12 3 0 ++++++++++++---
3 files changed, 22 insertions(+), 8 deletions(-)
scripts/build/libc/uClibc.sh
scripts/crosstool-NG.sh.in
scripts/functions
     1.1 --- a/scripts/build/libc/uClibc.sh	Fri Mar 27 21:30:47 2009 +0000
     1.2 +++ b/scripts/build/libc/uClibc.sh	Fri Mar 27 23:40:07 2009 +0000
     1.3 @@ -47,7 +47,7 @@
     1.4      fi
     1.5  
     1.6      CT_DoLog EXTRA "Munging uClibc configuration"
     1.7 -    mungeuClibcConfig "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${CT_STATE_DIR}/uClibc.config"
     1.8 +    mungeuClibcConfig "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${CT_CONFIG_DIR}/uClibc.config"
     1.9  
    1.10      CT_EndStep
    1.11  }
    1.12 @@ -64,7 +64,7 @@
    1.13      { cd "${CT_SRC_DIR}/uClibc-${CT_LIBC_VERSION}"; tar cf - .; } |tar xf -
    1.14  
    1.15      # Retrieve the config file
    1.16 -    cp "${CT_STATE_DIR}/uClibc.config" .config
    1.17 +    cp "${CT_CONFIG_DIR}/uClibc.config" .config
    1.18  
    1.19      # uClibc uses the CROSS environment variable as a prefix to the
    1.20      # compiler tools to use.  Setting it to the empty string forces
    1.21 @@ -99,7 +99,7 @@
    1.22      { cd "${CT_SRC_DIR}/uClibc-${CT_LIBC_VERSION}"; tar cf - .; } |tar xf -
    1.23  
    1.24      # Retrieve the config file
    1.25 -    cp "${CT_STATE_DIR}/uClibc.config" .config
    1.26 +    cp "${CT_CONFIG_DIR}/uClibc.config" .config
    1.27  
    1.28      # uClibc uses the CROSS environment variable as a prefix to the compiler
    1.29      # tools to use.  The newly built tools should be in our path, so we need
     2.1 --- a/scripts/crosstool-NG.sh.in	Fri Mar 27 21:30:47 2009 +0000
     2.2 +++ b/scripts/crosstool-NG.sh.in	Fri Mar 27 23:40:07 2009 +0000
     2.3 @@ -114,11 +114,13 @@
     2.4  CT_TARBALLS_DIR="${CT_WORK_DIR}/tarballs"
     2.5  CT_SRC_DIR="${CT_WORK_DIR}/src"
     2.6  CT_BUILD_DIR="${CT_WORK_DIR}/${CT_TARGET}/build"
     2.7 +CT_STATE_DIR="${CT_WORK_DIR}/${CT_TARGET}/state"
     2.8 +CT_CONFIG_DIR="${CT_BUILD_DIR}/configs"
     2.9 +
    2.10  # Note: we'll always install the core compiler in its own directory, so as to
    2.11  # not mix the two builds: core and final.
    2.12  CT_CC_CORE_STATIC_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-static"
    2.13  CT_CC_CORE_SHARED_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-shared"
    2.14 -CT_STATE_DIR="${CT_WORK_DIR}/${CT_TARGET}/state"
    2.15  
    2.16  # We must ensure that we can restart if asked for!
    2.17  if [ -n "${CT_RESTART}" -a ! -d "${CT_STATE_DIR}"  ]; then
    2.18 @@ -194,11 +196,14 @@
    2.19  CT_DoExecLog ALL mkdir -p "${CT_TARBALLS_DIR}"
    2.20  CT_DoExecLog ALL mkdir -p "${CT_SRC_DIR}"
    2.21  CT_DoExecLog ALL mkdir -p "${CT_BUILD_DIR}"
    2.22 +CT_DoExecLog ALL mkdir -p "${CT_CONFIG_DIR}"
    2.23  CT_DoExecLog ALL mkdir -p "${CT_INSTALL_DIR}"
    2.24  CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}"
    2.25  CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}"
    2.26  CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}"
    2.27 -CT_DoExecLog ALL mkdir -p "${CT_STATE_DIR}"
    2.28 +
    2.29 +# Only create the state dir if asked for a restartable build
    2.30 +[ -n "${CT_DEBUG_CT_SAVE_STEPS}" ] && CT_DoExecLog ALL mkdir -p "${CT_STATE_DIR}"
    2.31  
    2.32  # Check install file system case-sensitiveness
    2.33  touch "${CT_PREFIX_DIR}/foo"
     3.1 --- a/scripts/functions	Fri Mar 27 21:30:47 2009 +0000
     3.2 +++ b/scripts/functions	Fri Mar 27 23:40:07 2009 +0000
     3.3 @@ -854,6 +854,11 @@
     3.4                             /^(UID|EUID)=/d;
     3.5                             /^(FUNCNAME|GROUPS|PPID|SHELLOPTS)=/d;' >"${state_dir}/env.sh"
     3.6  
     3.7 +    CT_DoLog DEBUG "  Saving CT_CONFIG_DIR='${CT_CONFIG_DIR}'"
     3.8 +    CT_Pushd "${CT_CONFIG_DIR}"
     3.9 +    CT_DoExecLog DEBUG tar cv${tar_opt}f "${state_dir}/config_dir.tar${tar_ext}" .
    3.10 +    CT_Popd
    3.11 +
    3.12      CT_DoLog DEBUG "  Saving CT_CC_CORE_STATIC_PREFIX_DIR='${CT_CC_CORE_STATIC_PREFIX_DIR}'"
    3.13      CT_Pushd "${CT_CC_CORE_STATIC_PREFIX_DIR}"
    3.14      CT_DoExecLog DEBUG tar cv${tar_opt}f "${state_dir}/cc_core_static_prefix_dir.tar${tar_ext}" .
    3.15 @@ -904,9 +909,8 @@
    3.16      esac
    3.17  
    3.18      CT_DoLog DEBUG "  Removing previous build directories"
    3.19 -    chmod -R u+rwX "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}"
    3.20 -    rm -rf         "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}"
    3.21 -    mkdir -p       "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}"
    3.22 +    CT_DoForceRmdir             "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}" "${CT_CONFIG_DIR}"
    3.23 +    CT_DoExecLog DEBUG mkdir -p "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}" "${CT_CONFIG_DIR}"
    3.24  
    3.25      CT_DoLog DEBUG "  Restoring CT_PREFIX_DIR='${CT_PREFIX_DIR}'"
    3.26      CT_Pushd "${CT_PREFIX_DIR}"
    3.27 @@ -923,6 +927,11 @@
    3.28      CT_DoExecLog DEBUG tar xv${tar_opt}f "${state_dir}/cc_core_static_prefix_dir.tar${tar_ext}"
    3.29      CT_Popd
    3.30  
    3.31 +    CT_DoLog DEBUG "  Restoring CT_CONFIG_DIR='${CT_CONFIG_DIR}'"
    3.32 +    CT_Pushd "${CT_CONFIG_DIR}"
    3.33 +    CT_DoExecLog DEBUG tar xv${tar_opt}f "${state_dir}/config_dir.tar${tar_ext}"
    3.34 +    CT_Popd
    3.35 +
    3.36      # Restore the environment, discarding any error message
    3.37      # (for example, read-only bash internals)
    3.38      CT_DoLog DEBUG "  Restoring environment"