sys-devel/llvm: Re-introduce slotting
authorMichał Górny <mgorny@gentoo.org>
Sun, 29 Jan 2017 12:43:33 +0000 (13:43 +0100)
committerMichał Górny <mgorny@gentoo.org>
Wed, 15 Feb 2017 12:47:15 +0000 (13:47 +0100)
profiles/features/multilib/make.defaults
sys-devel/llvm/llvm-4.0.0_rc1-r1.ebuild [moved from sys-devel/llvm/llvm-4.0.0_rc1.ebuild with 85% similarity]
sys-devel/llvm/llvm-9999.ebuild

index 2e201e35d31afcee5c9fe121a229a18eb09de479..ec3e7c02e5cea7590d9b2e8bc2aae2942db5a6e2 100644 (file)
@@ -14,4 +14,4 @@ USE="multilib"
 # FEATURES="multilib-strict" specific settings.
 MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib"
 MULTILIB_STRICT_DENY="64-bit.*shared object"
-MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev|systemd|clang|python-exec)"
+MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev|systemd|clang|python-exec|llvm)"
similarity index 85%
rename from sys-devel/llvm/llvm-4.0.0_rc1.ebuild
rename to sys-devel/llvm/llvm-4.0.0_rc1-r1.ebuild
index 41f58e460ee2943372d8e6330ed7cbf4099ffe4f..adfc3fd410f5589338d5e48b019ece89e629aa30 100644 (file)
@@ -31,7 +31,7 @@ ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
 
 LICENSE="UoI-NCSA rc BSD public-domain
        llvm_targets_ARM? ( LLVM-Grant )"
-SLOT="0/$(get_major_version)"
+SLOT="$(get_major_version)"
 KEYWORDS="~amd64 ~arm64 ~x86"
 IUSE="debug +doc gold libedit +libffi multitarget ncurses test
        elibc_musl kernel_Darwin ${ALL_LLVM_TARGETS[*]}"
@@ -56,6 +56,12 @@ DEPEND="${RDEPEND}
        test? ( $(python_gen_any_dep "~dev-python/lit-${PV}[\${PYTHON_USEDEP}]") )
        !!<dev-python/configparser-3.3.0.2
        ${PYTHON_DEPS}"
+# There are no file collisions between these versions but having :0
+# installed means llvm-config there will take precedence.
+RDEPEND="${RDEPEND}
+       !sys-devel/llvm:0"
+PDEPEND="app-vim/llvm-vim
+       gold? ( sys-devel/llvmgold )"
 
 REQUIRED_USE="${PYTHON_REQUIRED_USE}
        || ( ${ALL_LLVM_TARGETS[*]} )
