git: dbe3ef482b63 - main - databases/mongodb80: 8.0.29

From: Ronald Klop <ronald_at_FreeBSD.org>
Date: Thu, 01 Oct 2026 22:30:23 UTC
The branch main has been updated by ronald:

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

commit dbe3ef482b636d706d044991101342d6f1603a88
Author:     Ronald Klop <ronald@FreeBSD.org>
AuthorDate: 2026-10-01 07:41:55 +0000
Commit:     Ronald Klop <ronald@FreeBSD.org>
CommitDate: 2026-10-01 22:29:56 +0000

    databases/mongodb80: 8.0.29
    
    Upstream changed the build tool from SCons to Bazel.
    Please test before deploying to production.
    
    Announcement:
    https://www.mongodb.com/community/forums/t/mongodb-8-0-29-is-released/342426?u=r_k
    
    Release Notes:
    https://www.mongodb.com/docs/manual/release-notes/8.0/#8029---aug-11-2026
---
 databases/mongodb80/Makefile                       | 171 ++++++++++-------
 databases/mongodb80/distinfo                       |  18 +-
 .../d497aa4f770ca02f6083e93b94996a8fe32c2ff4.patch |  81 --------
 databases/mongodb80/files/extrapatch-SConstruct    |  16 --
 .../extrapatch-src_third__party_mozjs_SConscript   |  11 --
 databases/mongodb80/files/patch-MODULE.bazel       |  35 ++++
 databases/mongodb80/files/patch-SConstruct         |  11 --
 databases/mongodb80/files/patch-WORKSPACE.bazel    |  23 +++
 .../mongodb80/files/patch-bazel_config_BUILD.bazel | 105 +++++++++++
 .../files/patch-bazel_freebsd__repositories.bzl    |  18 ++
 .../patch-bazel_install__rules_install__rules.bzl  |  46 +++++
 .../files/patch-bazel_mongo__src__rules.bzl        |  32 ++++
 ...tch-bazel_platforms_local__config__platform.bzl |  25 +++
 .../files/patch-bazel_platforms_normalize.bzl      |   8 +
 .../patch-bazel_rules__poetry_rules__poetry.patch  | 170 +++++++++++++++++
 .../files/patch-bazel_separate__debug.bzl          |  38 ++++
 ...-bazel_toolchains_cc_mongo__compiler__flags.bzl |  20 ++
 ...h-bazel_toolchains_python_python__toolchain.bzl | 208 +++++++++++++++++++++
 .../mongodb80/files/patch-buildscripts_scons.py    |  18 --
 databases/mongodb80/files/patch-src_BUILD.bazel    |  21 +++
 .../mongodb80/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 |  65 +++++++
 ...rc_mongo_transport_asio_asio__session__impl.cpp |  11 ++
 ...c_third__party_IntelRDFPMathLib20U1_BUILD.bazel |  13 ++
 ...asio-master_asio_include_asio_detail_config.hpp |  18 ++
 .../files/patch-src_third__party_boost_BUILD.bazel |  33 ++++
 ...-src_third__party_boost_boost_thread_future.hpp |  18 --
 .../patch-src_third__party_libbson_BUILD.bazel     |  32 ++++
 ...atch-src_third__party_libmongocrypt_BUILD.bazel |  33 ++++
 .../files/patch-src_third__party_mozjs_BUILD.bazel |  23 +++
 ...h-src_third__party_mozjs_scripts_gen-config.sh} |  29 +--
 .../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  |  18 ++
 37 files changed, 1195 insertions(+), 246 deletions(-)

diff --git a/databases/mongodb80/Makefile b/databases/mongodb80/Makefile
index 54bc6fa6aede..3c016916a285 100644
--- a/databases/mongodb80/Makefile
+++ b/databases/mongodb80/Makefile
@@ -1,14 +1,17 @@
 PORTNAME=	mongodb
 DISTVERSIONPREFIX=	r
-DISTVERSION=	8.0.12
-PORTREVISION=	12
+DISTVERSION=	8.0.29
 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/.//}
-
-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
+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 (8.0.x Branch)
@@ -20,12 +23,14 @@ 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
 
-BROKEN_FreeBSD_16=	integral_wrapper.hpp:62:51: error: in-class initializer for static data member is not a constant expression
+BROKEN_FreeBSD_16=	src/third_party/boost/boost/mpl/aux_/integral_wrapper.hpp:71:51: error: in-class initializer for static data member is not a constant expression
 
 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=	${PY_SETUPTOOLS} \
+BUILD_DEPENDS=	bazel:devel/bazel7 \
+		bash:shells/bash \
+		${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} \
@@ -36,28 +41,25 @@ BUILD_DEPENDS=	${PY_SETUPTOOLS} \
 		${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}retry2>0:devel/py-retry2@${PY_FLAVOR} \
 		git:devel/git@tiny \
-		rust-cbindgen>0:devel/rust-cbindgen
-# build depends used while running ${WRKSRC}/src/third_party/mozjs/gen-config.sh
+		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 \
-		libsnappy.so:archivers/snappy \
-		libstemmer.so:textproc/snowballstemmer \
-		libunwind.so:devel/libunwind \
-		libyaml-cpp.so:devel/yaml-cpp \
-		libzstd.so:archivers/zstd
+LIB_DEPENDS=	libcurl.so:ftp/curl
 
 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
