commit: 625574f70212d097e82a1cfcc34ee09ca467306e
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Aug 5 13:57:53 2024 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Aug 6 08:28:53 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=625574f7
toolchain-funcs.eclass: Fix tc-is-lto not to leave stray files in T
Fix tc-is-lto function to remove the temporary file after testing.
Besides being cleaner, this fixes a permission problem when using
Paludis and tc-is-lto is used both in pkg_setup() (which creates
the temporary file owned by root) and src_*() phase (which attempts
to rewrite it as a regular user).
Thanks to negril for the report!
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
eclass/toolchain-funcs.eclass | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/eclass/toolchain-funcs.eclass b/eclass/toolchain-funcs.eclass
index cde84e6f34c8..e73af9772938 100644
--- a/eclass/toolchain-funcs.eclass
+++ b/eclass/toolchain-funcs.eclass
@@ -1234,6 +1234,7 @@ tc-get-build-ptr-size() {
# @RETURN: Shell true if we are using LTO, shell false otherwise
tc-is-lto() {
local f="${T}/test-lto.o"
+ local ret=1
case $(tc-get-compiler-type) in
clang)
@@ -1241,14 +1242,15 @@ tc-is-lto() {
# If LTO is used, clang will output bytecode and
llvm-bcanalyzer
# will run successfully. Otherwise, it will output
plain object
# file and llvm-bcanalyzer will exit with error.
- llvm-bcanalyzer "${f}" &>/dev/null && return 0
+ llvm-bcanalyzer "${f}" &>/dev/null && ret=0
;;
gcc)
$(tc-getCC) ${CFLAGS} -c -o "${f}" -x c - <<<"" || die
- [[ $($(tc-getREADELF) -S "${f}") == *.gnu.lto* ]] &&
return 0
+ [[ $($(tc-getREADELF) -S "${f}") == *.gnu.lto* ]] &&
ret=0
;;
esac
- return 1
+ rm -f "${f}" || die
+ return "${ret}"
}
fi