scripts/saveSample.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Sep 23 14:48:10 2008 +0000 (2008-09-23)
changeset 872 fd4bf138f08f
parent 735 e9cbd9d6e737
child 927 4824afc1b2f7
permissions -rwxr-xr-x
Bart De VOS pointed out that removing absolute paths from the libc linker scripts is plainly wrong.
It dates from dawn ages of the original crosstool code, and is not well explained. At that time, binutils might not understand the sysroot stuff, and it was necessary to remove absolute paths in that case.

/trunk/scripts/build/libc/glibc.sh | 14 2 12 0 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
     1 #!/bin/bash
     2 
     3 # This script is responsible for saving the current configuration into a
     4 # sample to be used later on as a pre-configured target.
     5 
     6 # What we need to save:
     7 #  - the .config file
     8 #  - the kernel .config file if specified
     9 #  - the uClibc .config file if uClibc selected
    10 
    11 . "${CT_LIB_DIR}/scripts/functions"
    12 
    13 # Don't care about any log file
    14 exec >/dev/null
    15 rm -f "${tmp_log_file}"
    16 
    17 # Parse the configuration file
    18 CT_TestOrAbort "Configuration file not found. Please create one." -f "${CT_TOP_DIR}/.config"
    19 . "${CT_TOP_DIR}/.config"
    20 
    21 # Do not use a progress bar
    22 unset CT_LOG_PROGRESS_BAR
    23 
    24 # Parse the architecture-specific functions
    25 . "${CT_LIB_DIR}/arch/${CT_ARCH}/functions"
    26 
    27 # Target tuple: CT_TARGET needs a little love:
    28 CT_DoBuildTargetTuple
    29 
    30 # Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR,
    31 # re-parse them:
    32 . "${CT_TOP_DIR}/.config"
    33 
    34 # Override log options
    35 unset CT_LOG_PROGRESS_BAR CT_LOG_ERROR CT_LOG_INFO CT_LOG_EXTRA CT_LOG_DEBUG LOG_ALL
    36 CT_LOG_WARN=y
    37 CT_LOG_LEVEL_MAX="WARN"
    38 
    39 # Create the sample directory
    40 if [ ! -d "${CT_TOP_DIR}/samples/${CT_TARGET}" ]; then
    41     mkdir -p "${CT_TOP_DIR}/samples/${CT_TARGET}"
    42 fi
    43 
    44 # Save the crosstool-NG config file
    45 sed -r -e 's|^(CT_PREFIX_DIR)=.*|\1="${HOME}/x-tools/${CT_TARGET}"|;'       \
    46        -e 's|^# CT_LOG_TO_FILE is not set$|CT_LOG_TO_FILE=y|;'              \
    47        -e 's|^# CT_LOG_FILE_COMPRESS is not set$|CT_LOG_FILE_COMPRESS=y|;'  \
    48     <"${CT_TOP_DIR}/.config"                                                \
    49     >"${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config"
    50 
    51 # Function to copy a file to the sample directory
    52 # Needed in case the file is already there (think of a previously available sample)
    53 # Usage: CT_DoAddFileToSample <source> <dest>
    54 CT_DoAddFileToSample() {
    55     source="$1"
    56     dest="$2"
    57     inode_s=$(ls -i "${source}")
    58     inode_d=$(ls -i "${dest}" 2>/dev/null || true)
    59     if [ "${inode_s}" != "${inode_d}" ]; then
    60         cp "${source}" "${dest}"
    61     fi
    62 }
    63 
    64 if [ "${CT_TOP_DIR}" = "${CT_LIB_DIR}" ]; then
    65     samp_top_dir="\${CT_LIB_DIR}"
    66 else
    67     samp_top_dir="\${CT_TOP_DIR}"
    68 fi
    69 
    70 # Save the uClibc .config file
    71 if [ -n "${CT_LIBC_UCLIBC_CONFIG_FILE}" ]; then
    72     # We save the file, and then point the saved sample to this file
    73     CT_DoAddFileToSample "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"
    74     sed -r -i -e 's|^(CT_LIBC_UCLIBC_CONFIG_FILE=).+$|\1"'"${samp_top_dir}"'/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"|;' \
    75         "${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config"
    76 else
    77     # remove any dangling files
    78     for f in "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_LIBC}-"*.config; do
    79         if [ -f "${f}" ]; then rm -f "${f}"; fi
    80     done
    81 fi