Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: eclass/, eclass/tests/
Date: Thu, 28 May 2020 11:41:33
Message-Id: 1590666082.f1e8874cc2de2055c3a07f7faf0c78d723106d06.mgorny@gentoo
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