git: cdca8109d6d0 - main - databases/mongodb50: Use more external libraries

From: Daniel Engberg <diizzy_at_FreeBSD.org>
Date: Mon, 15 Aug 2022 20:28:15 UTC
The branch main has been updated by diizzy:

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

commit cdca8109d6d09b7f7b8ddcba55f9e1eb09332161
Author:     Daniel Engberg <diizzy@FreeBSD.org>
AuthorDate: 2022-08-15 20:23:37 +0000
Commit:     Daniel Engberg <diizzy@FreeBSD.org>
CommitDate: 2022-08-15 20:27:40 +0000

    databases/mongodb50: Use more external libraries
    
    Make use of following libraries in tree:
    devel/boost-libs
    textproc/snowballstemmer
    devel/libunwind
    devel/yaml-cpp
    archivers/zstd
    
    While at it remove mtune option on amd64 as it potentially overrides
    CPUTYPE set by ports framework
    
    References:
    [1] https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-db/mongodb/files/mongodb-4.4.1-boost.patch
        https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-db/mongodb/files/mongodb-5.0.2-boost-1.79.patch
    
    PR:             265210
    Reviewed by:    Ronald Klop <ronald-lists@klop.ws> (maintainer)
---
 databases/mongodb50/Makefile                       | 24 +++++++-
 databases/mongodb50/files/patch-SConstruct         |  9 +++
 databases/mongodb50/files/patch-boost-179-compat   | 70 ++++++++++++++++++++++
 databases/mongodb50/files/patch-boost-179-link-fix | 21 +++++++
 4 files changed, 122 insertions(+), 2 deletions(-)

diff --git a/databases/mongodb50/Makefile b/databases/mongodb50/Makefile
index d7651e3e3103..853eb146a685 100644
--- a/databases/mongodb50/Makefile
+++ b/databases/mongodb50/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	mongodb
 DISTVERSIONPREFIX=	r
 DISTVERSION=	5.0.10
+PORTREVISION=	1
 CATEGORIES=	databases net
 MASTER_SITES=	https://fastdl.mongodb.org/src/ \
 		http://fastdl.mongodb.org/src/
@@ -23,9 +24,14 @@ BUILD_DEPENDS=	${LOCALBASE}/bin/ar:devel/binutils \
 		${PYTHON_PKGNAMEPREFIX}cheetah3>0:devel/py-cheetah3@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}psutil>0:sysutils/py-psutil@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}yaml>=3.11:devel/py-yaml@${PY_FLAVOR}
-LIB_DEPENDS=	libcurl.so:ftp/curl \
+LIB_DEPENDS=	libboost_log.so:devel/boost-libs \
+		libcurl.so:ftp/curl \
 		libpcre.so:devel/pcre \
-		libsnappy.so:archivers/snappy
+		libsnappy.so:archivers/snappy \
+		libstemmer.so:textproc/snowballstemmer \
+		libunwind.so:devel/libunwind \
+		libyaml-cpp.so:devel/yaml-cpp \
+		libzstd.so:archivers/zstd
 
 USES=		compiler:c++17-lang cpe python:3.5+,build scons shebangfix
 USE_RC_SUBR=	mongod
@@ -37,9 +43,14 @@ MAKE_ARGS=	--cxx-std=17 \
 		--disable-warnings-as-errors \
 		--libc++ \
 		--runtime-hardening=on \
+		--use-system-boost \
 		--use-system-pcre \
 		--use-system-snappy \
+		--use-system-stemmer \
+		--use-system-libunwind \
+		--use-system-yaml \
 		--use-system-zlib \
+		--use-system-zstd \
 		-j ${MAKE_JOBS_NUMBER} \
 		AR=${PREFIX}/bin/ar \
 		VERBOSE=on
@@ -79,6 +90,15 @@ CPE_PRODUCT=	mongodb
 pre-patch:
 	${MV} ${WRKSRC}/src/third_party/wiredtiger/src/checksum/power8/crc32.sx ${WRKSRC}/src/third_party/wiredtiger/src/checksum/power8/crc32.S
 
+post-patch:
+	${RM} -rf ${WRKSRC}/src/third_party/boost
+	${RM} -rf ${WRKSRC}/src/third_party/pcre-*
+	${RM} -rf ${WRKSRC}/src/third_party/snappy-*
+	${RM} -rf ${WRKSRC}/src/third_party/unwind
+	${RM} -rf ${WRKSRC}/src/third_party/yaml-cpp
+	${RM} -rf ${WRKSRC}/src/third_party/zlib-*
+	${RM} -rf ${WRKSRC}/src/third_party/zstandard-*
+
 do-build:
 	${WRKSRC}/buildscripts/scons.py	-C ${WRKSRC} ${MAKE_ARGS}
 
