commit:     79a3c0438c8f3885fb8d5840263b36c8ebd80f4f
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 18 17:17:37 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Jun 18 17:17:41 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=79a3c043

dev-db/mongodb: don't force LLD

See patch for details.

Closes: https://bugs.gentoo.org/769986
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/mongodb-4.4.10-no-force-lld.patch        | 29 +++++++++++++
 .../mongodb/files/mongodb-5.0.5-no-force-lld.patch | 49 ++++++++++++++++++++++
 dev-db/mongodb/mongodb-4.4.10-r1.ebuild            |  1 +
 dev-db/mongodb/mongodb-5.0.5-r2.ebuild             |  1 +
 4 files changed, 80 insertions(+)

diff --git a/dev-db/mongodb/files/mongodb-4.4.10-no-force-lld.patch 
b/dev-db/mongodb/files/mongodb-4.4.10-no-force-lld.patch
new file mode 100644
index 000000000000..471f3e226820
--- /dev/null
+++ b/dev-db/mongodb/files/mongodb-4.4.10-no-force-lld.patch
@@ -0,0 +1,29 @@
+Don't automagically force lld > gold > bfd. Leave it up to the user.
+
+In particular, avoids issues with LTO enabled (via the flag/scons option)
+where using GCC as compiler, as lld can't do LTO with GCC.
+
+https://bugs.gentoo.org/769986
+--- a/SConstruct
++++ b/SConstruct
+@@ -3109,20 +3109,6 @@ def doConfigure(myenv):
+         myenv.Append( CCFLAGS=["/Zc:inline"])
+ 
+     if myenv.ToolchainIs('gcc', 'clang'):
+-        # This tells clang/gcc to use the gold linker if it is available - we 
prefer the gold linker
+-        # because it is much faster. Don't use it if the user has already 
configured another linker
+-        # selection manually.
+-        if not any(flag.startswith('-fuse-ld=') for flag in env['LINKFLAGS']):
+-
+-            # lld has problems with separate debug info on some platforms. 
See:
+-            # - https://bugzilla.mozilla.org/show_bug.cgi?id=1485556
+-            # - https://bugzilla.mozilla.org/show_bug.cgi?id=1485556
+-            if get_option('separate-debug') == 'off':
+-                if not AddToLINKFLAGSIfSupported(myenv, '-fuse-ld=lld'):
+-                    AddToLINKFLAGSIfSupported(myenv, '-fuse-ld=gold')
+-            else:
+-                AddToLINKFLAGSIfSupported(myenv, '-fuse-ld=gold')
+-
+         # Usually, --gdb-index is too expensive in big static binaries, but 
for dynamic
+         # builds it works well.
+         if link_model.startswith("dynamic"):

