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