@@ -136,6 +142,7 @@ multilib_src_configure() {
 
        local libdir=$(get_libdir)
        local mycmakeargs=(
+               -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
                -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
 
                -DBUILD_SHARED_LIBS=ON
@@ -223,32 +230,37 @@ multilib_src_test() {
 
 src_install() {
        local MULTILIB_CHOST_TOOLS=(
-               /usr/bin/llvm-config
+               /usr/lib/llvm/${SLOT}/bin/llvm-config
        )
 
        local MULTILIB_WRAPPED_HEADERS=(
                /usr/include/llvm/Config/llvm-config.h
        )
 
+       local LLVM_LDPATHS=()
        multilib-minimal_src_install
+
+       # move wrapped headers back
+       mv "${ED%/}"/usr/include "${ED%/}"/usr/lib/llvm/${SLOT}/include || die
 }
 
 multilib_src_install() {
        cmake-utils_src_install
 
-       if multilib_is_native_abi; then
-               # Symlink the gold plugin.
-               if use gold; then
-                       dodir "/usr/${CHOST}/binutils-bin/lib/bfd-plugins"
-                       dosym "../../../../$(get_libdir)/LLVMgold.so" \
-                               "/usr/${CHOST}/binutils-bin/lib/bfd-plugins/LLVMgold.so"
-               fi
-       fi
+       # move headers to /usr/include for wrapping
+       rm -rf "${ED%/}"/usr/include || die
+       mv "${ED%/}"/usr/lib/llvm/${SLOT}/include "${ED%/}"/usr/include || die
+
+       LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" )
 }
 
 multilib_src_install_all() {
-       insinto /usr/share/vim/vimfiles
-       doins -r utils/vim/*/.
-       # some users may find it useful
-       dodoc utils/vim/vimrc
+       local revord=$(( 9999 - ${SLOT} ))
+       cat <<-_EOF_ > "${T}/10llvm-${revord}" || die
+               PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
+               # we need to duplicate it in ROOTPATH for Portage to respect...
+               ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
+               LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
+_EOF_
+       doenvd "${T}/10llvm-${revord}"
 }
index 71c41a0f6794d17c4d49f27e4e9dea15fb450f74..9b483af93f523585a0a8ebabe86423d69970dac9 100644 (file)
@@ -33,7 +33,7 @@ ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
 
 LICENSE="UoI-NCSA rc BSD public-domain
        llvm_targets_ARM? ( LLVM-Grant )"
-SLOT="0/$(get_major_version)"
+SLOT="5"
 KEYWORDS=""
 IUSE="debug +doc gold libedit +libffi multitarget ncurses test
        elibc_musl kernel_Darwin ${ALL_LLVM_TARGETS[*]}"
@@ -58,6 +58,12 @@ DEPEND="${RDEPEND}
        test? ( $(python_gen_any_dep "~dev-python/lit-${PV}[\${PYTHON_USEDEP}]") )
        !!<dev-python/configparser-3.3.0.2
        ${PYTHON_DEPS}"
+# There are no file collisions between these versions but having :0
+# installed means llvm-config there will take precedence.
+RDEPEND="${RDEPEND}
+       !sys-devel/llvm:0"
+PDEPEND="app-vim/llvm-vim
+       gold? ( sys-devel/llvmgold )"
 
 REQUIRED_USE="${PYTHON_REQUIRED_USE}
        || ( ${ALL_LLVM_TARGETS[*]} )
@@ -136,6 +142,7 @@ multilib_src_configure() {
 
        local libdir=$(get_libdir)
        local mycmakeargs=(
+               -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}"
                -DLLVM_LIBDIR_SUFFIX=${libdir#lib}
 
                -DBUILD_SHARED_LIBS=ON
@@ -223,32 +230,37 @@ multilib_src_test() {
 
 src_install() {
        local MULTILIB_CHOST_TOOLS=(
-               /usr/bin/llvm-config
+               /usr/lib/llvm/${SLOT}/bin/llvm-config
        )
 
        local MULTILIB_WRAPPED_HEADERS=(
                /usr/include/llvm/Config/llvm-config.h
        )
 
+       local LLVM_LDPATHS=()
        multilib-minimal_src_install
+
+       # move wrapped headers back
+       mv "${ED%/}"/usr/include "${ED%/}"/usr/lib/llvm/${SLOT}/include || die
 }
 
 multilib_src_install() {
        cmake-utils_src_install
 
-       if multilib_is_native_abi; then
-               # Symlink the gold plugin.
-               if use gold; then
-                       dodir "/usr/${CHOST}/binutils-bin/lib/bfd-plugins"
-                       dosym "../../../../$(get_libdir)/LLVMgold.so" \
-                               "/usr/${CHOST}/binutils-bin/lib/bfd-plugins/LLVMgold.so"
-               fi
-       fi
+       # move headers to /usr/include for wrapping
+       rm -rf "${ED%/}"/usr/include || die
+       mv "${ED%/}"/usr/lib/llvm/${SLOT}/include "${ED%/}"/usr/include || die
+
+       LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${SLOT}/$(get_libdir)" )
 }
 
 multilib_src_install_all() {
-       insinto /usr/share/vim/vimfiles
-       doins -r utils/vim/*/.
-       # some users may find it useful
-       dodoc utils/vim/vimrc
+       local revord=$(( 9999 - ${SLOT} ))
+       cat <<-_EOF_ > "${T}/10llvm-${revord}" || die
+               PATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
+               # we need to duplicate it in ROOTPATH for Portage to respect...
+               ROOTPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/bin"
+               LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
+_EOF_
+       doenvd "${T}/10llvm-${revord}"
 }