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