scripts/saveSample.sh.in
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Thu Jun 11 21:47:19 2009 +0000 (2009-06-11)
branch1.4
changeset 1451 25d050084e98
parent 1223 df01ad996322
child 1424 8e87e701cf4c
permissions -rw-r--r--
populate: fix installing dynamic linker 'ld.so'

The dynamic linker, ld.so, needs the execute bit to be set.
Detect tht the library being installed is in fact ld.so and
install it with 0755 instead of 0644.

Fix detecting src == dst.

Use a simpler command to copy src -> dst.

Also change echo to printf, get rid of 'echo -n', which is
highly non-portable.


-------- diffstat follows --------
/trunk/scripts/populate.in | 76 43 33 0 +++++++++++++++++++++++++++++-----------------------
1 file changed, 43 insertions(+), 33 deletions(-)
(transplanted from d7ddcb75e0f703e2ba6d17169167356389224870)
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@63
    62
# Create the sample directory
yann@935
    63
if [ ! -d "samples/${CT_TARGET}" ]; then
yann@935
    64
    mkdir -p "samples/${CT_TARGET}"
yann@108
    65
fi
yann@63
    66
yann@63
    67
# Save the crosstool-NG config file
yann@1186
    68
"${sed}" -r -e 's|^(CT_PREFIX_DIR)=.*|\1="${HOME}/x-tools/${CT_TARGET}"|;'      \
yann@1186
    69
            -e 's|^# CT_LOG_TO_FILE is not set$|CT_LOG_TO_FILE=y|;'             \
yann@1186
    70
            -e 's|^# CT_LOG_FILE_COMPRESS is not set$|CT_LOG_FILE_COMPRESS=y|;' \
yann@1186
    71
            -e 's|^(CT_LOCAL_TARBALLS_DIR)=.*|\1="${HOME}/src"|;'               \
yann@1186
    72
         <.config                                                               \
yann@935
    73
    >"samples/${CT_TARGET}/crosstool.config"
yann@63
    74
yann@64
    75
# Function to copy a file to the sample directory
yann@64
    76
# Needed in case the file is already there (think of a previously available sample)
yann@64
    77
# Usage: CT_DoAddFileToSample <source> <dest>
yann@64
    78
CT_DoAddFileToSample() {
yann@64
    79
    source="$1"
yann@64
    80
    dest="$2"
yann@1299
    81
    inode_s=$(ls -i "${source}" |awk '{ print $1; }')
yann@1299
    82
    inode_d=$(ls -i "${dest}" 2>/dev/null |awk '{ print $1; }' || true)
yann@64
    83
    if [ "${inode_s}" != "${inode_d}" ]; then
yann@64
    84
        cp "${source}" "${dest}"
yann@64
    85
    fi
yann@64
    86
}
yann@64
    87
yann@182
    88
if [ "${CT_TOP_DIR}" = "${CT_LIB_DIR}" ]; then
yann@182
    89
    samp_top_dir="\${CT_LIB_DIR}"
yann@182
    90
else
yann@182
    91
    samp_top_dir="\${CT_TOP_DIR}"
yann@182
    92
fi
yann@182
    93
yann@63
    94
# Save the uClibc .config file
yann@63
    95
if [ -n "${CT_LIBC_UCLIBC_CONFIG_FILE}" ]; then
yann@63
    96
    # We save the file, and then point the saved sample to this file
yann@935
    97
    CT_DoAddFileToSample "${CT_LIBC_UCLIBC_CONFIG_FILE}" "samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"
yann@1223
    98
    "${sed}" -r -i -e 's|^(CT_LIBC_UCLIBC_CONFIG_FILE)=.+$|\1="'"${samp_top_dir}"'/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"|;' \
yann@1186
    99
             "samples/${CT_TARGET}/crosstool.config"
yann@63
   100
else
yann@63
   101
    # remove any dangling files
yann@935
   102
    for f in "samples/${CT_TARGET}/${CT_LIBC}-"*.config; do
yann@182
   103
        if [ -f "${f}" ]; then rm -f "${f}"; fi
yann@63
   104
    done
yann@63
   105
fi
yann@935
   106
yann@935
   107
# Restore stdout now, to be interactive
yann@935
   108
exec >&7
yann@935
   109
yann@935
   110
# Fill-in the reported-by info
yann@935
   111
[ -f "samples/${CT_TARGET}/reported.by" ] && . "samples/${CT_TARGET}/reported.by"
yann@935
   112
old_name="${reporter_name}"
yann@935
   113
old_url="${reporter_url}"
yann@935
   114
read -p "Reporter name [${reporter_name}]: " reporter_name
yann@935
   115
read -p "Reporter URL [${reporter_url}]: " reporter_url
yann@935
   116
if [ -n "${reporter_comment}" ]; then
yann@935
   117
  echo "Old comment if you need to copy-paste:"
yann@958
   118
  printf "${reporter_comment}\n"
yann@935
   119
fi
yann@935
   120
echo "Reporter comment (Ctrl-D to finish):"
yann@935
   121
reporter_comment=$(cat)
yann@935
   122
yann@935
   123
( echo "reporter_name=\"${reporter_name:=${old_name}}\""
yann@935
   124
  echo "reporter_url=\"${reporter_url:=${old_url}}\""
yann@935
   125
  printf "reporter_comment=\"${reporter_comment}\"\n"
yann@935
   126
) >"samples/${CT_TARGET}/reported.by"