scripts/saveSample.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon May 07 15:57:02 2007 +0000 (2007-05-07)
changeset 64 7dab8d1a2426
parent 63 89b41dbffe8d
child 84 dcb02306a338
permissions -rwxr-xr-x
Fix glibc and uClibc downloading and extracting.
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.
     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_TOP_DIR}/scripts/functions"
    12 
    13 # Log to a temporary file until we have built our environment
    14 CT_ACTUAL_LOG_FILE="${CT_TOP_DIR}/$$.log"
    15 CT_LOG_INFO=y
    16 CT_LOG_LEVEL_MAX="INFO"
    17 
    18 # Parse the configuration file
    19 CT_TestOrAbort "Configuration file not found. Please create one." -f "${CT_TOP_DIR}/.config"
    20 . "${CT_TOP_DIR}/.config"
    21 
    22 # Override log level
    23 unset CT_LOG_ERROR CT_LOG_WARN CT_LOG_EXTRA CT_LOG_DEBUG 
    24 CT_LOG_INFO=y
    25 CT_LOG_LEVEL_MAX="INFO"
    26 
    27 # Target triplet: CT_TARGET needs a little love:
    28 CT_DoBuildTargetTriplet
    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 # Create the sample directory
    35 [ -d "${CT_TOP_DIR}/samples/${CT_TARGET}" ] || svn mkdir "${CT_TOP_DIR}/samples/${CT_TARGET}" >/dev/null 2>&1
    36 
    37 # Save the crosstool-NG config file
    38 cp "${CT_TOP_DIR}/.config" "${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config"
    39 
    40 # Function to copy a file to the sample directory
    41 # Needed in case the file is already there (think of a previously available sample)
    42 # Usage: CT_DoAddFileToSample <source> <dest>
    43 CT_DoAddFileToSample() {
    44     source="$1"
    45     dest="$2"
    46     inode_s=`ls -i "${source}"`
    47     inode_d=`ls -i "${dest}"`
    48     if [ "${inode_s}" != "${inode_d}" ]; then
    49         cp "${source}" "${dest}"
    50     fi
    51     svn add "${dest}" >/dev/null 2>&1
    52 }
    53 
    54 # Save the kernel .config file
    55 if [ -n "${CT_KERNEL_LINUX_CONFIG_FILE}" ]; then
    56     # We save the file, and then point the saved sample to this file
    57     CT_DoAddFileToSample "${CT_KERNEL_LINUX_CONFIG_FILE}" "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_KERNEL}-${CT_KERNEL_VERSION}.config"
    58     sed -r -i -e 's|^(CT_KERNEL_LINUX_CONFIG_FILE=).+$|\1"${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_KERNEL}-${CT_KERNEL_VERSION}.config"|;' \
    59         "${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config"
    60 else
    61     # remove any dangling files
    62     for f in "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_KERNEL}-"*.config; do
    63         if [ -f "${f}" ]; then svn rm --force "${f}" >/dev/null 2>&1; fi
    64     done
    65 fi
    66 
    67 # Save the uClibc .config file
    68 if [ -n "${CT_LIBC_UCLIBC_CONFIG_FILE}" ]; then
    69     # We save the file, and then point the saved sample to this file
    70     CT_DoAddFileToSample "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"
    71     sed -r -i -e 's|^(CT_LIBC_UCLIBC_CONFIG_FILE=).+$|\1"${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"|;' \
    72         "${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config"
    73 else
    74     # remove any dangling files
    75     for f in "${CT_TOP_DIR}/samples/${CT_TARGET}/${CT_LIBC}-"*.config; do
    76         if [ -f "${f}" ]; then svn rm --force "${f}" >/dev/null 2>&1; fi
    77     done
    78 fi
    79 
    80 # We could svn add earlier, but it's better to
    81 # add a frozen file than modifying it later
    82 svn add "${CT_TOP_DIR}/samples/${CT_TARGET}/crosstool.config" >/dev/null 2>&1
    83 
    84 svn stat "${CT_TOP_DIR}/samples/${CT_TARGET}" 2>/dev/null |CT_DoLog INFO
    85 
    86 rm -f "${CT_ACTUAL_LOG_FILE}"