git: f09187effdb3 - main - databases/mongodb90: build on aarch64
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 16 Oct 2026 07:50:01 UTC
The branch main has been updated by ronald:
URL: https://cgit.FreeBSD.org/ports/commit/?id=f09187effdb3db1d3e5097d0b79dec9ac85cc1fb
commit f09187effdb3db1d3e5097d0b79dec9ac85cc1fb
Author: Ronald Klop <ronald@FreeBSD.org>
AuthorDate: 2026-10-14 14:49:44 +0000
Commit: Ronald Klop <ronald@FreeBSD.org>
CommitDate: 2026-10-16 07:49:48 +0000
databases/mongodb90: build on aarch64
Use --batch just like mongodb80.
Remove huge local bazel-cache distfile by downloading the original distfiles.
---
databases/mongodb90/Makefile | 154 ++-
databases/mongodb90/Makefile.bazel-cache | 154 +--
databases/mongodb90/Makefile.crates | 671 ++++++++++
databases/mongodb90/distinfo | 1402 +++++++++++++++++++-
databases/mongodb90/files/bazel-cache-add.py | 60 +
databases/mongodb90/files/bazel-distfiles.py | 250 ++++
databases/mongodb90/files/patch-MODULE.bazel | 9 +-
.../files/patch-bazel_cargo__bindeps.lock | 90 +-
databases/mongodb90/files/patch-bazel_crates.lock | 248 +++-
...h-bazel_rules__rust_freebsd__host__triple.patch | 44 +-
...zel_rules__rust_freebsd__local__toolchain.patch | 102 ++
...lchains_cc_mongo__wasm_toolchain_wasi__repo.bzl | 39 +-
12 files changed, 3021 insertions(+), 202 deletions(-)
diff --git a/databases/mongodb90/Makefile b/databases/mongodb90/Makefile
index d71212a8f531..a9959ddb50eb 100644
--- a/databases/mongodb90/Makefile
+++ b/databases/mongodb90/Makefile
@@ -1,18 +1,71 @@
PORTNAME= mongodb
DISTVERSIONPREFIX= r
DISTVERSION= 9.0.0-alpha1
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= databases net
-MASTER_SITES+= LOCAL/ronald:mongodb_bazel \
+MASTER_SITES+= https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VERSION:R}/:wasi_sdk \
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
+# The wasm32-wasip2 sysroot and compiler-rt builtins of wasi-sdk, see
+# post-extract and the wasi_repo.bzl patch. The version comes from
+# ${WRKSRC}/bazel/toolchains/cc/mongo_wasm/toolchain/wasi_repo.bzl.
+WASI_SDK_VERSION= 33.0
+WASI_SYSROOT_DISTFILE= wasi-sysroot-${WASI_SDK_VERSION}+m.tar.gz
+WASI_LIBCLANG_RT_DISTFILE= libclang_rt-${WASI_SDK_VERSION}+m.tar.gz
+DISTFILES+= ${BAZEL_REGISTRY_DISTFILE}:bazel_registry \
+ ${RULES_POETRY_DISTFILE}:rules_poetry \
+ ${WASI_SYSROOT_DISTFILE}:wasi_sdk \
+ ${WASI_LIBCLANG_RT_DISTFILE}:wasi_sdk
+
+# Archives downloaded by Bazel as "group site distfile". They are added to the
+# Bazel repository cache in post-extract instead of being extracted. Most are
+# Bazel modules: the bazel-central-registry has their URLs in
+# modules/<name>/<version>/source.json. To find the full list after an update,
+# build once with an empty repository cache without --repository_disable_download.
+BAZEL_DISTFILES= \
+ apple_support https://github.com/bazelbuild/apple_support/releases/download/1.24.1/ apple_support.1.24.1.tar.gz \
+ aspect_bazel_lib https://github.com/bazel-contrib/bazel-lib/releases/download/v2.13.0/ bazel-lib-v2.13.0.tar.gz \
+ aspect_rules_js https://github.com/aspect-build/rules_js/releases/download/v2.1.3/ rules_js-v2.1.3.tar.gz \
+ bats_core https://github.com/bats-core/bats-core/archive/v1.10.0.tar.gz?dummy=/ bats-core-1.10.0.tar.gz \
+ bazel_clang_tidy https://github.com/mongodb-forks/bazel_clang_tidy/archive/refs/tags/v1.7.tar.gz?dummy=/ bazel_clang_tidy-1.7.tar.gz \
+ bazel_features https://github.com/bazel-contrib/bazel_features/releases/download/v1.37.0/ bazel_features-v1.37.0.tar.gz \
+ bazel_skylib https://github.com/bazelbuild/bazel-skylib/releases/download/1.9.0/ bazel-skylib-1.9.0.tar.gz \
+ buildifier_prebuilt https://github.com/keith/buildifier-prebuilt/archive/refs/tags/6.4.0.tar.gz?dummy=/ buildifier-prebuilt-6.4.0.tar.gz \
+ platforms https://github.com/bazelbuild/platforms/releases/download/0.0.11/ platforms-0.0.11.tar.gz \
+ rules_cc https://github.com/bazelbuild/rules_cc/releases/download/0.2.10/ rules_cc-0.2.10.tar.gz \
+ rules_foreign_cc https://github.com/bazel-contrib/rules_foreign_cc/releases/download/0.15.1/ rules_foreign_cc-0.15.1.tar.gz \
+ rules_go https://github.com/bazelbuild/rules_go/releases/download/v0.50.1/ rules_go-v0.50.1.zip \
+ rules_java https://github.com/bazelbuild/rules_java/releases/download/8.6.1/ rules_java-8.6.1.tar.gz \
+ rules_kotlin https://github.com/bazelbuild/rules_kotlin/releases/download/v1.9.6/ rules_kotlin-v1.9.6.tar.gz \
+ rules_license https://github.com/bazelbuild/rules_license/releases/download/1.0.0/ rules_license-1.0.0.tar.gz \
+ rules_multitool https://github.com/theoremlp/rules_multitool/releases/download/v0.4.0/ rules_multitool-0.4.0.tar.gz \
+ rules_nodejs https://github.com/bazel-contrib/rules_nodejs/releases/download/v6.3.0/ rules_nodejs-v6.3.0.tar.gz \
+ rules_perl https://github.com/bazel-contrib/rules_perl/archive/refs/tags/0.2.4.tar.gz?dummy=/ rules_perl-0.2.4.tar.gz \
+ rules_pkg https://github.com/bazelbuild/rules_pkg/releases/download/1.2.0/ rules_pkg-1.2.0.tar.gz \
+ rules_proto https://github.com/bazelbuild/rules_proto/releases/download/7.1.0/ rules_proto-7.1.0.tar.gz \
+ rules_python https://github.com/bazel-contrib/rules_python/releases/download/1.8.5/ rules_python-1.8.5.tar.gz \
+ rules_rust https://github.com/bazelbuild/rules_rust/releases/download/0.69.0/ rules_rust-0.69.0.tar.gz \
+ rules_shell https://github.com/bazelbuild/rules_shell/releases/download/v0.6.1/ rules_shell-v0.6.1.tar.gz \
+ spidermonkey_wasi https://mdb-build-public.s3.amazonaws.com/spidermonkey-wasm/FIREFOX_140_12_0esr_RELEASE/spidermonkey-wasip2-release.tar.gz?dummy=/ spidermonkey-wasip2-release-FIREFOX_140_12_0esr_RELEASE.tar.gz
+# npm packages downloaded by rules_js, see ${WRKSRC}/pnpm-lock.yaml.
+BAZEL_NPM_DISTFILES= \
+ npm_eslint https://registry.npmjs.org/eslint/-/ eslint-9.19.0.tgz \
+ npm_prettier https://registry.npmjs.org/prettier/-/ prettier-3.4.2.tgz
+
+.for group site distfile in ${BAZEL_DISTFILES} ${BAZEL_NPM_DISTFILES}
+MASTER_SITES+= ${site}:${group}
+DISTFILES+= ${distfile}:${group}
+_BAZEL_NOEXTRACT+= N${distfile}
+.endfor
+.for group site distfile in ${BAZEL_DISTFILES}
+_BAZEL_CACHE_ARGS+= ${_DISTDIR}/${distfile}
+.endfor
+.for group site distfile in ${BAZEL_NPM_DISTFILES}
+_BAZEL_CACHE_ARGS+= --npm ${_DISTDIR}/${distfile} ${site}${distfile}
+.endfor
MAINTAINER= ronald@FreeBSD.org
COMMENT= MongoDB Community Edition (9.0.x Branch)
@@ -52,7 +105,8 @@ 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
+USES= cargo compiler:c++20-lang cpe gmake pkgconfig python:build \
+ shebangfix ssl
CPE_PRODUCT= mongodb
# mozjs tag comes from ${WRKSRC}/src/third_party/mozjs/scripts/import.sh
@@ -64,7 +118,6 @@ 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
@@ -75,6 +128,19 @@ CONFIGURE_ARGS= ${MOZJS_ARCH} \
freebsd
CONFIGURE_ENV+= PYTHON3="${PYTHON_CMD}"
+# The crates in Makefile.crates are used by rules_rust from the Bazel
+# repository cache and by cargo while bootstrapping cargo-bazel, see
+# post-extract. rules_rust uses lang/rust instead of downloading a Rust
+# toolchain, see the freebsd_local_toolchain.patch.
+CARGO_BUILD= no
+CARGO_CONFIGURE= no
+CARGO_INSTALL= no
+CARGO_TEST= no
+CARGO_CARGOLOCK= ${WRKSRC}/bazel/crates.toml
+CARGO_VENDOR_DIR= ${WRKDIR}/cargo-crates
+RULES_RUST_VERSION= 0.69.0
+RULES_RUST_WRKSRC= ${WRKDIR}/rules_rust-${RULES_RUST_VERSION}
+
BAZEL= ${LOCALBASE}/bin/bazel
BAZEL_OUTPUT_USER_ROOT= ${WRKDIR}/bazel
BAZEL_REPOSITORY_CACHE=${WRKDIR}/bazel-repository-cache
@@ -85,7 +151,6 @@ BAZEL_ENV= BAZEL_SH=${LOCALBASE}/bin/bash \
CC="${CC}" \
CXX="${CXX}" \
HOME=${WRKDIR} \
- JAVA_HOME=${JAVA_HOME} \
MONGO_USE_SYSTEM_PYTHON=1 \
PYTHON_CMD=${PYTHON_CMD} \
TMPDIR=${WRKDIR}
@@ -102,12 +167,15 @@ BAZEL_ARGS= --repository_cache=${BAZEL_REPOSITORY_CACHE} \
--action_env=AR=llvm-ar \
--action_env=CC=${CC} \
--action_env=CXX=${CXX} \
+ --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 \
+ --repo_env=CARGO_BAZEL_SKIP_DIGEST_CHECK=1 \
--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} \
+ --repo_env=RULES_RUST_LOCAL_TOOLCHAIN=${LOCALBASE} \
+ --repo_env=WASI_SDK_DIR=${WASI_SDK_WRKSRC} \
--build_enterprise=False \
--enterprise_feature_all=False \
--allocator=system \
@@ -141,6 +209,7 @@ CONFLICTS_INSTALL= mongodb[0-9][0-9]
BINARY_ALIAS= python3=${PYTHON_CMD}
EXTRACT_AFTER_ARGS= --no-same-owner --no-same-permissions
+EXTRACT_ONLY= ${_DISTFILES:N${WASI_SYSROOT_DISTFILE}:N${WASI_LIBCLANG_RT_DISTFILE}:${_BAZEL_NOEXTRACT:ts:}}
# This ports is only following the Major Release.
# https://docs.mongodb.com/manual/reference/versioning/
@@ -168,6 +237,7 @@ 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
+WASI_SDK_WRKSRC= ${WRKDIR}/wasi-sdk
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}
@@ -203,15 +273,40 @@ 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}\""
+post-patch:
+ ${PATCH} -d ${RULES_POETRY_WRKSRC} -p0 < ${WRKSRC}/bazel/rules_poetry/rules_poetry.patch
+
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
+# Bazel finds the files it downloads in its repository cache by sha256, which
+# is also the checksum of a crate in Cargo.lock and of a module in its
+# source.json. BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0 makes Bazel
+# find them without the id- files of the download URLs. With downloads
+# disabled, Bazel also reads the files of the file:// registry from the cache.
+ ${PYTHON_CMD} ${FILESDIR}/bazel-cache-add.py ${BAZEL_REPOSITORY_CACHE} \
+ ${CARGO_CRATES:S|^|${_DISTDIR}/${CARGO_DIST_SUBDIR}/|:S|$|${CARGO_CRATE_EXT}|} \
+ ${BAZEL_REGISTRY_WRKSRC} ${_BAZEL_CACHE_ARGS}
+# Assemble the parts of the wasi-sdk used with the native clang22: the
+# wasm32-wasip2 sysroot with exceptions, the compiler-rt builtins and the clang
+# resource headers.
+ ${MKDIR} ${WASI_SDK_WRKSRC}/share/wasi-sysroot ${WASI_SDK_WRKSRC}/lib/clang/22/lib
+ ${TAR} -xf ${_DISTDIR}/${WASI_SYSROOT_DISTFILE} -C ${WASI_SDK_WRKSRC}/share/wasi-sysroot \
+ --strip-components 1 --exclude llvm-lto --exclude noeh \
+ ${WASI_SYSROOT_DISTFILE:S/.tar.gz$//:S|$|/include/c++|} \
+ ${WASI_SYSROOT_DISTFILE:S/.tar.gz$//:S|$|/include/wasm32-wasip2|} \
+ ${WASI_SYSROOT_DISTFILE:S/.tar.gz$//:S|$|/lib/wasm32-wasip2|} \
+ ${WASI_SYSROOT_DISTFILE:S/.tar.gz$//:S|$|/share|}
+ ${TAR} -xf ${_DISTDIR}/${WASI_LIBCLANG_RT_DISTFILE} -C ${WASI_SDK_WRKSRC}/lib/clang/22/lib \
+ --strip-components 1 ${WASI_LIBCLANG_RT_DISTFILE:S/.tar.gz$//:S|$|/wasm32-unknown-wasip2|}
+ ${LN} -s ${LOCALBASE}/llvm22/lib/clang/22/include ${WASI_SDK_WRKSRC}/lib/clang/22/include
+# cargo-bazel is bootstrapped with cargo using HOME=${WRKDIR}.
+ ${MKDIR} ${WRKDIR}/.cargo
+ ${PRINTF} "[source.cargo]\ndirectory = '%s'\n[source.crates-io]\nreplace-with = 'cargo'\n" \
+ ${CARGO_VENDOR_DIR} > ${WRKDIR}/.cargo/config.toml
do-build:
${MKDIR} ${BAZEL_REPOSITORY_CACHE}
@@ -234,4 +329,37 @@ do-install:
do-test:
${SH} ${FILESDIR}/make.test.sh "${STAGEDIR}${PREFIX}/bin"
+# The FreeBSD entries in files/patch-bazel_crates.lock and
+# files/patch-bazel_cargo__bindeps.lock come from a repin: run bazel cquery
+# with --repo_env=CARGO_BAZEL_REPIN=1, CARGO_BAZEL_REPIN_ONLY=crates (or
+# cargo_bindeps) and CARGO_NET_OFFLINE=false, after cargo-bazel has been
+# bootstrapped and with ${WRKDIR}/.cargo/config.toml moved away. The
+# cargo_bindeps repin needs a cargo that reports a -nightly version (a wrapper
+# script setting RUSTC_BOOTSTRAP=1) in RULES_RUST_LOCAL_TOOLCHAIN.
+
+# Regenerate Makefile.crates with the crates used by mongodb (its Cargo.lock
+# files) and by rules_rust: the cargo-bazel bootstrap (its Cargo.lock), the
+# cargo tools (3rdparty/crates/defs.bzl) and tinyjson.
+# Run "make makesum" afterwards.
+make-crates: extract
+ ${MKDIR} ${RULES_RUST_WRKSRC}
+ ${TAR} -xf ${BAZEL_REPOSITORY_CACHE}/content_addressable/sha256/$$(${SED} -n \
+ 's/.*"integrity": "sha256-\(.*\)",/\1/p' \
+ ${BAZEL_REGISTRY_WRKSRC}/modules/rules_rust/${RULES_RUST_VERSION}/source.json | \
+ b64decode -r | od -An -tx1 | ${TR} -d ' \n')/file \
+ -C ${RULES_RUST_WRKSRC} cargo/3rdparty/crates/defs.bzl \
+ crate_universe/Cargo.lock rust/private/repository_utils.bzl
+ { for f in ${WRKSRC}/bazel/crates.toml ${WRKSRC}/bazel/cargo_bindeps.toml \
+ ${RULES_RUST_WRKSRC}/crate_universe/Cargo.lock; do \
+ ${_CARGO_AWK} ${SCRIPTSDIR}/cargo-crates.awk $$f; \
+ done; \
+ ${SED} -n 's|.*"https://static.crates.io/crates/\([^/]*\)/\([^/]*\)/download".*|\1-\2|p' \
+ ${RULES_RUST_WRKSRC}/cargo/3rdparty/crates/defs.bzl; \
+ ${SED} -n 's|.*static.crates.io/crates/tinyjson/\(tinyjson-.*\)\.crate.*|\1|p' \
+ ${RULES_RUST_WRKSRC}/rust/private/repository_utils.bzl; } | \
+ ${SED} -e 's/^CARGO_CRATES=//' -e 's/[[:space:]\\]//g' | ${GREP} -v '^$$' | ${SORT} -u | \
+ ${AWK} '{ c[n++] = $$0 } END { s = "CARGO_CRATES="; \
+ for (i = 0; i < n; i++) { printf "%s\t%s%s\n", s, c[i], (i < n - 1 ? " \\" : ""); s = "\t" } }' \
+ > ${MASTERDIR}/Makefile.crates
+
.include <bsd.port.post.mk>
diff --git a/databases/mongodb90/Makefile.bazel-cache b/databases/mongodb90/Makefile.bazel-cache
index 1fd239863c22..a536a1b594fd 100644
--- a/databases/mongodb90/Makefile.bazel-cache
+++ b/databases/mongodb90/Makefile.bazel-cache
@@ -1,15 +1,19 @@
-# Helper for generating the offline Bazel repository cache distfile.
+# Helper for regenerating BAZEL_DISTFILES and BAZEL_NPM_DISTFILES in the port
+# Makefile after an update.
#
# Usage:
# make -f Makefile.bazel-cache
#
+# This configures the port without the Bazel distfiles, lets Bazel analyse
+# ${ALL_TARGET} with an empty repository cache and downloads enabled and prints
+# the archives Bazel downloaded as BAZEL_DISTFILES and BAZEL_NPM_DISTFILES
+# (also saved in ${BAZEL_DISTFILES_MK}). Replace them in the Makefile and run
+# "make makesum". Run "make make-crates" first when the Cargo.lock files
+# changed, crates are not part of these lists.
+#
# 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
@@ -17,105 +21,41 @@ 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}"
+.for var in ALL_TARGET BAZEL BAZEL_ARGS BAZEL_DISTFILES BAZEL_ENV \
+ BAZEL_NPM_DISTFILES BAZEL_REGISTRY_WRKSRC BAZEL_STARTUP_ARGS \
+ DISTINFO_FILE FILESDIR MKDIR PYTHON_CMD RM SETENV WRKDIR WRKSRC
+${var}!= ${PORT_MAKE} -V ${var}
+.endfor
+
+BAZEL_DISTFILES_ROOT= ${WRKDIR}/bazel-distfiles
+BAZEL_DISTFILES_CACHE= ${BAZEL_DISTFILES_ROOT}/repository-cache
+BAZEL_DISTFILES_OUTPUT= ${BAZEL_DISTFILES_ROOT}/output
+BAZEL_DISTFILES_MK= ${BAZEL_DISTFILES_ROOT}/bazel-distfiles.mk
+BAZEL_DISTFILES_STARTUP_ARGS= ${BAZEL_STARTUP_ARGS:N--output_user_root=*} \
+ --output_user_root=${BAZEL_DISTFILES_OUTPUT}
+# Without the canonical ids Bazel stores no id- files, which bazel-distfiles.py
+# uses to recognise download URLs.
+BAZEL_DISTFILES_ARGS= ${BAZEL_ARGS:N--repository_disable_download:N--repository_cache=*:N--repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=*} \
+ --repository_cache=${BAZEL_DISTFILES_CACHE}
+
+.PHONY: all bazel-distfiles print-bazel-distfiles clean-bazel-distfiles
+
+all: bazel-distfiles
+
+bazel-distfiles:
+ ${PORT_MAKE} BAZEL_DISTFILES= BAZEL_NPM_DISTFILES= configure
+ ${RM} -r ${BAZEL_DISTFILES_ROOT}
+ ${MKDIR} ${BAZEL_DISTFILES_CACHE}
+ cd ${WRKSRC} && ${SETENV} ${BAZEL_ENV} ${BAZEL} ${BAZEL_DISTFILES_STARTUP_ARGS} \
+ build --nobuild ${BAZEL_DISTFILES_ARGS} ${ALL_TARGET}
+ ${MAKE} -f ${.CURDIR}/Makefile.bazel-cache print-bazel-distfiles
+
+print-bazel-distfiles:
+ ${PYTHON_CMD} ${FILESDIR}/bazel-distfiles.py ${BAZEL_DISTFILES_CACHE} \
+ ${BAZEL_REGISTRY_WRKSRC} ${DISTINFO_FILE} \
+ ${WRKSRC} ${BAZEL_DISTFILES_OUTPUT} \
+ -- "${BAZEL_DISTFILES}" "${BAZEL_NPM_DISTFILES}" > ${BAZEL_DISTFILES_MK}
+ @cat ${BAZEL_DISTFILES_MK}
+
+clean-bazel-distfiles:
+ ${RM} -r ${BAZEL_DISTFILES_ROOT}
diff --git a/databases/mongodb90/Makefile.crates b/databases/mongodb90/Makefile.crates
new file mode 100644
index 000000000000..9d74d9608b1a
--- /dev/null
+++ b/databases/mongodb90/Makefile.crates
@@ -0,0 +1,671 @@
+CARGO_CRATES= addr2line-0.26.1 \
+ adler2-2.0.0 \
+ ahash-0.8.11 \
+ aho-corasick-1.0.2 \
+ aho-corasick-1.1.4 \
+ allocator-api2-0.2.18 \
+ allocator-api2-0.2.21 \
+ ambient-authority-0.0.2 \
+ android_system_properties-0.1.5 \
+ anstream-0.6.18 \
+ anstream-1.0.0 \
+ anstyle-1.0.10 \
+ anstyle-1.0.14 \
+ anstyle-parse-0.2.1 \
+ anstyle-parse-1.0.0 \
+ anstyle-query-1.0.0 \
+ anstyle-query-1.1.5 \
+ anstyle-wincon-3.0.11 \
+ anstyle-wincon-3.0.6 \
+ anyhow-1.0.102 \
+ anyhow-1.0.98 \
+ arbitrary-1.4.2 \
+ arc-swap-1.6.0 \
+ arrayvec-0.7.4 \
+ async-trait-0.1.89 \
+ atomic-waker-1.1.2 \
+ autocfg-1.1.0 \
+ autocfg-1.5.0 \
+ base64-0.22.1 \
+ beef-0.5.2 \
+ bitflags-1.3.2 \
+ bitflags-2.11.0 \
+ bitflags-2.4.1 \
+ bitmaps-2.1.0 \
+ block-buffer-0.10.4 \
+ borsh-1.5.3 \
+ bstr-1.6.0 \
+ bumpalo-3.20.2 \
+ bytes-1.11.1 \
+ camino-1.1.9 \
+ cap-fs-ext-3.4.5 \
+ cap-net-ext-3.4.5 \
+ cap-primitives-3.4.5 \
+ cap-rand-3.4.5 \
+ cap-std-3.4.5 \
+ cap-time-ext-3.4.5 \
+ cargo-lock-10.1.0 \
+ cargo-platform-0.1.9 \
+ cargo-util-schemas-0.3.1 \
+ cargo_metadata-0.19.2 \
+ cargo_toml-0.20.5 \
+ cargo_toml-0.22.1 \
+ cc-1.2.59 \
+ cfg-expr-0.18.0 \
+ cfg-if-1.0.0 \
+ cfg-if-1.0.4 \
+ cfg_aliases-0.2.1 \
+ clap-4.5.37 \
+ clap-4.6.0 \
+ clap_builder-4.5.37 \
+ clap_builder-4.6.0 \
+ clap_complete-4.6.0 \
+ clap_derive-4.5.32 \
+ clap_derive-4.6.0 \
+ clap_lex-0.7.4 \
+ clap_lex-1.1.0 \
+ clru-0.6.1 \
+ cobs-0.3.0 \
+ colorchoice-1.0.0 \
+ colorchoice-1.0.5 \
+ core-foundation-sys-0.8.7 \
+ cpp_demangle-0.4.5 \
+ cpufeatures-0.2.17 \
+ cpufeatures-0.2.9 \
+ cranelift-assembler-x64-0.131.1 \
+ cranelift-assembler-x64-meta-0.131.1 \
+ cranelift-bforest-0.131.1 \
+ cranelift-bitset-0.131.1 \
+ cranelift-codegen-0.131.1 \
+ cranelift-codegen-meta-0.131.1 \
+ cranelift-codegen-shared-0.131.1 \
+ cranelift-control-0.131.1 \
+ cranelift-entity-0.131.1 \
+ cranelift-frontend-0.131.1 \
+ cranelift-isle-0.131.1 \
+ cranelift-native-0.131.1 \
+ cranelift-srcgen-0.131.1 \
+ crates-index-3.7.0 \
+ crc32fast-1.3.2 \
+ crc32fast-1.5.0 \
+ crossbeam-channel-0.5.8 \
+ crossbeam-deque-0.8.6 \
+ crossbeam-epoch-0.9.18 \
+ crossbeam-utils-0.8.16 \
+ crossbeam-utils-0.8.21 \
+ crypto-common-0.1.6 \
+ crypto-common-0.1.7 \
+ debugid-0.8.0 \
+ digest-0.10.7 \
+ directories-next-2.0.0 \
+ dirs-sys-next-0.1.2 \
+ displaydoc-0.2.5 \
+ dunce-1.0.4 \
+ either-1.15.0 \
+ either-1.9.0 \
+ embedded-io-0.4.0 \
+ embedded-io-0.6.1 \
+ encoding_rs-0.8.33 \
+ encoding_rs-0.8.35 \
+ env_filter-1.0.1 \
+ env_logger-0.10.2 \
+ env_logger-0.11.10 \
+ equivalent-1.0.1 \
+ equivalent-1.0.2 \
+ erased-serde-0.4.5 \
+ errno-0.3.11 \
+ errno-0.3.14 \
+ escape8259-0.5.3 \
+ fallible-iterator-0.3.0 \
+ faster-hex-0.9.0 \
+ fastrand-2.1.1 \
+ fastrand-2.3.0 \
+ fd-lock-4.0.4 \
+ file-per-thread-logger-0.2.0 \
+ filetime-0.2.22 \
+ find-msvc-tools-0.1.9 \
+ fixedbitset-0.4.2 \
+ flate2-1.0.35 \
+ fnv-1.0.7 \
+ foldhash-0.1.5 \
+ foldhash-0.2.0 \
+ form_urlencoded-1.2.1 \
+ form_urlencoded-1.2.2 \
+ fs-set-times-0.20.3 \
+ futures-0.3.32 \
+ futures-channel-0.3.32 \
+ futures-core-0.3.32 \
+ futures-io-0.3.32 \
+ futures-sink-0.3.32 \
+ futures-task-0.3.32 \
+ futures-util-0.3.32 \
+ fxprof-processed-profile-0.8.1 \
+ generic-array-0.14.7 \
+ getrandom-0.2.17 \
+ getrandom-0.3.2 \
+ getrandom-0.3.4 \
+ getrandom-0.4.2 \
+ gimli-0.31.1 \
+ gimli-0.33.0 \
+ gix-0.70.0 \
+ gix-actor-0.33.2 \
+ gix-attributes-0.24.0 \
+ gix-bitmap-0.2.14 \
+ gix-chunk-0.4.11 \
+ gix-command-0.4.1 \
+ gix-commitgraph-0.26.0 \
+ gix-config-0.43.0 \
+ gix-config-value-0.14.11 \
+ gix-credentials-0.27.0 \
+ gix-date-0.9.3 \
+ gix-diff-0.50.0 \
+ gix-discover-0.38.0 \
+ gix-features-0.40.0 \
+ gix-filter-0.17.0 \
+ gix-fs-0.13.0 \
+ gix-glob-0.18.0 \
+ gix-hash-0.16.0 \
+ gix-hashtable-0.7.0 \
+ gix-ignore-0.13.0 \
+ gix-index-0.38.0 \
+ gix-lock-16.0.0 \
+ gix-negotiate-0.18.0 \
+ gix-object-0.47.0 \
+ gix-odb-0.67.0 \
+ gix-pack-0.57.0 \
+ gix-packetline-0.18.3 \
+ gix-packetline-blocking-0.18.2 \
+ gix-path-0.10.14 \
+ gix-pathspec-0.9.0 \
+ gix-prompt-0.9.1 \
+ gix-protocol-0.48.0 \
+ gix-quote-0.4.15 \
+ gix-ref-0.50.0 \
+ gix-refspec-0.28.0 \
+ gix-revision-0.32.0 \
+ gix-revwalk-0.18.0 \
+ gix-sec-0.10.11 \
+ gix-shallow-0.2.0 \
+ gix-submodule-0.17.0 \
+ gix-tempfile-16.0.0 \
+ gix-trace-0.1.12 \
+ gix-transport-0.45.0 \
+ gix-traverse-0.44.0 \
+ gix-url-0.29.0 \
+ gix-utils-0.1.14 \
+ gix-validate-0.9.3 \
+ gix-worktree-0.39.0 \
+ glob-0.3.2 \
+ globset-0.4.11 \
+ globwalk-0.9.1 \
+ h2-0.4.13 \
+ hashbrown-0.14.3 \
+ hashbrown-0.15.0 \
+ hashbrown-0.15.2 \
+ hashbrown-0.15.5 \
+ hashbrown-0.16.1 \
+ hashbrown-0.17.0 \
+ heck-0.5.0 \
+ hermit-abi-0.5.2 \
+ hex-0.4.3 \
+ home-0.5.5 \
+ http-1.4.0 \
+ http-body-1.0.1 \
+ http-body-util-0.1.3 \
+ httparse-1.10.1 \
+ httpdate-1.0.3 \
+ humantime-2.3.0 \
+ hyper-1.9.0 \
+ iana-time-zone-0.1.65 \
+ iana-time-zone-haiku-0.1.2 \
+ icu_collections-1.5.0 \
+ icu_collections-2.2.0 \
+ icu_locale_core-2.2.0 \
+ icu_locid-1.5.0 \
+ icu_locid_transform-1.5.0 \
+ icu_locid_transform_data-1.5.0 \
+ icu_normalizer-1.5.0 \
+ icu_normalizer-2.2.0 \
+ icu_normalizer_data-1.5.0 \
+ icu_normalizer_data-2.2.0 \
+ icu_properties-1.5.1 \
+ icu_properties-2.2.0 \
+ icu_properties_data-1.5.0 \
+ icu_properties_data-2.2.0 \
+ icu_provider-1.5.0 \
+ icu_provider-2.2.0 \
+ icu_provider_macros-1.5.0 \
+ id-arena-2.3.0 \
+ idna-1.0.3 \
+ idna-1.1.0 \
+ idna_adapter-1.2.0 \
+ idna_adapter-1.2.1 \
+ ignore-0.4.18 \
+ im-rc-15.1.0 \
+ indexmap-2.13.1 \
+ indexmap-2.14.0 \
+ indexmap-2.6.0 \
+ indexmap-2.7.1 \
+ indoc-2.0.6 \
+ io-extras-0.18.4 \
+ io-lifetimes-2.0.4 \
+ ipnet-2.12.0 \
+ is-terminal-0.4.17 \
+ is_terminal_polyfill-1.70.1 \
+ is_terminal_polyfill-1.70.2 \
+ itertools-0.14.0 \
+ itoa-1.0.18 \
+ itoa-1.0.8 \
+ ittapi-0.4.0 \
+ ittapi-sys-0.4.0 \
+ jiff-0.1.13 \
+ jiff-0.2.23 \
+ jiff-static-0.2.23 \
+ jiff-tzdb-0.1.1 \
+ jiff-tzdb-platform-0.1.1 \
+ jobserver-0.1.34 \
+ js-sys-0.3.94 \
+ json-from-wast-0.246.2 \
+ kstring-2.0.2 \
+ lazy_static-1.4.0 \
+ lazy_static-1.5.0 \
+ leb128-0.2.5 \
+ leb128fmt-0.1.0 \
+ libc-0.2.172 \
+ libc-0.2.184 \
+ libloading-0.8.9 \
+ libm-0.2.16 \
+ libredox-0.1.15 \
+ libtest-mimic-0.8.2 \
+ linux-raw-sys-0.12.1 \
+ linux-raw-sys-0.4.14 \
+ linux-raw-sys-0.4.15 \
+ linux-raw-sys-0.9.4 \
+ listenfd-1.0.2 \
+ litemap-0.7.4 \
+ litemap-0.8.2 \
+ lock_api-0.4.11 \
+ log-0.4.19 \
+ log-0.4.29 \
+ logos-0.14.4 \
+ logos-codegen-0.14.4 \
+ logos-derive-0.14.4 \
+ mach2-0.4.3 \
+ maplit-1.0.2 \
+ matchers-0.2.0 \
+ maybe-async-0.2.7 \
+ maybe-owned-0.3.4 \
+ memchr-2.6.4 \
+ memchr-2.7.4 \
+ memchr-2.8.0 \
+ memfd-0.6.5 \
+ memmap2-0.9.5 \
+ miette-7.6.0 \
+ miette-derive-7.6.0 \
+ miniz_oxide-0.8.0 \
+ mio-1.2.0 \
+ normpath-1.3.0 \
+ nu-ansi-term-0.46.0 \
+ nu-ansi-term-0.50.3 \
+ num-traits-0.2.19 \
+ object-0.39.1 \
+ once_cell-1.21.3 \
+ once_cell-1.21.4 \
+ once_cell_polyfill-1.70.2 \
+ openvino-0.9.1 \
+ openvino-finder-0.9.1 \
+ openvino-sys-0.9.1 \
+ ordered-float-2.10.1 \
+ overload-0.1.1 \
+ parking_lot-0.12.1 \
+ parking_lot_core-0.9.9 \
+ pathdiff-0.1.0 \
+ pathdiff-0.2.3 \
+ percent-encoding-2.3.1 \
+ percent-encoding-2.3.2 \
+ pest-2.7.0 \
+ pest_derive-2.7.0 \
+ pest_generator-2.7.0 \
+ pest_meta-2.7.0 \
+ petgraph-0.6.5 \
+ pin-project-lite-0.2.13 \
+ pin-project-lite-0.2.17 \
+ pkg-config-0.3.32 \
+ portable-atomic-1.13.1 \
+ portable-atomic-util-0.2.6 \
+ postcard-1.1.3 \
+ potential_utf-0.1.5 \
+ ppv-lite86-0.2.21 \
+ prettyplease-0.2.37 \
+ proc-macro2-1.0.106 \
+ proc-macro2-1.0.92 \
+ proc-macro2-1.0.93 \
+ prodash-29.0.0 \
+ pulldown-cmark-0.9.6 \
+ pulley-interpreter-44.0.1 \
+ pulley-macros-44.0.1 \
+ quote-1.0.37 \
+ quote-1.0.38 \
+ quote-1.0.45 \
+ r-efi-5.2.0 \
+ r-efi-5.3.0 \
+ r-efi-6.0.0 \
+ rand-0.8.5 \
+ rand_chacha-0.3.1 \
+ rand_core-0.6.4 \
+ rand_xoshiro-0.6.0 \
+ rayon-1.11.0 \
+ rayon-core-1.13.0 \
+ redox_syscall-0.3.5 \
+ redox_syscall-0.4.1 \
+ redox_users-0.4.6 \
+ regalloc2-0.15.1 \
+ regex-1.11.1 \
+ regex-1.12.3 \
+ regex-automata-0.3.3 \
+ regex-automata-0.4.14 \
+ regex-automata-0.4.8 \
+ regex-syntax-0.8.10 \
+ regex-syntax-0.8.5 \
+ ring-0.17.14 \
+ rustc-demangle-0.1.27 \
+ rustc-hash-2.0.0 \
+ rustc-hash-2.1.2 \
+ rustc-stable-hash-0.1.1 \
+ rustix-0.38.41 \
+ rustix-0.38.44 \
+ rustix-1.0.5 \
+ rustix-1.1.4 \
+ rustix-linux-procfs-0.1.1 \
+ rustls-0.23.40 \
+ rustls-pki-types-1.14.0 \
+ rustls-webpki-0.103.13 \
+ rustversion-1.0.22 \
+ ryu-1.0.14 \
+ ryu-1.0.23 \
+ same-file-1.0.6 \
+ scopeguard-1.2.0 \
+ semver-1.0.25 \
+ semver-1.0.26 \
+ semver-1.0.27 \
+ semver-1.0.28 \
+ serde-1.0.217 \
+ serde-1.0.219 \
+ serde-1.0.228 \
+ serde-untagged-0.1.6 \
+ serde-value-0.7.0 \
+ serde_core-1.0.228 \
+ serde_derive-1.0.217 \
+ serde_derive-1.0.219 \
+ serde_derive-1.0.228 \
+ serde_json-1.0.140 \
+ serde_json-1.0.149 \
+ serde_spanned-0.6.8 \
+ serde_spanned-0.6.9 \
+ serde_spanned-1.1.1 \
+ serde_starlark-0.1.17 \
+ serde_yaml-0.9.34+deprecated \
+ sha1_smol-1.0.0 \
+ sha2-0.10.8 \
+ sha2-0.10.9 \
+ sharded-slab-0.1.7 \
+ shell-words-1.1.0 \
+ shlex-1.3.0 \
+ signal-hook-registry-1.4.8 \
+ sized-chunks-0.6.5 \
+ slab-0.4.12 \
+ smallvec-1.13.2 \
+ smallvec-1.15.0 \
+ smallvec-1.15.1 \
+ smawk-0.3.2 \
+ smol_str-0.3.2 \
+ socket2-0.6.3 \
+ spdx-0.10.8 \
+ spdx-0.10.9 \
+ stable_deref_trait-1.2.0 \
+ stable_deref_trait-1.2.1 \
+ static_assertions-1.1.0 \
+ strsim-0.11.1 \
+ subtle-2.6.1 \
+ syn-1.0.109 \
+ syn-2.0.117 \
+ syn-2.0.90 \
+ syn-2.0.98 \
+ synstructure-0.13.1 \
+ synstructure-0.13.2 \
+ system-interface-0.27.3 \
+ target-lexicon-0.13.5 \
+ tempfile-3.19.1 \
+ tempfile-3.27.0 \
+ tera-1.20.0 \
+ termcolor-1.4.1 \
+ terminal_size-0.4.4 \
+ textwrap-0.16.2 \
+ thiserror-1.0.50 \
+ thiserror-1.0.69 \
+ thiserror-2.0.18 \
+ thiserror-2.0.4 \
+ thiserror-impl-1.0.50 \
+ thiserror-impl-1.0.69 \
+ thiserror-impl-2.0.18 \
+ thiserror-impl-2.0.4 \
+ thread_local-1.1.4 \
+ thread_local-1.1.9 \
+ tinyjson-2.5.1 \
+ tinystr-0.7.6 \
+ tinystr-0.8.3 \
+ tinyvec-1.6.0 \
+ tinyvec_macros-0.1.1 \
+ tokio-1.51.0 \
+ tokio-macros-2.7.0 \
+ tokio-rustls-0.26.4 \
+ tokio-util-0.7.18 \
+ toml-0.8.20 \
+ toml-0.8.21 \
+ toml-0.8.23 \
+ toml-0.9.12+spec-1.1.0 \
+ toml_datetime-0.6.11 \
+ toml_datetime-0.6.8 \
+ toml_datetime-0.6.9 \
+ toml_datetime-0.7.5+spec-1.1.0 \
+ toml_edit-0.22.24 \
+ toml_edit-0.22.25 \
+ toml_edit-0.22.27 \
+ toml_parser-1.1.2+spec-1.1.0 \
+ toml_write-0.1.0 \
+ toml_write-0.1.2 \
+ toml_writer-1.1.1+spec-1.1.0 \
+ tracing-0.1.41 \
+ tracing-0.1.44 \
+ tracing-attributes-0.1.28 \
+ tracing-attributes-0.1.31 \
+ tracing-core-0.1.33 \
+ tracing-core-0.1.36 \
+ tracing-log-0.2.0 \
+ tracing-subscriber-0.3.19 \
+ tracing-subscriber-0.3.23 \
+ try-lock-0.2.5 \
+ typeid-1.0.2 \
+ typenum-1.16.0 \
+ typenum-1.19.0 \
+ ucd-trie-0.1.6 \
+ uluru-3.0.0 \
+ unic-char-property-0.9.0 \
+ unic-char-range-0.9.0 \
+ unic-common-0.9.0 \
+ unic-segment-0.9.0 \
+ unic-ucd-segment-0.9.0 \
+ unic-ucd-version-0.9.0 \
+ unicase-2.9.0 \
+ unicode-bom-2.0.3 \
+ unicode-ident-1.0.10 \
+ unicode-ident-1.0.16 \
+ unicode-ident-1.0.24 \
+ unicode-linebreak-0.1.5 \
+ unicode-normalization-0.1.22 \
+ unicode-width-0.1.14 \
+ unicode-width-0.2.0 \
+ unicode-width-0.2.2 \
+ unicode-xid-0.2.6 \
+ unsafe-libyaml-0.2.11 \
+ untrusted-0.9.0 \
+ url-2.5.4 \
+ url-2.5.8 \
+ utf16_iter-1.0.5 \
+ utf8_iter-1.0.4 \
+ utf8parse-0.2.1 \
+ utf8parse-0.2.2 \
+ uuid-1.23.0 \
+ valuable-0.1.0 \
+ valuable-0.1.1 \
+ version_check-0.9.4 \
+ version_check-0.9.5 \
+ wac-graph-0.6.1 \
+ wac-parser-0.6.1 \
+ wac-types-0.6.1 \
+ walkdir-2.5.0 \
+ want-0.3.1 \
+ wasi-0.11.1+wasi-snapshot-preview1 \
+ wasi-0.14.2+wasi-0.2.4 \
+ wasi-common-44.0.1 \
+ wasi-preview1-component-adapter-provider-37.0.3 \
+ wasip2-1.0.2+wasi-0.2.9 \
+ wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06 \
+ wasm-bindgen-0.2.117 \
+ wasm-bindgen-macro-0.2.117 \
+ wasm-bindgen-macro-support-0.2.117 \
*** 2689 LINES SKIPPED ***