mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-23 14:42:26 +00:00
9265403b8b
Homogenise the references to crosstool-NG: - the project is named "crosstool-NG" - the front-end is named "ct-ng" - don't use shortcuts (such as "ct-ng" to stand for "crosstool-NG") Default action is to print help. Don't speak of make rules when dumping help, just speak of actions.
99 lines
3.4 KiB
Bash
Executable File
99 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This scripts makes a tarball of the configured toolchain
|
|
# Pre-requisites:
|
|
# - crosstool-NG is configured
|
|
# - components tarball are available
|
|
# - toolchain is built successfully
|
|
|
|
# We need the functions first:
|
|
. "${CT_TOP_DIR}/scripts/functions"
|
|
|
|
# Don't care about any log file
|
|
exec >/dev/null
|
|
rm -f "${tmp_log_file}"
|
|
|
|
# Parse the configuration file:
|
|
. ${CT_TOP_DIR}/.config
|
|
|
|
CT_DoBuildTargetTriplet
|
|
|
|
# Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR,
|
|
# re-parse them:
|
|
. "${CT_TOP_DIR}/.config"
|
|
|
|
# Build a one-line list of files to include
|
|
CT_DoStep DEBUG "Building list of tarballs to add"
|
|
CT_TARBALLS_DIR="${CT_TOP_DIR}/targets/tarballs"
|
|
CT_TARBALLS=""
|
|
for dir in '' tools debug; do
|
|
CT_DoStep DEBUG "Scanning directory \"${dir}\""
|
|
for script in "${CT_TOP_DIR}/scripts/build/${dir}/"*.sh; do
|
|
CT_DoStep DEBUG "Testing component \"${script}\""
|
|
[ -n "${script}" ] || continue
|
|
unset do_print_file_name
|
|
. "${script}"
|
|
for file in `do_print_filename`; do
|
|
CT_DoLog DEBUG "Finding tarball for \"${file}\""
|
|
[ -n "${file}" ] || continue
|
|
ext=`CT_GetFileExtension "${file}"`
|
|
CT_TestOrAbort "Missing tarball for: \"${file}\"" -f "${CT_TOP_DIR}/targets/tarballs/${file}${ext}"
|
|
CT_DoLog DEBUG "Found \"${file}${ext}\""
|
|
CT_TARBALLS="${CT_TARBALLS} ${file}${ext}"
|
|
done
|
|
CT_EndStep
|
|
done
|
|
CT_EndStep
|
|
done
|
|
CT_EndStep
|
|
|
|
# We need to emulate a build directory:
|
|
CT_BUILD_DIR="${CT_TOP_DIR}/targets/${CT_TARGET}/build"
|
|
mkdir -p "${CT_BUILD_DIR}"
|
|
CT_MktempDir tempdir
|
|
|
|
# Save crosstool-NG, as it is configured for the current toolchain.
|
|
topdir=`basename "${CT_TOP_DIR}"`
|
|
CT_Pushd "${CT_TOP_DIR}/.."
|
|
|
|
botdir=`pwd`
|
|
|
|
# Build the list of files to exclude
|
|
CT_DoLog DEBUG "Building list of files to exclude"
|
|
exclude_list="${tempdir}/${CT_TARGET}.list"
|
|
{ echo ".svn"; \
|
|
echo "${topdir}/log.*"; \
|
|
echo "${topdir}/targets/src"; \
|
|
echo "${topdir}/targets/tst"; \
|
|
echo "${topdir}/targets/*-*-*-*"; \
|
|
for t in `ls -1 "${topdir}/targets/tarballs/"`; do \
|
|
case " ${CT_TARBALLS} " in \
|
|
*" ${t} "*) ;; \
|
|
*) echo "${topdir}/targets/tarballs/${t}";; \
|
|
esac; \
|
|
done; \
|
|
} >"${exclude_list}"
|
|
|
|
# Render the install directory writable
|
|
chmod u+w "${CT_PREFIX_DIR}"
|
|
|
|
CT_DoLog INFO "Saving crosstool-NG into the toolchain directory"
|
|
tar cvjf "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2" \
|
|
--no-wildcards-match-slash \
|
|
-X "${exclude_list}" \
|
|
"${topdir}" 2>&1 |CT_DoLog ALL
|
|
|
|
CT_Popd
|
|
|
|
CT_DoLog INFO "Saving the toolchain"
|
|
tar cvjf "${botdir}/${CT_TARGET}.tar.bz2" "${CT_PREFIX_DIR}" 2>&1 |CT_DoLog ALL
|
|
|
|
CT_DoLog DEBUG "Getting rid of working directories"
|
|
rm -f "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2"
|
|
rm -rf "${tempdir}"
|
|
|
|
if [ "${CT_INSTALL_DIR_RO}" = "y" ]; then
|
|
# Render the install directory non-writable
|
|
chmod u-w "${CT_PREFIX_DIR}"
|
|
fi
|