Mailing List Archive

[PATCH 3/8] llvm-utils.eclass: Fix llvm_prepend_path to avoid duplicates
Fix llvm_prepend_path() not to append the new path multiple times,
if the original PATH variable contained multiple LLVM directories.

Thanks to @miller-alex who spotted it in:
https://github.com/gentoo/gentoo/pull/35196#discussion_r1480330001

Signed-off-by: Micha? Górny <mgorny@gentoo.org>
---
eclass/llvm-utils.eclass | 2 +-
eclass/tests/llvm-utils.sh | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/eclass/llvm-utils.eclass b/eclass/llvm-utils.eclass
index f308667e3dc2..86933484fa94 100644
--- a/eclass/llvm-utils.eclass
+++ b/eclass/llvm-utils.eclass
@@ -132,7 +132,7 @@ llvm_prepend_path() {
# prepend new path in front of the first LLVM version found
for x in "${split_path[@]}"; do
if [[ ${x} == */usr/lib/llvm/*/bin ]]; then
- if [[ ${x} != ${llvm_path} ]]; then
+ if [[ ${x} != ${llvm_path} && ! ${added} ]]; then
new_path+=( "${llvm_path}" )
elif [[ ${added} && ${x} == ${llvm_path} ]]; then
# deduplicate
diff --git a/eclass/tests/llvm-utils.sh b/eclass/tests/llvm-utils.sh
index 5a46b25b7ad6..c786ef04ddcd 100755
--- a/eclass/tests/llvm-utils.sh
+++ b/eclass/tests/llvm-utils.sh
@@ -102,5 +102,11 @@ test_prepend_path 18 /usr/lib/llvm/17/bin:/usr/bin \
/usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin:/usr/bin
test_prepend_path 18 /usr/bin:/usr/lib/llvm/17/bin \
/usr/bin:/usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin
+test_prepend_path 18 /usr/lib/llvm/17/bin:/usr/lib/llvm/16/bin:/usr/bin \
+ /usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin:/usr/lib/llvm/16/bin:/usr/bin
+test_prepend_path 18 /usr/bin:/usr/lib/llvm/17/bin:/usr/lib/llvm/16/bin \
+ /usr/bin:/usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin:/usr/lib/llvm/16/bin
+test_prepend_path 18 /usr/lib/llvm/17/bin:/usr/bin:/usr/lib/llvm/16/bin \
+ /usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin:/usr/bin:/usr/lib/llvm/16/bin

texit
--
2.43.0