+# gmake is used while running ${WRKSRC}/src/third_party/mozjs/scripts/gen-config.sh
+USES=		compiler:c++20-lang cpe gmake pkgconfig python:build shebangfix ssl
 CPE_PRODUCT=	mongodb
 
-# mozjs tag comes from ${WRKSRC}/src/third_party/mozjs/get-sources.sh
-MOZJS_TAG=	5acd3be6c9563ad3e7ca6182285c69a38de47bab
+# mozjs tag comes from ${WRKSRC}/src/third_party/mozjs/scripts/import.sh
+MOZJS_TAG=	7aeaf7a44d420360bde75db8453636092c3e2f56
+BAZEL_REGISTRY_COMMIT=	5df17720d4367282afb8e5ca27a35199ab7620e4
+RULES_POETRY_COMMIT=	917630033c736c188605cf0f558c34afc1eca540
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	mongodb mongodb-forks:mozjs
@@ -65,44 +67,70 @@ GH_PROJECT=	mongo spidermonkey:mozjs
 GH_TAGNAME=	${MOZJS_TAG}:mozjs
 USE_RC_SUBR=	mongod
 
-SHEBANG_FILES=	buildscripts/scons.py
-python_OLD_CMD=	@python_interpreter@
+SHEBANG_FILES=	src/third_party/mozjs/scripts/gen-config.sh
 
 HAS_CONFIGURE=		yes
-CONFIGURE_SCRIPT=	gen-config.sh
+CONFIGURE_SCRIPT=	scripts/gen-config.sh
 CONFIGURE_ARGS=		${MOZJS_ARCH} \
 			freebsd
 CONFIGURE_ENV+=		PYTHON3="${PYTHON_CMD}"
 
-MAKE_ARGS=	--allocator=system \
-		--cxx-std=20 \
-		--disable-warnings-as-errors \
-		--libc++ \
-		--runtime-hardening=on \
-		--ssl \
-		--use-system-libunwind \
-		--use-system-snappy \
-		--use-system-stemmer \
-		--use-system-yaml \
-		--use-system-zlib \
-		--use-system-zstd \
-		-j${MAKE_JOBS_NUMBER} \
-		AR=llvm-ar \
-		MONGO_VERSION=${DISTVERSION} \
-		VERBOSE=on
-ALL_TARGET=	install-servers
-
-CFLAGS+=	-DBOOST_NO_CXX98_FUNCTION_BASE
+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 \
+			CC="${CC}" \
+			CXX="${CXX}" \
+			HOME=${WRKDIR} \
+			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} \
+			--action_env=PATH=${LOCALBASE}/bin:/bin:/usr/bin \
+			--repo_env=CC=${CC} \
+			--repo_env=CXX=${CXX} \
+			--repo_env=LOCALBASE=${LOCALBASE} \
+			--repo_env=MONGO_USE_SYSTEM_PYTHON=1 \
+			--repo_env=PATH=${LOCALBASE}/bin:/bin:/usr/bin \
+			--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=-DBOOST_NO_CXX98_FUNCTION_BASE \
+			--linkopt=-L${LOCALBASE}/lib \
+			--linkopt=-lm \
+			--linkopt=-pthread \
+			--linkopt=-lexecinfo \
+			--linkopt=-lkvm \
+			--noexperimental_collect_system_network_usage
+ALL_TARGET=		install-core
 
 CONFLICTS_INSTALL=	mongodb[0-9][0-9]
 
-EXTRACT_AFTER_ARGS=	--exclude src/third_party/snappy-* \
-			--exclude src/third_party/libstemmer_c \
-			--exclude src/third_party/unwind \
-			--exclude src/third_party/yaml-cpp \
-			--exclude src/third_party/zlib-* \
-			--exclude src/third_party/zstandard \
-			--no-same-owner --no-same-permissions
+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/
@@ -113,9 +141,9 @@ CONFIGURE_WRKSRC=	${MOZJS_WRKSRC}
 USERS=		mongodb
 GROUPS=		mongodb
 
-OPTIONS_DEFINE=		LTO NOAVX SASL
+OPTIONS_DEFINE=		LTO NOAVX
 OPTIONS_DEFINE_aarch64=	ARMV80A
-OPTIONS_DEFAULT=	NOAVX SASL
+OPTIONS_DEFAULT=	NOAVX
 
 # MongoDB on non-LSE ARM cpu like Raspberry Pi can work but is unsupported upstream.
 # Can give corruption on high concurrency.
@@ -123,18 +151,16 @@ OPTIONS_DEFAULT=	NOAVX SASL
 ARMV80A_DESC=	Enable non-LSE ARM64 CPUs like RPI4.
 NOAVX_DESC=	"Disable AVX instructions on amd64 (Sandybridge+)"
 
-ARMV80A_EXTRA_PATCHES=	${FILESDIR}/extrapatch-SConstruct
-
-LTO_MAKE_ARGS=	--lto=on
+ARMV80A_VARS=	BAZEL_ARGS+="--copt=-march=armv8-a --cxxopt=-march=armv8-a"
 
