summaryrefslogtreecommitdiff
path: root/dev-db
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2022-06-18 18:17:37 +0100
committerSam James <sam@gentoo.org>2022-06-18 18:17:41 +0100
commit79a3c0438c8f3885fb8d5840263b36c8ebd80f4f (patch)
tree3c54cfc014a0632859d52bb55556d2c2a82cdb97 /dev-db
parentapp-containers/snapd: add 2.56.2 (diff)
downloadgentoo-79a3c0438c8f3885fb8d5840263b36c8ebd80f4f.tar.gz
gentoo-79a3c0438c8f3885fb8d5840263b36c8ebd80f4f.tar.bz2
gentoo-79a3c0438c8f3885fb8d5840263b36c8ebd80f4f.zip
dev-db/mongodb: don't force LLD
See patch for details. Closes: https://bugs.gentoo.org/769986 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-db')
-rw-r--r--dev-db/mongodb/files/mongodb-4.4.10-no-force-lld.patch29
-rw-r--r--dev-db/mongodb/files/mongodb-5.0.5-no-force-lld.patch49
-rw-r--r--dev-db/mongodb/mongodb-4.4.10-r1.ebuild1
-rw-r--r--dev-db/mongodb/mongodb-5.0.5-r2.ebuild1
4 files changed, 80 insertions, 0 deletions
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}"