From b11ed25c4a0a6a4f7b9ee38390578d724caa081d Mon Sep 17 00:00:00 2001 From: Markus Mayer Date: Fri, 24 Jun 2022 15:19:01 -0700 Subject: [PATCH] toolchain/toolchain-external: handle case of dangling symlink copy_toolchain_lib_root was not handling the case of "readlink" returning nothing, which will happen if the symlink it is trying to resolve does not point to a valid file on the build host. This shouldn't happen, but it can. The end result of this situation would be an endless loop of error messages that would only end if aborted manually. [...] cp: missing destination file operand after '/local/users/mmayer/buildroot/output/arm64/target//' Try 'cp --help' for more information. readlink: missing operand Try 'readlink --help' for more information. basename: missing operand Try 'basename --help' for more information. dirname: missing operand Try 'dirname --help' for more information. ^C make[1]: *** [package/pkg-generic.mk:384: Instead of looping endlessly without explanation, let's abort and inform the user that something seems amiss with their setup. Signed-off-by: Markus Mayer Signed-off-by: Thomas Petazzoni --- toolchain/helpers.mk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index eec46d44c6..1cd7494fdb 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -19,7 +19,12 @@ copy_toolchain_lib_root = \ rm -fr $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ if test -h $${LIBPATH} ; then \ cp -d $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ + OLD_LIBPATH="$${LIBPATH}"; \ LIBPATH="`readlink -f $${LIBPATH}`"; \ + if [ "$${LIBPATH}" = "" ]; then \ + echo "LIBPATH empty after trying to resolve symlink $${OLD_LIBPATH}" 1>&2; \ + exit 1; \ + fi; \ elif test -f $${LIBPATH}; then \ $(INSTALL) -D -m0755 $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ break ; \