diff options
Diffstat (limited to 'databases/mongodb70')
-rw-r--r-- | databases/mongodb70/Makefile | 58 | ||||
-rw-r--r-- | databases/mongodb70/distinfo | 14 | ||||
-rw-r--r-- | databases/mongodb70/files/patch-SConstruct | 10 | ||||
-rw-r--r-- | databases/mongodb70/files/patch-src_mongo_platform_waitable__atomic.cpp | 64 | ||||
-rw-r--r-- | databases/mongodb70/files/patch-src_third__party_mozjs_gen-config.sh | 16 |
5 files changed, 120 insertions, 42 deletions
diff --git a/databases/mongodb70/Makefile b/databases/mongodb70/Makefile index 07e67c0c1bec..7855e0cd7de6 100644 --- a/databases/mongodb70/Makefile +++ b/databases/mongodb70/Makefile @@ -1,12 +1,14 @@ PORTNAME= mongodb DISTVERSIONPREFIX= r -DISTVERSION= 7.0.19 +DISTVERSION= 7.0.23 +PORTREVISION= 3 CATEGORIES= databases net -MASTER_SITES= https://hg.mozilla.org/mozilla-central/raw-rev/:patches PKGNAMESUFFIX= ${DISTVERSION:R:S/.//} -DISTFILES= 223087fdc29f18678f6174e9807b8780e439acf6:patches # https://bugzilla.mozilla.org/1894423 -EXTRACT_ONLY= ${GH_ACCOUNT}-${GH_PROJECT}-${DISTVERSIONPREFIX}${DISTVERSION}_GH0.tar.gz \ - ${GH_ACCOUNT}-forks-spidermonkey-${MOZJS_TAG}_GH0.tar.gz + +PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/ +# https://github.com/mongodb/mongo/pull/1619/ +# "Modernize dynamic module loading to work with Python3.12" +PATCHFILES+= 0877732109589e441cbf234dce17ec0e7b614902.patch:-p1 MAINTAINER= ronald@FreeBSD.org COMMENT= MongoDB Community Edition (7.0.x Branch) @@ -26,7 +28,8 @@ BUILD_DEPENDS= ${PY_SETUPTOOLS} \ ${PYTHON_PKGNAMEPREFIX}packaging>0:devel/py-packaging@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}psutil>0:sysutils/py-psutil@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pymongo>0:databases/py-pymongo@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pyyaml>=3.11:devel/py-pyyaml@${PY_FLAVOR} + ${PYTHON_PKGNAMEPREFIX}pyyaml>=3.11:devel/py-pyyaml@${PY_FLAVOR} \ + rust-cbindgen>0:devel/rust-cbindgen # build depends used while running ${WRKSRC}/src/third_party/mozjs/gen-config.sh BUILD_DEPENDS+= gm4:devel/m4 \ gsed:textproc/gsed @@ -38,14 +41,16 @@ LIB_DEPENDS= libcurl.so:ftp/curl \ libzstd.so:archivers/zstd FLAVORS= default armv80a + armv80a_PKGNAMESUFFIX= ${DISTVERSION:R:S/.//}-armv80a USES= compiler:c++20-lang cpe python:build scons shebangfix ssl # gmake is used while running ${WRKSRC}/src/third_party/mozjs/gen-config.sh USES+= gmake pkgconfig +CPE_PRODUCT= mongodb # mozjs tag comes from ${WRKSRC}/src/third_party/mozjs/get-sources.sh -MOZJS_TAG= 4c197344dfc48dfbbd242333878f17f0379e6205 +MOZJS_TAG= 5acd3be6c9563ad3e7ca6182285c69a38de47bab USE_GITHUB= yes GH_ACCOUNT= mongodb mongodb-forks:mozjs @@ -56,7 +61,12 @@ USE_RC_SUBR= mongod SHEBANG_FILES= buildscripts/scons.py python_OLD_CMD= @python_interpreter@ -CONFIGURE_ENV+= M4=${LOCALBASE}/bin/gm4 +HAS_CONFIGURE= yes +CONFIGURE_SCRIPT= gen-config.sh +CONFIGURE_ARGS+= ${MOZJS_ARCH} \ + freebsd +CONFIGURE_ENV+= PYTHON3="${PYTHON_CMD}" + MAKE_ARGS= --allocator=system \ --cxx-std=20 \ --disable-warnings-as-errors \ @@ -73,6 +83,7 @@ MAKE_ARGS= --allocator=system \ AR=llvm-ar \ MONGO_VERSION=${DISTVERSION} \ VERBOSE=on +ALL_TARGET= install-core CFLAGS+= -DBOOST_NO_CXX98_FUNCTION_BASE @@ -86,15 +97,18 @@ EXTRACT_AFTER_ARGS= --exclude src/third_party/snappy-* \ --exclude src/third_party/zstandard \ --no-same-owner --no-same-permissions +# This ports is only following the Major Release. +# https://docs.mongodb.com/manual/reference/versioning/ +PORTSCOUT= limit:^7\.0\. + +CONFIGURE_WRKSRC= ${MOZJS_WRKSRC} + USERS= mongodb GROUPS= mongodb OPTIONS_DEFINE= LTO NOAVX SASL OPTIONS_DEFINE_aarch64= ARMV80A OPTIONS_DEFAULT= NOAVX SASL -.if ${FLAVOR:U} == armv80a -OPTIONS_SET+= ARMV80A -.endif # MongoDB on non-LSE ARM cpu like Raspberry Pi can work but is unsupported upstream. # Can give corruption on high concurrency. @@ -113,20 +127,18 @@ NOAVX_EXTRA_PATCHES= ${FILESDIR}/extrapatch-src_third__party_mozjs_SConscript \ SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2 SASL_MAKE_ARGS= --use-sasl-client +MOZJS_WRKSRC= ${WRKSRC}/src/third_party/mozjs + +.if ${FLAVOR:U} == armv80a +OPTIONS_SET+= ARMV80A +.endif + .include <bsd.port.pre.mk> .if ${FLAVOR:U} == armv80a && ${ARCH} != aarch64 IGNORE= flavor armv80a is only valid on aarch64 .endif -ALL_TARGET= install-core - -# This ports is only following the Major Release. -# https://docs.mongodb.com/manual/reference/versioning/ -PORTSCOUT= limit:^7\.0\. - -CPE_PRODUCT= mongodb - .if ${ARCH} == amd64 MOZJS_ARCH= x86_64 .elif ${ARCH} == powerpc64le @@ -137,7 +149,7 @@ MOZJS_ARCH= ${ARCH} post-extract: # Verify we downloaded the proper mozjs git tag. - ${SH} -xc "test \"X`grep -E '^LIB_GIT_REVISION=' ${WRKSRC}/src/third_party/mozjs/get-sources.sh`\" = \"XLIB_GIT_REVISION=${MOZJS_TAG}\"" + ${SH} -xc "test \"X`grep -E '^LIB_GIT_REVISION=' ${MOZJS_WRKSRC}/get-sources.sh`\" = \"XLIB_GIT_REVISION=${MOZJS_TAG}\"" post-patch: # fix build with python-3.11 @@ -145,12 +157,10 @@ post-patch: ${REINPLACE_CMD} -e 's#rU#r#g' ${WRKDIR}/spidermonkey-${MOZJS_TAG}/python/mozbuild/mozbuild/preprocessor.py ${REINPLACE_CMD} -e 's#rU#r#g' ${WRKDIR}/spidermonkey-${MOZJS_TAG}/python/mozbuild/mozbuild/backend/base.py ${REINPLACE_CMD} -e 's#rU#r#g' ${WRKDIR}/spidermonkey-${MOZJS_TAG}/python/mozbuild/mozbuild/action/process_define_files.py - ${PATCH} -d ${WRKSRC}/src/third_party/mozjs/extract --quiet -p1 -V none < ${DISTDIR}/223087fdc29f18678f6174e9807b8780e439acf6 -do-configure: +pre-configure: # Replacement of ${WRKSRC}/src/third_party/mozjs/get-sources.sh - ${LN} -sF ${WRKDIR}/spidermonkey-${MOZJS_TAG} ${WRKSRC}/src/third_party/mozjs/mozilla-release - cd ${WRKSRC}/src/third_party/mozjs && PYTHON3="${PYTHON_CMD}" ${SH} ./gen-config.sh ${MOZJS_ARCH} freebsd + ${LN} -sF ${WRKDIR}/spidermonkey-${MOZJS_TAG} ${MOZJS_WRKSRC}/mozilla-release do-build: ${WRKSRC}/buildscripts/scons.py -C ${WRKSRC} ${MAKE_ARGS} diff --git a/databases/mongodb70/distinfo b/databases/mongodb70/distinfo index 708ec6ec0ead..1e85422dedb1 100644 --- a/databases/mongodb70/distinfo +++ b/databases/mongodb70/distinfo @@ -1,7 +1,7 @@ -TIMESTAMP = 1745704517 -SHA256 (223087fdc29f18678f6174e9807b8780e439acf6) = f234371584e2b2bc9953ae4fd145da19c99a6f04087f53d59616aecf29df039c -SIZE (223087fdc29f18678f6174e9807b8780e439acf6) = 1597 -SHA256 (mongodb-mongo-r7.0.19_GH0.tar.gz) = 552358bf46936f2ebe53b414d8e15b9932baf38a191ef2d50eef5dabba663396 -SIZE (mongodb-mongo-r7.0.19_GH0.tar.gz) = 87222348 -SHA256 (mongodb-forks-spidermonkey-4c197344dfc48dfbbd242333878f17f0379e6205_GH0.tar.gz) = 25ddc30c800d44231798793f788765e0ae8060b9f9f2f09d7f23955b2f63f034 -SIZE (mongodb-forks-spidermonkey-4c197344dfc48dfbbd242333878f17f0379e6205_GH0.tar.gz) = 164661704 +TIMESTAMP = 1756387935 +SHA256 (mongodb-mongo-r7.0.23_GH0.tar.gz) = 31a59b83ecdf65ba26453eb244682f18aa02204a0017e872dd28008b8d471bde +SIZE (mongodb-mongo-r7.0.23_GH0.tar.gz) = 87871275 +SHA256 (mongodb-forks-spidermonkey-5acd3be6c9563ad3e7ca6182285c69a38de47bab_GH0.tar.gz) = 1420533e23970171ff7a420e3ded1ea493e1976fb8896a5fd6f35e5b2d75733b +SIZE (mongodb-forks-spidermonkey-5acd3be6c9563ad3e7ca6182285c69a38de47bab_GH0.tar.gz) = 280439685 +SHA256 (0877732109589e441cbf234dce17ec0e7b614902.patch) = 96bcf70f8ee66424b5601632fb91dbcbb6b14df0553f59f36cd10325bfce7105 +SIZE (0877732109589e441cbf234dce17ec0e7b614902.patch) = 1770 diff --git a/databases/mongodb70/files/patch-SConstruct b/databases/mongodb70/files/patch-SConstruct index 4ccd299adcaf..ec60029c937c 100644 --- a/databases/mongodb70/files/patch-SConstruct +++ b/databases/mongodb70/files/patch-SConstruct @@ -1,4 +1,4 @@ ---- SConstruct.orig 2024-06-19 03:26:19 UTC +--- SConstruct.orig 2025-05-13 16:37:03 UTC +++ SConstruct @@ -23,7 +23,6 @@ import SCons.Script @@ -25,9 +25,7 @@ if get_option('build-metrics'): env['BUILD_METRICS_ARTIFACTS_DIR'] = '$BUILD_ROOT/$VARIANT_DIR' env.Tool('build_metrics') -@@ -1799,9 +1788,9 @@ if has_option('variables-help'): - print(env_vars.GenerateHelpText(env)) - Exit(0) +@@ -1801,7 +1790,7 @@ if unknown_vars: unknown_vars = env_vars.UnknownVariables() if unknown_vars: @@ -36,7 +34,7 @@ install_actions.setup(env, get_option('install-action')) -@@ -3024,7 +3013,7 @@ if env.TargetOSIs('posix'): +@@ -3013,7 +3002,7 @@ if env.TargetOSIs('posix'): # If runtime hardening is requested, then build anything # destined for an executable with the necessary flags for PIE. env.AppendUnique( @@ -45,7 +43,7 @@ PROGLINKFLAGS=['-pie'], ) -@@ -3032,7 +3021,6 @@ if env.TargetOSIs('posix'): +@@ -3021,7 +3010,6 @@ if env.TargetOSIs('posix'): env.Append( CCFLAGS=[ "-fasynchronous-unwind-tables", diff --git a/databases/mongodb70/files/patch-src_mongo_platform_waitable__atomic.cpp b/databases/mongodb70/files/patch-src_mongo_platform_waitable__atomic.cpp new file mode 100644 index 000000000000..73e0befd876d --- /dev/null +++ b/databases/mongodb70/files/patch-src_mongo_platform_waitable__atomic.cpp @@ -0,0 +1,64 @@ +# Original upstream implementation: +# https://jira.mongodb.org/browse/SERVER-81797 +# Attempt to upstream this patch: +# https://github.com/mongodb/mongo/pull/1607 +# https://jira.mongodb.org/browse/SERVER-99225 +# +--- src/mongo/platform/waitable_atomic.cpp.orig 2024-11-20 23:53:48 UTC ++++ src/mongo/platform/waitable_atomic.cpp +@@ -34,6 +34,9 @@ + #ifdef __linux__ + #include <linux/futex.h> + #include <sys/syscall.h> ++#elif defined(__FreeBSD__) ++#include <sys/types.h> ++#include <sys/umtx.h> + #elif defined(_WIN32) + #include <synchapi.h> + #endif +@@ -233,6 +236,45 @@ bool waitUntil(const void* uaddr, + // There isn't a good list of possible errors, so assuming that anything other than a timeout + // error is a possible spurious wakeup. + return timeoutOverflow || errno != ETIMEDOUT; ++} ++ ++#elif defined(__FreeBSD__) ++ ++void notifyOne(const void* uaddr) { ++ _umtx_op(const_cast<void*>(uaddr), UMTX_OP_WAKE_PRIVATE, 1, NULL, NULL); ++} ++ ++void notifyMany(const void* uaddr, int nToWake) { ++ _umtx_op(const_cast<void*>(uaddr), UMTX_OP_WAKE_PRIVATE, nToWake, NULL, NULL); ++} ++ ++void notifyAll(const void* uaddr) { ++ _umtx_op(const_cast<void*>(uaddr), UMTX_OP_WAKE_PRIVATE, INT_MAX, NULL, NULL); ++} ++ ++bool waitUntil(const void* uaddr, ++ uint32_t old, ++ boost::optional<system_clock::time_point> deadline) { ++ struct _umtx_time umtx_deadline; ++ void* uaddr2 = nullptr; ++ ++ if (deadline) { ++ umtx_deadline._timeout.tv_sec = durationCount<Seconds>(deadline->time_since_epoch()); ++ umtx_deadline._timeout.tv_nsec = durationCount<Nanoseconds>( ++ deadline->time_since_epoch() - stdx::chrono::seconds(umtx_deadline._timeout.tv_sec)); ++ umtx_deadline._flags = UMTX_ABSTIME; ++ umtx_deadline._clockid = CLOCK_REALTIME_FAST; ++ uaddr2 = &umtx_deadline; ++ } ++ ++ int umtxOpRet; ++ if ((umtxOpRet = _umtx_op(const_cast<void*>(uaddr), UMTX_OP_WAIT_UINT_PRIVATE, old, (void*)sizeof(struct _umtx_time), uaddr2)) == -1) { ++ if (errno == ETIMEDOUT) { ++ return false; ++ } ++ invariant(umtxOpRet == 0, errorMessage(lastSystemError())); ++ } ++ return true; + } + + #else diff --git a/databases/mongodb70/files/patch-src_third__party_mozjs_gen-config.sh b/databases/mongodb70/files/patch-src_third__party_mozjs_gen-config.sh index 58daab4bc056..4260904915e4 100644 --- a/databases/mongodb70/files/patch-src_third__party_mozjs_gen-config.sh +++ b/databases/mongodb70/files/patch-src_third__party_mozjs_gen-config.sh @@ -1,5 +1,11 @@ ---- src/third_party/mozjs/gen-config.sh.orig 2022-08-05 16:21:29 UTC +--- src/third_party/mozjs/gen-config.sh.orig 2025-05-13 16:37:03 UTC +++ src/third_party/mozjs/gen-config.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + + set -e + set -v @@ -29,6 +29,9 @@ case "$_Path" in } @@ -10,16 +16,16 @@ "platform/aarch64/linux") _CONFIG_OPTS="--host=aarch64-linux" ;; -@@ -108,7 +111,7 @@ CFLAGS="$CFLAGS -D__STDC_FORMAT_MACROS" \ - --disable-js-shell \ - --disable-tests "$_CONFIG_OPTS" +@@ -111,7 +114,7 @@ CFLAGS="$CFLAGS -D__STDC_FORMAT_MACROS" \ + --disable-wasm-moz-intgemm \ + "$_CONFIG_OPTS" -make recurse_export +gmake recurse_export cd ../../../.. -@@ -159,7 +162,7 @@ find "$_Path/build" -name '*.cpp' | +@@ -166,7 +169,7 @@ find "$_Path/build" -name '*.cpp' | find "$_Path/build" -name '*.cpp' | while read unified_file ; do echo "Processing $unified_file" |