sys-devel/llvm: SOVERSIONs have been fixed upst, backport new to 3.9.0
authorMichał Górny <mgorny@gentoo.org>
Tue, 4 Oct 2016 06:39:01 +0000 (08:39 +0200)
committerMichał Górny <mgorny@gentoo.org>
Tue, 4 Oct 2016 06:41:46 +0000 (08:41 +0200)
sys-devel/llvm/files/3.8.1/0008-cmake-Restore-SOVERSIONs-on-shared-libraries.patch [moved from sys-devel/llvm/files/9999/0008-cmake-Restore-SOVERSIONs-on-shared-libraries.patch with 100% similarity]
sys-devel/llvm/files/3.9.0/0008-cmake-Reintroduce-ldconfig-compatible-SOVERSIONs-on-.patch [new file with mode: 0644]
sys-devel/llvm/llvm-3.8.0-r3.ebuild
sys-devel/llvm/llvm-3.8.1-r2.ebuild
sys-devel/llvm/llvm-3.8.1.ebuild
sys-devel/llvm/llvm-3.9.0.ebuild
sys-devel/llvm/llvm-9999.ebuild

diff --git a/sys-devel/llvm/files/3.9.0/0008-cmake-Reintroduce-ldconfig-compatible-SOVERSIONs-on-.patch b/sys-devel/llvm/files/3.9.0/0008-cmake-Reintroduce-ldconfig-compatible-SOVERSIONs-on-.patch
new file mode 100644 (file)
index 0000000..6634cde
--- /dev/null
@@ -0,0 +1,62 @@
+From aeddc35a35c55f487977d7609060225e03e2028b Mon Sep 17 00:00:00 2001
+From: Michal Gorny <mgorny@gentoo.org>
+Date: Tue, 4 Oct 2016 06:09:18 +0000
+Subject: [PATCH] [cmake] Reintroduce (ldconfig-compatible) SOVERSIONs on
+ shared libraries
+
+Reintroduce versioning of shared libraries via SOVERSION, addressing
+the issues with the previous design, since Gentoo is relying
+on shared-split install of LLVM. The SOVERSIONs were originally
+introduced in r229720 for all libraries, and removed in r252093 in favor
+of custom SONAME. As far as I understand, the major concern with the old
+versioning was that the used versions were incompatible with ldconfig.
+
+Having considered that, this commit introduce SOVERSIONS with the
+following considerations:
+
+1. SOVERSIONs are formed of major & minor version concatenated -- i.e.
+for 4.0 its .so.40. This matches the common practice where the first
+version number indicates ABI breakage, and therefore fixes the issues
+with ldconfig. Additionally, VERSION with the remaining verion
+components appended is used, however this is not strictly necessary.
+
+2. The versioning is only applied to libraries with no explicit SONAME
+specified -- i.e. it won't apply to libLLVM but only to the split
+libraries. It will also apply to libraries installed by the subprojects.
+
+3. The versioning is only done on *nix systems, Darwin excluded. This
+matches the current use of SONAME.
+
+Differential Revision: https://reviews.llvm.org/D24757
+
+git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283189 91177308-0d34-0410-b5e6-96231b3b80d8
+---
+ cmake/modules/AddLLVM.cmake | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
+index 37b3b80..7cb1b0c 100644
+--- a/cmake/modules/AddLLVM.cmake
++++ b/cmake/modules/AddLLVM.cmake
+@@ -450,6 +450,18 @@ function(llvm_add_library name)
+         PREFIX ""
+         )
+     endif()
++
++    # Set SOVERSION on shared libraries that lack explicit SONAME
++    # specifier, on *nix systems that are not Darwin.
++    if(UNIX AND NOT APPLE AND NOT ARG_SONAME)
++      set_target_properties(${name}
++        PROPERTIES
++              # Concatenate the version numbers since ldconfig expects exactly
++              # one component indicating the ABI version, while LLVM uses
++              # major+minor for that.
++        SOVERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}
++        VERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX})
++    endif()
+   endif()
+   if(ARG_MODULE OR ARG_SHARED)
+-- 
+2.10.0
+
index b08f4d65cca58a611e53791473a63542278e8992..e45720084cf4fbf913ae9fa0ee787262d1b22fa8 100644 (file)
@@ -167,7 +167,7 @@ src_prepare() {
 
        # Restore SOVERSIONs for shared libraries
        # https://bugs.gentoo.org/show_bug.cgi?id=578392
-       eapply "${FILESDIR}"/9999/0008-cmake-Restore-SOVERSIONs-on-shared-libraries.patch
+       eapply "${FILESDIR}"/3.8.1/0008-cmake-Restore-SOVERSIONs-on-shared-libraries.patch
 
        # disable use of SDK on OSX, bug #568758
        sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
index d2cdc518f0dd5e408d7782eac9c0091deed534b8..62662f78144ac4bb2ec4cdb1a7f1947f79a55d8c 100644 (file)
@@ -168,7 +168,7 @@ src_prepare() {
 
        # Restore SOVERSIONs for shared libraries
        # https://bugs.gentoo.org/show_bug.cgi?id=578392
-       eapply "${FILESDIR}"/9999/0008-cmake-Restore-SOVERSIONs-on-shared-libraries.patch
+       eapply "${FILESDIR}"/3.8.1/0008-cmake-Restore-SOVERSIONs-on-shared-libraries.patch
 
        # support building llvm against musl-libc
        use elibc_musl && eapply "${FILESDIR}"/9999/musl-fixes.patch
index 29b637d22d06e3d23fc58acc50b5dfe3aeab2b9d..dee841fe04cf6c1ec07a0f4a290d3f510f2ba5cc 100644 (file)
@@ -167,7 +167,7 @@ src_prepare() {
 
        # Restore SOVERSIONs for shared libraries
        # https://bugs.gentoo.org/show_bug.cgi?id=578392
-       eapply "${FILESDIR}"/9999/0008-cmake-Restore-SOVERSIONs-on-shared-libraries.patch
+       eapply "${FILESDIR}"/3.8.1/0008-cmake-Restore-SOVERSIONs-on-shared-libraries.patch
 
        # disable use of SDK on OSX, bug #568758
        sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
index 9ec259c6e5a27accf07e182125cd0f2ff4504f34..91712b50a09cb2fa36875e4da483bd56db0fa0f7 100644 (file)
@@ -176,7 +176,7 @@ src_prepare() {
 
        # Restore SOVERSIONs for shared libraries
        # https://bugs.gentoo.org/show_bug.cgi?id=578392
-       eapply "${FILESDIR}"/9999/0008-cmake-Restore-SOVERSIONs-on-shared-libraries.patch
+       eapply "${FILESDIR}"/3.9.0/0008-cmake-Reintroduce-ldconfig-compatible-SOVERSIONs-on-.patch
 
        # support building llvm against musl-libc
        use elibc_musl && eapply "${FILESDIR}"/9999/musl-fixes.patch
index 5e37802171563a5794037c3cdf76624c758756c8..1367dddbbb1a24464936dc6397649e298c30ba9c 100644 (file)
@@ -109,10 +109,6 @@ src_prepare() {
        # https://bugs.gentoo.org/show_bug.cgi?id=565358
        eapply "${FILESDIR}"/9999/0007-llvm-config-Clean-up-exported-values-update-for-shar.patch
 
-       # Restore SOVERSIONs for shared libraries
-       # https://bugs.gentoo.org/show_bug.cgi?id=578392
-       eapply "${FILESDIR}"/9999/0008-cmake-Restore-SOVERSIONs-on-shared-libraries.patch
-
        # support building llvm against musl-libc
        use elibc_musl && eapply "${FILESDIR}"/9999/musl-fixes.patch