-NOAVX_MAKE_ARGS=	--experimental-optimization="-sandybridge"
-NOAVX_EXTRA_PATCHES=	${FILESDIR}/extrapatch-src_third__party_mozjs_SConscript \
-			${FILESDIR}/extrapatch-src_third__party_mozjs_extract_mozglue_misc_SIMD.cpp
+LTO_VARS=	BAZEL_ARGS+=--thin_lto=True
 
-SASL_LIB_DEPENDS=	libsasl2.so:security/cyrus-sasl2
-SASL_MAKE_ARGS=		--use-sasl-client
+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
@@ -156,29 +182,32 @@ MOZJS_ARCH=	${ARCH}
 
 post-extract:
 # Verify we downloaded the proper mozjs git tag.
-	${SH} -xc "test \"X`grep -E '^LIB_GIT_REVISION=' ${MOZJS_WRKSRC}/get-sources.sh`\" = \"XLIB_GIT_REVISION=${MOZJS_TAG}\""
-	${PATCH} -d ${WRKDIR}/spidermonkey-${MOZJS_TAG} -p1 < ${PATCHDIR}/d497aa4f770ca02f6083e93b94996a8fe32c2ff4.patch
+	${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/get-sources.sh
+# Replacement of ${WRKSRC}/src/third_party/mozjs/scripts/import.sh
 	${LN} -sF ${WRKDIR}/spidermonkey-${MOZJS_TAG} ${MOZJS_WRKSRC}/mozilla-release
 
+post-patch:
+	${PATCH} -d ${RULES_POETRY_WRKSRC} -p0 < ${WRKSRC}/bazel/rules_poetry/rules_poetry.patch
+
 do-build:
-	${WRKSRC}/buildscripts/scons.py	-C ${WRKSRC} ${MAKE_ARGS}
+	${MKDIR} ${BAZEL_REPOSITORY_CACHE}
+	cd ${WRKSRC} && ${SETENV} ${BAZEL_ENV} ${BAZEL} ${BAZEL_STARTUP_ARGS} build ${BAZEL_ARGS} ${ALL_TARGET}
 
 do-install:
-.for f in mongod mongos
-	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${f}
-.endfor
+	${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 MPL-2 README THIRD-PARTY-NOTICES
-	${MV} ${STAGEDIR}${PREFIX}/${doc} ${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/
-	${RM} ${STAGEDIR}${PREFIX}/bin/resmoke.py
 
 do-test:
 	${SH} ${FILESDIR}/make.test.sh "${STAGEDIR}${PREFIX}/bin"
diff --git a/databases/mongodb80/distinfo b/databases/mongodb80/distinfo
index 8c7c6fe893ec..ade903469b6b 100644
--- a/databases/mongodb80/distinfo
+++ b/databases/mongodb80/distinfo
@@ -1,7 +1,11 @@
-TIMESTAMP = 1782994633
-SHA256 (mongodb-mongo-r8.0.12_GH0.tar.gz) = 0e9000bd8674e8b7c4f48906f6799f9604a1d61f79220cbb099b231a50ac05ea
-SIZE (mongodb-mongo-r8.0.12_GH0.tar.gz) = 98534080
-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
+TIMESTAMP = 1790747755
+SHA256 (mongodb-r8.0.29-bazel-repository-cache.tar.gz) = f1301200c6d28c3f86a91e5de63fa5e12737074def30db9567006b326483c984
+SIZE (mongodb-r8.0.29-bazel-repository-cache.tar.gz) = 39982114
+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-917630033c736c188605cf0f558c34afc1eca540_GH0.tar.gz) = 48001b928488e78f03a47bcc712c56432a471fc6cdd90fe57c884efbfcd13696
+SIZE (mongodb-forks-rules_poetry-917630033c736c188605cf0f558c34afc1eca540_GH0.tar.gz) = 339587
+SHA256 (mongodb-mongo-r8.0.29_GH0.tar.gz) = a45686998d5bc29c97f6d2fbc5a6dc5a1260a10c9d830e42080dffb74649124b
+SIZE (mongodb-mongo-r8.0.29_GH0.tar.gz) = 88788792
+SHA256 (mongodb-forks-spidermonkey-7aeaf7a44d420360bde75db8453636092c3e2f56_GH0.tar.gz) = 8ec7aa1399b6fb15b859c448ae6f361ab28cf48bd8fc4f0de2fb3776582e202f
+SIZE (mongodb-forks-spidermonkey-7aeaf7a44d420360bde75db8453636092c3e2f56_GH0.tar.gz) = 392664341
diff --git a/databases/mongodb80/files/d497aa4f770ca02f6083e93b94996a8fe32c2ff4.patch b/databases/mongodb80/files/d497aa4f770ca02f6083e93b94996a8fe32c2ff4.patch
deleted file mode 100644
index 62a81a051d65..000000000000
--- a/databases/mongodb80/files/d497aa4f770ca02f6083e93b94996a8fe32c2ff4.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-!!! This patch is a modified version of the phabricator mention !!!
-!!! You can diff them to see the difference !!!
-
-From d497aa4f770ca02f6083e93b94996a8fe32c2ff4 Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh+mozilla@glandium.org>
-Date: Tue, 19 Aug 2025 05:09:09 +0000
-Subject: [PATCH] Bug 1969769 - Change uses of ast.Str with ast.Constant.
- r=firefox-build-system-reviewers,ahochheiden
-
-ast.Str was deprecated in python 3.12 and removed in 3.14. It inherited
-from ast.Constant, `Str.s` was equivalent to `Constant.value`, so we can
-use the latter on both old and newer python versions.
-
-Differential Revision: https://phabricator.services.mozilla.com/D261512
----
- python/mozbuild/mozbuild/frontend/reader.py        | 14 +++++++-------
- .../mozbuild/mozbuild/vendor/rewrite_mozbuild.py   |  6 ++----
- 2 files changed, 9 insertions(+), 11 deletions(-)
-
-diff --git a/python/mozbuild/mozbuild/frontend/reader.py b/python/mozbuild/mozbuild/frontend/reader.py
-index 9f6292cb909de..89bf9995c1768 100644
---- a/python/mozbuild/mozbuild/frontend/reader.py
-+++ b/python/mozbuild/mozbuild/frontend/reader.py
-@@ -470,7 +470,7 @@
-             return c(
-                 ast.Subscript(
-                     value=c(ast.Name(id=self._global_name, ctx=ast.Load())),
--                    slice=c(ast.Index(value=c(ast.Str(s=node.id)))),
-+                    slice=c(ast.Index(value=c(ast.Constant(value=node.id)))),
-                     ctx=node.ctx,
-                 )
-             )
-@@ -1035,8 +1035,8 @@
-                 else:
-                     # Others
-                     assert isinstance(target.slice, ast.Index)
--                    assert isinstance(target.slice.value, ast.Str)
--                    key = target.slice.value.s
-+                    assert isinstance(target.slice.value, ast.Constant)
-+                    key = target.slice.value.value
- 
-             return name, key
- 
-@@ -1044,11 +1044,11 @@
-             value = node.value
-             if isinstance(value, ast.List):
-                 for v in value.elts:
--                    assert isinstance(v, ast.Str)
--                    yield v.s
-+                    assert isinstance(v, ast.Constant)
-+                    yield v.value
-             else:
--                assert isinstance(value, ast.Str)
--                yield value.s
-+                assert isinstance(value, ast.Constant)
-+                yield value.value
- 
-         assignments = []
-
-diff --git a/python/mozbuild/mozbuild/vendor/rewrite_mozbuild.py b/python/mozbuild/mozbuild/vendor/rewrite_mozbuild.py
-index cfcc0f18b9a9a..de06b58819b6a 100644
---- a/python/mozbuild/mozbuild/vendor/rewrite_mozbuild.py	2026-04-26 13:55:23.117672000 -0500
-+++ a/python/mozbuild/mozbuild/vendor/rewrite_mozbuild.py	2026-04-26 13:55:54.618049000 -0500
-@@ -327,15 +327,13 @@
-     """
-     if isinstance(node.value, ast.List) and "elts" in node.value._fields:
-         for f in node.value.elts:
--            if not isinstance(f, ast.Constant) and not isinstance(f, ast.Str):
-+            if not isinstance(f, ast.Constant):
-                 log(
-                     "Found non-constant source file name in list: ",
-                     ast_get_source_segment(code, f),
-                 )
-                 return []
--        return [
--            f.value if isinstance(f, ast.Constant) else f.s for f in node.value.elts
--        ]
-+        return [f.value for f in node.value.elts]
-     elif isinstance(node.value, ast.ListComp):
-         # SOURCES += [f for f in foo if blah]
-         log("Could not find the files for " + ast_get_source_segment(code, node.value))
diff --git a/databases/mongodb80/files/extrapatch-SConstruct b/databases/mongodb80/files/extrapatch-SConstruct
deleted file mode 100644
index 05946bd82cdc..000000000000
--- a/databases/mongodb80/files/extrapatch-SConstruct
+++ /dev/null
@@ -1,16 +0,0 @@
---- SConstruct.orig	2023-06-07 17:07:38 UTC
-+++ SConstruct
-@@ -3217,8 +3205,12 @@ if not env.TargetOSIs('windows', 'macOS') and (env.Too
-     # setting it for both C and C++ by setting both of CFLAGS and
-     # CXXFLAGS.
- 
-+    arm_march_flag = "armv8-a"
-+    if get_option('use-hardware-crc32') == "on":
-+        arm_march_flag += "+crc"
-+
-     default_targeting_flags_for_architecture = {
--        "aarch64": {"-march=": "armv8.2-a", "-mtune=": "generic"},
-+        "aarch64": {"-march=": arm_march_flag, "-mtune=": "generic"},
-         "i386": {"-march=": "nocona", "-mtune=": "generic"},
-         "ppc64le": {"-mcpu=": "power8", "-mtune=": "power8", "-mcmodel=": "medium"},
-         "s390x": {"-march=": "z196", "-mtune=": "zEC12"},
diff --git a/databases/mongodb80/files/extrapatch-src_third__party_mozjs_SConscript b/databases/mongodb80/files/extrapatch-src_third__party_mozjs_SConscript
deleted file mode 100644
index 4370f13323a4..000000000000
--- a/databases/mongodb80/files/extrapatch-src_third__party_mozjs_SConscript
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/third_party/mozjs/SConscript.orig	2024-08-14 20:38:09 UTC
-+++ src/third_party/mozjs/SConscript
-@@ -144,7 +145,7 @@ sources = [
-     "extract/js/src/wasm/WasmCode-platform.cpp",
- ]
- 
--if env['TARGET_ARCH'] == 'x86_64' and not env.TargetOSIs('windows'):
-+if False and env['TARGET_ARCH'] == 'x86_64' and not env.TargetOSIs('windows'):
-     env.Append(CCFLAGS=['-mavx2'])
-     sources.extend(["extract/mozglue/misc/SIMD_avx2.cpp", "extract/mozglue/misc/SSE.cpp"])
- 
diff --git a/databases/mongodb80/files/patch-MODULE.bazel b/databases/mongodb80/files/patch-MODULE.bazel
new file mode 100644
index 000000000000..c5c44e5b0532
--- /dev/null
+++ b/databases/mongodb80/files/patch-MODULE.bazel
@@ -0,0 +1,35 @@
+--- 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 = "917630033c736c188605cf0f558c34afc1eca540",
+-    patches = ["//bazel/rules_poetry:rules_poetry.patch"],
+-    remote = "https://github.com/mongodb-forks/rules_poetry",
++    path = "../rules_poetry-917630033c736c188605cf0f558c34afc1eca540",
+ )
+ 
+ #
+@@ -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",
diff --git a/databases/mongodb80/files/patch-SConstruct b/databases/mongodb80/files/patch-SConstruct
deleted file mode 100644
index 6e039812b1a2..000000000000
--- a/databases/mongodb80/files/patch-SConstruct
+++ /dev/null
@@ -1,11 +0,0 @@
---- SConstruct.orig	2025-07-07 23:12:17 UTC
-+++ SConstruct
-@@ -1848,7 +1848,7 @@ if unknown_vars:
- 
- unknown_vars = env_vars.UnknownVariables()
- if unknown_vars:
--    env.FatalError("Unknown variables specified: {0}", ", ".join(list(unknown_vars.keys())))
-+    print("Unknown variables specified: {0}", ", ".join(list(unknown_vars.keys())))
- 
- install_actions.setup(env, get_option('install-action'))
- 
diff --git a/databases/mongodb80/files/patch-WORKSPACE.bazel b/databases/mongodb80/files/patch-WORKSPACE.bazel
new file mode 100644
index 000000000000..804f36c0a38a
--- /dev/null
+++ b/databases/mongodb80/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/mongodb80/files/patch-bazel_config_BUILD.bazel b/databases/mongodb80/files/patch-bazel_config_BUILD.bazel
new file mode 100644
index 000000000000..56e046ec7420
--- /dev/null
+++ b/databases/mongodb80/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
+@@ -234,6 +234,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",
++    ],
++)
++
+ config_setting(
+     name = "rhel10",
+     constraint_values = [
+@@ -268,6 +292,7 @@ selects.config_setting_group(
+     match_any = [
+         "@platforms//os:macos",
+         "@platforms//os:linux",
++        "@platforms//os:freebsd",
+     ],
+ )
+ 
+@@ -276,6 +301,7 @@ selects.config_setting_group(
+     match_any = [
+         "@platforms//os:macos",
+         "@platforms//os:windows",
++        "@platforms//os:freebsd",
+     ],
+ )
+ 
+@@ -284,6 +310,7 @@ selects.config_setting_group(
+     match_any = [
+         "@platforms//os:linux",
+         "@platforms//os:windows",
++        "@platforms//os:freebsd",
+     ],
+ )
+ 
+@@ -309,6 +336,7 @@ selects.config_setting_group(
+     match_any = [
+         "@platforms//os:macos",
+         "@platforms//os:linux",
++        "@platforms//os:freebsd",
+     ],
+ )
+ 
+@@ -2177,6 +2205,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 = [
+@@ -2263,13 +2307,15 @@
+ 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/mongodb80/files/patch-bazel_freebsd__repositories.bzl b/databases/mongodb80/files/patch-bazel_freebsd__repositories.bzl
new file mode 100644
index 000000000000..035d168b4799
--- /dev/null
+++ b/databases/mongodb80/files/patch-bazel_freebsd__repositories.bzl
@@ -0,0 +1,18 @@
+--- /dev/null
++++ bazel/freebsd_repositories.bzl
+@@ -0,0 +1,15 @@
++def _freebsd_system_yq_repo_impl(rctx):
++    localbase = rctx.os.environ.get("LOCALBASE", "/usr/local")
++    rctx.symlink("{}/bin/yq".format(localbase), "yq")
++    rctx.file(
++        "BUILD.bazel",
++        """
++package(default_visibility = ["//visibility:public"])
++exports_files(["yq"])
++""",
++    )
++
++freebsd_system_yq_repo = repository_rule(
++    implementation = _freebsd_system_yq_repo_impl,
++    environ = ["LOCALBASE"],
++)
diff --git a/databases/mongodb80/files/patch-bazel_install__rules_install__rules.bzl b/databases/mongodb80/files/patch-bazel_install__rules_install__rules.bzl
new file mode 100644
index 000000000000..f1cb2884d5be
--- /dev/null
+++ b/databases/mongodb80/files/patch-bazel_install__rules_install__rules.bzl
@@ -0,0 +1,46 @@
+--- bazel/install_rules/install_rules.bzl.orig	2026-08-11 19:14:56 UTC
++++ bazel/install_rules/install_rules.bzl
+@@ -103,7 +103,8 @@ def get_constraints(ctx):
+     """
+     linux_constraint = ctx.attr._linux_constraint[platform_common.ConstraintValueInfo]
+     macos_constraint = ctx.attr._macos_constraint[platform_common.ConstraintValueInfo]
+     windows_constraint = ctx.attr._windows_constraint[platform_common.ConstraintValueInfo]
+-    return linux_constraint, macos_constraint, windows_constraint
++    freebsd_constraint = ctx.attr._freebsd_constraint[platform_common.ConstraintValueInfo]
++    return linux_constraint, macos_constraint, windows_constraint, freebsd_constraint
+ 
+ def is_binary_file(ctx, basename):
+@@ -117,7 +118,7 @@ def is_binary_file(ctx, basename):
+         True if it looks like a binary, False otherwise
+     """
+-    linux_constraint, macos_constraint, windows_constraint = get_constraints(ctx)
+-    if ctx.target_platform_has_constraint(linux_constraint):
++    linux_constraint, macos_constraint, windows_constraint, freebsd_constraint = get_constraints(ctx)
++    if ctx.target_platform_has_constraint(linux_constraint) or ctx.target_platform_has_constraint(freebsd_constraint):
+         return not (basename.startswith("lib") or basename.startswith("mongo_crypt_v") or basename.startswith("stitch_support.so"))
+     elif ctx.target_platform_has_constraint(macos_constraint):
+         return not (basename.startswith("lib") or basename.startswith("mongo_crypt_v") or basename.startswith("stitch_support.dylib"))
+@@ -138,7 +139,7 @@ def is_debug_file(ctx, basename):
+         True if it looks like a debug file, False otherwise
+     """
+-    linux_constraint, macos_constraint, windows_constraint = get_constraints(ctx)
+-    if ctx.target_platform_has_constraint(linux_constraint):
++    linux_constraint, macos_constraint, windows_constraint, freebsd_constraint = get_constraints(ctx)
++    if ctx.target_platform_has_constraint(linux_constraint) or ctx.target_platform_has_constraint(freebsd_constraint):
+         return basename.endswith(".debug") or basename.endswith(".dwp")
+     elif ctx.target_platform_has_constraint(macos_constraint):
+         return basename.endswith(".dSYM")
+@@ -176,5 +177,5 @@ def sort_file(ctx, file, install_dir, file_map, is_directory):
+ 
+     """
+-    _, macos_constraint, _ = get_constraints(ctx)
++    _, macos_constraint, _, _ = get_constraints(ctx)
+     basename = paths.basename(file)
+     bin_install = install_dir + "/bin/" + basename
+@@ -410,5 +411,6 @@ mongo_install_rule = rule(
+         "_linux_constraint": attr.label(default = "@platforms//os:linux"),
+         "_macos_constraint": attr.label(default = "@platforms//os:macos"),
+         "_windows_constraint": attr.label(default = "@platforms//os:windows"),
++        "_freebsd_constraint": attr.label(default = "@platforms//os:freebsd"),
+     },
+     doc = "Install targets",
diff --git a/databases/mongodb80/files/patch-bazel_mongo__src__rules.bzl b/databases/mongodb80/files/patch-bazel_mongo__src__rules.bzl
new file mode 100644
index 000000000000..7f5de2127329
--- /dev/null
+++ b/databases/mongodb80/files/patch-bazel_mongo__src__rules.bzl
@@ -0,0 +1,32 @@
+--- bazel/mongo_src_rules.bzl.orig	2026-08-11 19:14:56 UTC
++++ bazel/mongo_src_rules.bzl
+@@ -269,6 +269,9 @@ def force_includes_hdr(package_name, name):
+             "//bazel/config:linux_ppc64le": ["//src/third_party/mozjs:platform/ppc64le/linux/build/js-config.h"],
+             "//bazel/config:linux_s390x": ["//src/third_party/mozjs:platform/s390x/linux/build/js-config.h"],
+             "//bazel/config:linux_x86_64": ["//src/third_party/mozjs:platform/x86_64/linux/build/js-config.h"],
++            "//bazel/config:freebsd_aarch64": ["//src/third_party/mozjs:platform/aarch64/freebsd/build/js-config.h"],
++            "//bazel/config:freebsd_ppc64le": ["//src/third_party/mozjs:platform/ppc64le/freebsd/build/js-config.h"],
++            "//bazel/config:freebsd_x86_64": ["//src/third_party/mozjs:platform/x86_64/freebsd/build/js-config.h"],
+             "//bazel/config:macos_aarch64": ["//src/third_party/mozjs:platform/aarch64/macOS/build/js-config.h"],
+             "//bazel/config:macos_x86_64": ["//src/third_party/mozjs:platform/x86_64/macOS/build/js-config.h"],
+             "//bazel/config:windows_x86_64": ["//src/third_party/mozjs:/platform/x86_64/windows/build/js-config.h"],
+@@ -473,6 +476,9 @@ def mongo_cc_shared_library(
+         "//bazel/config:linux_ppc64le": linux_rpath_flags,
+         "//bazel/config:linux_s390x": linux_rpath_flags,
+         "//bazel/config:linux_x86_64": linux_rpath_flags,
++        "//bazel/config:freebsd_aarch64": linux_rpath_flags,
++        "//bazel/config:freebsd_ppc64le": linux_rpath_flags,
++        "//bazel/config:freebsd_x86_64": linux_rpath_flags,
+         "//bazel/config:macos_aarch64": macos_rpath_flags,
+         "//bazel/config:macos_x86_64": macos_rpath_flags,
+         "//bazel/config:windows_x86_64": [],
+@@ -716,6 +722,9 @@ def mongo_cc_binary(
+         "//bazel/config:linux_ppc64le": linux_rpath_flags,
+         "//bazel/config:linux_s390x": linux_rpath_flags,
+         "//bazel/config:linux_x86_64": linux_rpath_flags,
++        "//bazel/config:freebsd_aarch64": linux_rpath_flags,
++        "//bazel/config:freebsd_ppc64le": linux_rpath_flags,
++        "//bazel/config:freebsd_x86_64": linux_rpath_flags,
+         "//bazel/config:macos_aarch64": macos_rpath_flags,
+         "//bazel/config:macos_x86_64": macos_rpath_flags,
+         "//bazel/config:windows_x86_64": [],
diff --git a/databases/mongodb80/files/patch-bazel_platforms_local__config__platform.bzl b/databases/mongodb80/files/patch-bazel_platforms_local__config__platform.bzl
new file mode 100644
index 000000000000..a5d082d77186
--- /dev/null
+++ b/databases/mongodb80/files/patch-bazel_platforms_local__config__platform.bzl
@@ -0,0 +1,25 @@
+--- bazel/platforms/local_config_platform.bzl.orig	2026-08-11 19:14:56 UTC
++++ bazel/platforms/local_config_platform.bzl
+@@ -18,8 +18,10 @@ def _setup_local_config_platform(ctx):
+         os = "windows"
+     elif "mac" in ctx.os.name:
+         os = "macos"
+-    else:
++    elif "linux" in ctx.os.name:
+         os = "linux"
++    elif "freebsd" in ctx.os.name:
++        os = "freebsd"
+ 
+     arch = ctx.os.arch
+ 
+@@ -31,7 +33,9 @@ def _setup_local_config_platform(ctx):
+     # So Starlark doesn't throw an indentation error when this gets injected.
+     constraints_str = ",\n        ".join(['"%s"' % c for c in constraints])
+ 
+-    distro = get_host_distro_major_version(ctx)
++    distro = None
++    if os == "linux":
++        distro = get_host_distro_major_version(ctx)
+     if arch == "x86_64":
+         arch = "amd64"
+     elif arch == "aarch64":
diff --git a/databases/mongodb80/files/patch-bazel_platforms_normalize.bzl b/databases/mongodb80/files/patch-bazel_platforms_normalize.bzl
new file mode 100644
index 000000000000..f7281f7b5ca8
--- /dev/null
+++ b/databases/mongodb80/files/patch-bazel_platforms_normalize.bzl
@@ -0,0 +1,8 @@
+--- bazel/platforms/normalize.bzl.orig	2026-08-11 19:14:56 UTC
++++ bazel/platforms/normalize.bzl
+@@ -18,4 +18,5 @@ OS_TO_PLATFORM_MAP = {
+     "macos": "@platforms//os:osx",
+     "linux": "@platforms//os:linux",
+     "windows": "@platforms//os:windows",
++    "freebsd": "@platforms//os:freebsd",
+ }
diff --git a/databases/mongodb80/files/patch-bazel_rules__poetry_rules__poetry.patch b/databases/mongodb80/files/patch-bazel_rules__poetry_rules__poetry.patch
new file mode 100644
index 000000000000..4913e3550cd9
--- /dev/null
+++ b/databases/mongodb80/files/patch-bazel_rules__poetry_rules__poetry.patch
@@ -0,0 +1,170 @@
+--- bazel/rules_poetry/rules_poetry.patch.orig
++++ bazel/rules_poetry/rules_poetry.patch
+@@ -10,3 +10,167 @@ index 0000000..c09945f
+ +
+ +bazel_dep(name = "bazel_skylib", version = "1.5.0")
+ +bazel_dep(name = "platforms", version = "0.0.8")
++diff --git rules_poetry/defs.bzl rules_poetry/defs.bzl
++index b3c070b..564e159 100644
++--- rules_poetry/defs.bzl
+++++ rules_poetry/defs.bzl
++@@ -88,43 +88,18 @@ COMMON_ARGS = [
++     "--isolated",
++ ]
++ 
++-def _download(ctx, requirements):
++-
++-    toolchain = ctx.toolchains["@bazel_tools//tools/python:toolchain_type"]
++-    runtime = toolchain.py3_runtime
++-    inputs = depset([requirements], transitive = [runtime.files])
++-    tools = depset(direct = [runtime.interpreter], transitive = [runtime.files])
++-
++-    python = ctx.toolchains["@bazel_tools//tools/python:toolchain_type"].py3_runtime
++-    destination = ctx.actions.declare_directory("wheels/%s" % ctx.attr.name)
++-    args = ctx.actions.args()
++-    args.add("-m")
++-    args.add("pip")
++-    args.add("wheel")
++-    args.add_all(COMMON_ARGS)
++-    args.add("--require-hashes")
++-    args.add("--wheel-dir")
++-    args.add(destination.path)
++-    args.add("-r")
++-    args.add(requirements)
++-    if ctx.attr.source_url != "":
++-        args.add("-i")
++-        args.add(ctx.attr.source_url)
++-
++-    ctx.actions.run(
++-        executable = python.interpreter.path,
++-        inputs = inputs,
++-        outputs = [destination],
++-        arguments = [args],
++-        env = deterministic_env(),
++-        mnemonic = "DownloadWheel",
++-        progress_message = "Collecting %s wheel from pypi" % ctx.attr.pkg,
++-        execution_requirements = {
++-            "requires-network": "",
++-        },
++-        tools = tools,
+++def _empty_directory(ctx, output, mnemonic, progress_message):
+++    ctx.actions.run_shell(
+++        outputs = [output],
+++        command = "mkdir -p \"$1\"",
+++        arguments = [output.path],
+++        mnemonic = mnemonic,
+++        progress_message = progress_message,
++     )
++ 
+++def _download(ctx, requirements):
+++    destination = ctx.actions.declare_directory("wheels/%s" % ctx.attr.name)
+++    _empty_directory(ctx, destination, "DownloadWheel", "Using system Python package for %s" % ctx.attr.pkg)
++     return destination
++ 
++ def _download_wheel_impl(ctx):
++@@ -161,33 +136,7 @@ download_wheel = rule(
++ def _install(ctx, wheel_info):
++     
++     installed_wheel = ctx.actions.declare_directory(wheel_info.pkg)
++-    python = ctx.toolchains["@bazel_tools//tools/python:toolchain_type"].py3_runtime
++-    
++-    args = [
++-        "-m",
++-        "pip",
++-        'install', 
++-        '--force-reinstall',
++-        '--upgrade',
++-    ] + COMMON_ARGS + [
++-        "--no-compile",
++-        "--no-index",
++-        "--find-links",
++-        ctx.files.wheel[0].path,
++-        "--target="+installed_wheel.path,
++-        wheel_info.pkg + " ; " + str(wheel_info.marker)
++-    ]
++-
++-    ctx.actions.run(
++-        executable = python.interpreter.path,
++-        outputs = [installed_wheel],
++-        inputs = depset(ctx.files.wheel, transitive = [python.files]),
++-        arguments = args,
++-        env = deterministic_env(),
++-        progress_message = "Installing %s wheel" % wheel_info.pkg,
++-        mnemonic = "CopyWheel",
++-    )
++-    
+++    _empty_directory(ctx, installed_wheel, "CopyWheel", "Using system Python package for %s" % wheel_info.pkg)
++     return installed_wheel
++ 
++ def _pip_install_impl(ctx):
++diff --git rules_poetry/poetry.bzl rules_poetry/poetry.bzl
++index 32991e2..3e27600 100644
++--- rules_poetry/poetry.bzl
+++++ rules_poetry/poetry.bzl
++@@ -20,6 +20,26 @@ SUPPORTED_PLATFORMS = [
++     "win32!x86_64",
++ ]
++ 
+++def _toml_to_json_args(path):
+++    return [
+++        "-c",
+++        """
+++import json
+++import sys
+++
+++try:
+++    import tomllib
+++except ModuleNotFoundError:
+++    import tomli as tomllib
+++
+++with open(sys.argv[1], "rb") as handle:
+++    data = tomllib.load(handle)
+++
+++json.dump(data, sys.stdout, default=str)
+++""",
+++        path,
+++    ]
+++
++ def _clean_name(name):
++     return name.lower().replace("-", "_").replace(".", "_")
++ 
++@@ -68,18 +88,7 @@ def _resolve_python_interpreter(rctx):
++ def _mapping(repository_ctx):
++     python_interpreter = _resolve_python_interpreter(repository_ctx)
++     result = repository_ctx.execute(
++-        [
++-            python_interpreter,
++-            repository_ctx.path(repository_ctx.attr._script),
++-            "-i",
++-            repository_ctx.path(repository_ctx.attr.pyproject),
++-            "-o",
++-            "-",
++-            "--if",
++-            "toml",
++-            "--of",
++-            "json",
++-        ],
+++        [python_interpreter] + _toml_to_json_args(repository_ctx.path(repository_ctx.attr.pyproject)),
++     )
++ 
++     if result.return_code:
*** 850 LINES SKIPPED ***