author | "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> |
Sun Feb 28 10:19:13 2010 +0100 (2010-02-28) | |
changeset 1817 | c9654a027900 |
parent 1529 | 42a6a2583e24 |
child 1935 | c573e3ef5e07 |
permissions | -rw-r--r-- |
yann@1186 | 1 |
#!@@CT_bash@@ |
yann@63 | 2 |
|
yann@63 | 3 |
# This script is responsible for saving the current configuration into a |
yann@63 | 4 |
# sample to be used later on as a pre-configured target. |
yann@63 | 5 |
|
yann@63 | 6 |
# What we need to save: |
yann@63 | 7 |
# - the .config file |
yann@63 | 8 |
# - the uClibc .config file if uClibc selected |
yann@935 | 9 |
# - info about who reported the sample |
yann@935 | 10 |
|
yann@1186 | 11 |
# Parse the tools' paths configuration |
yann@1186 | 12 |
. "${CT_LIB_DIR}/paths.mk" |
yann@1186 | 13 |
|
yann@935 | 14 |
# We'll need the stdout later, save it |
yann@935 | 15 |
exec 7>&1 |
yann@63 | 16 |
|
yann@182 | 17 |
. "${CT_LIB_DIR}/scripts/functions" |
yann@63 | 18 |
|
yann@165 | 19 |
# Don't care about any log file |
yann@115 | 20 |
exec >/dev/null |
yann@165 | 21 |
rm -f "${tmp_log_file}" |
yann@84 | 22 |
|
yann@63 | 23 |
# Parse the configuration file |
yann@935 | 24 |
CT_TestOrAbort "Configuration file not found. Please create one." -f .config |
yann@935 | 25 |
. .config |
yann@63 | 26 |
|
yann@1223 | 27 |
# We can not reliably save a sample which either uses local patches |
yann@1223 | 28 |
# and/or custom Linux kernel headers. Warn the user about this issue |
yann@1223 | 29 |
# and continue if he/she confirms sving the sample. |
yann@1223 | 30 |
if [ "${CT_CUSTOM_PATCH}" = "y" ]; then |
yann@1223 | 31 |
exec >&7 |
yann@1223 | 32 |
echo "You are using local patches." |
yann@1223 | 33 |
echo "You will not be able to (easily) share this sample in this case." |
yann@1223 | 34 |
read -p "Press Ctrl-C to stop now, or Enter to continue..." |
yann@1223 | 35 |
fi |
yann@1223 | 36 |
if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y" ]; then |
yann@1223 | 37 |
exec >&7 |
yann@1223 | 38 |
echo "You are using custom Linux headers." |
yann@1223 | 39 |
echo "You will not be able to (easily) share this sample in this case." |
yann@1223 | 40 |
read -p "Press Ctrl-C to stop now, or Enter to continue..." |
yann@1223 | 41 |
fi |
yann@1223 | 42 |
|
yann@682 | 43 |
# Do not use a progress bar |
yann@682 | 44 |
unset CT_LOG_PROGRESS_BAR |
yann@682 | 45 |
|
yann@967 | 46 |
# Parse architecture and kernel specific functions |
yann@927 | 47 |
. "${CT_LIB_DIR}/scripts/build/arch/${CT_ARCH}.sh" |
yann@967 | 48 |
. "${CT_LIB_DIR}/scripts/build/kernel/${CT_KERNEL}.sh" |
yann@394 | 49 |
|
yann@335 | 50 |
# Target tuple: CT_TARGET needs a little love: |
yann@335 | 51 |
CT_DoBuildTargetTuple |
yann@63 | 52 |
|
yann@64 | 53 |
# Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR, |
yann@64 | 54 |
# re-parse them: |
yann@935 | 55 |
. .config |
yann@64 | 56 |
|
yann@682 | 57 |
# Override log options |
yann@682 | 58 |
unset CT_LOG_PROGRESS_BAR CT_LOG_ERROR CT_LOG_INFO CT_LOG_EXTRA CT_LOG_DEBUG LOG_ALL |
yann@603 | 59 |
CT_LOG_WARN=y |
yann@603 | 60 |
CT_LOG_LEVEL_MAX="WARN" |
yann@126 | 61 |
|
yann@1424 | 62 |
# Compute the name of the sample directory |
yann@1424 | 63 |
case "${CT_TOOLCHAIN_TYPE}" in |
yann@1424 | 64 |
cross) samp_name="${CT_TARGET}";; |
yann@1427 | 65 |
canadian) samp_name="${CT_HOST},${CT_TARGET}";; |
yann@1424 | 66 |
*) CT_Abort "Unsupported toolchain type '${CT_TOOLCHAIN_TYPE}'";; |
yann@1424 | 67 |
esac |
yann@1424 | 68 |
samp_dir="samples/${samp_name}" |
yann@1424 | 69 |
mkdir -p "${samp_dir}" |
yann@63 | 70 |
|
yann@63 | 71 |
# Save the crosstool-NG config file |
yann@1529 | 72 |
"${sed}" -r -e 's|^(CT_PREFIX_DIR)=.*|\1="${HOME}/x-tools/${CT_TARGET}"|;' \ |
yann@1186 | 73 |
-e 's|^# CT_LOG_TO_FILE is not set$|CT_LOG_TO_FILE=y|;' \ |
yann@1186 | 74 |
-e 's|^# CT_LOG_FILE_COMPRESS is not set$|CT_LOG_FILE_COMPRESS=y|;' \ |
yann@1186 | 75 |
-e 's|^(CT_LOCAL_TARBALLS_DIR)=.*|\1="${HOME}/src"|;' \ |
yann@1186 | 76 |
<.config \ |
yann@1424 | 77 |
>"${samp_dir}/crosstool.config" |
yann@63 | 78 |
|
yann@64 | 79 |
# Function to copy a file to the sample directory |
yann@64 | 80 |
# Needed in case the file is already there (think of a previously available sample) |
yann@64 | 81 |
# Usage: CT_DoAddFileToSample <source> <dest> |
yann@64 | 82 |
CT_DoAddFileToSample() { |
yann@64 | 83 |
source="$1" |
yann@64 | 84 |
dest="$2" |
yann@1299 | 85 |
inode_s=$(ls -i "${source}" |awk '{ print $1; }') |
yann@1299 | 86 |
inode_d=$(ls -i "${dest}" 2>/dev/null |awk '{ print $1; }' || true) |
yann@64 | 87 |
if [ "${inode_s}" != "${inode_d}" ]; then |
yann@64 | 88 |
cp "${source}" "${dest}" |
yann@64 | 89 |
fi |
yann@64 | 90 |
} |
yann@64 | 91 |
|
yann@182 | 92 |
if [ "${CT_TOP_DIR}" = "${CT_LIB_DIR}" ]; then |
yann@182 | 93 |
samp_top_dir="\${CT_LIB_DIR}" |
yann@182 | 94 |
else |
yann@182 | 95 |
samp_top_dir="\${CT_TOP_DIR}" |
yann@182 | 96 |
fi |
yann@182 | 97 |
|
yann@63 | 98 |
# Save the uClibc .config file |
yann@63 | 99 |
if [ -n "${CT_LIBC_UCLIBC_CONFIG_FILE}" ]; then |
yann@63 | 100 |
# We save the file, and then point the saved sample to this file |
yann@1424 | 101 |
CT_DoAddFileToSample "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${samp_dir}/${CT_LIBC}-${CT_LIBC_VERSION}.config" |
yann@1539 | 102 |
"${sed}" -r -i -e 's|^(CT_LIBC_UCLIBC_CONFIG_FILE)=.+$|\1="'"${samp_top_dir}"'/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"|;' \ |
yann@1424 | 103 |
"${samp_dir}/crosstool.config" |
yann@63 | 104 |
else |
yann@63 | 105 |
# remove any dangling files |
yann@1424 | 106 |
for f in "${samp_dir}/${CT_LIBC}-"*.config; do |
yann@182 | 107 |
if [ -f "${f}" ]; then rm -f "${f}"; fi |
yann@63 | 108 |
done |
yann@63 | 109 |
fi |
yann@935 | 110 |
|
yann@935 | 111 |
# Restore stdout now, to be interactive |
yann@935 | 112 |
exec >&7 |
yann@935 | 113 |
|
yann@935 | 114 |
# Fill-in the reported-by info |
yann@1424 | 115 |
[ -f "${samp_dir}/reported.by" ] && . "${samp_dir}/reported.by" |
yann@935 | 116 |
old_name="${reporter_name}" |
yann@935 | 117 |
old_url="${reporter_url}" |
yann@935 | 118 |
read -p "Reporter name [${reporter_name}]: " reporter_name |
yann@935 | 119 |
read -p "Reporter URL [${reporter_url}]: " reporter_url |
yann@935 | 120 |
if [ -n "${reporter_comment}" ]; then |
yann@935 | 121 |
echo "Old comment if you need to copy-paste:" |
yann@958 | 122 |
printf "${reporter_comment}\n" |
yann@935 | 123 |
fi |
yann@935 | 124 |
echo "Reporter comment (Ctrl-D to finish):" |
yann@935 | 125 |
reporter_comment=$(cat) |
yann@935 | 126 |
|
yann@935 | 127 |
( echo "reporter_name=\"${reporter_name:=${old_name}}\"" |
yann@935 | 128 |
echo "reporter_url=\"${reporter_url:=${old_url}}\"" |
yann@935 | 129 |
printf "reporter_comment=\"${reporter_comment}\"\n" |
yann@1424 | 130 |
) >"${samp_dir}/reported.by" |