summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernhard Walle <bernhard@bwalle.de>2013-03-22 16:18:45 +0100
committerMichael Olbrich <m.olbrich@pengutronix.de>2013-03-22 18:12:06 +0100
commitc0e4c67ddbf51707f79c8167bf6fbd75137bef80 (patch)
tree32bd576c29e91e87a94e47f3dee8478189e38dbf
parent8333cb1d42eebea7dbd3853107895ea2af826779 (diff)
downloadptxdist-c0e4c67ddbf51707f79c8167bf6fbd75137bef80.tar.gz
ptxdist-c0e4c67ddbf51707f79c8167bf6fbd75137bef80.tar.xz
Fix (host) gcc wrapper on Gentoo Linux
On Gentoo, the host compiler can only be executed if basename(argv[0]) is 'gcc' (or 'g++' etc.), not if it's 'gcc.real'. Then it invokes gcc-config and fails: | % ln -s /usr/bin/gcc gcc.real | % ./gcc.real --version | | * gcc-config: Could not get portage CHOST! | * gcc-config: You should verify that CHOST is set in one of these places: | * gcc-config: - //etc/portage/make.conf | * gcc-config: - active environment | gcc-config: error: could not get compiler binary path: No such file or directory I'm not a Gentoo expert (I'm just forced to use it for that purpose ;-)), so I cannot explain further details. This patch makes ptxdist working on Gentoo by changing the symbolic link from <name>.real to real/<name>, i.e. moving the final toolchain symlink to some other directory, keeping the basename. Signed-off-by: Bernhard Walle <bernhard@bwalle.de> [mol: use shell magic instead of dirname/basename] Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
-rwxr-xr-xbin/ptxdist9
-rw-r--r--scripts/wrapper/libwrapper.sh2
2 files changed, 6 insertions, 5 deletions
diff --git a/bin/ptxdist b/bin/ptxdist
index 95382e632..ca0929524 100755
--- a/bin/ptxdist
+++ b/bin/ptxdist
@@ -510,7 +510,8 @@ check_dirs() {
done
rm -rf -- "${PTX_WRAPPER_DIR}" &&
- mkdir -p -- "${PTX_WRAPPER_DIR}" || ptxd_bailout "cannot create dir: '${PTX_WRAPPER_DIR}'"
+ mkdir -p -- "${PTX_WRAPPER_DIR}/real" ||
+ ptxd_bailout "cannot create dir: '${PTX_WRAPPER_DIR}/real'"
# check for case sensitive file system
for dir in \
@@ -588,12 +589,12 @@ check_compiler() {
;;
esac
- ln -sf "${cc_abs}" "${PTX_WRAPPER_DIR}/${cc_default}.real" &&
+ ln -sf "${cc_abs}" "${PTX_WRAPPER_DIR}/real/${cc_default}" &&
ln -sf "${SCRIPTSDIR}/wrapper/host-${cc_default}-wrapper" "${PTX_WRAPPER_DIR}/${cc_default}" &&
if [ -n "${cc_alternate}" ]; then
ln -sf "${cc_default}" "${PTX_WRAPPER_DIR}/${cc_alternate}" &&
- ln -sf "${cc_default}.real" "${PTX_WRAPPER_DIR}/${cc_alternate}.real"
+ ln -sf "${cc_default}" "${PTX_WRAPPER_DIR}/real/${cc_alternate}"
fi || \
ptxd_bailout "unable to create compiler wrapper link"
done
@@ -674,7 +675,7 @@ check_compiler() {
rm -f "${PTXDIST_PLATFORMDIR}/selected_toolchain" &&
ln -sf "${toolchain}" "${PTXDIST_PLATFORMDIR}/selected_toolchain" &&
for cc in gcc g++ cpp ld; do
- ln -sf "$(which ${compiler_prefix}${cc})" "${PTX_WRAPPER_DIR}/${compiler_prefix}${cc}.real" &&
+ ln -sf "$(which ${compiler_prefix}${cc})" "${PTX_WRAPPER_DIR}/real/${compiler_prefix}${cc}" &&
ln -sf "${SCRIPTSDIR}/wrapper/${cc}-wrapper" "${PTX_WRAPPER_DIR}/${compiler_prefix}${cc}"
done
}
diff --git a/scripts/wrapper/libwrapper.sh b/scripts/wrapper/libwrapper.sh
index f376f7fa2..00649b77a 100644
--- a/scripts/wrapper/libwrapper.sh
+++ b/scripts/wrapper/libwrapper.sh
@@ -24,7 +24,7 @@ wrapper_exec() {
if [ "${PTXDIST_VERBOSE}" = 1 -a -n "${PTXDIST_FD_LOGFILE}" ]; then
echo "wrapper: ${PTXDIST_CCACHE} ${0##*/} ${ARG_LIST} $* ${LATE_ARG_LIST}" >&${PTXDIST_FD_LOGFILE}
fi
- exec ${PTXDIST_CCACHE} $0.real ${ARG_LIST} "$@" ${LATE_ARG_LIST}
+ exec ${PTXDIST_CCACHE} "${0%/*}/real/${0##*/}" ${ARG_LIST} "$@" ${LATE_ARG_LIST}
}
cc_check_args() {