scripts/functions
branchnewlib
changeset 1365 c4d124ed9f8e
parent 1258 67daa585467b
child 1366 5e5d1e6f55d3
     1.1 --- a/scripts/functions	Sun Mar 15 20:06:40 2009 +0000
     1.2 +++ b/scripts/functions	Sun Apr 19 16:17:11 2009 +0000
     1.3 @@ -317,7 +317,7 @@
     1.4              # Find all interfaces and build locally accessible networks
     1.5              server_ip=$(ping -c 1 -W 2 "${CT_PROXY_HOST}" |head -n 1 |sed -r -e 's/^[^\(]+\(([^\)]+)\).*$/\1/;' || true)
     1.6              CT_TestOrAbort "SOCKS proxy '${CT_PROXY_HOST}' has no IP." -n "${server_ip}"
     1.7 -            /sbin/ifconfig |gawk -v server_ip="${server_ip}" '
     1.8 +            /sbin/ifconfig |"${awk}" -v server_ip="${server_ip}" '
     1.9                  BEGIN {
    1.10                      split( server_ip, tmp, "\\." );
    1.11                      server_ip_num = tmp[1] * 2^24 + tmp[2] * 2^16 + tmp[3] * 2^8 + tmp[4] * 2^0;
    1.12 @@ -642,9 +642,9 @@
    1.13      # Some tarballs have read-only files... :-(
    1.14      # Because of nochdir, we don't know where we are, so chmod all
    1.15      # the src tree
    1.16 -    chmod -R u+w "${CT_SRC_DIR}"
    1.17 +    CT_DoExecLog DEBUG chmod -R u+w "${CT_SRC_DIR}"
    1.18  
    1.19 -    touch "${CT_SRC_DIR}/.${basename}.extracted"
    1.20 +    CT_DoExecLog DEBUG touch "${CT_SRC_DIR}/.${basename}.extracted"
    1.21  
    1.22      [ "${nochdir}" = "nochdir" ] || CT_Popd
    1.23  }
    1.24 @@ -665,6 +665,17 @@
    1.25          return 0
    1.26      fi
    1.27  
    1.28 +    # Check if already partially patched
    1.29 +    if [ -e "${CT_SRC_DIR}/.${basename}.patching" ]; then
    1.30 +        CT_DoLog ERROR "The '${basename}' sources were partially patched."
    1.31 +        CT_DoLog ERROR "Please remove first:"
    1.32 +        CT_DoLog ERROR " - the source dir for '${basename}', in '${CT_SRC_DIR}'"
    1.33 +        CT_DoLog ERROR " - the file '${CT_SRC_DIR}/.${basename}.extracted'"
    1.34 +        CT_DoLog ERROR " - the file '${CT_SRC_DIR}/.${basename}.patching'"
    1.35 +        CT_Abort "I'll stop now to avoid any carnage..."
    1.36 +    fi
    1.37 +    touch "${CT_SRC_DIR}/.${basename}.patching"
    1.38 +
    1.39      [ "${nochdir}" = "nochdir" ] || CT_Pushd "${CT_SRC_DIR}/${basename}"
    1.40  
    1.41      CT_DoLog EXTRA "Patching '${basename}'"
    1.42 @@ -695,7 +706,8 @@
    1.43          done
    1.44      fi
    1.45  
    1.46 -    touch "${CT_SRC_DIR}/.${basename}.patched"
    1.47 +    CT_DoExecLog DEBUG rm -f "${CT_SRC_DIR}/.${basename}.patching"
    1.48 +    CT_DoExecLog DEBUG touch "${CT_SRC_DIR}/.${basename}.patched"
    1.49  
    1.50      [ "${nochdir}" = "nochdir" ] || CT_Popd
    1.51  }
    1.52 @@ -818,7 +830,8 @@
    1.53      local state_name="$1"
    1.54      local state_dir="${CT_STATE_DIR}/${state_name}"
    1.55  
    1.56 -    CT_DoLog DEBUG "Saving state to restart at step '${state_name}'..."
    1.57 +    # Log this to the log level required by the user
    1.58 +    CT_DoLog ${CT_LOG_LEVEL_MAX} "Saving state to restart at step '${state_name}'..."
    1.59  
    1.60      rm -rf "${state_dir}"
    1.61      mkdir -p "${state_dir}"
    1.62 @@ -832,7 +845,7 @@
    1.63      # We must omit shell functions, and some specific bash variables
    1.64      # that break when restoring the environment, later. We could do
    1.65      # all the processing in the gawk script, but a sed is easier...
    1.66 -    set |gawk '
    1.67 +    set |"${awk}" '
    1.68                BEGIN { _p = 1; }
    1.69                $0~/^[^ ]+ \(\)/ { _p = 0; }
    1.70                _p == 1
    1.71 @@ -841,6 +854,11 @@
    1.72                             /^(UID|EUID)=/d;
    1.73                             /^(FUNCNAME|GROUPS|PPID|SHELLOPTS)=/d;' >"${state_dir}/env.sh"
    1.74  
    1.75 +    CT_DoLog DEBUG "  Saving CT_CONFIG_DIR='${CT_CONFIG_DIR}'"
    1.76 +    CT_Pushd "${CT_CONFIG_DIR}"
    1.77 +    CT_DoExecLog DEBUG tar cv${tar_opt}f "${state_dir}/config_dir.tar${tar_ext}" .
    1.78 +    CT_Popd
    1.79 +
    1.80      CT_DoLog DEBUG "  Saving CT_CC_CORE_STATIC_PREFIX_DIR='${CT_CC_CORE_STATIC_PREFIX_DIR}'"
    1.81      CT_Pushd "${CT_CC_CORE_STATIC_PREFIX_DIR}"
    1.82      CT_DoExecLog DEBUG tar cv${tar_opt}f "${state_dir}/cc_core_static_prefix_dir.tar${tar_ext}" .
    1.83 @@ -881,7 +899,9 @@
    1.84      if [ "${CT_LOG_TO_FILE}" = "y" ]; then
    1.85          exec >"${state_dir}/tail.log"
    1.86      fi
    1.87 -    CT_DoLog INFO "Restoring state at step '${state_name}', as requested."
    1.88 +
    1.89 +    # Log this to the log level required by the user
    1.90 +    CT_DoLog ${CT_LOG_LEVEL_MAX} "Restoring state at step '${state_name}', as requested."
    1.91  
    1.92      case "${CT_DEBUG_CT_SAVE_STEPS_GZIP}" in
    1.93          y)  tar_opt=z; tar_ext=.gz;;
    1.94 @@ -889,9 +909,8 @@
    1.95      esac
    1.96  
    1.97      CT_DoLog DEBUG "  Removing previous build directories"
    1.98 -    chmod -R u+rwX "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}"
    1.99 -    rm -rf         "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}"
   1.100 -    mkdir -p       "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}"
   1.101 +    CT_DoForceRmdir             "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}" "${CT_CONFIG_DIR}"
   1.102 +    CT_DoExecLog DEBUG mkdir -p "${CT_PREFIX_DIR}" "${CT_CC_CORE_SHARED_PREFIX_DIR}" "${CT_CC_CORE_STATIC_PREFIX_DIR}" "${CT_CONFIG_DIR}"
   1.103  
   1.104      CT_DoLog DEBUG "  Restoring CT_PREFIX_DIR='${CT_PREFIX_DIR}'"
   1.105      CT_Pushd "${CT_PREFIX_DIR}"
   1.106 @@ -908,6 +927,11 @@
   1.107      CT_DoExecLog DEBUG tar xv${tar_opt}f "${state_dir}/cc_core_static_prefix_dir.tar${tar_ext}"
   1.108      CT_Popd
   1.109  
   1.110 +    CT_DoLog DEBUG "  Restoring CT_CONFIG_DIR='${CT_CONFIG_DIR}'"
   1.111 +    CT_Pushd "${CT_CONFIG_DIR}"
   1.112 +    CT_DoExecLog DEBUG tar xv${tar_opt}f "${state_dir}/config_dir.tar${tar_ext}"
   1.113 +    CT_Popd
   1.114 +
   1.115      # Restore the environment, discarding any error message
   1.116      # (for example, read-only bash internals)
   1.117      CT_DoLog DEBUG "  Restoring environment"