1 |
commit: 81fee14bbe24063388dd1f73cc42d02e079242d0 |
2 |
Author: Aric Belsito <lluixhi <AT> gmail <DOT> com> |
3 |
AuthorDate: Thu Apr 5 17:20:56 2018 +0000 |
4 |
Commit: Aric Belsito <lluixhi <AT> gmail <DOT> com> |
5 |
CommitDate: Thu Apr 5 17:20:56 2018 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/musl.git/commit/?id=81fee14b |
7 |
|
8 |
sys-libs/compiler-rt-sanitizers: sync w/ upstream |
9 |
|
10 |
.../compiler-rt-sanitizers-4.0.1.ebuild | 66 +++++++++++++----- |
11 |
.../compiler-rt-sanitizers-5.0.1.ebuild | 81 +++++++++++++++++----- |
12 |
sys-libs/compiler-rt-sanitizers/metadata.xml | 4 ++ |
13 |
3 files changed, 117 insertions(+), 34 deletions(-) |
14 |
|
15 |
diff --git a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-4.0.1.ebuild b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-4.0.1.ebuild |
16 |
index ce21c62..2cf1883 100644 |
17 |
--- a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-4.0.1.ebuild |
18 |
+++ b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-4.0.1.ebuild |
19 |
@@ -1,4 +1,4 @@ |
20 |
-# Copyright 1999-2017 Gentoo Foundation |
21 |
+# Copyright 1999-2018 Gentoo Foundation |
22 |
# Distributed under the terms of the GNU General Public License v2 |
23 |
|
24 |
EAPI=6 |
25 |
@@ -19,17 +19,18 @@ SRC_URI="https://releases.llvm.org/${PV/_//}/compiler-rt-${PV/_/}.src.tar.xz |
26 |
LICENSE="|| ( UoI-NCSA MIT )" |
27 |
SLOT="${PV%_*}" |
28 |
KEYWORDS="amd64 x86" |
29 |
-IUSE="test" |
30 |
+IUSE="+clang test" |
31 |
|
32 |
-LLVM_SLOT=${SLOT%%.*} |
33 |
+CLANG_SLOT=${SLOT%%.*} |
34 |
RDEPEND="!=sys-libs/compiler-rt-sanitizers-${SLOT}*:0" |
35 |
# llvm-4 needed for --cmakedir |
36 |
DEPEND=" |
37 |
>=sys-devel/llvm-4 |
38 |
+ clang? ( sys-devel/clang ) |
39 |
test? ( |
40 |
- app-portage/unsandbox |
41 |
+ !<sys-apps/sandbox-2.13 |
42 |
$(python_gen_any_dep "~dev-python/lit-${PV}[\${PYTHON_USEDEP}]") |
43 |
- =sys-devel/clang-${PV%_*}*:${LLVM_SLOT} |
44 |
+ =sys-devel/clang-${PV%_*}*:${CLANG_SLOT} |
45 |
sys-libs/compiler-rt:${SLOT} ) |
46 |
${PYTHON_DEPS}" |
47 |
|
48 |
@@ -68,12 +69,32 @@ src_unpack() { |
49 |
src_prepare() { |
50 |
eapply "${WORKDIR}/${P}-patchset" |
51 |
cmake-utils_src_prepare |
52 |
+ |
53 |
+ if use test; then |
54 |
+ # remove tests that are broken by new glibc |
55 |
+ # (disabled in 6.0.0+, r313069) |
56 |
+ if use elibc_glibc && has_version '>=sys-libs/glibc-2.24'; then |
57 |
+ rm test/tsan/Linux/user_malloc.cc || die |
58 |
+ fi |
59 |
+ # https://bugs.llvm.org/show_bug.cgi?id=36065 |
60 |
+ if use elibc_glibc && has_version '>=sys-libs/glibc-2.25'; then |
61 |
+ rm test/lsan/TestCases/use_tls_dynamic.cc || die |
62 |
+ rm test/msan/dtls_test.c || die |
63 |
+ rm test/sanitizer_common/TestCases/Posix/sanitizer_set_death_callback_test.cc || die |
64 |
+ fi |
65 |
+ fi |
66 |
} |
67 |
|
68 |
src_configure() { |
69 |
# pre-set since we need to pass it to cmake |
70 |
BUILD_DIR=${WORKDIR}/${P}_build |
71 |
|
72 |
+ if use clang; then |
73 |
+ local -x CC=${CHOST}-clang |
74 |
+ local -x CXX=${CHOST}-clang++ |
75 |
+ strip-unsupported-flags |
76 |
+ fi |
77 |
+ |
78 |
local mycmakeargs=( |
79 |
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${SLOT}" |
80 |
# use a build dir structure consistent with install |
81 |
@@ -87,19 +108,28 @@ src_configure() { |
82 |
-DCOMPILER_RT_BUILD_XRAY=ON |
83 |
) |
84 |
if use test; then |
85 |
+ if has_version '>=sys-devel/llvm-6'; then |
86 |
+ mycmakeargs+=( |
87 |
+ -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" |
88 |
+ ) |
89 |
+ else |
90 |
+ mycmakeargs+=( |
91 |
+ -DLIT_COMMAND="${EPREFIX}"/usr/bin/lit |
92 |
+ ) |
93 |
+ fi |
94 |
+ |
95 |
mycmakeargs+=( |
96 |
-DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm" |
97 |
- -DLIT_COMMAND="${EPREFIX}/usr/bin/unsandbox;${EPREFIX}/usr/bin/lit" |
98 |
|
99 |
# they are created during src_test() |
100 |
- -DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_SLOT}/bin/clang" |
101 |
- -DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_SLOT}/bin/clang++" |
102 |
+ -DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${CLANG_SLOT}/bin/clang" |
103 |
+ -DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${CLANG_SLOT}/bin/clang++" |
104 |
) |
105 |
|
106 |
# same flags are passed for build & tests, so we need to strip |
107 |
# them down to a subset supported by clang |
108 |
- CC=${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/bin/clang \ |
109 |
- CXX=${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/bin/clang++ \ |
110 |
+ CC=${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang \ |
111 |
+ CXX=${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang++ \ |
112 |
strip-unsupported-flags |
113 |
fi |
114 |
|
115 |
@@ -112,17 +142,17 @@ src_configure() { |
116 |
|
117 |
# copy clang over since resource_dir is located relatively to binary |
118 |
# therefore, we can put our new libraries in it |
119 |
- mkdir -p "${BUILD_DIR}"/lib/{llvm/${LLVM_SLOT}/{bin,$(get_libdir)},clang/${SLOT}/include} || die |
120 |
- cp "${EPREFIX}"/usr/lib/llvm/${LLVM_SLOT}/bin/clang{,++} \ |
121 |
- "${BUILD_DIR}"/lib/llvm/${LLVM_SLOT}/bin/ || die |
122 |
+ mkdir -p "${BUILD_DIR}"/lib/{llvm/${CLANG_SLOT}/{bin,$(get_libdir)},clang/${SLOT}/include} || die |
123 |
+ cp "${EPREFIX}"/usr/lib/llvm/${CLANG_SLOT}/bin/clang{,++} \ |
124 |
+ "${BUILD_DIR}"/lib/llvm/${CLANG_SLOT}/bin/ || die |
125 |
cp "${EPREFIX}"/usr/lib/clang/${SLOT}/include/*.h \ |
126 |
"${BUILD_DIR}"/lib/clang/${SLOT}/include/ || die |
127 |
cp "${sys_dir}"/*builtins*.a \ |
128 |
"${BUILD_DIR}/lib/clang/${SLOT}/lib/${sys_dir##*/}/" || die |
129 |
# we also need LLVMgold.so for gold-based tests |
130 |
- if [[ -f ${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/$(get_libdir)/LLVMgold.so ]]; then |
131 |
- ln -s "${EPREFIX}"/usr/lib/llvm/${LLVM_SLOT}/$(get_libdir)/LLVMgold.so \ |
132 |
- "${BUILD_DIR}"/lib/llvm/${LLVM_SLOT}/$(get_libdir)/ || die |
133 |
+ if [[ -f ${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/$(get_libdir)/LLVMgold.so ]]; then |
134 |
+ ln -s "${EPREFIX}"/usr/lib/llvm/${CLANG_SLOT}/$(get_libdir)/LLVMgold.so \ |
135 |
+ "${BUILD_DIR}"/lib/llvm/${CLANG_SLOT}/$(get_libdir)/ || die |
136 |
fi |
137 |
fi |
138 |
} |
139 |
@@ -130,6 +160,10 @@ src_configure() { |
140 |
src_test() { |
141 |
# respect TMPDIR! |
142 |
local -x LIT_PRESERVES_TMP=1 |
143 |
+ # disable sandbox to have it stop clobbering LD_PRELOAD |
144 |
+ local -x SANDBOX_ON=0 |
145 |
+ # wipe LD_PRELOAD to make ASAN happy |
146 |
+ local -x LD_PRELOAD= |
147 |
|
148 |
cmake-utils_src_make check-all |
149 |
} |
150 |
|
151 |
diff --git a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-5.0.1.ebuild b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-5.0.1.ebuild |
152 |
index b821847..d52ef04 100644 |
153 |
--- a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-5.0.1.ebuild |
154 |
+++ b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-5.0.1.ebuild |
155 |
@@ -1,4 +1,4 @@ |
156 |
-# Copyright 1999-2017 Gentoo Foundation |
157 |
+# Copyright 1999-2018 Gentoo Foundation |
158 |
# Distributed under the terms of the GNU General Public License v2 |
159 |
|
160 |
EAPI=6 |
161 |
@@ -20,17 +20,18 @@ SRC_URI="https://releases.llvm.org/${PV/_//}/${MY_P}.tar.xz |
162 |
|
163 |
LICENSE="|| ( UoI-NCSA MIT )" |
164 |
SLOT="${PV%_*}" |
165 |
-KEYWORDS="~amd64 ~x86" |
166 |
-IUSE="test" |
167 |
+KEYWORDS="amd64 x86" |
168 |
+IUSE="+clang test elibc_glibc" |
169 |
|
170 |
-LLVM_SLOT=${SLOT%%.*} |
171 |
+CLANG_SLOT=${SLOT%%.*} |
172 |
# llvm-4 needed for --cmakedir |
173 |
DEPEND=" |
174 |
>=sys-devel/llvm-4 |
175 |
+ clang? ( sys-devel/clang ) |
176 |
test? ( |
177 |
- app-portage/unsandbox |
178 |
- $(python_gen_any_dep "~dev-python/lit-${PV}[\${PYTHON_USEDEP}]") |
179 |
- =sys-devel/clang-${PV%_*}*:${LLVM_SLOT} |
180 |
+ !<sys-apps/sandbox-2.13 |
181 |
+ $(python_gen_any_dep ">=dev-python/lit-5[\${PYTHON_USEDEP}]") |
182 |
+ =sys-devel/clang-${PV%_*}*:${CLANG_SLOT} |
183 |
sys-libs/compiler-rt:${SLOT} ) |
184 |
${PYTHON_DEPS}" |
185 |
|
186 |
@@ -70,10 +71,34 @@ src_unpack() { |
187 |
fi |
188 |
} |
189 |
|
190 |
+src_prepare() { |
191 |
+ cmake-utils_src_prepare |
192 |
+ |
193 |
+ if use test; then |
194 |
+ # remove tests that are broken by new glibc |
195 |
+ # (disabled in 6.0.0+, r313069) |
196 |
+ if use elibc_glibc && has_version '>=sys-libs/glibc-2.24'; then |
197 |
+ rm test/tsan/Linux/user_malloc.cc || die |
198 |
+ fi |
199 |
+ # https://bugs.llvm.org/show_bug.cgi?id=36065 |
200 |
+ if use elibc_glibc && has_version '>=sys-libs/glibc-2.25'; then |
201 |
+ rm test/lsan/TestCases/Linux/use_tls_dynamic.cc || die |
202 |
+ rm test/msan/dtls_test.c || die |
203 |
+ rm test/sanitizer_common/TestCases/Posix/sanitizer_set_death_callback_test.cc || die |
204 |
+ fi |
205 |
+ fi |
206 |
+} |
207 |
+ |
208 |
src_configure() { |
209 |
# pre-set since we need to pass it to cmake |
210 |
BUILD_DIR=${WORKDIR}/${P}_build |
211 |
|
212 |
+ if use clang; then |
213 |
+ local -x CC=${CHOST}-clang |
214 |
+ local -x CXX=${CHOST}-clang++ |
215 |
+ strip-unsupported-flags |
216 |
+ fi |
217 |
+ |
218 |
local mycmakeargs=( |
219 |
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${SLOT}" |
220 |
# use a build dir structure consistent with install |
221 |
@@ -87,22 +112,38 @@ src_configure() { |
222 |
-DCOMPILER_RT_BUILD_XRAY=ON |
223 |
) |
224 |
if use test; then |
225 |
+ if has_version '>=sys-devel/llvm-6'; then |
226 |
+ mycmakeargs+=( |
227 |
+ -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" |
228 |
+ ) |
229 |
+ else |
230 |
+ mycmakeargs+=( |
231 |
+ -DLIT_COMMAND="${EPREFIX}"/usr/bin/lit |
232 |
+ ) |
233 |
+ fi |
234 |
+ |
235 |
mycmakeargs+=( |
236 |
-DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm" |
237 |
- -DLIT_COMMAND="${EPREFIX}/usr/bin/unsandbox;${EPREFIX}/usr/bin/lit" |
238 |
|
239 |
# they are created during src_test() |
240 |
- -DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_SLOT}/bin/clang" |
241 |
- -DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_SLOT}/bin/clang++" |
242 |
+ -DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${CLANG_SLOT}/bin/clang" |
243 |
+ -DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${CLANG_SLOT}/bin/clang++" |
244 |
) |
245 |
|
246 |
# same flags are passed for build & tests, so we need to strip |
247 |
# them down to a subset supported by clang |
248 |
- CC=${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/bin/clang \ |
249 |
- CXX=${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/bin/clang++ \ |
250 |
+ CC=${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang \ |
251 |
+ CXX=${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang++ \ |
252 |
strip-unsupported-flags |
253 |
fi |
254 |
|
255 |
+ if use prefix && [[ "${CHOST}" == *-darwin* ]] ; then |
256 |
+ mycmakeargs+=( |
257 |
+ # disable use of SDK for the system itself |
258 |
+ -DDARWIN_macosx_CACHED_SYSROOT=/ |
259 |
+ ) |
260 |
+ fi |
261 |
+ |
262 |
cmake-utils_src_configure |
263 |
|
264 |
if use test; then |
265 |
@@ -112,17 +153,17 @@ src_configure() { |
266 |
|
267 |
# copy clang over since resource_dir is located relatively to binary |
268 |
# therefore, we can put our new libraries in it |
269 |
- mkdir -p "${BUILD_DIR}"/lib/{llvm/${LLVM_SLOT}/{bin,$(get_libdir)},clang/${SLOT}/include} || die |
270 |
- cp "${EPREFIX}"/usr/lib/llvm/${LLVM_SLOT}/bin/clang{,++} \ |
271 |
- "${BUILD_DIR}"/lib/llvm/${LLVM_SLOT}/bin/ || die |
272 |
+ mkdir -p "${BUILD_DIR}"/lib/{llvm/${CLANG_SLOT}/{bin,$(get_libdir)},clang/${SLOT}/include} || die |
273 |
+ cp "${EPREFIX}"/usr/lib/llvm/${CLANG_SLOT}/bin/clang{,++} \ |
274 |
+ "${BUILD_DIR}"/lib/llvm/${CLANG_SLOT}/bin/ || die |
275 |
cp "${EPREFIX}"/usr/lib/clang/${SLOT}/include/*.h \ |
276 |
"${BUILD_DIR}"/lib/clang/${SLOT}/include/ || die |
277 |
cp "${sys_dir}"/*builtins*.a \ |
278 |
"${BUILD_DIR}/lib/clang/${SLOT}/lib/${sys_dir##*/}/" || die |
279 |
# we also need LLVMgold.so for gold-based tests |
280 |
- if [[ -f ${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/$(get_libdir)/LLVMgold.so ]]; then |
281 |
- ln -s "${EPREFIX}"/usr/lib/llvm/${LLVM_SLOT}/$(get_libdir)/LLVMgold.so \ |
282 |
- "${BUILD_DIR}"/lib/llvm/${LLVM_SLOT}/$(get_libdir)/ || die |
283 |
+ if [[ -f ${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/$(get_libdir)/LLVMgold.so ]]; then |
284 |
+ ln -s "${EPREFIX}"/usr/lib/llvm/${CLANG_SLOT}/$(get_libdir)/LLVMgold.so \ |
285 |
+ "${BUILD_DIR}"/lib/llvm/${CLANG_SLOT}/$(get_libdir)/ || die |
286 |
fi |
287 |
fi |
288 |
} |
289 |
@@ -130,6 +171,10 @@ src_configure() { |
290 |
src_test() { |
291 |
# respect TMPDIR! |
292 |
local -x LIT_PRESERVES_TMP=1 |
293 |
+ # disable sandbox to have it stop clobbering LD_PRELOAD |
294 |
+ local -x SANDBOX_ON=0 |
295 |
+ # wipe LD_PRELOAD to make ASAN happy |
296 |
+ local -x LD_PRELOAD= |
297 |
|
298 |
cmake-utils_src_make check-all |
299 |
} |
300 |
|
301 |
diff --git a/sys-libs/compiler-rt-sanitizers/metadata.xml b/sys-libs/compiler-rt-sanitizers/metadata.xml |
302 |
index 89c4bdb..3b99602 100644 |
303 |
--- a/sys-libs/compiler-rt-sanitizers/metadata.xml |
304 |
+++ b/sys-libs/compiler-rt-sanitizers/metadata.xml |
305 |
@@ -4,4 +4,8 @@ |
306 |
<maintainer type="project"> |
307 |
<email>llvm@g.o</email> |
308 |
</maintainer> |
309 |
+ <use> |
310 |
+ <flag name='clang'>Force building using installed clang (rather |
311 |
+ than the default CC/CXX).</flag> |
312 |
+ </use> |
313 |
</pkgmetadata> |