diff options
Diffstat (limited to 'sys-devel')
-rw-r--r-- | sys-devel/llvm/Manifest | 2 | ||||
-rw-r--r-- | sys-devel/llvm/files/4.0.1/0001-cmake-Pass-Wl-z-nodelete-on-Linux-to-prevent-unloadi.patch | 56 | ||||
-rw-r--r-- | sys-devel/llvm/llvm-4.0.1-r1.ebuild | 242 |
3 files changed, 0 insertions, 300 deletions
diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest index 064f8f47d748..c8c1a8eac377 100644 --- a/sys-devel/llvm/Manifest +++ b/sys-devel/llvm/Manifest @@ -1,4 +1,3 @@ -DIST llvm-4.0.1.src.tar.xz 21065652 BLAKE2B 6327eed2d1feb108440f22d2581d1ff86c10a10c29793538d8d899c7e2dc83d3f7b147d3fd4bcce2bd2bf57c071b08c624aeafe40a3e7a3914506e7751727e6c SHA512 16adc39b34ddb628f81b171119a8e2a0e9138b25011e803ef0b688e2fbea116fc4953d3a1b61b90a98a75e33619f81566b7cb06a9a2ea4d04ac5e0eb303a2d1d DIST llvm-5.0.1-patchset.tar.bz2 4204 BLAKE2B e7282e84578631d88549bdf34e5a44e0294e47ef1fee29c0cb954d7afd160d4b6a0f39bb3bd53791ea53503a60eaa0ada0a512a63d696ff096dc6f21f4aecdc7 SHA512 395ea2b13008e222c034e2bdd8c2bb033b9c01e61fb89c840f009f6cddb499b317df8b061d29f40968d8f0df5540a2f4a9de31eef1de886796c8c334f37254eb DIST llvm-5.0.2-manpages.tar.bz2 93977 BLAKE2B 8c5e8899e0df9d6037fb7d5c373de6492ccdc9fd2c26cc7dfbd8fb2b9e68418ca8fdf42cdc303c361e649cc6939bf5229cbad017bdccbd5d791e92752328252f SHA512 568615bce5a75d42e4b6d592557472d366d49a99f8e81be10ae679804f1fe674c7fd0bbdac09af44fc67ee5aa34c4ed2153c2767c536ac8e45dd15c811c92dcb DIST llvm-5.0.2.src.tar.xz 23451868 BLAKE2B b7082be2e4ad557b29b9f6869811f262adcf5c73d552faf91b339bede75cf5eab58afefa12fa779a38be71fe2b8f4ea297c3213ee4e8370cc01972c59249d91c SHA512 3588be5ed969c3f7f6f16f56a12a6af2814d3d3c960d4a36ffebb0446cc75f19220bccee7fc605f9b01f5d5c188a905a046193cc12dec42dd5922048b5c27fe1 @@ -8,4 +7,3 @@ DIST llvm-7.1.0-manpages.tar.bz2 120786 BLAKE2B b52a7afe7c5c170894e910ef2c651a5f DIST llvm-7.1.0.src.tar.xz 28313784 BLAKE2B b78d9a7fc5ef6e352e77d339e5c4eef5ccedf67c05e7abd949e72619aa8a5ed65e7e5e2008354be8e7916d75581719b99f34227838fcc86c5d0080913c2fb22c SHA512 a7dbd5693d1f2dae6b6e52893a100f9349cbfcfb25c5fdcad46364acbff0dbd3573f8fbc026c68eb9fd56335198aa94b866cc3dd7ea0cbd2cbfb5f8fe3444a7a DIST llvm-8.0.0-manpages.tar.bz2 140542 BLAKE2B e6c58865ace0b8848ffe825e931a639daa5b22099317b3263acf8df4b8d5e1e97ed54a85b9241e6874b112c67114bda5617c3014c3bc1430c179bdf389e77269 SHA512 198f5bde8c610aa7953b325fc29c2bebe5c3d81469af6273975ed32cd739a9936813fca7399acc49809c322cf73fbdaa77a834f889bd78fe4672024965ea47fb DIST llvm-8.0.0.src.tar.xz 30503732 BLAKE2B d89bdeb0ec7d885e49cfe5ae025da84f00502d409710c0807a3cdd58dbd47c50cf6a635593569483150f7f2ecb0de0310bd6785cb7625219bf9f6224a0d68e1c SHA512 1602343b451b964f5d8c2d6b0654d89384c80d45883498c5f0e2f4196168dd4a1ed2a4dadb752076020243df42ffe46cb31d82ffc145d8e5874163cbb9686a1f -DIST llvm-manpages-4.0.1.tar.bz2 87981 BLAKE2B 79ffd254ee5c6e09159c954913ef820f74107d4fcea5e3ed82592dc36af8fdfbf1e850547ba8bfc20aa9a5ecdd26c50329e6a6d558ae3aa5475a930789ce3e01 SHA512 d5b3213567c25db58ef364d272314a79c311a80fc21d98c09a5540af45a8190a38f489228663fe9a9b63bf0f2b952c460c4196a8fc8d6f221619f6e7ed2fc415 diff --git a/sys-devel/llvm/files/4.0.1/0001-cmake-Pass-Wl-z-nodelete-on-Linux-to-prevent-unloadi.patch b/sys-devel/llvm/files/4.0.1/0001-cmake-Pass-Wl-z-nodelete-on-Linux-to-prevent-unloadi.patch deleted file mode 100644 index b857136498b0..000000000000 --- a/sys-devel/llvm/files/4.0.1/0001-cmake-Pass-Wl-z-nodelete-on-Linux-to-prevent-unloadi.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 937b23b5fffa59deb1dc342cc5602d387d84a762 Mon Sep 17 00:00:00 2001 -From: Michal Gorny <mgorny@gentoo.org> -Date: Mon, 27 Nov 2017 22:23:09 +0000 -Subject: [PATCH] [cmake] Pass -Wl,-z,nodelete on Linux to prevent unloading - -Prevent unloading shared libraries on Linux when dlclose() is called. -This is necessary since command-line option parsing API relies on -registering the global option instances in the option parser instance -which can be loaded in a different shared library. - -Given that we can't reliably remove those options when a library is -unloaded, the parser ends up containing dangling references. Since glibc -has relatively complex library unloading rules, some of the LLVM -libraries can be unloaded while others (including the Support library) -stay loaded causing quite a mayhem. To reliably prevent that, just -forbid unloading all libraries -- it's a very bad idea anyway. - -While the issue arguably happens only with BUILD_SHARED_LIBS, it may -affect any library reusing llvm::cl interface. - -Based on patch provided Ross Hayward on https://bugs.gentoo.org/617154. -Previously hit by Fedora back in Feb 2016: -https://lists.freedesktop.org/archives/mesa-dev/2016-February/107242.html - -Differential Revision: https://reviews.llvm.org/D40459 - -git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319105 91177308-0d34-0410-b5e6-96231b3b80d8 ---- - cmake/modules/HandleLLVMOptions.cmake | 8 ++++++++ - unittests/Support/DynamicLibrary/CMakeLists.txt | 7 +++++++ - 2 files changed, 15 insertions(+) - - 4.0.1 backport: removed the unittest part - -diff --git a/cmake/modules/HandleLLVMOptions.cmake b/cmake/modules/HandleLLVMOptions.cmake -index c5390371845..b5059a8a60e 100644 ---- a/cmake/modules/HandleLLVMOptions.cmake -+++ b/cmake/modules/HandleLLVMOptions.cmake -@@ -151,6 +151,14 @@ if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR WIN32 OR CYGWIN OR - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,defs") - endif() - -+# Pass -Wl,-z,nodelete. This makes sure our shared libraries are not unloaded -+# by dlclose(). We need that since the CLI API relies on cross-references -+# between global objects which became horribly broken when one of the libraries -+# is unloaded. -+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") -+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,nodelete") -+endif() -+ - - function(append value) - foreach(variable ${ARGN}) --- -2.15.1 - diff --git a/sys-devel/llvm/llvm-4.0.1-r1.ebuild b/sys-devel/llvm/llvm-4.0.1-r1.ebuild deleted file mode 100644 index 83f6f64dba2f..000000000000 --- a/sys-devel/llvm/llvm-4.0.1-r1.ebuild +++ /dev/null @@ -1,242 +0,0 @@ -# Copyright 1999-2018 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -: ${CMAKE_MAKEFILE_GENERATOR:=ninja} -# (needed due to CMAKE_BUILD_TYPE != Gentoo) -CMAKE_MIN_VERSION=3.7.0-r1 -PYTHON_COMPAT=( python2_7 ) - -inherit cmake-utils flag-o-matic multilib-minimal pax-utils \ - python-any-r1 toolchain-funcs versionator - -DESCRIPTION="Low Level Virtual Machine" -HOMEPAGE="https://llvm.org/" -SRC_URI="https://releases.llvm.org/${PV/_//}/${P/_/}.src.tar.xz - !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-manpages-${PV}.tar.bz2 )" - -# Keep in sync with CMakeLists.txt -ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430 - NVPTX PowerPC RISCV Sparc SystemZ X86 XCore ) -ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" ) - -# Additional licenses: -# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD. -# 2. ARM backend: LLVM Software Grant by ARM. -# 3. MD5 code: public-domain. -# 4. Tests (not installed): -# a. gtest: BSD. -# b. YAML tests: MIT. - -LICENSE="UoI-NCSA rc BSD public-domain - llvm_targets_ARM? ( LLVM-Grant )" -SLOT="$(get_major_version)" -KEYWORDS="amd64 arm ~arm64 x86" -IUSE="debug doc gold libedit +libffi ncurses test - elibc_musl kernel_Darwin ${ALL_LLVM_TARGETS[*]}" - -RDEPEND=" - sys-libs/zlib:0= - gold? ( - || ( - >=sys-devel/binutils-2.31.1-r4:*[plugins] - <sys-devel/binutils-2.31.1-r4:*[cxx] - ) - ) - libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] ) - libffi? ( >=virtual/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] ) - ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )" -# configparser-3.2 breaks the build (3.3 or none at all are fine) -DEPEND="${RDEPEND} - dev-lang/perl - || ( >=sys-devel/gcc-3.0 >=sys-devel/llvm-3.5 - ( >=sys-freebsd/freebsd-lib-9.1-r10 sys-libs/libcxx ) - ) - || ( >=sys-devel/binutils-2.18 >=sys-devel/binutils-apple-5.1 ) - kernel_Darwin? ( <sys-libs/libcxx-$(get_version_component_range 1-3).9999 ) - doc? ( dev-python/sphinx ) - gold? ( sys-libs/binutils-libs ) - libffi? ( virtual/pkgconfig ) - !!<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="sys-devel/llvm-common - gold? ( >=sys-devel/llvmgold-${SLOT} )" - -REQUIRED_USE="${PYTHON_REQUIRED_USE} - || ( ${ALL_LLVM_TARGETS[*]} )" - -S=${WORKDIR}/${P/_/}.src - -# least intrusive of all -CMAKE_BUILD_TYPE=RelWithDebInfo - -src_prepare() { - # Fix llvm-config for shared linking and sane flags - # https://bugs.gentoo.org/show_bug.cgi?id=565358 - eapply "${FILESDIR}"/7.1.0/0007-llvm-config-Clean-up-exported-values-update-for-shar.patch - - # Backport the fix for dlclose() causing option parser mess - # e.g. https://bugs.gentoo.org/617154 - eapply "${FILESDIR}"/4.0.1/0001-cmake-Pass-Wl-z-nodelete-on-Linux-to-prevent-unloadi.patch - - # gcc-8 build failure - eapply "${FILESDIR}"/5.0.2/0001-Fix-return-type-in-ORC-readMem-client-interface.patch - - # Remove failing test (fixed in newer versions) - rm test/tools/llvm-symbolizer/print_context.c || die - - # support building llvm against musl-libc - use elibc_musl && eapply "${FILESDIR}"/9999/musl-fixes.patch - - # disable use of SDK on OSX, bug #568758 - sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die - - # User patches + QA - cmake-utils_src_prepare -} - -multilib_src_configure() { - local ffi_cflags ffi_ldflags - if use libffi; then - ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi) - ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi) - fi - - local libdir=$(get_libdir) - local mycmakeargs=( - -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${SLOT}" - -DLLVM_LIBDIR_SUFFIX=${libdir#lib} - - -DBUILD_SHARED_LIBS=ON - -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" - -DLLVM_BUILD_TESTS=$(usex test) - - -DLLVM_ENABLE_FFI=$(usex libffi) - -DLLVM_ENABLE_LIBEDIT=$(usex libedit) - -DLLVM_ENABLE_TERMINFO=$(usex ncurses) - -DLLVM_ENABLE_ASSERTIONS=$(usex debug) - -DLLVM_ENABLE_EH=ON - -DLLVM_ENABLE_RTTI=ON - - -DWITH_POLLY=OFF # TODO - - -DLLVM_HOST_TRIPLE="${CHOST}" - - -DFFI_INCLUDE_DIR="${ffi_cflags#-I}" - -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}" - - # disable OCaml bindings (now in dev-ml/llvm-ocaml) - -DOCAMLFIND=NO - ) - -# Note: go bindings have no CMake rules at the moment -# but let's kill the check in case they are introduced -# if ! multilib_is_native_abi || ! use go; then - mycmakeargs+=( - -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND - ) -# fi - - if multilib_is_native_abi; then - mycmakeargs+=( - -DLLVM_BUILD_DOCS=$(usex doc) - -DLLVM_ENABLE_OCAMLDOC=OFF - -DLLVM_ENABLE_SPHINX=$(usex doc) - -DLLVM_ENABLE_DOXYGEN=OFF - -DLLVM_INSTALL_UTILS=ON - ) - use doc && mycmakeargs+=( - -DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html" - -DSPHINX_WARNINGS_AS_ERRORS=OFF - ) - use gold && mycmakeargs+=( - -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include - ) - fi - - if tc-is-cross-compiler; then - local tblgen="${EPREFIX}/usr/lib/llvm/${SLOT}/bin/llvm-tblgen" - [[ -x "${tblgen}" ]] \ - || die "${tblgen} not found or usable" - mycmakeargs+=( - -DCMAKE_CROSSCOMPILING=ON - -DLLVM_TABLEGEN="${tblgen}" - ) - fi - - # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 - use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" - cmake-utils_src_configure -} - -multilib_src_compile() { - cmake-utils_src_compile - - pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld - pax-mark m "${BUILD_DIR}"/bin/lli - pax-mark m "${BUILD_DIR}"/bin/lli-child-target - - if use test; then - pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests - pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests - pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests - fi -} - -multilib_src_test() { - # respect TMPDIR! - local -x LIT_PRESERVES_TMP=1 - cmake-utils_src_make check -} - -src_install() { - local MULTILIB_CHOST_TOOLS=( - /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 - - # 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() { - 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" - MANPATH="${EPREFIX}/usr/lib/llvm/${SLOT}/share/man" - LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )" -_EOF_ - doenvd "${T}/10llvm-${revord}" - - # install pre-generated manpages - if ! use doc; then - # (doman does not support custom paths) - insinto "/usr/lib/llvm/${SLOT}/share/man/man1" - doins "${WORKDIR}/llvm-manpages-${PV}/llvm"/*.1 - fi - - docompress "/usr/lib/llvm/${SLOT}/share/man" -} |