diff --git a/databases/mongodb50/files/patch-SConstruct b/databases/mongodb50/files/patch-SConstruct
index fa8b0bb3ca4f..01af9a42437c 100644
--- a/databases/mongodb50/files/patch-SConstruct
+++ b/databases/mongodb50/files/patch-SConstruct
@@ -43,3 +43,12 @@
          "i386"       : { "-march=" : "nocona",       "-mtune=" : "generic"                        },
          "ppc64le"    : { "-mcpu="  : "power8",       "-mtune=" : "power8", "-mcmodel=" : "medium" },
          "s390x"      : { "-march=" : "z196",         "-mtune=" : "zEC12"                          },
+@@ -2554,7 +2558,7 @@ if not env.TargetOSIs('windows', 'macOS') and (env.Too
+     if "sandybridge" in selected_experimental_optimizations:
+         default_targeting_flags_for_architecture["x86_64"] = {
+             "-march="                : "sandybridge",
+-            "-mtune="                : "generic",
++    #       "-mtune="                : "generic",
+             "-mprefer-vector-width=" : "128",
+         }
+ 
diff --git a/databases/mongodb50/files/patch-boost-179-compat b/databases/mongodb50/files/patch-boost-179-compat
new file mode 100644
index 000000000000..8135db48dd3c
--- /dev/null
+++ b/databases/mongodb50/files/patch-boost-179-compat
@@ -0,0 +1,70 @@
+--- src/mongo/db/auth/security_key_test.cpp
++++ src/mongo/db/auth/security_key_test.cpp
+@@ -30,6 +30,7 @@
+ #include "mongo/platform/basic.h"
+ 
+ #include <boost/filesystem.hpp>
++#include <boost/filesystem/fstream.hpp>
+ 
+ #include "mongo/base/string_data.h"
+ #include "mongo/db/auth/authorization_manager.h"
+--- src/mongo/db/storage/storage_repair_observer.cpp
++++ src/mongo/db/storage/storage_repair_observer.cpp
+@@ -41,6 +41,7 @@
+ #include <sys/types.h>
+ #endif
+ 
++#include <boost/filesystem/fstream.hpp>
+ #include <boost/filesystem/path.hpp>
+ 
+ #include "mongo/db/dbhelpers.h"
+--- src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine_test.cpp
++++ src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine_test.cpp
+@@ -34,6 +34,7 @@
+ #include "mongo/db/storage/kv/kv_engine_test_harness.h"
+ 
+ #include <boost/filesystem.hpp>
++#include <boost/filesystem/fstream.hpp>
+ #include <boost/filesystem/path.hpp>
+ #include <memory>
+ 
+--- src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
++++ src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp
+@@ -36,6 +36,7 @@
+ #include <limits>
+ 
+ #include <boost/filesystem.hpp>
++#include <boost/filesystem/fstream.hpp>
+ #include <boost/filesystem/path.hpp>
+ 
+ #include "mongo/base/simple_string_data_comparator.h"
+--- src/mongo/shell/shell_utils_extended.cpp
++++ src/mongo/shell/shell_utils_extended.cpp
+@@ -37,6 +37,7 @@
+ #endif
+ 
+ #include <boost/filesystem.hpp>
++#include <boost/filesystem/fstream.hpp>
+ #include <fmt/format.h>
+ #include <fstream>
+ 
+--- src/mongo/util/stacktrace_threads.cpp
++++ src/mongo/util/stacktrace_threads.cpp
+@@ -36,6 +36,7 @@
+ #include <array>
+ #include <atomic>
+ #include <boost/filesystem.hpp>
++#include <boost/filesystem/fstream.hpp>
+ #include <cstdint>
+ #include <cstdlib>
+ #include <dirent.h>
+--- src/mongo/util/processinfo_linux.cpp
++++ src/mongo/util/processinfo_linux.cpp
+@@ -36,6 +36,7 @@
+ #include <iostream>
+ #include <malloc.h>
+ #include <pcrecpp.h>
++#include <fstream>
+ #include <sched.h>
+ #include <stdio.h>
+ #include <sys/mman.h>
diff --git a/databases/mongodb50/files/patch-boost-179-link-fix b/databases/mongodb50/files/patch-boost-179-link-fix
new file mode 100644
index 000000000000..157ebaaf0221
--- /dev/null
+++ b/databases/mongodb50/files/patch-boost-179-link-fix
@@ -0,0 +1,21 @@
+--- SConstruct
++++ SConstruct
+@@ -3511,17 +3511,11 @@ def doConfigure(myenv):
+             "BOOST_LOG_NO_SHORTHAND_NAMES",
+             "BOOST_LOG_USE_NATIVE_SYSLOG",
+             "BOOST_LOG_WITHOUT_THREAD_ATTR",
++            "BOOST_LOG_DYN_LINK",
+             "ABSL_FORCE_ALIGNED_ACCESS",
+         ]
+     )
+ 
+-    if link_model.startswith("dynamic") and not link_model == 'dynamic-sdk':
+-        conf.env.AppendUnique(
+-            CPPDEFINES=[
+-                "BOOST_LOG_DYN_LINK",
+-            ]
+-    )
+-
+     if use_system_version_of_library("boost"):
+         if not conf.CheckCXXHeader( "boost/filesystem/operations.hpp" ):
+             myenv.ConfError("can't find boost headers")