scripts/tarball.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue May 22 20:33:43 2007 +0000 (2007-05-22)
changeset 115 95ca955e8a58
parent 87 adb773fccc6b
child 130 9d98c59aa1c3
permissions -rwxr-xr-x
Upgrade scripts/tarball.sh and scripts/saveSample.sh to use the new logging facility.
     1 #!/bin/bash
     2 
     3 # This scripts makes a tarball of the configured toolchain
     4 # Pre-requisites:
     5 #  - crosstool-NG is configured
     6 #  - components tarball are available
     7 #  - toolchain is built successfully
     8 
     9 # We need the functions first:
    10 . "${CT_TOP_DIR}/scripts/functions"
    11 
    12 exec 6>&1
    13 exec >/dev/null
    14 
    15 # Override log level
    16 unset CT_LOG_ERROR CT_LOG_WARN CT_LOG_EXTRA CT_LOG_DEBUG
    17 CT_LOG_INFO=y
    18 CT_LOG_LEVEL_MAX="INFO"
    19 
    20 # Parse the configuration file:
    21 . ${CT_TOP_DIR}/.config
    22 
    23 CT_DoBuildTargetTriplet
    24 
    25 # Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR,
    26 # re-parse them:
    27 . "${CT_TOP_DIR}/.config"
    28 
    29 # Build the files' base names
    30 CT_KERNEL_FILE="${CT_KERNEL}-${CT_KERNEL_VERSION}"
    31 CT_BINUTILS_FILE="binutils-${CT_BINUTILS_VERSION}"
    32 CT_LIBC_FILE="${CT_LIBC}-${CT_LIBC_VERSION}"
    33 for addon in ${CT_LIBC_ADDONS_LIST}; do
    34     CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-${addon}-${CT_LIBC_VERSION}"
    35 done
    36 [ "${CT_LIBC_GLIBC_USE_PORTS}" = "y" ] && CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-ports-${CT_LIBC_VERSION}"
    37 [ "${CT_LIBC_UCLIBC_LOCALES}" = "y" ]  && CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-locales-030818"
    38 [ "${CT_CC_USE_CORE}" = "y" ]          && CT_CC_CORE_FILE="${CT_CC_CORE}-${CT_CC_CORE_VERSION}"
    39 CT_CC_FILE="${CT_CC}-${CT_CC_VERSION}"
    40 [ "${CT_ARCH_FLOAT_SW_LIBFLOAT}" = "y" ] && CT_LIBFLOAT_FILE="libfloat-990616"
    41 
    42 # Build a one-line list of the files to ease scanning below
    43 CT_TARBALLS_DIR="${CT_TOP_DIR}/targets/tarballs"
    44 CT_TARBALLS=" "
    45 for file_var in CT_KERNEL_FILE CT_BINUTILS_FILE CT_LIBC_FILE CT_LIBC_ADDONS_FILES CT_CC_CORE_FILE CT_CC_FILE CT_LIBFLOAT_FILE; do
    46     for file in ${!file_var}; do
    47         ext=`CT_GetFileExtension "${file}"`
    48         CT_TestAndAbort "Missing tarball for: \"${file}\"" -z "${ext}"
    49         CT_TARBALLS="${CT_TARBALLS}${file}${ext} "
    50     done
    51 done
    52 
    53 # We need to emulate a build directory:
    54 CT_BUILD_DIR="${CT_TOP_DIR}/targets/${CT_TARGET}/build"
    55 mkdir -p "${CT_BUILD_DIR}"
    56 CT_MktempDir tempdir
    57 
    58 # Save crosstool-ng, as it is configured for the current toolchain.
    59 topdir=`basename "${CT_TOP_DIR}"`
    60 CT_Pushd "${CT_TOP_DIR}/.."
    61 
    62 botdir=`pwd`
    63 
    64 # Build the list of files to exclude:
    65 echo "${topdir}/*.log" >"${tempdir}/${CT_TARGET}.list"
    66 echo "${topdir}/targets/*-*-*-*" >>"${tempdir}/${CT_TARGET}.list"
    67 for t in `ls -1 "${topdir}/targets/tarballs/"`; do
    68     case "${CT_TARBALLS}" in
    69         *" ${t} "*) ;;
    70         *)          echo "${topdir}/targets/tarballs/${t}" >>"${tempdir}/${CT_TARGET}.list"
    71     esac
    72 done
    73 
    74 CT_DoLog INFO "Saving crosstool"
    75 tar cfj "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2" \
    76     --no-wildcards-match-slash                              \
    77     -X "${tempdir}/${CT_TARGET}.list"                       \
    78     "${topdir}"                                             2>/dev/null
    79 
    80 CT_Popd
    81 
    82 # Save the generated toolchain
    83 CT_DoLog INFO "Saving the generated toolchain"
    84 tar cfj "${botdir}/${CT_TARGET}.tar.bz2" "${CT_PREFIX_DIR}" 2>/dev/null
    85 
    86 rm -f "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2"
    87 rm -rf "${tempdir}"