# HG changeset patch # User "Yann E. MORIN" # Date 1238197207 0 # Node ID ddac62e7c428afca7a7e49a92dc2b2740d2677ef # Parent f96f26d4a8552a15dc758fe6984dfe93486ab0a6 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 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(-) diff -r f96f26d4a855 -r ddac62e7c428 scripts/build/libc/uClibc.sh --- a/scripts/build/libc/uClibc.sh Fri Mar 27 21:30:47 2009 +0000 +++ b/scripts/build/libc/uClibc.sh Fri Mar 27 23:40:07 2009 +0000 @@ -47,7 +47,7 @@ fi CT_DoLog EXTRA "Munging uClibc configuration" - mungeuClibcConfig "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${CT_STATE_DIR}/uClibc.config" + mungeuClibcConfig "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${CT_CONFIG_DIR}/uClibc.config" CT_EndStep } @@ -64,7 +64,7 @@ { cd "${CT_SRC_DIR}/uClibc-${CT_LIBC_VERSION}"; tar cf - .; } |tar xf - # Retrieve the config file - cp "${CT_STATE_DIR}/uClibc.config" .config + cp "${CT_CONFIG_DIR}/uClibc.config" .config # uClibc uses the CROSS environment variable as a prefix to the # compiler tools to use. Setting it to the empty string forces @@ -99,7 +99,7 @@ { cd "${CT_SRC_DIR}/uClibc-${CT_LIBC_VERSION}"; tar cf - .; } |tar xf - # Retrieve the config file - cp "${CT_STATE_DIR}/uClibc.config" .config + cp "${CT_CONFIG_DIR}/uClibc.config" .config # uClibc uses the CROSS environment variable as a prefix to the compiler # tools to use. The newly built tools should be in our path, so we need diff -r f96f26d4a855 -r ddac62e7c428 scripts/crosstool-NG.sh.in --- a/scripts/crosstool-NG.sh.in Fri Mar 27 21:30:47 2009 +0000 +++ b/scripts/crosstool-NG.sh.in Fri Mar 27 23:40:07 2009 +0000 @@ -114,11 +114,13 @@ CT_TARBALLS_DIR="${CT_WORK_DIR}/tarballs" CT_SRC_DIR="${CT_WORK_DIR}/src" CT_BUILD_DIR="${CT_WORK_DIR}/${CT_TARGET}/build" +CT_STATE_DIR="${CT_WORK_DIR}/${CT_TARGET}/state" +CT_CONFIG_DIR="${CT_BUILD_DIR}/configs" + # Note: we'll always install the core compiler in its own directory, so as to # not mix the two builds: core and final. CT_CC_CORE_STATIC_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-static" CT_CC_CORE_SHARED_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-shared" -CT_STATE_DIR="${CT_WORK_DIR}/${CT_TARGET}/state" # We must ensure that we can restart if asked for! if [ -n "${CT_RESTART}" -a ! -d "${CT_STATE_DIR}" ]; then @@ -194,11 +196,14 @@ CT_DoExecLog ALL mkdir -p "${CT_TARBALLS_DIR}" CT_DoExecLog ALL mkdir -p "${CT_SRC_DIR}" CT_DoExecLog ALL mkdir -p "${CT_BUILD_DIR}" +CT_DoExecLog ALL mkdir -p "${CT_CONFIG_DIR}" CT_DoExecLog ALL mkdir -p "${CT_INSTALL_DIR}" CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}" CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}" CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}" -CT_DoExecLog ALL mkdir -p "${CT_STATE_DIR}" + +# Only create the state dir if asked for a restartable build +[ -n "${CT_DEBUG_CT_SAVE_STEPS}" ] && CT_DoExecLog ALL mkdir -p "${CT_STATE_DIR}" # Check install file system case-sensitiveness touch "${CT_PREFIX_DIR}/foo" diff -r f96f26d4a855 -r ddac62e7c428 scripts/functions --- a/scripts/functions Fri Mar 27 21:30:47 2009 +0000 +++ b/scripts/functions Fri Mar 27 23:40:07 2009 +0000 @@ -854,6 +854,11 @@ /^(UID|EUID)=/d; /^(FUNCNAME|GROUPS|PPID|SHELLOPTS)=/d;' >"${state_dir}/env.sh" + CT_DoLog DEBUG " Saving CT_CONFIG_DIR='${CT_CONFIG_DIR}'" + CT_Pushd "${CT_CONFIG_DIR}" + CT_DoExecLog DEBUG tar cv${tar_opt}f "${state_dir}/config_dir.tar${tar_ext}" . + CT_Popd + CT_DoLog DEBUG " Saving CT_CC_CORE_STATIC_PREFIX_DIR='${CT_CC_CORE_STATIC_PREFIX_DIR}'" CT_Pushd "${CT_CC_CORE_STATIC_PREFIX_DIR}" CT_DoExecLog DEBUG tar cv${tar_opt}f "${state_dir}/cc_core_static_prefix_dir.tar${tar_ext}" . @@ -904,9 +909,8 @@ esac CT_DoLog DEBUG " Removing previous build directories" - chmod -R u+rwX "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}" - rm -rf "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}" - mkdir -p "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}" + CT_DoForceRmdir "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}" "${CT_CONFIG_DIR}" + CT_DoExecLog DEBUG mkdir -p "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}" "${CT_CONFIG_DIR}" CT_DoLog DEBUG " Restoring CT_PREFIX_DIR='${CT_PREFIX_DIR}'" CT_Pushd "${CT_PREFIX_DIR}" @@ -923,6 +927,11 @@ CT_DoExecLog DEBUG tar xv${tar_opt}f "${state_dir}/cc_core_static_prefix_dir.tar${tar_ext}" CT_Popd + CT_DoLog DEBUG " Restoring CT_CONFIG_DIR='${CT_CONFIG_DIR}'" + CT_Pushd "${CT_CONFIG_DIR}" + CT_DoExecLog DEBUG tar xv${tar_opt}f "${state_dir}/config_dir.tar${tar_ext}" + CT_Popd + # Restore the environment, discarding any error message # (for example, read-only bash internals) CT_DoLog DEBUG " Restoring environment"