From 379ea09dbacbe4535cd40fede2eb93c588cfbb1e Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Mon, 4 Aug 2008 08:44:54 +0000 Subject: [PATCH] Michael ABBOTT reported that populate is not relocatable. Fix this by determining both the cross-readelf and the sys-root at runtime, not at build time. /trunk/configure | 1 1 0 0 + /trunk/scripts/crosstool.sh | 14 6 8 0 ++++++-------- /trunk/tools/populate.in | 6 4 2 0 ++++-- 3 files changed, 11 insertions(+), 10 deletions(-) --- configure | 1 + scripts/crosstool.sh | 14 ++++++-------- tools/populate.in | 6 ++++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/configure b/configure index 363ee37c..17275bf6 100755 --- a/configure +++ b/configure @@ -23,6 +23,7 @@ patch tar gzip bzip2 +readlink ' PREFIX_DEFAULT=/usr/local diff --git a/scripts/crosstool.sh b/scripts/crosstool.sh index 2f6660a0..aa2105fd 100755 --- a/scripts/crosstool.sh +++ b/scripts/crosstool.sh @@ -427,9 +427,9 @@ if [ "${CT_ONLY_DOWNLOAD}" != "y" -a "${CT_ONLY_EXTRACT}" != "y" ]; then # Install the /populator/ CT_DoLog EXTRA "Installing the populate helper" - sed -r -e 's,@@CT_READELF@@,'"${CT_PREFIX_DIR}/bin/${CT_TARGET}-readelf"',g;' \ - -e 's,@@CT_SYSROOT_DIR@@,'"${CT_SYSROOT_DIR}"',g;' \ - "${CT_LIB_DIR}/tools/populate.in" >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate" + sed -r -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \ + "${CT_LIB_DIR}/tools/populate.in" \ + >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate" chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate" # Create the aliases to the target tools @@ -438,15 +438,13 @@ if [ "${CT_ONLY_DOWNLOAD}" != "y" -a "${CT_ONLY_EXTRACT}" != "y" ]; then for t in "${CT_TARGET}-"*; do if [ -n "${CT_TARGET_ALIAS}" ]; then _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;') - CT_DoLog DEBUG "Linking '${_t}' -> '${t}'" - ln -sv "${t}" "${_t}" 2>&1 |CT_DoLog ALL + ln -sv "${t}" "${_t}" 2>&1 fi if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}") - CT_DoLog DEBUG "Linking '${_t}' -> '${t}'" - ln -sv "${t}" "${_t}" 2>&1 |CT_DoLog ALL + ln -sv "${t}" "${_t}" 2>&1 fi - done + done |CT_DoLog ALL CT_Popd CT_EndStep diff --git a/tools/populate.in b/tools/populate.in index 7c27f391..00c0c754 100644 --- a/tools/populate.in +++ b/tools/populate.in @@ -4,8 +4,10 @@ # (C) 2007 Yann E. MORIN # Licensed under the GPL v2 -CT_READELF="@@CT_READELF@@" -CT_SYSROOT_DIR="@@CT_SYSROOT_DIR@@" +# Detect where the toolchain is: +BIN_DIR="$(cd "$(dirname "$(readlink -fn "$0")")"; pwd)" +CT_READELF="${BIN_DIR}/@@CT_TARGET@@-readelf" +CT_SYSROOT_DIR="${BIN_DIR}/../@@CT_TARGET@@/sys-root" myname=$(basename "$0")