From 3d3f9b4f57eb9d6233325d45e7e6675e1599853b Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sat, 24 Jun 2023 09:52:10 +0200 Subject: [PATCH] databases/mongodb70: fix build on 14-current Fixes provided by Dimitry in a private reply on https://lists.freebsd.org/archives/freebsd-ports/2023-May/003870.html. Dank je wel! poidriere stage-qa ok runtime tested: proper clean start and restart on existing db --- databases/mongodb70/Makefile | 2 + ...rc_mongo_db_exec_document__value_value.cpp | 15 ++++ ..._db_exec_document__value_value__internal.h | 13 ++++ .../files/patch-src_mongo_db_exec_near.cpp | 46 ++++++++++++ .../patch-src_mongo_s_write__ops_write__op.h | 74 +++++++++++++++++++ .../patch-src_mongo_util_net_ssl__types.h | 10 +++ ...oost_boost_mpl_aux___integral__wrapper.hpp | 11 +++ 7 files changed, 171 insertions(+) create mode 100644 databases/mongodb70/files/patch-src_mongo_db_exec_document__value_value.cpp create mode 100644 databases/mongodb70/files/patch-src_mongo_db_exec_document__value_value__internal.h create mode 100644 databases/mongodb70/files/patch-src_mongo_db_exec_near.cpp create mode 100644 databases/mongodb70/files/patch-src_mongo_s_write__ops_write__op.h create mode 100644 databases/mongodb70/files/patch-src_mongo_util_net_ssl__types.h create mode 100644 databases/mongodb70/files/patch-src_third__party_boost_boost_mpl_aux___integral__wrapper.hpp diff --git a/databases/mongodb70/Makefile b/databases/mongodb70/Makefile index 182724f208412..aead0f8dc0764 100644 --- a/databases/mongodb70/Makefile +++ b/databases/mongodb70/Makefile @@ -86,6 +86,8 @@ SASL_MAKE_ARGS= --use-sasl-client SSL_USES= ssl SSL_MAKE_ARGS= --ssl +CFLAGS+= -DBOOST_NO_CXX98_FUNCTION_BASE + .include ALL_TARGET= install-core diff --git a/databases/mongodb70/files/patch-src_mongo_db_exec_document__value_value.cpp b/databases/mongodb70/files/patch-src_mongo_db_exec_document__value_value.cpp new file mode 100644 index 0000000000000..194db618f3b21 --- /dev/null +++ b/databases/mongodb70/files/patch-src_mongo_db_exec_document__value_value.cpp @@ -0,0 +1,15 @@ +--- src/mongo/db/exec/document_value/value.cpp.orig 2023-06-15 22:07:57 UTC ++++ src/mongo/db/exec/document_value/value.cpp +@@ -59,6 +59,12 @@ using namespace std::string_literals; + using std::vector; + using namespace std::string_literals; + ++RCVector::RCVector() { ++} ++ ++RCVector::RCVector(std::vector v) : vec(std::move(v)) { ++} ++ + void ValueStorage::verifyRefCountingIfShould() const { + switch (type) { + case MinKey: diff --git a/databases/mongodb70/files/patch-src_mongo_db_exec_document__value_value__internal.h b/databases/mongodb70/files/patch-src_mongo_db_exec_document__value_value__internal.h new file mode 100644 index 0000000000000..6770dde9e770e --- /dev/null +++ b/databases/mongodb70/files/patch-src_mongo_db_exec_document__value_value__internal.h @@ -0,0 +1,13 @@ +--- src/mongo/db/exec/document_value/value_internal.h.orig 2023-06-15 22:07:57 UTC ++++ src/mongo/db/exec/document_value/value_internal.h +@@ -51,8 +51,8 @@ class RCVector : public RefCountable { (public) + /// A heap-allocated reference-counted std::vector + class RCVector : public RefCountable { + public: +- RCVector() {} +- RCVector(std::vector v) : vec(std::move(v)) {} ++ RCVector(); ++ RCVector(std::vector v); + std::vector vec; + }; + diff --git a/databases/mongodb70/files/patch-src_mongo_db_exec_near.cpp b/databases/mongodb70/files/patch-src_mongo_db_exec_near.cpp new file mode 100644 index 0000000000000..0bbdb149268d7 --- /dev/null +++ b/databases/mongodb70/files/patch-src_mongo_db_exec_near.cpp @@ -0,0 +1,46 @@ +--- src/mongo/db/exec/near.cpp.orig 2023-06-15 22:07:57 UTC ++++ src/mongo/db/exec/near.cpp +@@ -42,6 +42,21 @@ using std::vector; + using std::unique_ptr; + using std::vector; + ++/** ++ * Holds a generic search result with a distance computed in some fashion. ++ */ ++struct NearStage::SearchResult { ++ SearchResult(WorkingSetID resultID, double distance) : resultID(resultID), distance(distance) {} ++ ++ bool operator<(const SearchResult& other) const { ++ // We want increasing distance, not decreasing, so we reverse the < ++ return distance > other.distance; ++ } ++ ++ WorkingSetID resultID; ++ double distance; ++}; ++ + NearStage::NearStage(ExpressionContext* expCtx, + const char* typeName, + StageType type, +@@ -113,21 +128,6 @@ PlanStage::StageState NearStage::doWork(WorkingSetID* + + return nextState; + } +- +-/** +- * Holds a generic search result with a distance computed in some fashion. +- */ +-struct NearStage::SearchResult { +- SearchResult(WorkingSetID resultID, double distance) : resultID(resultID), distance(distance) {} +- +- bool operator<(const SearchResult& other) const { +- // We want increasing distance, not decreasing, so we reverse the < +- return distance > other.distance; +- } +- +- WorkingSetID resultID; +- double distance; +-}; + + // Set "toReturn" when NEED_YIELD. + PlanStage::StageState NearStage::bufferNext(WorkingSetID* toReturn) { diff --git a/databases/mongodb70/files/patch-src_mongo_s_write__ops_write__op.h b/databases/mongodb70/files/patch-src_mongo_s_write__ops_write__op.h new file mode 100644 index 0000000000000..f5edb3f0748fb --- /dev/null +++ b/databases/mongodb70/files/patch-src_mongo_s_write__ops_write__op.h @@ -0,0 +1,74 @@ +--- src/mongo/s/write_ops/write_op.h.orig 2023-06-15 22:07:57 UTC ++++ src/mongo/s/write_ops/write_op.h +@@ -38,7 +38,7 @@ struct TargetedWrite; + namespace mongo { + + struct TargetedWrite; +-struct ChildWriteOp; ++class WriteOp; + + enum WriteOpState { + // Item is ready to be targeted +@@ -63,6 +63,31 @@ enum WriteOpState { + }; + + /** ++ * State of a write in-progress (to a single shard) which is one part of a larger write ++ * operation. ++ * ++ * As above, the write op may finish in either a successful (_Completed) or unsuccessful ++ * (_Error) state. ++ */ ++struct ChildWriteOp { ++ ChildWriteOp(WriteOp* const parent) : parentOp(parent) {} ++ ++ const WriteOp* const parentOp; ++ ++ WriteOpState state{WriteOpState_Ready}; ++ ++ // non-zero when state == _Pending ++ // Not owned here but tracked for reporting ++ TargetedWrite* pendingWrite{nullptr}; ++ ++ // filled when state > _Pending ++ std::unique_ptr endpoint; ++ ++ // filled when state == _Error or (optionally) when state == _Cancelled ++ boost::optional error; ++}; ++ ++/** + * State of a single write item in-progress from a client request. + * + * The lifecyle of a write op: +@@ -182,30 +207,6 @@ class WriteOp { (private) + + // stores the shards where this write operation succeeded + absl::flat_hash_set _successfulShardSet; +-}; +-/** +- * State of a write in-progress (to a single shard) which is one part of a larger write +- * operation. +- * +- * As above, the write op may finish in either a successful (_Completed) or unsuccessful +- * (_Error) state. +- */ +-struct ChildWriteOp { +- ChildWriteOp(WriteOp* const parent) : parentOp(parent) {} +- +- const WriteOp* const parentOp; +- +- WriteOpState state{WriteOpState_Ready}; +- +- // non-zero when state == _Pending +- // Not owned here but tracked for reporting +- TargetedWrite* pendingWrite{nullptr}; +- +- // filled when state > _Pending +- std::unique_ptr endpoint; +- +- // filled when state == _Error or (optionally) when state == _Cancelled +- boost::optional error; + }; + + // First value is write item index in the batch, second value is child write op index diff --git a/databases/mongodb70/files/patch-src_mongo_util_net_ssl__types.h b/databases/mongodb70/files/patch-src_mongo_util_net_ssl__types.h new file mode 100644 index 0000000000000..b74a1c248ddc7 --- /dev/null +++ b/databases/mongodb70/files/patch-src_mongo_util_net_ssl__types.h @@ -0,0 +1,10 @@ +--- src/mongo/util/net/ssl_types.h.orig 2023-06-15 22:07:57 UTC ++++ src/mongo/util/net/ssl_types.h +@@ -61,6 +61,7 @@ class SSLX509Name { (public) + auto equalityLens() const { + return std::tie(oid, type, value); + } ++ friend bool operator==(const Entry& lhs, const Entry& rhs); + }; + + SSLX509Name() = default; diff --git a/databases/mongodb70/files/patch-src_third__party_boost_boost_mpl_aux___integral__wrapper.hpp b/databases/mongodb70/files/patch-src_third__party_boost_boost_mpl_aux___integral__wrapper.hpp new file mode 100644 index 0000000000000..f6e1178b4a655 --- /dev/null +++ b/databases/mongodb70/files/patch-src_third__party_boost_boost_mpl_aux___integral__wrapper.hpp @@ -0,0 +1,11 @@ +--- src/third_party/boost/boost/mpl/aux_/integral_wrapper.hpp.orig 2023-06-15 22:07:57 UTC ++++ src/third_party/boost/boost/mpl/aux_/integral_wrapper.hpp +@@ -56,7 +56,7 @@ struct AUX_WRAPPER_NAME + // have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC), + // while some other don't like 'value + 1' (Borland), and some don't like + // either +-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243) ++#if 1 //BOOST_WORKAROUND(__EDG_VERSION__, <= 243) + private: + BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1))); + BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));