commit:     81fee14bbe24063388dd1f73cc42d02e079242d0
Author:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
AuthorDate: Thu Apr  5 17:20:56 2018 +0000
Commit:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
CommitDate: Thu Apr  5 17:20:56 2018 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=81fee14b

sys-libs/compiler-rt-sanitizers: sync w/ upstream

 .../compiler-rt-sanitizers-4.0.1.ebuild            | 66 +++++++++++++-----
 .../compiler-rt-sanitizers-5.0.1.ebuild            | 81 +++++++++++++++++-----
 sys-libs/compiler-rt-sanitizers/metadata.xml       |  4 ++
 3 files changed, 117 insertions(+), 34 deletions(-)

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
index ce21c62..2cf1883 100644
--- 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
@@ -1,4 +1,4 @@
-# Copyright 1999-2017 Gentoo Foundation
+# Copyright 1999-2018 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
@@ -19,17 +19,18 @@ 
SRC_URI="https://releases.llvm.org/${PV/_//}/compiler-rt-${PV/_/}.src.tar.xz
 LICENSE="|| ( UoI-NCSA MIT )"
 SLOT="${PV%_*}"
 KEYWORDS="amd64 x86"
-IUSE="test"
+IUSE="+clang test"
 
-LLVM_SLOT=${SLOT%%.*}
+CLANG_SLOT=${SLOT%%.*}
 RDEPEND="!=sys-libs/compiler-rt-sanitizers-${SLOT}*:0"
 # llvm-4 needed for --cmakedir
 DEPEND="
        >=sys-devel/llvm-4
+       clang? ( sys-devel/clang )
        test? (
-               app-portage/unsandbox
+               !<sys-apps/sandbox-2.13
                $(python_gen_any_dep "~dev-python/lit-${PV}[\${PYTHON_USEDEP}]")
-               =sys-devel/clang-${PV%_*}*:${LLVM_SLOT}
+               =sys-devel/clang-${PV%_*}*:${CLANG_SLOT}
                sys-libs/compiler-rt:${SLOT} )
        ${PYTHON_DEPS}"
 