diff --git a/dev-db/mongodb/files/mongodb-5.0.5-no-force-lld.patch 
b/dev-db/mongodb/files/mongodb-5.0.5-no-force-lld.patch
new file mode 100644
index 000000000000..6ce92778b6bd
--- /dev/null
+++ b/dev-db/mongodb/files/mongodb-5.0.5-no-force-lld.patch
@@ -0,0 +1,49 @@
+Don't automagically force lld > gold > bfd. Leave it up to the user.
+
+In particular, avoids issues with LTO enabled (via the flag/scons option)
+where using GCC as compiler, as lld can't do LTO with GCC.
+
+https://bugs.gentoo.org/769986
+--- a/SConstruct
++++ b/SConstruct
+@@ -2824,40 +2824,6 @@ def doConfigure(myenv):
+     def AddToSHLINKFLAGSIfSupported(env, flag):
+         return AddFlagIfSupported(env, 'C', '.c', flag, True, 
SHLINKFLAGS=[flag])
+ 
+-    if myenv.ToolchainIs('gcc', 'clang'):
+-        # This tells clang/gcc to use the gold linker if it is available - we 
prefer the gold linker
+-        # because it is much faster. Don't use it if the user has already 
configured another linker
+-        # selection manually.
+-        if any(flag.startswith('-fuse-ld=') for flag in env['LINKFLAGS']):
+-            myenv.FatalError(f"Use the '--linker' option instead of modifying 
the LINKFLAGS directly.")
+-
+-        linker_ld = get_option('linker')
+-        if linker_ld == 'auto':
+-            # lld has problems with separate debug info on some platforms. 
See:
+-            # - https://bugzilla.mozilla.org/show_bug.cgi?id=1485556
+-            # - https://bugzilla.mozilla.org/show_bug.cgi?id=1485556
+-            #
+-            # lld also apparently has problems with symbol resolution
+-            # in some esoteric configurations that apply for us when
+-            # using --link-model=dynamic mode, so disable lld there
+-            # too. See:
+-            # - https://bugs.llvm.org/show_bug.cgi?id=46676
+-            #
+-            # We should revisit all of these issues the next time we upgrade 
our clang minimum.
+-            if get_option('separate-debug') == 'off' and 
get_option('link-model') != 'dynamic':
+-                if not AddToLINKFLAGSIfSupported(myenv, '-fuse-ld=lld'):
+-                    AddToLINKFLAGSIfSupported(myenv, '-fuse-ld=gold')
+-            else:
+-                AddToLINKFLAGSIfSupported(myenv, '-fuse-ld=gold')
+-        elif link_model.startswith("dynamic") and linker_ld == 'bfd':
+-            # BFD is not supported due to issues with it causing warnings 
from some of
+-            # the third party libraries that mongodb is linked with:
+-            # https://jira.mongodb.org/browse/SERVER-49465
+-            myenv.FatalError(f"Linker {linker_ld} is not supported with 
dynamic link model builds.")
+-        else:
+-            if not AddToLINKFLAGSIfSupported(myenv, f'-fuse-ld={linker_ld}'):
+-                myenv.FatalError(f"Linker {linker_ld} could not be 
configured.")
+-
+     detectCompiler = Configure(myenv, help=False, custom_tests = {
+         'CheckForCXXLink': CheckForCXXLink,
+     })

diff --git a/dev-db/mongodb/mongodb-4.4.10-r1.ebuild 
b/dev-db/mongodb/mongodb-4.4.10-r1.ebuild
index 19e02103e966..8cd7e5807418 100644
--- a/dev-db/mongodb/mongodb-4.4.10-r1.ebuild
+++ b/dev-db/mongodb/mongodb-4.4.10-r1.ebuild
@@ -59,6 +59,7 @@ PATCHES=(
        "${FILESDIR}/${PN}-4.4.1-gcc11.patch"
        "${FILESDIR}/${PN}-5.0.2-glibc-2.34.patch"
        "${FILESDIR}/${PN}-4.4.10-boost-1.79.patch"
+       "${FILESDIR}/${PN}-4.4.10-no-force-lld.patch"
 )
 
 S="${WORKDIR}/${MY_P}"

diff --git a/dev-db/mongodb/mongodb-5.0.5-r2.ebuild 
b/dev-db/mongodb/mongodb-5.0.5-r2.ebuild
index 9e993f26b1d4..6c89b11fff96 100644
--- a/dev-db/mongodb/mongodb-5.0.5-r2.ebuild
+++ b/dev-db/mongodb/mongodb-5.0.5-r2.ebuild
@@ -66,6 +66,7 @@ PATCHES=(
        "${FILESDIR}/${PN}-5.0.2-skip-no-exceptions.patch"
        "${FILESDIR}/${PN}-5.0.2-skip-reqs-check.patch"
        "${FILESDIR}/${PN}-5.0.2-boost-1.79.patch"
+       "${FILESDIR}/${PN}-5.0.5-no-force-lld.patch"
 )
 
 S="${WORKDIR}/${MY_P}"

Reply via email to