1 |
Do not prepend LLVM path before system path, in particular before |
2 |
ccache/distcc paths. Instead, prepend it before the first LLVM version |
3 |
found in PATH, or append to the end if no LLVM is found in PATH. |
4 |
|
5 |
Closes: https://bugs.gentoo.org/627726 |
6 |
Signed-off-by: Michał Górny <mgorny@g.o> |
7 |
--- |
8 |
eclass/llvm.eclass | 25 +++++++++++++++++++++++-- |
9 |
eclass/tests/llvm.sh | 16 ++++++++-------- |
10 |
2 files changed, 31 insertions(+), 10 deletions(-) |
11 |
|
12 |
diff --git a/eclass/llvm.eclass b/eclass/llvm.eclass |
13 |
index 4f968dc39f87..61b34d4985eb 100644 |
14 |
--- a/eclass/llvm.eclass |
15 |
+++ b/eclass/llvm.eclass |
16 |
@@ -198,8 +198,29 @@ llvm_pkg_setup() { |
17 |
debug-print-function ${FUNCNAME} "${@}" |
18 |
|
19 |
if [[ ${MERGE_TYPE} != binary ]]; then |
20 |
- local llvm_prefix=$(get_llvm_prefix "${LLVM_MAX_SLOT}") |
21 |
- export PATH=${llvm_prefix}/bin:${PATH} |
22 |
+ local llvm_path=$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin |
23 |
+ local IFS=: |
24 |
+ local split_path=( ${PATH} ) |
25 |
+ local new_path=() |
26 |
+ local x added= |
27 |
+ |
28 |
+ # prepend new path before first LLVM version found |
29 |
+ for x in "${split_path[@]}"; do |
30 |
+ if [[ ${x} == */usr/lib/llvm/*/bin ]]; then |
31 |
+ if [[ ${x} != ${llvm_path} ]]; then |
32 |
+ new_path+=( "${llvm_path}" ) |
33 |
+ elif [[ ${added} && ${x} == ${llvm_path} ]]; then |
34 |
+ # deduplicate |
35 |
+ continue |
36 |
+ fi |
37 |
+ added=1 |
38 |
+ fi |
39 |
+ new_path+=( "${x}" ) |
40 |
+ done |
41 |
+ # ...or to the end of PATH |
42 |
+ [[ ${added} ]] || new_path+=( "${llvm_path}" ) |
43 |
+ |
44 |
+ export PATH=${new_path[*]} |
45 |
fi |
46 |
} |
47 |
|
48 |
diff --git a/eclass/tests/llvm.sh b/eclass/tests/llvm.sh |
49 |
index bb8d5fc998e8..8527d81765dd 100755 |
50 |
--- a/eclass/tests/llvm.sh |
51 |
+++ b/eclass/tests/llvm.sh |
52 |
@@ -91,17 +91,17 @@ eindent |
53 |
LLVM_MAX_SLOT=11 \ |
54 |
LLVM_INSTALLED_SLOT=1* \ |
55 |
PATH=${BASEPATH}:/usr/lib/llvm/11/bin \ |
56 |
- check_setup_path "/usr/lib/llvm/11/bin:${BASEPATH}:/usr/lib/llvm/11/bin" |
57 |
+ check_setup_path "${BASEPATH}:/usr/lib/llvm/11/bin" |
58 |
|
59 |
LLVM_MAX_SLOT=10 \ |
60 |
LLVM_INSTALLED_SLOT=1* \ |
61 |
PATH=${BASEPATH}:/usr/lib/llvm/11/bin:/usr/lib/llvm/10/bin \ |
62 |
- check_setup_path "/usr/lib/llvm/10/bin:${BASEPATH}:/usr/lib/llvm/11/bin:/usr/lib/llvm/10/bin" |
63 |
+ check_setup_path "${BASEPATH}:/usr/lib/llvm/10/bin:/usr/lib/llvm/11/bin" |
64 |
|
65 |
LLVM_MAX_SLOT=11 \ |
66 |
LLVM_INSTALLED_SLOT=10 \ |
67 |
PATH=${BASEPATH}:/usr/lib/llvm/10/bin \ |
68 |
- check_setup_path "/usr/lib/llvm/10/bin:${BASEPATH}:/usr/lib/llvm/10/bin" |
69 |
+ check_setup_path "${BASEPATH}:/usr/lib/llvm/10/bin" |
70 |
eoutdent |
71 |
|
72 |
ebegin "Testing pkg_setup with the other LLVM version in PATH" |
73 |
@@ -109,12 +109,12 @@ eindent |
74 |
LLVM_MAX_SLOT=11 \ |
75 |
LLVM_INSTALLED_SLOT=1* \ |
76 |
PATH=${BASEPATH}:/usr/lib/llvm/10/bin \ |
77 |
- check_setup_path "/usr/lib/llvm/11/bin:${BASEPATH}:/usr/lib/llvm/10/bin" |
78 |
+ check_setup_path "${BASEPATH}:/usr/lib/llvm/11/bin:/usr/lib/llvm/10/bin" |
79 |
|
80 |
LLVM_MAX_SLOT=10 \ |
81 |
LLVM_INSTALLED_SLOT=1* \ |
82 |
PATH=${BASEPATH}:/usr/lib/llvm/11/bin \ |
83 |
- check_setup_path "/usr/lib/llvm/10/bin:${BASEPATH}:/usr/lib/llvm/11/bin" |
84 |
+ check_setup_path "${BASEPATH}:/usr/lib/llvm/10/bin:/usr/lib/llvm/11/bin" |
85 |
eoutdent |
86 |
|
87 |
ebegin "Testing pkg_setup with LLVM missing from PATH" |
88 |
@@ -122,17 +122,17 @@ eindent |
89 |
LLVM_MAX_SLOT=11 \ |
90 |
LLVM_INSTALLED_SLOT=1* \ |
91 |
PATH=${BASEPATH} \ |
92 |
- check_setup_path "/usr/lib/llvm/11/bin:${BASEPATH}" |
93 |
+ check_setup_path "${BASEPATH}:/usr/lib/llvm/11/bin" |
94 |
|
95 |
LLVM_MAX_SLOT=10 \ |
96 |
LLVM_INSTALLED_SLOT=1* \ |
97 |
PATH=${BASEPATH} \ |
98 |
- check_setup_path "/usr/lib/llvm/10/bin:${BASEPATH}" |
99 |
+ check_setup_path "${BASEPATH}:/usr/lib/llvm/10/bin" |
100 |
|
101 |
LLVM_MAX_SLOT=11 \ |
102 |
LLVM_INSTALLED_SLOT=10 \ |
103 |
PATH=${BASEPATH} \ |
104 |
- check_setup_path "/usr/lib/llvm/10/bin:${BASEPATH}" |
105 |
+ check_setup_path "${BASEPATH}:/usr/lib/llvm/10/bin" |
106 |
eoutdent |
107 |
|
108 |
texit |
109 |
-- |
110 |
2.26.2 |