@@ -68,12 +69,32 @@ src_unpack() {
 src_prepare() {
        eapply "${WORKDIR}/${P}-patchset"
        cmake-utils_src_prepare
+
+       if use test; then
+               # remove tests that are broken by new glibc
+               # (disabled in 6.0.0+, r313069)
+               if use elibc_glibc && has_version '>=sys-libs/glibc-2.24'; then
+                       rm test/tsan/Linux/user_malloc.cc || die
+               fi
+               # https://bugs.llvm.org/show_bug.cgi?id=36065
+               if use elibc_glibc && has_version '>=sys-libs/glibc-2.25'; then
+                       rm test/lsan/TestCases/use_tls_dynamic.cc || die
+                       rm test/msan/dtls_test.c || die
+                       rm 
test/sanitizer_common/TestCases/Posix/sanitizer_set_death_callback_test.cc || 
die
+               fi
+       fi
 }
 
 src_configure() {
        # pre-set since we need to pass it to cmake
        BUILD_DIR=${WORKDIR}/${P}_build
 
+       if use clang; then
+               local -x CC=${CHOST}-clang
+               local -x CXX=${CHOST}-clang++
+               strip-unsupported-flags
+       fi
+
        local mycmakeargs=(
                -DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${SLOT}"
                # use a build dir structure consistent with install
@@ -87,19 +108,28 @@ src_configure() {
                -DCOMPILER_RT_BUILD_XRAY=ON
        )
        if use test; then
+               if has_version '>=sys-devel/llvm-6'; then
+                       mycmakeargs+=(
+                               -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
+                       )
+               else
+                       mycmakeargs+=(
+                               -DLIT_COMMAND="${EPREFIX}"/usr/bin/lit
+                       )
+               fi
+
                mycmakeargs+=(
                        -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
-                       
-DLIT_COMMAND="${EPREFIX}/usr/bin/unsandbox;${EPREFIX}/usr/bin/lit"
 
                        # they are created during src_test()
-                       
-DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_SLOT}/bin/clang"
-                       
-DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_SLOT}/bin/clang++"
+                       
-DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${CLANG_SLOT}/bin/clang"
+                       
-DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${CLANG_SLOT}/bin/clang++"
                )
 
                # same flags are passed for build & tests, so we need to strip
                # them down to a subset supported by clang
-               CC=${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/bin/clang \
-               CXX=${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/bin/clang++ \
+               CC=${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang \
+               CXX=${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang++ \
                strip-unsupported-flags
        fi
 
@@ -112,17 +142,17 @@ src_configure() {
 
                # copy clang over since resource_dir is located relatively to 
binary
                # therefore, we can put our new libraries in it
-               mkdir -p 
"${BUILD_DIR}"/lib/{llvm/${LLVM_SLOT}/{bin,$(get_libdir)},clang/${SLOT}/include}
 || die
-               cp "${EPREFIX}"/usr/lib/llvm/${LLVM_SLOT}/bin/clang{,++} \
-                       "${BUILD_DIR}"/lib/llvm/${LLVM_SLOT}/bin/ || die
+               mkdir -p 
"${BUILD_DIR}"/lib/{llvm/${CLANG_SLOT}/{bin,$(get_libdir)},clang/${SLOT}/include}
 || die
+               cp "${EPREFIX}"/usr/lib/llvm/${CLANG_SLOT}/bin/clang{,++} \
+                       "${BUILD_DIR}"/lib/llvm/${CLANG_SLOT}/bin/ || die
                cp "${EPREFIX}"/usr/lib/clang/${SLOT}/include/*.h \
                        "${BUILD_DIR}"/lib/clang/${SLOT}/include/ || die
                cp "${sys_dir}"/*builtins*.a \
                        "${BUILD_DIR}/lib/clang/${SLOT}/lib/${sys_dir##*/}/" || 
die
                # we also need LLVMgold.so for gold-based tests
-               if [[ -f 
${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/$(get_libdir)/LLVMgold.so ]]; then
-                       ln -s 
"${EPREFIX}"/usr/lib/llvm/${LLVM_SLOT}/$(get_libdir)/LLVMgold.so \
-                               
"${BUILD_DIR}"/lib/llvm/${LLVM_SLOT}/$(get_libdir)/ || die
+               if [[ -f 
${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/$(get_libdir)/LLVMgold.so ]]; then
+                       ln -s 
"${EPREFIX}"/usr/lib/llvm/${CLANG_SLOT}/$(get_libdir)/LLVMgold.so \
+                               
"${BUILD_DIR}"/lib/llvm/${CLANG_SLOT}/$(get_libdir)/ || die
                fi
        fi
 }
@@ -130,6 +160,10 @@ src_configure() {
 src_test() {
        # respect TMPDIR!
        local -x LIT_PRESERVES_TMP=1
+       # disable sandbox to have it stop clobbering LD_PRELOAD
+       local -x SANDBOX_ON=0
+       # wipe LD_PRELOAD to make ASAN happy
+       local -x LD_PRELOAD=
 
        cmake-utils_src_make check-all
 }

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
index b821847..d52ef04 100644
--- 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
@@ -1,4 +1,4 @@
-# Copyright 1999-2017 Gentoo Foundation
+# Copyright 1999-2018 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
@@ -20,17 +20,18 @@ SRC_URI="https://releases.llvm.org/${PV/_//}/${MY_P}.tar.xz
 
 LICENSE="|| ( UoI-NCSA MIT )"
 SLOT="${PV%_*}"
-KEYWORDS="~amd64 ~x86"
-IUSE="test"
+KEYWORDS="amd64 x86"
+IUSE="+clang test elibc_glibc"
 
-LLVM_SLOT=${SLOT%%.*}
+CLANG_SLOT=${SLOT%%.*}
 # llvm-4 needed for --cmakedir
 DEPEND="
        >=sys-devel/llvm-4
+       clang? ( sys-devel/clang )
        test? (
-               app-portage/unsandbox
-               $(python_gen_any_dep "~dev-python/lit-${PV}[\${PYTHON_USEDEP}]")
-               =sys-devel/clang-${PV%_*}*:${LLVM_SLOT}
+               !<sys-apps/sandbox-2.13
+               $(python_gen_any_dep ">=dev-python/lit-5[\${PYTHON_USEDEP}]")
+               =sys-devel/clang-${PV%_*}*:${CLANG_SLOT}
                sys-libs/compiler-rt:${SLOT} )
        ${PYTHON_DEPS}"
 
@@ -70,10 +71,34 @@ src_unpack() {
        fi
 }
 
+src_prepare() {
+       cmake-utils_src_prepare
+
+       if use test; then
+               # remove tests that are broken by new glibc
+               # (disabled in 6.0.0+, r313069)
+               if use elibc_glibc && has_version '>=sys-libs/glibc-2.24'; then
+                       rm test/tsan/Linux/user_malloc.cc || die
+               fi
+               # https://bugs.llvm.org/show_bug.cgi?id=36065
+               if use elibc_glibc && has_version '>=sys-libs/glibc-2.25'; then
+                       rm test/lsan/TestCases/Linux/use_tls_dynamic.cc || die
+                       rm test/msan/dtls_test.c || die
+                       rm 
test/sanitizer_common/TestCases/Posix/sanitizer_set_death_callback_test.cc || 
die
+               fi
+       fi
+}
+
 src_configure() {
        # pre-set since we need to pass it to cmake
        BUILD_DIR=${WORKDIR}/${P}_build
 
+       if use clang; then
+               local -x CC=${CHOST}-clang
+               local -x CXX=${CHOST}-clang++
+               strip-unsupported-flags
+       fi
+
        local mycmakeargs=(
                -DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${SLOT}"
                # use a build dir structure consistent with install
@@ -87,22 +112,38 @@ src_configure() {
                -DCOMPILER_RT_BUILD_XRAY=ON
        )
        if use test; then
+               if has_version '>=sys-devel/llvm-6'; then
+                       mycmakeargs+=(
+                               -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
+                       )
+               else
+                       mycmakeargs+=(
+                               -DLIT_COMMAND="${EPREFIX}"/usr/bin/lit
+                       )
+               fi
+
                mycmakeargs+=(
                        -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
-                       
-DLIT_COMMAND="${EPREFIX}/usr/bin/unsandbox;${EPREFIX}/usr/bin/lit"
 
                        # they are created during src_test()
-                       
-DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_SLOT}/bin/clang"
-                       
-DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_SLOT}/bin/clang++"
+                       
-DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${CLANG_SLOT}/bin/clang"
+                       
-DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${CLANG_SLOT}/bin/clang++"
                )
 
                # same flags are passed for build & tests, so we need to strip
                # them down to a subset supported by clang
-               CC=${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/bin/clang \
-               CXX=${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/bin/clang++ \
+               CC=${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang \
+               CXX=${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang++ \
                strip-unsupported-flags
        fi
 
+       if use prefix && [[ "${CHOST}" == *-darwin* ]] ; then
+               mycmakeargs+=(
+                       # disable use of SDK for the system itself
+                       -DDARWIN_macosx_CACHED_SYSROOT=/
+               )
+       fi
+
        cmake-utils_src_configure
 
        if use test; then
@@ -112,17 +153,17 @@ src_configure() {
 
                # copy clang over since resource_dir is located relatively to 
binary
                # therefore, we can put our new libraries in it
-               mkdir -p 
"${BUILD_DIR}"/lib/{llvm/${LLVM_SLOT}/{bin,$(get_libdir)},clang/${SLOT}/include}
 || die
-               cp "${EPREFIX}"/usr/lib/llvm/${LLVM_SLOT}/bin/clang{,++} \
-                       "${BUILD_DIR}"/lib/llvm/${LLVM_SLOT}/bin/ || die
+               mkdir -p 
"${BUILD_DIR}"/lib/{llvm/${CLANG_SLOT}/{bin,$(get_libdir)},clang/${SLOT}/include}
 || die
+               cp "${EPREFIX}"/usr/lib/llvm/${CLANG_SLOT}/bin/clang{,++} \
+                       "${BUILD_DIR}"/lib/llvm/${CLANG_SLOT}/bin/ || die
                cp "${EPREFIX}"/usr/lib/clang/${SLOT}/include/*.h \
                        "${BUILD_DIR}"/lib/clang/${SLOT}/include/ || die
                cp "${sys_dir}"/*builtins*.a \
                        "${BUILD_DIR}/lib/clang/${SLOT}/lib/${sys_dir##*/}/" || 
die
                # we also need LLVMgold.so for gold-based tests
-               if [[ -f 
${EPREFIX}/usr/lib/llvm/${LLVM_SLOT}/$(get_libdir)/LLVMgold.so ]]; then
-                       ln -s 
"${EPREFIX}"/usr/lib/llvm/${LLVM_SLOT}/$(get_libdir)/LLVMgold.so \
-                               
"${BUILD_DIR}"/lib/llvm/${LLVM_SLOT}/$(get_libdir)/ || die
+               if [[ -f 
${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/$(get_libdir)/LLVMgold.so ]]; then
+                       ln -s 
"${EPREFIX}"/usr/lib/llvm/${CLANG_SLOT}/$(get_libdir)/LLVMgold.so \
+                               
"${BUILD_DIR}"/lib/llvm/${CLANG_SLOT}/$(get_libdir)/ || die
                fi
        fi
 }
@@ -130,6 +171,10 @@ src_configure() {
 src_test() {
        # respect TMPDIR!
        local -x LIT_PRESERVES_TMP=1
+       # disable sandbox to have it stop clobbering LD_PRELOAD
+       local -x SANDBOX_ON=0
+       # wipe LD_PRELOAD to make ASAN happy
+       local -x LD_PRELOAD=
 
        cmake-utils_src_make check-all
 }

diff --git a/sys-libs/compiler-rt-sanitizers/metadata.xml 
b/sys-libs/compiler-rt-sanitizers/metadata.xml
index 89c4bdb..3b99602 100644
--- a/sys-libs/compiler-rt-sanitizers/metadata.xml
+++ b/sys-libs/compiler-rt-sanitizers/metadata.xml
@@ -4,4 +4,8 @@
        <maintainer type="project">
                <email>[email protected]</email>
        </maintainer>
+       <use>
+               <flag name='clang'>Force building using installed clang (rather
+                       than the default CC/CXX).</flag>
+       </use>
 </pkgmetadata>

Reply via email to