author | "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> |
Thu Jul 12 13:22:26 2007 +0000 (2007-07-12) | |
changeset 237 | 131ee309e740 |
parent 165 | a291bfa17715 |
child 335 | f0d84f1d4c93 |
permissions | -rwxr-xr-x |
yann@63 | 1 |
#!/bin/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 kernel .config file if specified |
yann@63 | 9 |
# - the uClibc .config file if uClibc selected |
yann@63 | 10 |
|
yann@182 | 11 |
. "${CT_LIB_DIR}/scripts/functions" |
yann@63 | 12 |
|
yann@165 | 13 |
# Don't care about any log file |
yann@115 | 14 |
exec >/dev/null |
yann@165 | 15 |
rm -f "${tmp_log_file}" |
yann@84 | 16 |
|
yann@63 | 17 |
# Parse the configuration file |
yann@63 | 18 |
CT_TestOrAbort "Configuration file not found. Please create one." -f "${CT_TOP_DIR}/.config" |
yann@63 | 19 |
. "${CT_TOP_DIR}/.config" |
yann@63 | 20 |
|
yann@63 | 21 |
# Target triplet: CT_TARGET needs a little love: |
yann@63 | 22 |
CT_DoBuildTargetTriplet |
yann@63 | 23 |
|
yann@64 | 24 |
# Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR, |
yann@64 | 25 |
# re-parse them: |
yann@64 | 26 |
. "${CT_TOP_DIR}/.config" |
yann@64 | 27 |
|
yann@126 | 28 |
# Override log level |
yann@126 | 29 |
unset CT_LOG_ERROR CT_LOG_WARN CT_LOG_EXTRA CT_LOG_DEBUG |
yann@126 | 30 |
CT_LOG_INFO=y |
yann@126 | 31 |
CT_LOG_LEVEL_MAX="INFO" |
yann@126 | 32 |
|
yann@63 | 33 |
# Create the sample directory |
yann@182 | 34 |
if [ ! -d "${CT_TOP_DIR}/samples/${CT_TARGET}" ]; then |
yann@182 | 35 |
mkdir -p "${CT_TOP_DIR}/samples/${CT_TARGET}" |
yann@108 | 36 |
fi |
yann@63 | 37 |
|
yann@63 | 38 |
# Save the crosstool-NG config file |
yann@63 | 39 |
cp "${CT_TOP_DIR}/.config" "${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config" |
yann@63 | 40 |
|
yann@64 | 41 |
# Function to copy a file to the sample directory |
yann@64 | 42 |
# Needed in case the file is already there (think of a previously available sample) |
yann@64 | 43 |
# Usage: CT_DoAddFileToSample <source> <dest> |
yann@64 | 44 |
CT_DoAddFileToSample() { |
yann@64 | 45 |
source="$1" |
yann@64 | 46 |
dest="$2" |
yann@64 | 47 |
inode_s=`ls -i "${source}"` |
yann@108 | 48 |
inode_d=`ls -i "${dest}" 2>/dev/null || true` |
yann@64 | 49 |
if [ "${inode_s}" != "${inode_d}" ]; then |
yann@64 | 50 |
cp "${source}" "${dest}" |
yann@64 | 51 |
fi |
yann@64 | 52 |
} |
yann@64 | 53 |
|
yann@182 | 54 |
if [ "${CT_TOP_DIR}" = "${CT_LIB_DIR}" ]; then |
yann@182 | 55 |
samp_top_dir="\${CT_LIB_DIR}" |
yann@182 | 56 |
else |
yann@182 | 57 |
samp_top_dir="\${CT_TOP_DIR}" |
yann@182 | 58 |
fi |
yann@182 | 59 |
|
yann@63 | 60 |
# Save the kernel .config file |
yann@63 | 61 |
if [ -n "${CT_KERNEL_LINUX_CONFIG_FILE}" ]; then |
yann@63 | 62 |
# We save the file, and then point the saved sample to this file |
yann@64 | 63 |
CT_DoAddFileToSample "${CT_KERNEL_LINUX_CONFIG_FILE}" "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_KERNEL}-${CT_KERNEL_VERSION}.config" |
yann@182 | 64 |
sed -r -i -e 's|^(CT_KERNEL_LINUX_CONFIG_FILE=).+$|\1"'"${samp_top_dir}"'/samples/${CT_TARGET}/${CT_KERNEL}-${CT_KERNEL_VERSION}.config"|;' \ |
yann@63 | 65 |
"${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config" |
yann@63 | 66 |
else |
yann@63 | 67 |
# remove any dangling files |
yann@63 | 68 |
for f in "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_KERNEL}-"*.config; do |
yann@182 | 69 |
if [ -f "${f}" ]; then rm -f "${f}"; fi |
yann@63 | 70 |
done |
yann@63 | 71 |
fi |
yann@63 | 72 |
|
yann@63 | 73 |
# Save the uClibc .config file |
yann@63 | 74 |
if [ -n "${CT_LIBC_UCLIBC_CONFIG_FILE}" ]; then |
yann@63 | 75 |
# We save the file, and then point the saved sample to this file |
yann@64 | 76 |
CT_DoAddFileToSample "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config" |
yann@182 | 77 |
sed -r -i -e 's|^(CT_LIBC_UCLIBC_CONFIG_FILE=).+$|\1"'"${samp_top_dir}"'/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"|;' \ |
yann@63 | 78 |
"${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config" |
yann@63 | 79 |
else |
yann@63 | 80 |
# remove any dangling files |
yann@63 | 81 |
for f in "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_LIBC}-"*.config; do |
yann@182 | 82 |
if [ -f "${f}" ]; then rm -f "${f}"; fi |
yann@63 | 83 |
done |
yann@63 | 84 |
fi |