Gentoo Archives: gentoo-commits

From: Aric Belsito <lluixhi@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/musl:master commit in: sys-libs/compiler-rt-sanitizers/
Date: Thu, 05 Apr 2018 17:21:35
Message-Id: 1522948856.81fee14bbe24063388dd1f73cc42d02e079242d0.lluixhi@gentoo
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>