1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/scripts/tarball.sh Sat May 12 09:54:29 2007 +0000
1.3 @@ -0,0 +1,88 @@
1.4 +#!/bin/bash
1.5 +
1.6 +# This scripts makes a tarball of the configured toolchain
1.7 +# Pre-requisites:
1.8 +# - crosstool-NG is configured
1.9 +# - components tarball are available
1.10 +# - toolchain is built successfully
1.11 +
1.12 +# We need the functions first:
1.13 +. "${CT_TOP_DIR}/scripts/functions"
1.14 +
1.15 +# Log to a temporary file until we have built our environment
1.16 +CT_ACTUAL_LOG_FILE="${CT_TOP_DIR}/$$.log"
1.17 +
1.18 +# Override log level
1.19 +unset CT_LOG_ERROR CT_LOG_WARN CT_LOG_EXTRA CT_LOG_DEBUG
1.20 +CT_LOG_INFO=y
1.21 +CT_LOG_LEVEL_MAX="INFO"
1.22 +
1.23 +# Parse the configuration file:
1.24 +. ${CT_TOP_DIR}/.config
1.25 +
1.26 +CT_DoBuildTargetTriplet
1.27 +
1.28 +# Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR,
1.29 +# re-parse them:
1.30 +. "${CT_TOP_DIR}/.config"
1.31 +
1.32 +# Build the files' base names
1.33 +CT_KERNEL_FILE="${CT_KERNEL}-${CT_KERNEL_VERSION}"
1.34 +CT_BINUTILS_FILE="binutils-${CT_BINUTILS_VERSION}"
1.35 +CT_LIBC_FILE="${CT_LIBC}-${CT_LIBC_VERSION}"
1.36 +for addon in ${CT_LIBC_ADDONS_LIST}; do
1.37 + CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-${addon}-${CT_LIBC_VERSION}"
1.38 +done
1.39 +[ "${CT_LIBC_GLIBC_USE_PORTS}" = "y" ] && CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-ports-${CT_LIBC_VERSION}"
1.40 +[ "${CT_LIBC_UCLIBC_LOCALES}" = "y" ] && CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-locales-030818"
1.41 +[ "${CT_CC_USE_CORE}" = "y" ] && CT_CC_CORE_FILE="${CT_CC_CORE}-${CT_CC_CORE_VERSION}"
1.42 +CT_CC_FILE="${CT_CC}-${CT_CC_VERSION}"
1.43 +[ "${CT_ARCH_FLOAT_SW_LIBFLOAT}" = "y" ] && CT_LIBFLOAT_FILE="libfloat-990616"
1.44 +
1.45 +# Build a one-line list of the files to ease scanning below
1.46 +CT_TARBALLS_DIR="${CT_TOP_DIR}/targets/tarballs"
1.47 +CT_TARBALLS=" "
1.48 +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
1.49 + for file in ${!file_var}; do
1.50 + ext=`CT_GetFileExtension "${file}"`
1.51 + CT_TestAndAbort "Missing tarball for: \"${file}\"" -z "${ext}"
1.52 + CT_TARBALLS="${CT_TARBALLS}${file}${ext} "
1.53 + done
1.54 +done
1.55 +
1.56 +# We need to emulate a build directory:
1.57 +CT_BUILD_DIR="${CT_TOP_DIR}/targets/${CT_TARGET}/build"
1.58 +mkdir -p "${CT_BUILD_DIR}"
1.59 +CT_MktempDir tempdir
1.60 +
1.61 +# Save crosstool-ng, as it is configured for the current toolchain.
1.62 +topdir=`basename "${CT_TOP_DIR}"`
1.63 +CT_Pushd "${CT_TOP_DIR}/.."
1.64 +
1.65 +botdir=`pwd`
1.66 +
1.67 +# Build the list of files to exclude:
1.68 +echo "${topdir}/*.log" >"${tempdir}/${CT_TARGET}.list"
1.69 +echo "${topdir}/targets/*-*-*-*" >>"${tempdir}/${CT_TARGET}.list"
1.70 +for t in `ls -1 "${topdir}/targets/tarballs/"`; do
1.71 + case "${CT_TARBALLS}" in
1.72 + *" ${t} "*) ;;
1.73 + *) echo "${topdir}/targets/tarballs/${t}" >>"${tempdir}/${CT_TARGET}.list"
1.74 + esac
1.75 +done
1.76 +
1.77 +CT_DoLog INFO "Saving crosstool"
1.78 +tar cfj "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2" \
1.79 + --no-wildcards-match-slash \
1.80 + -X "${tempdir}/${CT_TARGET}.list" \
1.81 + "${topdir}" 2>/dev/null
1.82 +
1.83 +CT_Popd
1.84 +
1.85 +# Save the generated toolchain
1.86 +CT_DoLog INFO "Saving the generated toolchain"
1.87 +tar cfj "${botdir}/${CT_TARGET}.tar.bz2" "${CT_PREFIX_DIR}" 2>/dev/null
1.88 +
1.89 +rm -f "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2"
1.90 +rm -rf "${tempdir}"
1.91 +rm -f "${CT_TOP_DIR}/$$.log"