mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-19 04:47:52 +00:00
64d804c4f6
Although we no longer need the kernel config file, we now need to specify the kernel source directory when installing headers. Re-order components downloading to match build order. Fix the saveSample.sh script in case the referenced files are the same as the destination files.
87 lines
3.2 KiB
Bash
Executable File
87 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script is responsible for saving the current configuration into a
|
|
# sample to be used later on as a pre-configured target.
|
|
|
|
# What we need to save:
|
|
# - the .config file
|
|
# - the kernel .config file if specified
|
|
# - the uClibc .config file if uClibc selected
|
|
|
|
. "${CT_TOP_DIR}/scripts/functions"
|
|
|
|
# Log to a temporary file until we have built our environment
|
|
CT_ACTUAL_LOG_FILE="${CT_TOP_DIR}/$$.log"
|
|
CT_LOG_INFO=y
|
|
CT_LOG_LEVEL_MAX="INFO"
|
|
|
|
# Parse the configuration file
|
|
CT_TestOrAbort "Configuration file not found. Please create one." -f "${CT_TOP_DIR}/.config"
|
|
. "${CT_TOP_DIR}/.config"
|
|
|
|
# Override log level
|
|
unset CT_LOG_ERROR CT_LOG_WARN CT_LOG_EXTRA CT_LOG_DEBUG
|
|
CT_LOG_INFO=y
|
|
CT_LOG_LEVEL_MAX="INFO"
|
|
|
|
# Target triplet: CT_TARGET needs a little love:
|
|
CT_DoBuildTargetTriplet
|
|
|
|
# Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR,
|
|
# re-parse them:
|
|
. "${CT_TOP_DIR}/.config"
|
|
|
|
# Create the sample directory
|
|
[ -d "${CT_TOP_DIR}/samples/${CT_TARGET}" ] || svn mkdir "${CT_TOP_DIR}/samples/${CT_TARGET}" >/dev/null 2>&1
|
|
|
|
# Save the crosstool-NG config file
|
|
cp "${CT_TOP_DIR}/.config" "${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config"
|
|
|
|
# Function to copy a file to the sample directory
|
|
# Needed in case the file is already there (think of a previously available sample)
|
|
# Usage: CT_DoAddFileToSample <source> <dest>
|
|
CT_DoAddFileToSample() {
|
|
source="$1"
|
|
dest="$2"
|
|
inode_s=`ls -i "${source}"`
|
|
inode_d=`ls -i "${dest}"`
|
|
if [ "${inode_s}" != "${inode_d}" ]; then
|
|
cp "${source}" "${dest}"
|
|
fi
|
|
svn add "${dest}" >/dev/null 2>&1
|
|
}
|
|
|
|
# Save the kernel .config file
|
|
if [ -n "${CT_KERNEL_LINUX_CONFIG_FILE}" ]; then
|
|
# We save the file, and then point the saved sample to this file
|
|
CT_DoAddFileToSample "${CT_KERNEL_LINUX_CONFIG_FILE}" "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_KERNEL}-${CT_KERNEL_VERSION}.config"
|
|
sed -r -i -e 's|^(CT_KERNEL_LINUX_CONFIG_FILE=).+$|\1"${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_KERNEL}-${CT_KERNEL_VERSION}.config"|;' \
|
|
"${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config"
|
|
else
|
|
# remove any dangling files
|
|
for f in "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_KERNEL}-"*.config; do
|
|
if [ -f "${f}" ]; then svn rm --force "${f}" >/dev/null 2>&1; fi
|
|
done
|
|
fi
|
|
|
|
# Save the uClibc .config file
|
|
if [ -n "${CT_LIBC_UCLIBC_CONFIG_FILE}" ]; then
|
|
# We save the file, and then point the saved sample to this file
|
|
CT_DoAddFileToSample "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"
|
|
sed -r -i -e 's|^(CT_LIBC_UCLIBC_CONFIG_FILE=).+$|\1"${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"|;' \
|
|
"${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config"
|
|
else
|
|
# remove any dangling files
|
|
for f in "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_LIBC}-"*.config; do
|
|
if [ -f "${f}" ]; then svn rm --force "${f}" >/dev/null 2>&1; fi
|
|
done
|
|
fi
|
|
|
|
# We could svn add earlier, but it's better to
|
|
# add a frozen file than modifying it later
|
|
svn add "${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config" >/dev/null 2>&1
|
|
|
|
svn stat "${CT_TOP_DIR}/samples/${CT_TARGET}" 2>/dev/null |CT_DoLog INFO
|
|
|
|
rm -f "${CT_ACTUAL_LOG_FILE}"
|