scripts/build/internals.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Jan 01 17:09:52 2010 +0100 (2010-01-01)
changeset 1673 ecb7fcc4edb0
parent 1503 7dcef3fb5e8f
child 1817 c9654a027900
permissions -rw-r--r--
scripts/functions: fix downloading with aria2

In case the remote file does not exist (and probably for some
other reasons as well), aria2 nonetheless creates an empty file
(or not empty for some other reasons).

The solution is to delete the file whenever aria2 fails.
     1 # This file contains crosstool-NG internal steps
     2 
     3 # This step is called once all components were built, to remove
     4 # un-wanted files, to add tuple aliases, and to add the final
     5 # crosstool-NG-provided files.
     6 do_finish() {
     7     local _t
     8 
     9     CT_DoStep INFO "Cleaning-up the toolchain's directory"
    10 
    11     if [ "${CT_BARE_METAL}" != "y" ]; then
    12         CT_DoLog EXTRA "Installing the populate helper"
    13         sed -r -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \
    14                -e 's|@@CT_install@@|'"${install}"'|g;'  \
    15                -e 's|@@CT_bash@@|'"${bash}"'|g;'        \
    16                -e 's|@@CT_grep@@|'"${grep}"'|g;'        \
    17                -e 's|@@CT_make@@|'"${make}"'|g;'        \
    18                -e 's|@@CT_sed@@|'"${sed}"'|g;'          \
    19                "${CT_LIB_DIR}/scripts/populate.in"      \
    20                >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
    21         CT_DoExecLog ALL chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
    22     fi
    23 
    24     # Create the aliases to the target tools
    25     CT_DoLog EXTRA "Creating toolchain aliases"
    26     CT_Pushd "${CT_PREFIX_DIR}/bin"
    27     for t in "${CT_TARGET}-"*; do
    28         if [ -n "${CT_TARGET_ALIAS}" ]; then
    29             _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;')
    30             CT_DoExecLog ALL ln -sv "${t}" "${_t}"
    31         fi
    32         if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then
    33             _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}")
    34             CT_DoExecLog ALL ln -sv "${t}" "${_t}"
    35         fi
    36     done
    37     CT_Popd
    38 
    39     # If using the companion libraries, we need a wrapper
    40     # that will set LD_LIBRARY_PATH approriately
    41     if [ "${CT_WRAPPER_NEEDED}" = "y" ]; then
    42         CT_DoLog EXTRA "Installing toolchain wrappers"
    43         CT_Pushd "${CT_PREFIX_DIR}/bin"
    44 
    45         # Install the wrapper
    46         case "${CT_TOOLS_WRAPPER}" in
    47             script)
    48                 CT_DoExecLog DEBUG install                              \
    49                                    -m 0755                              \
    50                                    "${CT_LIB_DIR}/scripts/wrapper.in"   \
    51                                    ".${CT_TARGET}-wrapper"
    52                 ;;
    53             exec)
    54                 _t="-s"
    55                 if [ "${CT_DEBUG_CT}" = "y" ]; then
    56                   _t="" # If debugging crosstool-NG, don't strip the wrapper
    57                 fi
    58                 CT_DoExecLog DEBUG "${CT_HOST}-gcc"                           \
    59                                    -Wall -Wextra -Wunreachable-code -Werror   \
    60                                    -O3 -static ${_t}                          \
    61                                    "${CT_LIB_DIR}/scripts/wrapper.c"          \
    62                                    -o ".${CT_TARGET}-wrapper"
    63                 ;;
    64         esac
    65 
    66         # Replace every tools with the wrapper
    67         # Do it unconditionally, even for those tools that happen to be shell
    68         # scripts, we don't know if they would in the end spawn a binary...
    69         # Just skip symlinks
    70         for _t in "${CT_TARGET}-"*; do
    71             if [ "$( LANG=C stat -c '%F' "${_t}" )" != "symbolic link" ]; then
    72                 CT_DoExecLog ALL mv "${_t}" ".${_t}"
    73                 CT_DoExecLog ALL ln ".${CT_TARGET}-wrapper" "${_t}"
    74             fi
    75         done
    76 
    77         # Get rid of the wrapper, we're using hardlinks
    78         CT_DoExecLog DEBUG rm -f ".${CT_TARGET}-wrapper"
    79         CT_Popd
    80     fi
    81 
    82     CT_DoLog EXTRA "Removing access to the build system tools"
    83     CT_DoExecLog DEBUG rm -rf "${CT_PREFIX_DIR}/buildtools"
    84 
    85     # Remove the generated documentation files
    86     if [ "${CT_REMOVE_DOCS}" = "y" ]; then
    87         CT_DoLog EXTRA "Removing installed documentation"
    88         CT_DoForceRmdir "${CT_PREFIX_DIR}/"{,usr/}{man,info}
    89         CT_DoForceRmdir "${CT_SYSROOT_DIR}/"{,usr/}{man,info}
    90         CT_DoForceRmdir "${CT_DEBUGROOT_DIR}/"{,usr/}{man,info}
    91     fi
    92 
    93     CT_EndStep
    94 }