Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Jun 2023 08:05:17 GMT
From:      Ronald Klop <ronald@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 3d3f9b4f57eb - main - databases/mongodb70: fix build on 14-current
Message-ID:  <202306240805.35O85HTb019655@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by ronald:

URL: https://cgit.FreeBSD.org/ports/commit/?id=3d3f9b4f57eb9d6233325d45e7e6675e1599853b

commit 3d3f9b4f57eb9d6233325d45e7e6675e1599853b
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-06-24 07:52:10 +0000
Commit:     Ronald Klop <ronald@FreeBSD.org>
CommitDate: 2023-06-24 08:02:23 +0000

    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 +
 ...tch-src_mongo_db_exec_document__value_value.cpp | 15 +++++
 ...mongo_db_exec_document__value_value__internal.h | 13 ++++
 .../files/patch-src_mongo_db_exec_near.cpp         | 46 ++++++++++++++
 .../files/patch-src_mongo_s_write__ops_write__op.h | 74 ++++++++++++++++++++++
 .../files/patch-src_mongo_util_net_ssl__types.h    | 10 +++
 ...rty_boost_boost_mpl_aux___integral__wrapper.hpp | 11 ++++
 7 files changed, 171 insertions(+)

diff --git a/databases/mongodb70/Makefile b/databases/mongodb70/Makefile
index 182724f20841..aead0f8dc076 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 <bsd.port.pre.mk>
 
 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 000000000000..194db618f3b2
--- /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<Value> 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 000000000000..6770dde9e770
--- /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<Value> v) : vec(std::move(v)) {}
++    RCVector();
++    RCVector(std::vector<Value> v);
+     std::vector<Value> 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 000000000000..0bbdb149268d
--- /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 000000000000..f5edb3f0748f
--- /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<ShardEndpoint> endpoint;
++
++    // filled when state == _Error or (optionally) when state == _Cancelled
++    boost::optional<write_ops::WriteError> 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<ShardId> _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<ShardEndpoint> endpoint;
+-
+-    // filled when state == _Error or (optionally) when state == _Cancelled
+-    boost::optional<write_ops::WriteError> 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 000000000000..b74a1c248ddc
--- /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 000000000000..f6e1178b4a65
--- /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)));



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202306240805.35O85HTb019655>