git: 69a829258a9a - main - databases/mongodb90: new port 9.0.0-alpha1

From: Ronald Klop <ronald_at_FreeBSD.org>
Date: Mon, 12 Oct 2026 16:57:41 UTC
The branch main has been updated by ronald:

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

commit 69a829258a9a643a9fb5e72b569b356d08ab087a
Author:     Ronald Klop <ronald@FreeBSD.org>
AuthorDate: 2026-10-10 10:12:03 +0000
Commit:     Ronald Klop <ronald@FreeBSD.org>
CommitDate: 2026-10-12 16:56:46 +0000

    databases/mongodb90: new port 9.0.0-alpha1
    
    Ready enough to get added to the ports tree.
    Not the final 9.0.0 yet. That is not tagged on github yet.
    
    Compiles on amd64. Aarch64 is in the planning.
    
    This port is copied from mongodb80 and adjusted.
---
 databases/Makefile                                 |   1 +
 databases/mongodb90/Makefile                       | 227 +++++++++++++++++
 databases/mongodb90/Makefile.bazel-cache           | 121 +++++++++
 databases/mongodb90/distinfo                       |  11 +
 ...hird__party_mozjs_extract_mozglue_misc_SIMD.cpp |  11 +
 databases/mongodb90/files/make.test.sh             |  31 +++
 databases/mongodb90/files/mongod.in                |  53 ++++
 databases/mongodb90/files/patch-MODULE.bazel       |  59 +++++
 databases/mongodb90/files/patch-WORKSPACE.bazel    |  23 ++
 .../files/patch-bazel_cargo__bindeps.lock          |  65 +++++
 .../mongodb90/files/patch-bazel_config_BUILD.bazel | 105 ++++++++
 databases/mongodb90/files/patch-bazel_crates.lock  | 271 +++++++++++++++++++++
 .../files/patch-bazel_freebsd__repositories.bzl    |  18 ++
 .../patch-bazel_install__rules_install__rules.bzl  |  29 +++
 .../files/patch-bazel_mongo__src__rules.bzl        |  22 ++
 ...tch-bazel_platforms_local__config__platform.bzl |  25 ++
 .../files/patch-bazel_platforms_normalize.bzl      |   8 +
 .../patch-bazel_rules__poetry_rules__poetry.patch  | 170 +++++++++++++
 ...h-bazel_rules__rust_freebsd__host__triple.patch |  70 ++++++
 .../files/patch-bazel_separate__debug.bzl          |  44 ++++
 ...-bazel_toolchains_cc_mongo__compiler__flags.bzl |  20 ++
 ...asm_toolchain_cc__toolchain__config__wasip2.bzl |  30 +++
 ...lchains_cc_mongo__wasm_toolchain_wasi__repo.bzl |  42 ++++
 ...s_cc_mongo__wasm_toolchain_wasi__transition.bzl |  17 ++
 ...h-bazel_toolchains_python_python__toolchain.bzl | 222 +++++++++++++++++
 .../mongodb90/files/patch-src_mongo_BUILD.bazel    |  12 +
 ...h-src_mongo_BUILD.bazel_stack__locator__freebsd |  10 +
 ...rc_mongo_crypto_crypto__parameters__openssl.idl |  17 ++
 .../files/patch-src_mongo_db_ftdc_BUILD.bazel      |  10 +
 ...-src_mongo_platform_stack__locator__freebsd.cpp |  66 +++++
 .../patch-src_mongo_platform_waitable__atomic.cpp  |  64 +++++
 ...rc_mongo_transport_asio_asio__session__impl.cpp |  11 +
 ...patch-src_mongo_util_net_http__client__curl.cpp |  10 +
 ...c_third__party_IntelRDFPMathLib20U1_BUILD.bazel |  13 +
 ...y_asio_dist_asio_include_asio_detail_config.hpp |  12 +
 .../files/patch-src_third__party_boost_BUILD.bazel |  41 ++++
 .../patch-src_third__party_libbson_BUILD.bazel     |  32 +++
 ...party_libbson_dist_src_libbson_src_bson_error.c |  10 +
 ...atch-src_third__party_libmongocrypt_BUILD.bazel |  33 +++
 .../files/patch-src_third__party_mozjs_BUILD.bazel |  23 ++
 ...ch-src_third__party_mozjs_scripts_gen-config.sh |  45 ++++
 .../files/patch-src_third__party_s2_BUILD.bazel    |  13 +
 ...rd__party_snappy_platform_build__posix_config.h |  11 +
 .../patch-src_third__party_wiredtiger_BUILD.bazel  |  26 ++
 ...rd__party_wiredtiger_src_include_wt__internal.h |  33 +++
 ...ird__party_wiredtiger_src_os__linux_os__futex.c |  73 ++++++
 .../patch-src_third__party_zstandard_BUILD.bazel   |  14 ++
 databases/mongodb90/pkg-descr                      |   5 +
 databases/mongodb90/pkg-message                    |  16 ++
 databases/mongodb90/pkg-plist                      |  10 +
 50 files changed, 2305 insertions(+)

diff --git a/databases/Makefile b/databases/Makefile
index f83f58a66c75..791404eed182 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -194,6 +194,7 @@
     SUBDIR += mongodb-tools
     SUBDIR += mongodb70
     SUBDIR += mongodb80
+    SUBDIR += mongodb90
     SUBDIR += mongosh
     SUBDIR += mroonga
     SUBDIR += mtop
