author | "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> |
Fri May 18 19:55:49 2007 +0000 (2007-05-18) | |
changeset 105 | 5a8d4f6a19c7 |
child 115 | 95ca955e8a58 |
permissions | -rwxr-xr-x |
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@87 | 12 |
# Log to a temporary file until we have built our environment |
yann@87 | 13 |
CT_ACTUAL_LOG_FILE="${CT_TOP_DIR}/$$.log" |
yann@87 | 14 |
|
yann@87 | 15 |
# Override log level |
yann@87 | 16 |
unset CT_LOG_ERROR CT_LOG_WARN CT_LOG_EXTRA CT_LOG_DEBUG |
yann@87 | 17 |
CT_LOG_INFO=y |
yann@87 | 18 |
CT_LOG_LEVEL_MAX="INFO" |
yann@87 | 19 |
|
yann@87 | 20 |
# Parse the configuration file: |
yann@87 | 21 |
. ${CT_TOP_DIR}/.config |
yann@87 | 22 |
|
yann@87 | 23 |
CT_DoBuildTargetTriplet |
yann@87 | 24 |
|
yann@87 | 25 |
# Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR, |
yann@87 | 26 |
# re-parse them: |
yann@87 | 27 |
. "${CT_TOP_DIR}/.config" |
yann@87 | 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}" |
yann@87 | 88 |
rm -f "${CT_TOP_DIR}/$$.log" |