diff options
| author | Z. Liu <zhixu.liu@gmail.com> | 2025-09-16 04:09:35 +0000 |
|---|---|---|
| committer | Sam James <sam@gentoo.org> | 2025-09-17 22:27:44 +0100 |
| commit | 575b35af90ef010ee1531f55165de9b5b34d4c7c (patch) | |
| tree | 3d91e17e4bdc806f98f6b5d032d502778a361163 /dev-db/mongodb/mongodb-8.0.12.ebuild | |
| parent | 222d189042a6be146c7650ed8d18b2c8fcc26632 (diff) | |
| download | gentoo-575b35af90ef010ee1531f55165de9b5b34d4c7c.tar.gz gentoo-575b35af90ef010ee1531f55165de9b5b34d4c7c.tar.bz2 gentoo-575b35af90ef010ee1531f55165de9b5b34d4c7c.zip | |
dev-db/mongodb: fix build issue w/ clang 20
upstream patch is applied, otherwise the build w/ clang 20 fails with:
> src/mongo/bson/util/bsoncolumnbuilder.h:285:49: error: call to deleted constructor of 'const mongo::TrackingAllocator<void> &'
However, the build still 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)
The reason is that Timestamp is a composite type, which requires -latomic
when building with clang++ and libstdc++. Mongodb's SConstruct only
checks for some basic types ('int64_t', 'uint64_t', 'int32_t', 'uint32_t'),
so this case is not detected.
Test case below:
$ cat a.cc
#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;
}
$ clang++ -stdlib=libstdc++ a.cc
/usr/bin/x86_64-pc-linux-gnu-ld.bfd: /tmp/a-1e3f91.o: in function `std::atomic<Timestamp>::compare_exchange_strong(Timestamp&, Timestamp, std::memory_order, std::memory_order)':
a.cc:(.text._ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_[_ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_]+0x222): undefined reference to `__atomic_compare_exchange'
/usr/bin/x86_64-pc-linux-gnu-ld.bfd: a.cc:(.text._ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_[_ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_]+0x28d): undefined reference to `__atomic_compare_exchange'
/usr/bin/x86_64-pc-linux-gnu-ld.bfd: a.cc:(.text._ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_[_ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_]+0x2f8): undefined reference to `__atomic_compare_exchange'
/usr/bin/x86_64-pc-linux-gnu-ld.bfd: a.cc:(.text._ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_[_ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_]+0x3c1): undefined reference to `__atomic_compare_exchange'
/usr/bin/x86_64-pc-linux-gnu-ld.bfd: a.cc:(.text._ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_[_ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_]+0x42c): undefined reference to `__atomic_compare_exchange'
/usr/bin/x86_64-pc-linux-gnu-ld.bfd: /tmp/a-1e3f91.o:a.cc:(.text._ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_[_ZNSt6atomicI9TimestampE23compare_exchange_strongERS0_S0_St12memory_orderS3_]+0x497): more undefined references to `__atomic_compare_exchange' follow
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Signed-off-by: Z. Liu <zhixu.liu@gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/43808
Closes: https://github.com/gentoo/gentoo/pull/43808
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-db/mongodb/mongodb-8.0.12.ebuild')
| -rw-r--r-- | dev-db/mongodb/mongodb-8.0.12.ebuild | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/dev-db/mongodb/mongodb-8.0.12.ebuild b/dev-db/mongodb/mongodb-8.0.12.ebuild index e33182d058bb..d118329a1c89 100644 --- a/dev-db/mongodb/mongodb-8.0.12.ebuild +++ b/dev-db/mongodb/mongodb-8.0.12.ebuild @@ -75,6 +75,8 @@ PATCHES=( "${WORKDIR}/mongodb-8.0.8-patches/${PN}-8.0.6-fixes-for-boost-1.85.patch" "${WORKDIR}/mongodb-8.0.8-patches/${PN}-8.0.4-scons.patch" "${WORKDIR}/mongodb-8.0.8-patches/${PN}-8.0.6-use-tenacity.patch" + "${FILESDIR}/${PN}-8.0.8-sconstruct.patch" + "${FILESDIR}/${PN}-8.0.8-fix-compile-error-due-to-deleted-constructor.patch" "${FILESDIR}/boost_issue_402.patch" "${FILESDIR}/${PN}-8.0.12-sconstruct.patch" ) |