diff --git a/databases/mongodb90/Makefile b/databases/mongodb90/Makefile
new file mode 100644
index 000000000000..95a530a56e97
--- /dev/null
+++ b/databases/mongodb90/Makefile
@@ -0,0 +1,227 @@
+PORTNAME=	mongodb
+DISTVERSIONPREFIX=	r
+DISTVERSION=	9.0.0-alpha1
+CATEGORIES=	databases net
+MASTER_SITES+=	LOCAL/ronald:mongodb_bazel \
+		https://codeload.github.com/bazelbuild/bazel-central-registry/tar.gz/${BAZEL_REGISTRY_COMMIT}?dummy=/:bazel_registry \
+		https://codeload.github.com/mongodb-forks/rules_poetry/tar.gz/${RULES_POETRY_COMMIT}?dummy=/:rules_poetry
+PKGNAMESUFFIX=	${DISTVERSION:R:S/.//}
+BAZEL_CACHE_DISTFILE=	${PORTNAME}-${DISTVERSIONFULL}-bazel-repository-cache.tar.gz
+BAZEL_REGISTRY_DISTFILE=	bazelbuild-bazel-central-registry-${BAZEL_REGISTRY_COMMIT}_GH0.tar.gz
+RULES_POETRY_DISTFILE=	mongodb-forks-rules_poetry-${RULES_POETRY_COMMIT}_GH0.tar.gz
+DISTFILES+=	${BAZEL_CACHE_DISTFILE}:mongodb_bazel \
+		${BAZEL_REGISTRY_DISTFILE}:bazel_registry \
+		${RULES_POETRY_DISTFILE}:rules_poetry
+
+MAINTAINER=	ronald@FreeBSD.org
+COMMENT=	MongoDB Community Edition (9.0.x Branch)
+WWW=		https://www.mongodb.com/docs/v9.0/
+
+LICENSE=	APACHE20 SSPLv1 # mongodb is SSPLv1, C++ driver is APACHE20
+LICENSE_COMB=	multi
+LICENSE_NAME_SSPLv1=	Server Side Public License Version 1
+LICENSE_FILE_SSPLv1=	${WRKSRC}/LICENSE-Community.txt
+LICENSE_PERMS_SSPLv1=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+ONLY_FOR_ARCHS=	aarch64 amd64 powerpc64le
+ONLY_FOR_ARCHS_REASON=	only ported to amd64, aarch64, and powerpc64le on FreeBSD; upstream supports arm64, ppc64le, s390x, and x86-64
+
+BUILD_DEPENDS=	bazel:devel/bazel7 \
+		bash:shells/bash \
+		clang22:devel/llvm22@lite \
+		rg:textproc/ripgrep \
+		${PY_SETUPTOOLS} \
+		${PYTHON_PKGNAMEPREFIX}cheetah3>0:devel/py-cheetah3@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}distro>0:sysutils/py-distro@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}gitpython>0:devel/py-gitpython@${PY_FLAVOR} \
+		${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}requests>0:www/py-requests@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}retry2>0:devel/py-retry2@${PY_FLAVOR} \
+		rust-cbindgen>0:devel/rust-cbindgen \
+		yq:textproc/go-yq
+# build depends used while running ${WRKSRC}/src/third_party/mozjs/scripts/gen-config.sh
+BUILD_DEPENDS+=	gm4:devel/m4 \
+		gsed:textproc/gsed
+LIB_DEPENDS=	libcurl.so:ftp/curl
+
+FLAVORS=	default armv80a
+
+armv80a_PKGNAMESUFFIX=	${DISTVERSION:R:S/.//}-armv80a
+
+# gmake is used while running ${WRKSRC}/src/third_party/mozjs/scripts/gen-config.sh
+USES=		compiler:c++20-lang cpe gmake java:build pkgconfig python:build shebangfix ssl
+CPE_PRODUCT=	mongodb
+
+# mozjs tag comes from ${WRKSRC}/src/third_party/mozjs/scripts/import.sh
+MOZJS_TAG=	7aeaf7a44d420360bde75db8453636092c3e2f56
+BAZEL_REGISTRY_COMMIT=	5df17720d4367282afb8e5ca27a35199ab7620e4
+RULES_POETRY_COMMIT=	092d43107d13e711ac4ac92050d8b570bcc8ef43
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	mongodb mongodb-forks:mozjs
+GH_PROJECT=	mongo spidermonkey:mozjs
+GH_TAGNAME=	${MOZJS_TAG}:mozjs
+JAVA_VERSION=	21
+USE_RC_SUBR=	mongod
+
+SHEBANG_FILES=	src/third_party/mozjs/scripts/gen-config.sh
+
+HAS_CONFIGURE=		yes
+CONFIGURE_SCRIPT=	scripts/gen-config.sh
+CONFIGURE_ARGS=		${MOZJS_ARCH} \
+			freebsd
+CONFIGURE_ENV+=		PYTHON3="${PYTHON_CMD}"
+
+BAZEL=			${LOCALBASE}/bin/bazel
+BAZEL_OUTPUT_USER_ROOT=	${WRKDIR}/bazel
+BAZEL_REPOSITORY_CACHE=${WRKDIR}/bazel-repository-cache
+BAZEL_STARTUP_ARGS=	--output_user_root=${BAZEL_OUTPUT_USER_ROOT}
+BAZEL_ENV=		BAZEL_SH=${LOCALBASE}/bin/bash \
+			CARGO_NET_OFFLINE=true \
+			CC="${CC}" \
+			CXX="${CXX}" \
+			HOME=${WRKDIR} \
+			JAVA_HOME=${JAVA_HOME} \
+			MONGO_USE_SYSTEM_PYTHON=1 \
+			PYTHON_CMD=${PYTHON_CMD} \
+			TMPDIR=${WRKDIR}
+BAZEL_ARGS=		--repository_cache=${BAZEL_REPOSITORY_CACHE} \
+			--distdir=${DISTDIR} \
+			--registry=file://${BAZEL_REGISTRY_WRKSRC} \
+			--repository_disable_download \
+			--lockfile_mode=off \
+			--//bazel/config:running_through_bazelisk=True \
+			--config=local \
+			--config=opt \
+			--verbose_failures \
+			--jobs=${MAKE_JOBS_NUMBER} \
+			--action_env=AR=llvm-ar \
+			--action_env=CC=${CC} \
+			--action_env=CXX=${CXX} \
+			--repo_env=CC=${CC} \
+			--repo_env=CXX=${CXX} \
+			--repo_env=JAVA_HOME=${JAVA_HOME} \
+			--repo_env=LOCALBASE=${LOCALBASE} \
+			--repo_env=MONGO_USE_SYSTEM_PYTHON=1 \
+			--repo_env=PYTHON_CMD=${PYTHON_CMD} \
+			--build_enterprise=False \
+			--enterprise_feature_all=False \
+			--allocator=system \
+			--libunwind=off \
+			--ssl=True \
+			--disable_warnings_as_errors=True \
+			--create_dwp=False \
+			--copt=-isystem${LOCALBASE}/include \
+			--define=GIT_COMMIT_HASH=freebsd-${PORTVERSION} \
+			--define=MONGO_DISTMOD=freebsd \
+			--define=MONGO_VERSION=${DISTVERSION} \
+			--cxxopt=-isystem${LOCALBASE}/include \
+			--cxxopt=-Iexternal/abseil-cpp~ \
+			--cxxopt=-DBOOST_NO_CXX98_FUNCTION_BASE \
+			--cxxopt=-Wno-unused-function \
+			--cxxopt=-Wno-invalid-offsetof \
+			--cxxopt=-Wno-defaulted-function-deleted \
+			--cxxopt=-Wno-unknown-warning-option \
+			--cxxopt=-Wno-macro-redefined \
+			--cxxopt=-Wno-register \
+			--linkopt=-L${LOCALBASE}/lib \
+			--linkopt=-lm \
+			--linkopt=-lcrypto \
+			--linkopt=-pthread \
+			--linkopt=-lexecinfo \
+			--linkopt=-lkvm \
+			--noexperimental_collect_system_network_usage
+ALL_TARGET=		install-core
+
+CONFLICTS_INSTALL=	mongodb[0-9][0-9]
+
+BINARY_ALIAS=	python3=${PYTHON_CMD}
+EXTRACT_AFTER_ARGS=	--no-same-owner --no-same-permissions
+
+# This ports is only following the Major Release.
+# https://docs.mongodb.com/manual/reference/versioning/
+PORTSCOUT=	limit:^9\.0\.
+
+CONFIGURE_WRKSRC=	${MOZJS_WRKSRC}
+
+USERS=		mongodb
+GROUPS=		mongodb
+
+OPTIONS_DEFINE=		LTO NOAVX
+OPTIONS_DEFINE_aarch64=	ARMV80A
+OPTIONS_DEFAULT=	NOAVX
+
+# MongoDB on non-LSE ARM cpu like Raspberry Pi can work but is unsupported upstream.
+# Can give corruption on high concurrency.
+# Please read https://jira.mongodb.org/browse/SERVER-71772.
+ARMV80A_DESC=	Enable non-LSE ARM64 CPUs like RPI4.
+NOAVX_DESC=	"Disable AVX instructions on amd64 (Sandybridge+)"
+
+ARMV80A_VARS=	BAZEL_ARGS+="--copt=-march=armv8-a --cxxopt=-march=armv8-a"
+
+LTO_VARS=	BAZEL_ARGS+=--thin_lto=True
+
+NOAVX_EXTRA_PATCHES=	${FILESDIR}/extrapatch-src_third__party_mozjs_extract_mozglue_misc_SIMD.cpp
+
+MOZJS_WRKSRC=	${WRKSRC}/src/third_party/mozjs
+BAZEL_REGISTRY_WRKSRC=	${WRKDIR}/bazel-central-registry-${BAZEL_REGISTRY_COMMIT}
+RULES_POETRY_WRKSRC=	${WRKDIR}/rules_poetry-${RULES_POETRY_COMMIT}
+BAZEL_INSTALL_WRKSRC=	${WRKSRC}/bazel-bin/${ALL_TARGET}
+
+.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
+
+.if ${ARCH} == amd64
+MOZJS_ARCH=	x86_64
+.elif ${ARCH} == powerpc64le
+MOZJS_ARCH=	ppc64le
+.elif ${ARCH} == aarch64
+MOZJS_ARCH=	${ARCH}
+.endif
+
+post-extract:
+# Verify we downloaded the proper mozjs git tag.
+	${SH} -xc "test \"X`grep -E '^LIB_GIT_REVISION=' ${MOZJS_WRKSRC}/scripts/import.sh`\" = \"XLIB_GIT_REVISION=${MOZJS_TAG}\""
+
+pre-configure:
+# Replacement of ${WRKSRC}/src/third_party/mozjs/scripts/import.sh
+	${LN} -sF ${WRKDIR}/spidermonkey-${MOZJS_TAG} ${MOZJS_WRKSRC}/mozilla-release
+	${PYTHON_CMD} ${WRKSRC}/bazel/resmoke/derive_suite_selectors.py
+	cd ${WRKSRC} && ${PYTHON_CMD} -c 'from pathlib import Path; from bazel.auto_header.gen_all_headers import spawn_all_headers_thread; th, state = spawn_all_headers_thread(Path(".")); th.join(); assert state["ok"], state["err"]; print("Generated all_headers (%s)" % ("wrote" if state["wrote"] else "unchanged"))'
+	cd ${WRKSRC} && ${SETENV} RG_PATH=${LOCALBASE}/bin/rg ${PYTHON_CMD} -c 'from pathlib import Path; from bazel.auto_header.auto_header import gen_auto_headers; state = gen_auto_headers(Path(".")); assert state["ok"], state["err"]; print("Generated auto_headers (%s wrote, %s skipped)" % (state["wrote"], state["skipped"]))'
+
+post-patch:
+	${PATCH} -d ${RULES_POETRY_WRKSRC} -p0 < ${WRKSRC}/bazel/rules_poetry/rules_poetry.patch
+
+do-build:
+	${MKDIR} ${BAZEL_REPOSITORY_CACHE}
+	cd ${WRKSRC} && ${SETENV} ${BAZEL_ENV} ${BAZEL} ${BAZEL_STARTUP_ARGS} build ${BAZEL_ARGS} ${ALL_TARGET}
+
+do-install:
+	${INSTALL_PROGRAM} ${BAZEL_INSTALL_WRKSRC}/bin/mongod ${STAGEDIR}${PREFIX}/bin/
+	${INSTALL_PROGRAM} ${BAZEL_INSTALL_WRKSRC}/bin/mongos ${STAGEDIR}${PREFIX}/bin/
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/mongod
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/mongos
+	${INSTALL_DATA} ${WRKSRC}/rpm/mongod.conf ${STAGEDIR}${PREFIX}/etc/mongodb.conf.sample
+	${MKDIR} ${STAGEDIR}${DOCSDIR}
+.for doc in LICENSE-Community.txt distsrc/MPL-2 distsrc/README distsrc/THIRD-PARTY-NOTICES
+	${INSTALL_DATA} ${WRKSRC}/${doc} ${STAGEDIR}${DOCSDIR}/
+.endfor
+	${INSTALL_MAN} ${WRKSRC}/debian/mongod.1 ${STAGEDIR}${PREFIX}/share/man/man1/
+	${INSTALL_MAN} ${WRKSRC}/debian/mongos.1 ${STAGEDIR}${PREFIX}/share/man/man1/
+	${INSTALL_MAN} ${WRKSRC}/debian/mongodb-parameters.5 ${STAGEDIR}${PREFIX}/share/man/man5/
+
+do-test:
+	${SH} ${FILESDIR}/make.test.sh "${STAGEDIR}${PREFIX}/bin"
+
+.include <bsd.port.post.mk>
diff --git a/databases/mongodb90/Makefile.bazel-cache b/databases/mongodb90/Makefile.bazel-cache
new file mode 100644
index 000000000000..1fd239863c22
--- /dev/null
+++ b/databases/mongodb90/Makefile.bazel-cache
@@ -0,0 +1,121 @@
+# Helper for generating the offline Bazel repository cache distfile.
+#
+# Usage:
+#   make -f Makefile.bazel-cache
+#
+# WRKDIRPREFIX and DISTDIR are intentionally not set here.  The sub-make that
+# reads the real port Makefile will pick them up from /etc/make.conf or from the
+# command line, the same as any other port build.
+#
+# This intentionally excludes ${BAZEL_CACHE_DISTFILE} while preparing the source
+# tree, otherwise generating a new cache would require the cache to already
+# exist.
+
+PORTDIR?=	${.CURDIR}
+BATCH?=		yes
+
+PORT_MAKE=	${MAKE} -C ${PORTDIR} \
+		BATCH=${BATCH}
+
+BAZEL!=			${PORT_MAKE} -V BAZEL
+BAZEL_ARGS!=		${PORT_MAKE} -V BAZEL_ARGS
+BAZEL_CACHE_DISTFILE!=	${PORT_MAKE} -V BAZEL_CACHE_DISTFILE
+BAZEL_ENV!=		${PORT_MAKE} -V BAZEL_ENV
+BAZEL_REPOSITORY_CACHE!=	${PORT_MAKE} -V BAZEL_REPOSITORY_CACHE
+BAZEL_STARTUP_ARGS!=	${PORT_MAKE} -V BAZEL_STARTUP_ARGS
+ALL_TARGET!=		${PORT_MAKE} -V ALL_TARGET
+DISTFILES!=		${PORT_MAKE} -V DISTFILES
+CACHE_DISTDIR!=		${PORT_MAKE} -V DISTDIR
+ECHO_MSG!=		${PORT_MAKE} -V ECHO_MSG
+FIND!=			${PORT_MAKE} -V FIND
+GZIP_CMD!=		${PORT_MAKE} -V GZIP_CMD
+LOCALBASE!=		${PORT_MAKE} -V LOCALBASE
+LS!=			${PORT_MAKE} -V LS
+MKDIR!=			${PORT_MAKE} -V MKDIR
+MV!=			${PORT_MAKE} -V MV
+RM!=			${PORT_MAKE} -V RM
+SETENV!=		${PORT_MAKE} -V SETENV
+SHA256!=		${PORT_MAKE} -V SHA256
+SORT!=			${PORT_MAKE} -V SORT
+TAR!=			${PORT_MAKE} -V TAR
+WRKDIR!=		${PORT_MAKE} -V WRKDIR
+WRKSRC!=		${PORT_MAKE} -V WRKSRC
+
+.if !defined(BAZEL_CACHE_EPOCH)
+BAZEL_CACHE_EPOCH!=	if [ -n "$${SOURCE_DATE_EPOCH}" ]; then \
+				echo "$${SOURCE_DATE_EPOCH}"; \
+			elif command -v git >/dev/null 2>&1 && git -C ${PORTDIR} rev-parse --show-toplevel >/dev/null 2>&1; then \
+				epoch=`git -C ${PORTDIR} log -1 --format=%ct -- .`; \
+				if [ -n "$${epoch}" ]; then echo "$${epoch}"; else date -u +%s; fi; \
+			else \
+				date -u +%s; \
+			fi
+.endif
+
+JAVA_HOME?=		${LOCALBASE}/openjdk21
+BAZEL_CACHE_ENV=	JAVA_HOME=${JAVA_HOME} ${BAZEL_ENV}
+BAZEL_CACHE_ARGS=	${BAZEL_ARGS:N--repository_disable_download}
+BAZEL_CACHE_ARGS+=	--repo_env=JAVA_HOME=${JAVA_HOME}
+BAZEL_CACHE_DISTFILE_PATH=	${CACHE_DISTDIR}/${BAZEL_CACHE_DISTFILE}
+BAZEL_CACHE_MANIFEST=	${WRKDIR}/bazel-cache-manifest
+BAZEL_CACHE_OUTPUT_USER_ROOT=	${WRKDIR}/bazel-cache-output
+BAZEL_CACHE_STARTUP_ARGS=	--output_user_root=${BAZEL_CACHE_OUTPUT_USER_ROOT}
+BAZEL_CACHE_CHECK_ROOT=	${WRKDIR}/bazel-cache-check
+BAZEL_CACHE_CHECK_HOME=	${BAZEL_CACHE_CHECK_ROOT}/home
+BAZEL_CACHE_CHECK_REPOSITORY_CACHE=	${BAZEL_CACHE_CHECK_ROOT}/bazel-repository-cache
+BAZEL_CACHE_CHECK_OUTPUT_USER_ROOT=	${BAZEL_CACHE_CHECK_ROOT}/bazel-output
+BAZEL_CACHE_CHECK_STARTUP_ARGS=	--output_user_root=${BAZEL_CACHE_CHECK_OUTPUT_USER_ROOT}
+BAZEL_CACHE_CHECK_ARGS=	${BAZEL_ARGS:N--repository_cache=*}
+BAZEL_CACHE_CHECK_ARGS+=	--repository_cache=${BAZEL_CACHE_CHECK_REPOSITORY_CACHE}
+BAZEL_CACHE_CHECK_ARGS+=	--repo_env=JAVA_HOME=${JAVA_HOME}
+BAZEL_CACHE_CHECK_ENV=	JAVA_HOME=${JAVA_HOME} ${BAZEL_ENV:NHOME=*} \
+			HOME=${BAZEL_CACHE_CHECK_HOME}
+SOURCE_DISTFILES=	${DISTFILES:N*${BAZEL_CACHE_DISTFILE}*}
+
+.PHONY: all bazel-cache-distfile package-bazel-cache-distfile check-bazel-cache-distfile clean-bazel-cache print-bazel-cache-vars
+
+all: bazel-cache-distfile
+
+bazel-cache-distfile:
+	${PORT_MAKE} DISTFILES="${SOURCE_DISTFILES}" configure
+	${RM} -r ${BAZEL_REPOSITORY_CACHE}
+	${RM} -r ${BAZEL_CACHE_OUTPUT_USER_ROOT}
+	${MKDIR} ${BAZEL_REPOSITORY_CACHE}
+	cd ${WRKSRC} && ${SETENV} ${BAZEL_CACHE_ENV} ${BAZEL} ${BAZEL_CACHE_STARTUP_ARGS} build --nobuild ${BAZEL_CACHE_ARGS} ${ALL_TARGET}
+	${MAKE} -f ${.CURDIR}/Makefile.bazel-cache package-bazel-cache-distfile
+
+package-bazel-cache-distfile:
+	${MKDIR} ${CACHE_DISTDIR}
+	${RM} ${BAZEL_CACHE_DISTFILE_PATH}
+	cd ${WRKDIR} && ${FIND} ${BAZEL_REPOSITORY_CACHE:T} .cargo/registry -print | LC_ALL=C ${SORT} > ${BAZEL_CACHE_MANIFEST}
+	cd ${WRKDIR} && ${TAR} --no-recursion --format=pax --uid 0 --gid 0 --uname root --gname wheel --mtime @${BAZEL_CACHE_EPOCH} -cf - -T ${BAZEL_CACHE_MANIFEST} | ${GZIP_CMD} -c > ${BAZEL_CACHE_DISTFILE_PATH}
+	${SHA256} ${BAZEL_CACHE_DISTFILE_PATH}
+	${LS} -lh ${BAZEL_CACHE_DISTFILE_PATH}
+
+check-bazel-cache-distfile:
+	${RM} -r ${BAZEL_CACHE_CHECK_ROOT}
+	${MKDIR} ${BAZEL_CACHE_CHECK_ROOT}
+	cd ${BAZEL_CACHE_CHECK_ROOT} && ${TAR} -xzf ${BAZEL_CACHE_DISTFILE_PATH}
+	${MKDIR} ${BAZEL_CACHE_CHECK_HOME}
+	${MV} ${BAZEL_CACHE_CHECK_ROOT}/.cargo ${BAZEL_CACHE_CHECK_HOME}/.cargo
+	cd ${WRKSRC} && ${SETENV} ${BAZEL_CACHE_CHECK_ENV} ${BAZEL} ${BAZEL_CACHE_CHECK_STARTUP_ARGS} build --nobuild ${BAZEL_CACHE_CHECK_ARGS} ${ALL_TARGET}
+
+clean-bazel-cache:
+	${RM} -r ${BAZEL_REPOSITORY_CACHE}
+	${RM} ${BAZEL_CACHE_DISTFILE_PATH}
+	${RM} ${BAZEL_CACHE_MANIFEST}
+	${RM} -r ${BAZEL_CACHE_OUTPUT_USER_ROOT}
+	${RM} -r ${BAZEL_CACHE_CHECK_ROOT}
+
+print-bazel-cache-vars:
+	@${ECHO_MSG} "DISTDIR=${CACHE_DISTDIR}"
+	@${ECHO_MSG} "WRKDIR=${WRKDIR}"
+	@${ECHO_MSG} "WRKSRC=${WRKSRC}"
+	@${ECHO_MSG} "BAZEL_CACHE_EPOCH=${BAZEL_CACHE_EPOCH}"
+	@${ECHO_MSG} "JAVA_HOME=${JAVA_HOME}"
+	@${ECHO_MSG} "BAZEL_REPOSITORY_CACHE=${BAZEL_REPOSITORY_CACHE}"
+	@${ECHO_MSG} "BAZEL_CACHE_OUTPUT_USER_ROOT=${BAZEL_CACHE_OUTPUT_USER_ROOT}"
+	@${ECHO_MSG} "BAZEL_CACHE_CHECK_HOME=${BAZEL_CACHE_CHECK_HOME}"
+	@${ECHO_MSG} "BAZEL_CACHE_CHECK_REPOSITORY_CACHE=${BAZEL_CACHE_CHECK_REPOSITORY_CACHE}"
+	@${ECHO_MSG} "BAZEL_CACHE_DISTFILE=${BAZEL_CACHE_DISTFILE}"
+	@${ECHO_MSG} "SOURCE_DISTFILES=${SOURCE_DISTFILES}"
diff --git a/databases/mongodb90/distinfo b/databases/mongodb90/distinfo
new file mode 100644
index 000000000000..bab8b102a282
--- /dev/null
+++ b/databases/mongodb90/distinfo
@@ -0,0 +1,11 @@
+TIMESTAMP = 1791137828
+SHA256 (bazelbuild-bazel-central-registry-5df17720d4367282afb8e5ca27a35199ab7620e4_GH0.tar.gz) = 8e50f26b47e345a32aaff54d8477b4d9a277cab1cb7d4db6b7aa361191d55be4
+SIZE (bazelbuild-bazel-central-registry-5df17720d4367282afb8e5ca27a35199ab7620e4_GH0.tar.gz) = 14273558
+SHA256 (mongodb-forks-rules_poetry-092d43107d13e711ac4ac92050d8b570bcc8ef43_GH0.tar.gz) = 533a0178767be4d79a67ae43890970485217f031adf090ef28c5c18e8fd337d8
+SIZE (mongodb-forks-rules_poetry-092d43107d13e711ac4ac92050d8b570bcc8ef43_GH0.tar.gz) = 2704422
+SHA256 (mongodb-mongo-r9.0.0-alpha1_GH0.tar.gz) = 7aadc37373fc88954ae1f358ae2ac05a14a430d2fb1cec1f5823a6618631359a
+SIZE (mongodb-mongo-r9.0.0-alpha1_GH0.tar.gz) = 116678568
+SHA256 (mongodb-r9.0.0-alpha1-bazel-repository-cache.tar.gz) = 8787f0e86a008a5d0b6706c5ab756b48b5b31d18556e8b18367ec1dd5a2b6db0
+SIZE (mongodb-r9.0.0-alpha1-bazel-repository-cache.tar.gz) = 693953607
+SHA256 (mongodb-forks-spidermonkey-7aeaf7a44d420360bde75db8453636092c3e2f56_GH0.tar.gz) = 8ec7aa1399b6fb15b859c448ae6f361ab28cf48bd8fc4f0de2fb3776582e202f
+SIZE (mongodb-forks-spidermonkey-7aeaf7a44d420360bde75db8453636092c3e2f56_GH0.tar.gz) = 392664341
diff --git a/databases/mongodb90/files/extrapatch-src_third__party_mozjs_extract_mozglue_misc_SIMD.cpp b/databases/mongodb90/files/extrapatch-src_third__party_mozjs_extract_mozglue_misc_SIMD.cpp
new file mode 100644
index 000000000000..f68cc2552390
--- /dev/null
+++ b/databases/mongodb90/files/extrapatch-src_third__party_mozjs_extract_mozglue_misc_SIMD.cpp
@@ -0,0 +1,11 @@
+--- src/third_party/mozjs/extract/mozglue/misc/SIMD.cpp.orig	2024-11-07 09:56:02 UTC
++++ src/third_party/mozjs/extract/mozglue/misc/SIMD.cpp
+@@ -448,7 +448,7 @@ const char* SIMD::memchr8SSE2(const char* ptr, char va
+ // assertion failure. Accordingly, we just don't allow that to happen. We
+ // are not particularly concerned about ensuring that newer 32 bit processors
+ // get access to the AVX2 functions exposed here.
+-#  if defined(MOZILLA_MAY_SUPPORT_AVX2) && defined(__x86_64__)
++#  if 0 && defined(MOZILLA_MAY_SUPPORT_AVX2) && defined(__x86_64__)
+ 
+ bool SupportsAVX2() { return supports_avx2(); }
+ 
diff --git a/databases/mongodb90/files/make.test.sh b/databases/mongodb90/files/make.test.sh
new file mode 100755
index 000000000000..c42bb1973e6b
--- /dev/null
+++ b/databases/mongodb90/files/make.test.sh
@@ -0,0 +1,31 @@
+#! /bin/sh
+
+set -e
+
+usage() {
+	echo "Usage: $0 <path>"
+	echo "<path>    path to the executables"
+}
+
+test "$#" -eq 1 || ( usage && exit 1 )
+
+set -x
+
+PATH="$1:$PATH"
+
+DBDIR=$( mktemp -d -t tmp.mongodb )
+
+trap 'rm -rf "$DBDIR"' EXIT
+
+# Trivial check if the binaries execute at all.
+mongod --version
+mongos --version
+
+# Check if an empty database can be created.
+mkdir "$DBDIR/db"
+tail -F "$DBDIR/log" | ( grep -qFe "Waiting for connections" && kill $(cat "$DBDIR/pid") ) &
+script -eF "$DBDIR/log" \
+	timeout -s TERM -k 30s 60s \
+	mongod --dbpath "$DBDIR/db" --pidfilepath "$DBDIR/pid"
+
+echo "Test successful"
diff --git a/databases/mongodb90/files/mongod.in b/databases/mongodb90/files/mongod.in
new file mode 100644
index 000000000000..53d966b4b16a
--- /dev/null
+++ b/databases/mongodb90/files/mongod.in
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# PROVIDE: mongod
+# REQUIRE: NETWORKING ldconfig
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# mongod_enable (bool):  Set to "NO" by default.
+#                        Set it to "YES" to enable mongod.
+# mongod_dbpath (str):   Default to "/var/db/mongodb"
+#                        Base database directory.
+# mongod_flags (str):    Custom additional arguments to be passed to mongod.
+#                        Default to "--logpath ${mongod_dbpath}/mongod.log --logappend".
+# mongod_config (str):	 Default to "%%PREFIX%%/etc/mongodb.conf"
+#                        Path to config file
+#
+
+. /etc/rc.subr
+
+name="mongod"
+rcvar=mongod_enable
+
+load_rc_config $name
+
+: ${mongod_enable="NO"}
+: ${mongod_dbpath="/var/db/mongodb"}
+: ${mongod_flags="--logpath ${mongod_dbpath}/mongod.log --logappend --setParameter=disabledSecureAllocatorDomains=\*"}
+: ${mongod_user="mongodb"}
+: ${mongod_group="mongodb"}
+: ${mongod_config="%%PREFIX%%/etc/mongodb.conf"}
+
+pidfile="${mongod_dbpath}/mongod.lock"
+command=%%PREFIX%%/bin/${name}
+command_args="--config $mongod_config --dbpath $mongod_dbpath --fork >/dev/null 2>/dev/null"
+start_precmd="${name}_prestart"
+
+mongod_create_dbpath()
+{
+        mkdir ${mongod_dbpath} >/dev/null 2>/dev/null
+        [ $? -eq 0 ] && chown -R ${mongod_user}:${mongod_group} ${mongod_dbpath}
+}
+
+mongod_prestart()
+{
+        if [ ! -d ${mongod_dbpath} ]; then
+                mongod_create_dbpath || return 1
+        fi
+        return 0
+}
+
+run_rc_command "$1"
diff --git a/databases/mongodb90/files/patch-MODULE.bazel b/databases/mongodb90/files/patch-MODULE.bazel
new file mode 100644
index 000000000000..3af76c02698c
--- /dev/null
+++ b/databases/mongodb90/files/patch-MODULE.bazel
@@ -0,0 +1,59 @@
+--- MODULE.bazel.orig
++++ MODULE.bazel
+@@ -78,11 +78,9 @@ single_version_override(
+ )
+ 
+ bazel_dep(name = "rules_poetry", version = "")
+-git_override(
++local_path_override(
+     module_name = "rules_poetry",
+-    commit = "092d43107d13e711ac4ac92050d8b570bcc8ef43",
+-    patches = ["//bazel/rules_poetry:rules_poetry.patch"],
+-    remote = "https://github.com/mongodb-forks/rules_poetry",
++    path = "../rules_poetry-092d43107d13e711ac4ac92050d8b570bcc8ef43",
+ )
+ 
+ #
+@@ -164,5 +164,8 @@ use_repo(
+     setup_mongo_python_toolchains,
+     "py_host",
++    "py_freebsd_arm64",
++    "py_freebsd_ppc64le",
++    "py_freebsd_x86_64",
+     "py_linux_arm64",
+     "py_linux_ppc64le",
+     "py_linux_s390x",
+@@ -176,6 +179,9 @@ use_repo(
+ )
+ 
+ register_toolchains(
++    "@py_freebsd_arm64//:python_toolchain",
++    "@py_freebsd_ppc64le//:python_toolchain",
++    "@py_freebsd_x86_64//:python_toolchain",
+     "@py_linux_arm64//:python_toolchain",
+     "@py_linux_ppc64le//:python_toolchain",
+     "@py_linux_s390x//:python_toolchain",
+@@ -348,6 +354,7 @@ single_version_override(
+         "//bazel/rules_rust:ppc64le_crates.patch",
+         "//bazel/rules_rust:ppc64le_cargo_bazel_url.patch",
+         "//bazel/rules_rust:cargo_build_script_pwd_flags.patch",
++        "//bazel/rules_rust:freebsd_host_triple.patch",
+     ],
+     version = "0.69.0",
+ )
+@@ -506,6 +513,7 @@ crate.from_specs(
+         "aarch64-unknown-linux-gnu",
+         "x86_64-apple-darwin",
+         "x86_64-unknown-linux-gnu",
++        "x86_64-unknown-freebsd",
+         "x86_64-pc-windows-msvc",
+         "powerpc64le-unknown-linux-gnu",
+         "s390x-unknown-linux-gnu",
+@@ -532,6 +540,7 @@ cargo_bindeps.from_specs(
+         "aarch64-unknown-linux-gnu",
+         "x86_64-apple-darwin",
+         "x86_64-unknown-linux-gnu",
++        "x86_64-unknown-freebsd",
+         "x86_64-pc-windows-msvc",
+         "powerpc64le-unknown-linux-gnu",
+         "s390x-unknown-linux-gnu",
diff --git a/databases/mongodb90/files/patch-WORKSPACE.bazel b/databases/mongodb90/files/patch-WORKSPACE.bazel
new file mode 100644
index 000000000000..804f36c0a38a
--- /dev/null
+++ b/databases/mongodb90/files/patch-WORKSPACE.bazel
@@ -0,0 +1,23 @@
+--- WORKSPACE.bazel.orig
++++ WORKSPACE.bazel
+@@ -127,6 +127,20 @@ load("@aspect_rules_js//js:toolchains.bzl", "DEFAULT_N
+ 
+ rules_js_register_toolchains(node_version = DEFAULT_NODE_VERSION)
+ 
++load("//bazel:freebsd_repositories.bzl", "freebsd_system_yq_repo")
++
++freebsd_system_yq_repo(
++    name = "yq_freebsd_amd64",
++)
++
++freebsd_system_yq_repo(
++    name = "yq_freebsd_arm64",
++)
++
++freebsd_system_yq_repo(
++    name = "yq_freebsd_ppc64le",
++)
++
+ load("@aspect_rules_js//npm:repositories.bzl", "npm_translate_lock")
+ 
+ npm_translate_lock(
diff --git a/databases/mongodb90/files/patch-bazel_cargo__bindeps.lock b/databases/mongodb90/files/patch-bazel_cargo__bindeps.lock
new file mode 100644
index 000000000000..ad91ab7d697f
--- /dev/null
+++ b/databases/mongodb90/files/patch-bazel_cargo__bindeps.lock
@@ -0,0 +1,65 @@
+--- bazel/cargo_bindeps.lock.orig
++++ bazel/cargo_bindeps.lock
+@@ -1,5 +1,5 @@
+ {
+-  "checksum": "14e3d78cf8dddc34151b0ee8e41886f553b1fbf6cff1a6b50e87b8845b22adb1",
++  "checksum": "7b1e6817cb7616cb3447c2f3e413a1a5c475debf2bfc1f9059d5089cd4d86f23",
+   "crates": {
+     "aho-corasick 1.1.4": {
+       "name": "aho-corasick",
+@@ -519,6 +519,9 @@
+             "x86_64-apple-darwin": [
+               "std"
+             ],
++            "x86_64-unknown-freebsd": [
++              "std"
++            ],
+             "x86_64-unknown-linux-gnu": [
+               "std"
+             ]
+@@ -3691,6 +3694,17 @@
+                 "id": "libc 0.2.184",
+                 "target": "libc"
+               }
++            ],
++            "x86_64-unknown-freebsd": [
++              {
++                "id": "errno 0.3.14",
++                "target": "errno",
++                "alias": "libc_errno"
++              },
++              {
++                "id": "libc 0.2.184",
++                "target": "libc"
++              }
+             ]
+           }
+         },
+@@ -7714,7 +7728,8 @@
+       "aarch64-apple-darwin",
+       "powerpc64le-unknown-linux-gnu",
+       "s390x-unknown-linux-gnu",
+-      "x86_64-apple-darwin"
++      "x86_64-apple-darwin",
++      "x86_64-unknown-freebsd"
+     ],
+     "cfg(any())": [],
+     "cfg(not(target_has_atomic = \"ptr\"))": [],
+@@ -7726,6 +7741,7 @@
+       "powerpc64le-unknown-linux-gnu",
+       "s390x-unknown-linux-gnu",
+       "x86_64-apple-darwin",
++      "x86_64-unknown-freebsd",
+       "x86_64-unknown-linux-gnu"
+     ],
+     "cfg(windows)": [
+@@ -7742,6 +7758,9 @@
+     ],
+     "x86_64-pc-windows-msvc": [
+       "x86_64-pc-windows-msvc"
++    ],
++    "x86_64-unknown-freebsd": [
++      "x86_64-unknown-freebsd"
+     ],
+     "x86_64-unknown-linux-gnu": [
+       "x86_64-unknown-linux-gnu"
diff --git a/databases/mongodb90/files/patch-bazel_config_BUILD.bazel b/databases/mongodb90/files/patch-bazel_config_BUILD.bazel
new file mode 100644
index 000000000000..7c06971c02c5
--- /dev/null
+++ b/databases/mongodb90/files/patch-bazel_config_BUILD.bazel
@@ -0,0 +1,105 @@
+--- bazel/config/BUILD.bazel.orig	2026-08-11 19:14:56 UTC
++++ bazel/config/BUILD.bazel
+@@ -252,6 +252,30 @@ config_setting(
+     ],
+ )
+ 
++config_setting(
++    name = "freebsd_aarch64",
++    constraint_values = [
++        "@platforms//os:freebsd",
++        "@platforms//cpu:aarch64",
++    ],
++)
++
++config_setting(
++    name = "freebsd_x86_64",
++    constraint_values = [
++        "@platforms//os:freebsd",
++        "@platforms//cpu:x86_64",
++    ],
++)
++
++config_setting(
++    name = "freebsd_ppc64le",
++    constraint_values = [
++        "@platforms//os:freebsd",
++        "@platforms//cpu:ppc",
++    ],
++)
++
+ selects.config_setting_group(
+     name = "linux_aarch64_or_x86_64",
+     match_any = [
+@@ -292,6 +316,7 @@ selects.config_setting_group(
+     match_any = [
+         "@platforms//os:macos",
+         "@platforms//os:linux",
++        "@platforms//os:freebsd",
+     ],
+ )
+ 
+@@ -300,6 +325,7 @@ selects.config_setting_group(
+     match_any = [
+         "@platforms//os:macos",
+         "@platforms//os:windows",
++        "@platforms//os:freebsd",
+     ],
+ )
+ 
+@@ -308,6 +334,7 @@ selects.config_setting_group(
+     match_any = [
+         "@platforms//os:linux",
+         "@platforms//os:windows",
++        "@platforms//os:freebsd",
+     ],
+ )
+ 
+@@ -342,6 +369,7 @@ selects.config_setting_group(
+     match_any = [
+         "@platforms//os:macos",
+         "@platforms//os:linux",
++        "@platforms//os:freebsd",
+         "@platforms//os:wasi",
+     ],
+ )
+@@ -2321,6 +2349,22 @@ selects.config_setting_group(
+     ],
+ )
+ 
++selects.config_setting_group(
++    name = "ssl_enabled_freebsd",
++    match_all = [
++        "@platforms//os:freebsd",
++        ":ssl_enabled",
++    ],
++)
++
++selects.config_setting_group(
++    name = "ssl_disabled_freebsd",
++    match_all = [
++        "@platforms//os:freebsd",
++        ":ssl_disabled",
++    ],
++)
++
+ selects.config_setting_group(
+     name = "ssl_enabled_build_enterprise_disabled",
+     match_all = [
+@@ -2680,13 +2724,15 @@ selects.config_setting_group(
+ selects.config_setting_group(
+     name = "mongo_crypto_openssl",
+-    match_all = [
++    match_any = [
+         ":ssl_enabled_linux",
++        ":ssl_enabled_freebsd",
+     ],
+ )
+ 
+ selects.config_setting_group(
+     name = "mongo_crypto_tom",
+     match_any = [
+         ":ssl_disabled_linux",
++        ":ssl_disabled_freebsd",
+     ],
+ )
diff --git a/databases/mongodb90/files/patch-bazel_crates.lock b/databases/mongodb90/files/patch-bazel_crates.lock
new file mode 100644
index 000000000000..52c29a15aa8b
--- /dev/null
+++ b/databases/mongodb90/files/patch-bazel_crates.lock
@@ -0,0 +1,271 @@
+--- bazel/crates.lock.orig
++++ bazel/crates.lock
+@@ -1,5 +1,5 @@
+ {
+-  "checksum": "b01cc541b36e01fc3bdb689603bcc4967bc3f75d36e39e5f2ff96e7d45f306df",
++  "checksum": "0d097b413bb31c3c6e8a99e5acad5ce69c458e211ec7fbe905c10aec3c095bb3",
+   "crates": {
+     "addr2line 0.26.1": {
+       "name": "addr2line",
+@@ -1611,6 +1611,12 @@
+               }
+             ],
+             "x86_64-apple-darwin": [
++              {
++                "id": "libc 0.2.184",
++                "target": "libc"
++              }
++            ],
++            "x86_64-unknown-freebsd": [
+               {
+                 "id": "libc 0.2.184",
+                 "target": "libc"
+@@ -4260,6 +4266,9 @@
+             "x86_64-apple-darwin": [
+               "default"
+             ],
++            "x86_64-unknown-freebsd": [
++              "default"
++            ],
+             "x86_64-unknown-linux-gnu": [
+               "default"
+             ]
+@@ -8585,6 +8594,9 @@
+             ],
+             "x86_64-apple-darwin": [
+               "extra_traits"
++            ],
++            "x86_64-unknown-freebsd": [
++              "extra_traits"
+             ]
+           }
+         },
+@@ -11039,6 +11051,12 @@
+               }
+             ],
+             "x86_64-apple-darwin": [
++              {
++                "id": "libc 0.2.184",
++                "target": "libc"
++              }
++            ],
++            "x86_64-unknown-freebsd": [
+               {
+                 "id": "libc 0.2.184",
+                 "target": "libc"
+@@ -11994,6 +12012,17 @@
+                 "id": "libc 0.2.184",
+                 "target": "libc"
+               }
++            ],
++            "x86_64-unknown-freebsd": [
++              {
++                "id": "errno 0.3.14",
++                "target": "errno",
++                "alias": "libc_errno"
++              },
++              {
++                "id": "libc 0.2.184",
++                "target": "libc"
++              }
+             ]
+           }
+         },
+@@ -12113,6 +12142,15 @@
+               "thread",
+               "time"
+             ],
++            "x86_64-unknown-freebsd": [
++              "fs",
++              "mm",
++              "param",
++              "process",
++              "termios",
++              "thread",
++              "time"
++            ],
+             "x86_64-unknown-linux-gnu": [
+               "fs",
+               "mm",
+@@ -12220,6 +12258,17 @@
+                 "target": "errno",
+                 "alias": "libc_errno"
+               }
++            ],
++            "x86_64-unknown-freebsd": [
++              {
++                "id": "errno 0.3.14",
++                "target": "errno",
++                "alias": "libc_errno"
++              },
++              {
++                "id": "libc 0.2.184",
++                "target": "libc"
++              }
+             ]
+           }
+         },
+@@ -14553,6 +14602,16 @@
+                 "target": "windows_sys"
+               }
+             ],
++            "x86_64-unknown-freebsd": [
++              {
++                "id": "libc 0.2.184",
++                "target": "libc"
++              },
++              {
++                "id": "signal-hook-registry 1.4.8",
++                "target": "signal_hook_registry"
++              }
++            ],
+             "x86_64-unknown-linux-gnu": [
+               {
+                 "id": "libc 0.2.184",
+@@ -17149,13 +17208,13 @@
+         "Http": {
+           "url": "https://static.crates.io/crates/wasmtime/44.0.1/download",
+           "sha256": "372db8bbad8ec962038101f75ab2c3ffcd18797d7d3ae877a58ab9873cd0c4bd",
++          "patch_args": [
++            "-p1"
++          ],
+           "patches": [
*** 1694 LINES SKIPPED ***