diff options
Diffstat (limited to 'dev-db/mongodb/files')
| -rw-r--r-- | dev-db/mongodb/files/mongodb-8.0.8-fix-compile-error-due-to-deleted-constructor.patch | 28 | ||||
| -rw-r--r-- | dev-db/mongodb/files/mongodb-8.0.8-sconstruct.patch | 45 |
2 files changed, 73 insertions, 0 deletions
diff --git a/dev-db/mongodb/files/mongodb-8.0.8-fix-compile-error-due-to-deleted-constructor.patch b/dev-db/mongodb/files/mongodb-8.0.8-fix-compile-error-due-to-deleted-constructor.patch new file mode 100644 index 000000000000..017aeee15ee1 --- /dev/null +++ b/dev-db/mongodb/files/mongodb-8.0.8-fix-compile-error-due-to-deleted-constructor.patch @@ -0,0 +1,28 @@ +https://jira.mongodb.org/browse/SERVER-97048 + +From ce43ef7147fabfa5b7f14a3040a0fc19b9228d9f Mon Sep 17 00:00:00 2001 +From: James Bronsted <32047428+jpbronsted@users.noreply.github.com> +Date: Wed, 27 Nov 2024 17:59:39 -0500 +Subject: [PATCH] SERVER-97048 fix compile error on Clang 19 due to + BSONColumnBuilder default constructor (#29231) + +GitOrigin-RevId: 82d5ad449944292fe4cfdb7a27886439725d58de + +diff --git a/src/mongo/bson/util/bsoncolumnbuilder.h b/src/mongo/bson/util/bsoncolumnbuilder.h +index d9cd20e07b7..b7d36fa1b28 100644 +--- a/src/mongo/bson/util/bsoncolumnbuilder.h ++++ b/src/mongo/bson/util/bsoncolumnbuilder.h +@@ -282,7 +282,9 @@ struct EncodingState { + template <class Allocator = std::allocator<void>> + class BSONColumnBuilder { + public: +- explicit BSONColumnBuilder(const Allocator& = {}); ++ template <typename A = Allocator> ++ BSONColumnBuilder() : BSONColumnBuilder{A{}} {} ++ explicit BSONColumnBuilder(const Allocator&); + explicit BSONColumnBuilder(allocator_aware::BufBuilder<Allocator>, const Allocator& = {}); + + /** +-- +2.49.1 + diff --git a/dev-db/mongodb/files/mongodb-8.0.8-sconstruct.patch b/dev-db/mongodb/files/mongodb-8.0.8-sconstruct.patch new file mode 100644 index 000000000000..e0f6c71a80a9 --- /dev/null +++ b/dev-db/mongodb/files/mongodb-8.0.8-sconstruct.patch @@ -0,0 +1,45 @@ +check whether "-latomic" is required for composite type, see src/mongo/bson/timestamp.h, +otherwise the build fails with: + +> /usr/bin/x86_64-pc-linux-gnu-ld.bfd: build/gentoo/mongo/db/storage/wiredtiger/wiredtiger_record_store.o: in function `mongo::WiredTigerRecordStore::getEarliestOplogTimestamp(mongo::OperationContext*)': +> /usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/atomic_base.h:1002:(.text+0x7da9): undefined reference to `__atomic_compare_exchange' +> clang++: error: linker command failed with exit code 1 (use -v to see invocation) + +diff --git a/SConstruct b/SConstruct +index 2a32456..4cfb5fd 100644 +--- a/SConstruct ++++ b/SConstruct +@@ -5369,10 +5369,33 @@ def doConfigure(myenv): + + conf.AddTest("CheckStdAtomic", CheckStdAtomic) + ++ def CheckTimestampAtomic(context, extra_message): ++ test_body = """ ++ #include <atomic> ++ struct Timestamp { unsigned int t, i; }; ++ template<typename T> struct AtomicWord { std::atomic<T> v; T compareAndSwap(T e, T n) { v.compare_exchange_strong(e,n); return e; } }; ++ int main() { ++ AtomicWord<Timestamp> x; ++ Timestamp a{0,0}, b{1,1}; ++ x.compareAndSwap(a,b); ++ return 0; ++ } ++ """ ++ ++ context.Message("Checking if AtomicWord<Timestamp> works{0}... ".format(extra_message)) ++ ++ ret = context.TryLink(textwrap.dedent(test_body), ".cpp") ++ context.Result(ret) ++ return ret ++ ++ conf.AddTest("CheckTimestampAtomic", CheckTimestampAtomic) ++ + def check_all_atomics(extra_message=''): + for t in ('int64_t', 'uint64_t', 'int32_t', 'uint32_t'): + if not conf.CheckStdAtomic(t, extra_message): + return False ++ if not conf.CheckTimestampAtomic(extra_message): ++ return False + return True + + if not check_all_atomics(): |
