From 8f86215addace22e0af644c7f9ebc9a578cae539 Mon Sep 17 00:00:00 2001
From: "Marvin, the Aspect bot"
Date: Wed, 14 Jan 2026 18:23:45 -0800
Subject: [PATCH 001/367] aspect_rules_js@3.0.0-alpha.4 (#7149)
Release:
https://github.com/aspect-build/rules_js/releases/tag/v3.0.0-alpha.4
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: jbedard <89246+jbedard@users.noreply.github.com>
---
.../3.0.0-alpha.4/MODULE.bazel | 328 ++++++++++++++++++
.../3.0.0-alpha.4/attestations.json | 17 +
.../patches/module_dot_bazel_version.patch | 13 +
.../3.0.0-alpha.4/presubmit.yml | 12 +
.../aspect_rules_js/3.0.0-alpha.4/source.json | 10 +
modules/aspect_rules_js/metadata.json | 3 +-
6 files changed, 382 insertions(+), 1 deletion(-)
create mode 100644 modules/aspect_rules_js/3.0.0-alpha.4/MODULE.bazel
create mode 100644 modules/aspect_rules_js/3.0.0-alpha.4/attestations.json
create mode 100644 modules/aspect_rules_js/3.0.0-alpha.4/patches/module_dot_bazel_version.patch
create mode 100644 modules/aspect_rules_js/3.0.0-alpha.4/presubmit.yml
create mode 100644 modules/aspect_rules_js/3.0.0-alpha.4/source.json
diff --git a/modules/aspect_rules_js/3.0.0-alpha.4/MODULE.bazel b/modules/aspect_rules_js/3.0.0-alpha.4/MODULE.bazel
new file mode 100644
index 00000000000..4b4509a4c91
--- /dev/null
+++ b/modules/aspect_rules_js/3.0.0-alpha.4/MODULE.bazel
@@ -0,0 +1,328 @@
+"aspect-build/rules_js"
+
+module(
+ name = "aspect_rules_js",
+ bazel_compatibility = [">=7.6.0"],
+ compatibility_level = 1,
+ version = "3.0.0-alpha.4",
+)
+
+# Lower-bounds (minimum) versions for direct runtime dependencies.
+# Do not bump these unless rules_js requires a newer version to function.
+bazel_dep(name = "tar.bzl", version = "0.6.0")
+bazel_dep(name = "yq.bzl", version = "0.3.2")
+bazel_dep(name = "jq.bzl", version = "0.4.0")
+bazel_dep(name = "aspect_tools_telemetry", version = "0.3.3")
+bazel_dep(name = "bazel_features", version = "1.9.0")
+bazel_dep(name = "bazel_lib", version = "3.0.0")
+bazel_dep(name = "bazel_skylib", version = "1.5.0")
+bazel_dep(name = "platforms", version = "0.0.5")
+bazel_dep(name = "rules_nodejs", version = "6.6.2")
+
+# Ensure any version of aspect_bazel_lib used includes:
+# https://github.com/bazel-contrib/bazel-lib/commit/371362199e5e5bde58aeb15b54ea6cfb164af337
+# https://github.com/bazel-contrib/bazel-lib/commit/ceaff54210291292f35d03bd4bbc0b6ceb40e77a
+# https://github.com/bazel-contrib/bazel-lib/commit/27a9e7af51c0f806f823425a03283ae487d3a953
+# https://github.com/bazel-contrib/bazel-lib/commit/e56aa707b72364bb1cc6f92580cb12ff88dfc1b4
+# https://github.com/bazel-contrib/bazel-lib/commit/2befef614904d0ebe5161beb271ac31c83e82fd2
+bazel_dep(name = "aspect_bazel_lib", version = "2.22.5", repo_name = None)
+
+tel = use_extension("@aspect_tools_telemetry//:extension.bzl", "telemetry")
+use_repo(tel, "aspect_tools_telemetry_report")
+
+node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
+use_repo(node, "nodejs_toolchains")
+use_repo(node, "nodejs_darwin_amd64")
+use_repo(node, "nodejs_darwin_arm64")
+use_repo(node, "nodejs_linux_amd64")
+use_repo(node, "nodejs_linux_arm64")
+use_repo(node, "nodejs_linux_ppc64le")
+use_repo(node, "nodejs_linux_s390x")
+use_repo(node, "nodejs_windows_amd64")
+
+# The default + public version of pnpm used by default.
+pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm")
+pnpm.pnpm(name = "pnpm")
+use_repo(pnpm, "pnpm", "pnpm__links")
+
+bazel_lib_toolchains = use_extension("@bazel_lib//lib:extensions.bzl", "toolchains")
+use_repo(
+ bazel_lib_toolchains,
+ "coreutils_darwin_amd64",
+ "coreutils_darwin_arm64",
+ "coreutils_linux_amd64",
+ "coreutils_linux_arm64",
+ "coreutils_toolchains",
+ "coreutils_windows_amd64",
+ "coreutils_windows_arm64",
+)
+
+yq_toolchain = use_extension("@yq.bzl//yq:extensions.bzl", "yq")
+use_repo(
+ yq_toolchain,
+ "yq_darwin_amd64",
+ "yq_darwin_arm64",
+ "yq_linux_amd64",
+ "yq_linux_arm64",
+ "yq_linux_ppc64le",
+ "yq_linux_s390x",
+ "yq_windows_amd64",
+)
+
+tar_toolchains = use_extension("@tar.bzl//tar:extensions.bzl", "toolchains")
+use_repo(
+ tar_toolchains,
+ "bsd_tar_toolchains",
+ "bsd_tar_toolchains_darwin_amd64",
+ "bsd_tar_toolchains_darwin_arm64",
+ "bsd_tar_toolchains_linux_amd64",
+ "bsd_tar_toolchains_linux_arm64",
+ "bsd_tar_toolchains_windows_amd64",
+ "bsd_tar_toolchains_windows_arm64",
+)
+
+####### Dev dependencies ########
+
+# Dev-only pnpm used for local testing
+pnpm10 = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm", dev_dependency = True)
+pnpm10.pnpm(
+ name = "pnpm10",
+ pnpm_version = "10.22.0",
+ pnpm_version_integrity = "sha512-vwSe/plbKPUn/StBrgR0zikYb37cs79UUIe9Yfu+uyv3U2LRMH/aCcLSiOHkmXh6wS1Py2F6l0cYpgUfLu50HA==",
+)
+use_repo(pnpm10, "pnpm10")
+
+bazel_dep(name = "bazelrc-preset.bzl", version = "1.3.0", dev_dependency = True)
+bazel_dep(name = "aspect_rules_lint", version = "1.13.0", dev_dependency = True)
+bazel_dep(name = "buildifier_prebuilt", version = "8.0.1", dev_dependency = True)
+bazel_dep(name = "rules_shell", version = "0.6.1", dev_dependency = True)
+
+host = use_extension(
+ "@bazel_lib//lib:extensions.bzl",
+ "host",
+ dev_dependency = True,
+)
+host.host()
+use_repo(host, "bazel_lib_host")
+
+node_dev = use_extension(
+ "@rules_nodejs//nodejs:extensions.bzl",
+ "node",
+ dev_dependency = True,
+)
+use_repo(node_dev, "node20_linux_amd64")
+use_repo(node_dev, "node20_darwin_arm64")
+use_repo(node_dev, "node20_darwin_amd64")
+use_repo(node_dev, "node20_linux_arm64")
+use_repo(node_dev, "node20_linux_s390x")
+use_repo(node_dev, "node20_linux_ppc64le")
+use_repo(node_dev, "node20_windows_amd64")
+use_repo(node_dev, "node22_linux_amd64")
+use_repo(node_dev, "node22_darwin_arm64")
+use_repo(node_dev, "node22_darwin_amd64")
+use_repo(node_dev, "node22_linux_arm64")
+use_repo(node_dev, "node22_linux_s390x")
+use_repo(node_dev, "node22_linux_ppc64le")
+use_repo(node_dev, "node22_windows_amd64")
+use_repo(node_dev, "node24_linux_amd64")
+use_repo(node_dev, "node24_darwin_arm64")
+use_repo(node_dev, "node24_darwin_amd64")
+use_repo(node_dev, "node24_linux_arm64")
+use_repo(node_dev, "node24_linux_s390x")
+use_repo(node_dev, "node24_linux_ppc64le")
+use_repo(node_dev, "node24_windows_amd64")
+
+# default name+version
+node_dev.toolchain()
+
+# additional custom name+versions
+node_dev.toolchain(
+ name = "node20",
+ node_version = "20.17.0",
+)
+node_dev.toolchain(
+ name = "node22",
+ node_version = "22.20.0",
+)
+node_dev.toolchain(
+ name = "node24",
+ node_version = "24.9.0",
+)
+
+############################################
+# npm dependencies used by examples
+
+npm = use_extension(
+ "@aspect_rules_js//npm:extensions.bzl",
+ "npm",
+ dev_dependency = True,
+)
+npm.npm_translate_lock(
+ name = "npm",
+ bins = {
+ # derived from "bin" attribute in node_modules/typescript/package.json
+ "typescript": [
+ "tsc=./bin/tsc",
+ "tsserver=./bin/tsserver",
+ ],
+ },
+ custom_postinstalls = {
+ "@aspect-test/c": "echo moo > cow.txt",
+ "@aspect-test/c@2.0.2": "echo mooo >> cow.txt",
+ "pngjs": "chmod -R a+X *", # fixes malformed tarball content file permissions in this package after extraction (see https://github.com/aspect-build/rules_js/issues/1637 for more details)
+ },
+ data = [
+ "//:package.json",
+ "//:pnpm-workspace.yaml",
+ "//examples/js_binary:package.json",
+ "//examples/js_lib_pkg/a:package.json",
+ "//examples/js_lib_pkg/b:package.json",
+ "//examples/linked_consumer:package.json",
+ "//examples/linked_empty_node_modules:package.json",
+ "//examples/linked_lib:package.json",
+ "//examples/linked_pkg:package.json",
+ "//examples/macro:package.json",
+ "//examples/nextjs:package.json",
+ "//examples/npm_deps:package.json",
+ "//examples/npm_deps/patches:meaning-of-life@1.0.0-pnpm.patch",
+ "//examples/npm_package/libs/lib_a:package.json",
+ "//examples/npm_package/packages/pkg_a:package.json",
+ "//examples/npm_package/packages/pkg_b:package.json",
+ "//examples/npm_package/packages/pkg_d:package.json",
+ "//examples/npm_package/packages/pkg_e:package.json",
+ "//examples/runfiles:package.json",
+ "//examples/stack_traces:package.json",
+ "//examples/vite3:package.json",
+ "//examples/vite6:package.json",
+ "//examples/webpack_cli:package.json",
+ "//js/private/coverage/bundle:package.json",
+ "//js/private/devserver/src:package.json",
+ "//js/private/test/image:package.json",
+ "//js/private/test/js_run_devserver:package.json",
+ "//js/private/test/node-patches:package.json",
+ "//js/private/worker/src:package.json",
+ "//npm/private/lifecycle:package.json",
+ "//npm/private/test:package.json",
+ "//npm/private/test:vendored/lodash-4.17.21.tgz",
+ "//npm/private/test/npm_package:package.json",
+ "//npm/private/test/npm_package_publish:package.json",
+ "//npm/private/test/vendored/is-odd:package.json",
+ "//npm/private/test/vendored/semver-max:package.json",
+ ],
+ generate_bzl_library_targets = True,
+ lifecycle_hooks = {
+ # We fetch @kubernetes/client-node from source and it has a `prepare` lifecycle hook that needs to be run
+ # which runs the `build` package.json script: https://github.com/kubernetes-client/javascript/blob/fc681991e61c6808dd26012a2331f83671a11218/package.json#L28.
+ # Here we run run build so we just run `tsc` instead of `npm run build` which ends up just running `tsc`.
+ "@kubernetes/client-node": ["build"],
+ # 'install' hook fails as it assumes the following path to `node-pre-gyp`: ./node_modules/.bin/node-pre-gyp
+ # https://github.com/stultuss/protoc-gen-grpc-ts/blob/53d52a9d0e1fe3cbe930dec5581eca89b3dde807/package.json#L28
+ "protoc-gen-grpc@2.0.3": [],
+ },
+ lifecycle_hooks_execution_requirements = {
+ "*": [
+ "no-sandbox",
+ ],
+ # If @kubernetes/client-node is not sandboxed, will fail with
+ # ```
+ # src/azure_auth.ts(97,43): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # src/azure_auth.ts(98,34): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # src/gcp_auth.ts(93,43): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # src/gcp_auth.ts(94,34): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # ```
+ # since a `jsonpath-plus@7.2.0` that is newer then the transitive dep `jsonpath-plus@0.19.0` is found outside of the sandbox that
+ # includes typings that don't match the 0.19.0 "any" usage.
+ "@kubernetes/client-node": [],
+ "@figma/nodegit": [
+ "no-sandbox",
+ "requires-network",
+ ],
+ "esbuild": [
+ "no-sandbox",
+ "requires-network",
+ ],
+ "segfault-handler": [
+ "no-sandbox",
+ "requires-network",
+ ],
+ "puppeteer": [
+ "no-remote",
+ "no-sandbox",
+ "requires-network",
+ ],
+ },
+ npmrc = "//:.npmrc",
+ package_visibility = {
+ "unused": ["//npm/private/test:__subpackages__"],
+ "@mycorp/pkg-a": [
+ "//examples:__subpackages__",
+ "//js/private/test/image:__subpackages__",
+ ],
+ "@mycorp/pkg-d": [
+ "//examples:__subpackages__",
+ "//js/private/test/image:__subpackages__",
+ ],
+ "@mycorp/pkg-e": ["//examples:__subpackages__"],
+ },
+ pnpm_lock = "//:pnpm-lock.yaml",
+ public_hoist_packages = {
+ # Instructs the linker to hoist the ms@2.1.3 npm package to `node_modules/ms` in the `examples/npm_deps` package.
+ # Similar to adding `public-hoist-pattern[]=ms` in .npmrc but with control over which version to hoist and where
+ # to hoist it. This hoisted package can be referenced by the label `//examples/npm_deps:node_modules/ms` same as
+ # other direct dependencies in the `examples/npm_deps/package.json`.
+ "ms@2.1.3": ["examples/npm_deps"],
+ },
+ update_pnpm_lock = True,
+ use_pnpm = "@pnpm10//:package/bin/pnpm.cjs",
+ verify_node_modules_ignored = "//:.bazelignore",
+ verify_patches = "//examples/npm_deps/patches:patches",
+)
+npm.npm_translate_lock(
+ name = "npm-no_optional",
+ no_optional = True,
+ npmrc = "//:.npmrc",
+ pnpm_lock = "//:pnpm-lock.yaml",
+)
+npm.npm_translate_lock(
+ name = "npm-no_dev",
+ no_dev = True,
+ npmrc = "//:.npmrc",
+ pnpm_lock = "//:pnpm-lock.yaml",
+)
+
+# Configure package exclusions using tag class
+npm.npm_exclude_package_contents(
+ package = "chalk",
+ patterns = ["**/README*"],
+)
+use_repo(
+ npm,
+ "npm",
+ "npm-no_dev",
+ "npm-no_optional",
+ "npm__es5-ext__0.10.64__links",
+ "npm__fsevents__2.3.3__links",
+ "npm__google-closure-compiler__20251111.0.0__links",
+ "npm__next__15.2.6_1315089095__links",
+ "npm__rollup__2.70.2",
+ "npm__rollup__2.70.2__links",
+ "npm__unused__0.2.2__links",
+ "npm__webpack-bundle-analyzer__4.5.0_bufferutil_4.0.8",
+)
+
+# As an example, manually import a package using explicit coordinates.
+# Just a demonstration of the syntax de-sugaring.
+npm.npm_import(
+ name = "acorn__8.4.0",
+ bins = {"acorn": "./bin/acorn"},
+ integrity = "sha512-ULr0LDaEqQrMFGyQ3bhJkLsbtrQ8QibAseGZeaSUiT/6zb9IvIkomWHJIvgvwad+hinRAgsI51JcWk2yvwyL+w==",
+ package = "acorn",
+ # Root package where to link the package store
+ root_package = "",
+ version = "8.4.0",
+)
+use_repo(
+ npm,
+ "acorn__8.4.0",
+ "acorn__8.4.0__links",
+)
diff --git a/modules/aspect_rules_js/3.0.0-alpha.4/attestations.json b/modules/aspect_rules_js/3.0.0-alpha.4/attestations.json
new file mode 100644
index 00000000000..1ea90e9ae0f
--- /dev/null
+++ b/modules/aspect_rules_js/3.0.0-alpha.4/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v3.0.0-alpha.4/source.json.intoto.jsonl",
+ "integrity": "sha256-Gcx+7K5oRZ2WtWrV8NJryn45Zuz5K3yBx6chqCyi2OQ="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v3.0.0-alpha.4/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-cCXCNeGDLMSZcaiOFM2KZ1xwUjCMXRQ5H+CB+8HUyWc="
+ },
+ "rules_js-v3.0.0-alpha.4.tar.gz": {
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v3.0.0-alpha.4/rules_js-v3.0.0-alpha.4.tar.gz.intoto.jsonl",
+ "integrity": "sha256-wU/1tEHg/EcvZjMHlFiu9oFmgAJ1EP7XE8Q3p1rjTEI="
+ }
+ }
+}
diff --git a/modules/aspect_rules_js/3.0.0-alpha.4/patches/module_dot_bazel_version.patch b/modules/aspect_rules_js/3.0.0-alpha.4/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..1601b3397c8
--- /dev/null
+++ b/modules/aspect_rules_js/3.0.0-alpha.4/patches/module_dot_bazel_version.patch
@@ -0,0 +1,13 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -3,8 +3,9 @@
+ module(
+ name = "aspect_rules_js",
+ bazel_compatibility = [">=7.6.0"],
+ compatibility_level = 1,
++ version = "3.0.0-alpha.4",
+ )
+
+ # Lower-bounds (minimum) versions for direct runtime dependencies.
+ # Do not bump these unless rules_js requires a newer version to function.
diff --git a/modules/aspect_rules_js/3.0.0-alpha.4/presubmit.yml b/modules/aspect_rules_js/3.0.0-alpha.4/presubmit.yml
new file mode 100644
index 00000000000..840022b09c8
--- /dev/null
+++ b/modules/aspect_rules_js/3.0.0-alpha.4/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: 'e2e/bzlmod'
+ matrix:
+ bazel: ['7.x', '8.x', '9.*']
+ platform: ['debian10', 'macos', 'ubuntu2004', 'windows']
+ tasks:
+ run_tests:
+ name: 'Run test module'
+ bazel: ${{ bazel }}
+ platform: ${{ platform }}
+ test_targets:
+ - '//...'
diff --git a/modules/aspect_rules_js/3.0.0-alpha.4/source.json b/modules/aspect_rules_js/3.0.0-alpha.4/source.json
new file mode 100644
index 00000000000..b2dcb350031
--- /dev/null
+++ b/modules/aspect_rules_js/3.0.0-alpha.4/source.json
@@ -0,0 +1,10 @@
+{
+ "integrity": "sha256-Uz8OuGANRQrWitNI4qJDKsRryyf9yKO5r52x/5hY3t0=",
+ "strip_prefix": "rules_js-3.0.0-alpha.4",
+ "docs_url": "https://github.com/aspect-build/rules_js/releases/download/v3.0.0-alpha.4/rules_js-v3.0.0-alpha.4.docs.tar.gz",
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v3.0.0-alpha.4/rules_js-v3.0.0-alpha.4.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-s/tOdt8b6hyu4VXCZL0yrP92NL8XjM0+iV2SJwLPLsA="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/aspect_rules_js/metadata.json b/modules/aspect_rules_js/metadata.json
index 5ddd8aeb6c0..ff53b510008 100644
--- a/modules/aspect_rules_js/metadata.json
+++ b/modules/aspect_rules_js/metadata.json
@@ -153,7 +153,8 @@
"2.8.3",
"2.9.1",
"3.0.0-alpha.2",
- "3.0.0-alpha.3"
+ "3.0.0-alpha.3",
+ "3.0.0-alpha.4"
],
"yanked_versions": {
"2.3.2": "It contains a bug that breaks the js_image_layer rule: https://github.com/aspect-build/rules_js/pull/2145"
From 4ccb38953846739ee0ea63603b9a975188212b62 Mon Sep 17 00:00:00 2001
From: Kevin Greene
Date: Wed, 14 Jan 2026 18:23:51 -0800
Subject: [PATCH 002/367] Add support for linux aarch64 to folly lib (#7147)
Closes https://github.com/bazelbuild/bazel-central-registry/issues/7146
Recent versions of folly regressed support for linux aarch64. There was
no CI checking for that platform previously because ubuntu2004_arm64 is
too old to support folly. However, now the bcr ci supports
ubuntu2204_arm64. I added that to the presubmit.yml so hopefully that
will prevent these types of regressions going forward.
The main change here is to avoid adding libunwind and libdwarf to any
deps unless the corresponding config flags are specified in the
.bazelrc. That way they are not compiled / linked unless explicitly
enabled. I could not get libunwind to compile and link with folly on
aarch64.
I also updated the README.md with all the available config options that
can be added to the .bazelrc file.
Sorry for the noise!
---
.../folly/2025.01.13.00.bcr.5/MODULE.bazel | 59 +
modules/folly/2025.01.13.00.bcr.5/README.md | 84 +
.../2025.01.13.00.bcr.5/overlay/BUILD.bazel | 15 +
.../overlay/CMake/BUILD.bazel | 4 +
.../overlay/bzl/BUILD.bazel | 0
.../overlay/bzl/cpp_library.bzl | 16 +
.../overlay/bzl/cpp_unittest.bzl | 21 +
.../bzl/folly_config_optional_defines.bzl | 52 +
.../overlay/folly/BUILD.bazel | 1453 ++++++++++++++++
.../overlay/folly/algorithm/simd/BUILD.bazel | 45 +
.../folly/algorithm/simd/detail/BUILD.bazel | 70 +
.../algorithm/simd/detail/test/BUILD.bazel | 46 +
.../folly/algorithm/simd/test/BUILD.bazel | 42 +
.../overlay/folly/channels/BUILD.bazel | 250 +++
.../overlay/folly/channels/detail/BUILD.bazel | 66 +
.../folly/channels/detail/test/BUILD.bazel | 29 +
.../overlay/folly/channels/test/BUILD.bazel | 198 +++
.../overlay/folly/chrono/BUILD.bazel | 29 +
.../overlay/folly/chrono/test/BUILD.bazel | 20 +
.../overlay/folly/cli/BUILD.bazel | 29 +
.../overlay/folly/cli/test/BUILD.bazel | 69 +
.../overlay/folly/compression/BUILD.bazel | 124 ++
.../folly/compression/elias_fano/BUILD.bazel | 40 +
.../compression/elias_fano/test/BUILD.bazel | 28 +
.../folly/compression/test/BUILD.bazel | 110 ++
.../overlay/folly/concurrency/BUILD.bazel | 167 ++
.../folly/concurrency/container/BUILD.bazel | 72 +
.../concurrency/container/test/BUILD.bazel | 69 +
.../folly/concurrency/memory/BUILD.bazel | 49 +
.../folly/concurrency/memory/test/BUILD.bazel | 64 +
.../folly/concurrency/test/BUILD.bazel | 200 +++
.../overlay/folly/container/BUILD.bazel | 345 ++++
.../folly/container/detail/BUILD.bazel | 113 ++
.../folly/container/detail/test/BUILD.bazel | 12 +
.../overlay/folly/container/test/BUILD.bazel | 486 ++++++
.../overlay/folly/coro/BUILD.bazel | 717 ++++++++
.../overlay/folly/coro/test/BUILD.bazel | 316 ++++
.../overlay/folly/crypto/BUILD.bazel | 99 ++
.../overlay/folly/crypto/detail/BUILD.bazel | 122 ++
.../overlay/folly/crypto/test/BUILD.bazel | 73 +
.../debugging/exception_tracer/BUILD.bazel | 134 ++
.../exception_tracer/test/BUILD.bazel | 58 +
.../folly/debugging/symbolizer/BUILD.bazel | 190 +++
.../debugging/symbolizer/detail/BUILD.bazel | 11 +
.../debugging/symbolizer/test/BUILD.bazel | 53 +
.../overlay/folly/detail/BUILD.bazel | 390 +++++
.../folly/detail/base64_detail/BUILD.bazel | 96 ++
.../detail/base64_detail/tests/BUILD.bazel | 34 +
.../overlay/folly/detail/test/BUILD.bazel | 125 ++
.../overlay/folly/executors/BUILD.bazel | 441 +++++
.../folly/executors/task_queue/BUILD.bazel | 59 +
.../executors/task_queue/test/BUILD.bazel | 33 +
.../overlay/folly/executors/test/BUILD.bazel | 350 ++++
.../executors/thread_factory/BUILD.bazel | 45 +
.../overlay/folly/experimental/BUILD.bazel | 73 +
.../folly/experimental/channels/BUILD.bazel | 187 +++
.../experimental/channels/detail/BUILD.bazel | 63 +
.../experimental/channels/test/BUILD.bazel | 13 +
.../folly/experimental/coro/BUILD.bazel | 524 ++++++
.../folly/experimental/crypto/BUILD.bazel | 43 +
.../experimental/exception_tracer/BUILD.bazel | 75 +
.../experimental/flat_combining/BUILD.bazel | 13 +
.../flat_combining/test/BUILD.bazel | 23 +
.../overlay/folly/experimental/io/BUILD.bazel | 169 ++
.../folly/experimental/io/test/BUILD.bazel | 30 +
.../folly/experimental/observer/BUILD.bazel | 86 +
.../experimental/observer/detail/BUILD.bazel | 24 +
.../folly/experimental/settings/BUILD.bazel | 34 +
.../folly/experimental/symbolizer/BUILD.bazel | 100 ++
.../symbolizer/detail/BUILD.bazel | 13 +
.../folly/experimental/test/BUILD.bazel | 13 +
.../overlay/folly/ext/BUILD.bazel | 9 +
.../overlay/folly/ext/buck2/BUILD.bazel | 14 +
.../overlay/folly/external/aor/BUILD.bazel | 71 +
.../folly/external/farmhash/BUILD.bazel | 12 +
.../folly/external/farmhash/test/BUILD.bazel | 10 +
.../folly/external/fast-crc32/BUILD.bazel | 77 +
.../folly/external/nvidia/detail/BUILD.bazel | 13 +
.../folly/external/nvidia/hash/BUILD.bazel | 11 +
.../external/nvidia/hash/detail/BUILD.bazel | 12 +
.../overlay/folly/fibers/BUILD.bazel | 353 ++++
.../overlay/folly/fibers/async/BUILD.bazel | 123 ++
.../folly/fibers/async/test/BUILD.bazel | 29 +
.../overlay/folly/fibers/detail/BUILD.bazel | 12 +
.../overlay/folly/fibers/test/BUILD.bazel | 66 +
.../overlay/folly/functional/BUILD.bazel | 55 +
.../overlay/folly/functional/test/BUILD.bazel | 50 +
.../overlay/folly/futures/BUILD.bazel | 141 ++
.../overlay/folly/futures/detail/BUILD.bazel | 33 +
.../overlay/folly/futures/test/BUILD.bazel | 458 +++++
.../overlay/folly/gen/BUILD.bazel | 126 ++
.../overlay/folly/gen/test/BUILD.bazel | 103 ++
.../overlay/folly/hash/BUILD.bazel | 82 +
.../overlay/folly/hash/detail/BUILD.bazel | 21 +
.../overlay/folly/hash/test/BUILD.bazel | 83 +
.../overlay/folly/init/BUILD.bazel | 29 +
.../overlay/folly/init/test/BUILD.bazel | 12 +
.../overlay/folly/io/BUILD.bazel | 158 ++
.../overlay/folly/io/async/BUILD.bazel | 786 +++++++++
.../overlay/folly/io/async/fdsock/BUILD.bazel | 24 +
.../folly/io/async/fdsock/test/BUILD.bazel | 17 +
.../folly/io/async/observer/BUILD.bazel | 23 +
.../overlay/folly/io/async/ssl/BUILD.bazel | 67 +
.../folly/io/async/ssl/test/BUILD.bazel | 38 +
.../overlay/folly/io/async/test/BUILD.bazel | 1176 +++++++++++++
.../folly/io/async/test/certs/BUILD.bazel | 3 +
.../overlay/folly/io/coro/BUILD.bazel | 59 +
.../overlay/folly/io/coro/test/BUILD.bazel | 18 +
.../overlay/folly/io/test/BUILD.bazel | 171 ++
.../overlay/folly/io/tool/BUILD.bazel | 16 +
.../overlay/folly/json/BUILD.bazel | 136 ++
.../overlay/folly/json/bser/BUILD.bazel | 22 +
.../overlay/folly/json/bser/test/BUILD.bazel | 11 +
.../overlay/folly/json/test/BUILD.bazel | 115 ++
.../overlay/folly/json/tool/BUILD.bazel | 12 +
.../overlay/folly/lang/BUILD.bazel | 280 +++
.../overlay/folly/lang/test/BUILD.bazel | 236 +++
.../overlay/folly/logging/BUILD.bazel | 206 +++
.../overlay/folly/logging/test/BUILD.bazel | 364 ++++
.../overlay/folly/memory/BUILD.bazel | 177 ++
.../overlay/folly/memory/detail/BUILD.bazel | 10 +
.../overlay/folly/memory/test/BUILD.bazel | 125 ++
.../overlay/folly/net/BUILD.bazel | 68 +
.../overlay/folly/net/detail/BUILD.bazel | 12 +
.../overlay/folly/net/detail/test/BUILD.bazel | 15 +
.../overlay/folly/net/test/BUILD.bazel | 67 +
.../overlay/folly/observer/BUILD.bazel | 110 ++
.../overlay/folly/observer/detail/BUILD.bazel | 41 +
.../overlay/folly/poly/BUILD.bazel | 14 +
.../overlay/folly/portability/BUILD.bazel | 399 +++++
.../folly/portability/test/BUILD.bazel | 79 +
.../overlay/folly/settings/BUILD.bazel | 74 +
.../overlay/folly/settings/test/BUILD.bazel | 59 +
.../overlay/folly/ssl/BUILD.bazel | 94 ++
.../overlay/folly/ssl/detail/BUILD.bazel | 16 +
.../overlay/folly/ssl/test/BUILD.bazel | 60 +
.../overlay/folly/stats/BUILD.bazel | 145 ++
.../overlay/folly/stats/detail/BUILD.bazel | 50 +
.../folly/stats/detail/test/BUILD.bazel | 11 +
.../overlay/folly/stats/test/BUILD.bazel | 108 ++
.../overlay/folly/synchronization/BUILD.bazel | 405 +++++
.../folly/synchronization/detail/BUILD.bazel | 93 +
.../synchronization/detail/test/BUILD.bazel | 24 +
.../folly/synchronization/example/BUILD.bazel | 27 +
.../folly/synchronization/test/BUILD.bazel | 438 +++++
.../overlay/folly/system/BUILD.bazel | 125 ++
.../overlay/folly/system/test/BUILD.bazel | 109 ++
.../overlay/folly/test/BUILD.bazel | 1496 +++++++++++++++++
.../overlay/folly/test/common/BUILD.bazel | 23 +
.../overlay/folly/test/stl_tests/BUILD.bazel | 19 +
.../overlay/folly/testing/BUILD.bazel | 25 +
.../overlay/folly/testing/test/BUILD.bazel | 16 +
.../overlay/folly/tool/BUILD.bazel | 14 +
.../overlay/folly/tracing/BUILD.bazel | 47 +
.../overlay/folly/tracing/test/BUILD.bazel | 12 +
.../patches/fix_async_fd_socket_test.patch | 13 +
.../patches/fix_async_udp_socket_test.patch | 57 +
...fix_basic_transport_certificate_test.patch | 13 +
.../patches/fix_exception_test.patch | 33 +
.../fix_flat_combining_benchmark_test.patch | 13 +
.../patches/fix_hasptr_test.patch | 13 +
.../patches/fix_io_uring_backend_test.patch | 49 +
.../patches/fix_shared_mutex_test.patch | 44 +
.../patches/fix_ssl_cert_utils_test.patch | 15 +
.../fix_uninitialized_memory_hacks.patch | 38 +
.../patches/folly_Math.h.patch | 13 +
...folly_debugging_symbolizer_Dwarf.cpp.patch | 13 +
...y_debugging_symbolizer_DwarfImpl.cpp.patch | 13 +
...y_debugging_symbolizer_DwarfUtil.cpp.patch | 13 +
...lly_debugging_symbolizer_DwarfUtil.h.patch | 13 +
...ecutors_test_FiberIOExecutorTest.cpp.patch | 15 +
...olly_fibers_async_test_AsyncTest.cpp.patch | 26 +
...io_async_test_IoTestTempFileUtil.cpp.patch | 16 +
...t_TerminateCancellationTokenTest.cpp.patch | 13 +
.../patches/test_utils_bazel_runfiles.patch | 33 +
...quote_includes_for_double_conversion.patch | 39 +
.../use_quote_includes_for_snappy.patch | 15 +
.../folly/2025.01.13.00.bcr.5/presubmit.yml | 39 +
.../scripts/bcr_to_folly.sh | 29 +
.../scripts/folly_to_bcr.sh | 31 +
modules/folly/2025.01.13.00.bcr.5/source.json | 184 ++
modules/folly/metadata.json | 3 +-
182 files changed, 20650 insertions(+), 1 deletion(-)
create mode 100644 modules/folly/2025.01.13.00.bcr.5/MODULE.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/README.md
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/CMake/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/bzl/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/bzl/cpp_library.bzl
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/bzl/cpp_unittest.bzl
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/bzl/folly_config_optional_defines.bzl
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/detail/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/detail/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/chrono/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/chrono/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/cli/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/cli/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/elias_fano/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/elias_fano/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/container/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/container/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/memory/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/memory/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/detail/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/coro/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/coro/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/exception_tracer/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/exception_tracer/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/base64_detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/base64_detail/tests/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/task_queue/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/task_queue/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/thread_factory/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/coro/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/crypto/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/exception_tracer/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/flat_combining/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/flat_combining/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/io/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/io/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/observer/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/observer/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/settings/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/symbolizer/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/symbolizer/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/ext/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/ext/buck2/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/aor/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/farmhash/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/farmhash/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/fast-crc32/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/hash/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/hash/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/async/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/async/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/functional/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/functional/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/gen/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/gen/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/init/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/init/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/fdsock/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/fdsock/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/observer/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/ssl/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/ssl/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/test/certs/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/coro/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/coro/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/tool/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/bser/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/bser/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/tool/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/lang/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/lang/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/logging/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/logging/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/detail/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/observer/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/observer/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/poly/BUILD.bazel
create mode 100755 modules/folly/2025.01.13.00.bcr.5/overlay/folly/portability/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/portability/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/settings/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/settings/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/detail/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/detail/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/detail/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/example/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/system/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/system/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/common/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/stl_tests/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/testing/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/testing/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/tool/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/tracing/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/overlay/folly/tracing/test/BUILD.bazel
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/fix_async_fd_socket_test.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/fix_async_udp_socket_test.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/fix_basic_transport_certificate_test.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/fix_exception_test.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/fix_flat_combining_benchmark_test.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/fix_hasptr_test.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/fix_io_uring_backend_test.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/fix_shared_mutex_test.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/fix_ssl_cert_utils_test.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/fix_uninitialized_memory_hacks.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/folly_Math.h.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_Dwarf.cpp.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfImpl.cpp.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfUtil.cpp.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfUtil.h.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/folly_executors_test_FiberIOExecutorTest.cpp.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/folly_fibers_async_test_AsyncTest.cpp.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/folly_io_async_test_IoTestTempFileUtil.cpp.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/folly_io_async_test_TerminateCancellationTokenTest.cpp.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/test_utils_bazel_runfiles.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/use_quote_includes_for_double_conversion.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/patches/use_quote_includes_for_snappy.patch
create mode 100644 modules/folly/2025.01.13.00.bcr.5/presubmit.yml
create mode 100755 modules/folly/2025.01.13.00.bcr.5/scripts/bcr_to_folly.sh
create mode 100755 modules/folly/2025.01.13.00.bcr.5/scripts/folly_to_bcr.sh
create mode 100644 modules/folly/2025.01.13.00.bcr.5/source.json
diff --git a/modules/folly/2025.01.13.00.bcr.5/MODULE.bazel b/modules/folly/2025.01.13.00.bcr.5/MODULE.bazel
new file mode 100644
index 00000000000..a5abda3a5db
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/MODULE.bazel
@@ -0,0 +1,59 @@
+module(
+ name = "folly",
+ version = "2025.01.13.00.bcr.5",
+ bazel_compatibility = [">=7.6.0"],
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.9.0")
+bazel_dep(name = "boost.algorithm", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.container_hash", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.container", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.context", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.conversion", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.core", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.crc", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.filesystem", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.function_types", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.functional", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.interprocess", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.intrusive", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.iterator", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.mpl", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.multi_index", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.preprocessor", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.program_options", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.random", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.range", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.regex", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.smart_ptr", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.sort", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.thread", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.utility", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.variant", version = "1.89.0.bcr.2")
+bazel_dep(name = "bzip2", version = "1.0.8.bcr.3")
+bazel_dep(name = "cmake_configure_file", version = "0.1.4")
+bazel_dep(name = "double-conversion", version = "3.3.1")
+bazel_dep(name = "fast_float", version = "8.0.2")
+bazel_dep(name = "fmt", version = "12.1.0")
+bazel_dep(name = "gflags", version = "2.2.2.bcr.1")
+bazel_dep(name = "glog", version = "0.7.1")
+bazel_dep(name = "googletest", version = "1.17.0.bcr.2")
+bazel_dep(name = "libdwarf", version = "0.12.0.bcr.1")
+bazel_dep(name = "libevent", version = "2.1.12-stable.bcr.0")
+bazel_dep(name = "libsodium", version = "1.0.19")
+bazel_dep(name = "libunwind", version = "1.8.1")
+bazel_dep(name = "liburing", version = "2.10")
+bazel_dep(name = "lz4", version = "1.9.4.bcr.2")
+bazel_dep(name = "openssl", version = "3.3.1.bcr.9")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "range-v3", version = "0.12.0")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "snappy", version = "1.2.2")
+bazel_dep(name = "xz", version = "5.4.5.bcr.7")
+bazel_dep(name = "zlib", version = "1.3.1.bcr.8")
+bazel_dep(name = "zstd", version = "1.5.7")
+
+# TODO(kgk): Enable once @libaio is added to bcr. See:
+# https://github.com/bazelbuild/bazel-central-registry/issues/3756
+# bazel_dep(name = "libaio", version = "")
diff --git a/modules/folly/2025.01.13.00.bcr.5/README.md b/modules/folly/2025.01.13.00.bcr.5/README.md
new file mode 100644
index 00000000000..dd002502516
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/README.md
@@ -0,0 +1,84 @@
+## Enabling folly optional features
+
+Some features of folly are only available with certain toolchains and platforms. These bazel targets do not try to auto-detect what is supported like cmake would. Instead, optional features are disabled by default to maximize compatibility. If you want to enable them for your project, you can do so using flags in your .bazelrc file.
+
+Below are the flags that are available:
+
+--@folly//folly:with_extrandom_sfmt19937 # Use __gnu_cxx::sfmt19937 from
+--@folly//folly:with_getrandom # Use ::getrandom from
+--@folly//folly:with_int128 # Enable int128_t
+--@folly//folly:with_vla # Enable VLA support (very long arrays)
+--@folly//folly:use_dwarf # Link against libdwarf and enable folly libdwarf features.
+--@folly//folly:use_libunwind # Link against libunwind and use it for backtraces.
+
+Be sure to only enable the above features if your toolchain and platform support them.
+
+## Steps to Bazelfying a Folly release
+
+1. Clone the Folly repo:
+
+ ```shell
+ git clone https://github.com/facebook/folly.git
+ ```
+
+1. Create a Git branch at the release you want to Bazelfy.
+ For example:
+
+ ```shell
+ git checkout -b bazel v2025.01.13.00
+ ```
+
+1. Create a new BCR Folly version.
+
+1. Run the `bcr_to_folly.sh` script, which will bootstrap your Folly repo by copying all the `BUILD` files from the BCR Folly to your repo.
+ This script is only meant to be run once on a clean Folly repo.
+ For example:
+
+ ```shell
+ cd /path/to/your/bazel-central-registry/modules/folly/2025.01.13.00.bcr.3/scripts
+ ./bcr_to_folly.sh /path/to/your/folly/repo
+ ```
+
+1. Update and/or add `BUILD` files in your Folly repo as needed.
+ Updated any source files as needed.
+
+1. Because of the way the `includes` work for Folly BCR, you won't actually be able to build/test targets correctly from inside the Folly repo.
+ The Folly repo must be tested as an external dep.
+ The easiest way to do this is to create another folder with its own Bazel module, use `local_path_override` to depend on Folly, and run all Bazel commands from that module.
+ For example in another folder's `MODULE.bazel` file:
+
+ ```python
+ bazel_dep(name = "folly")
+ local_path_override(
+ module_name = "folly",
+ path = "../folly", # assuming this folder is beside the Folly repo
+ )
+ ```
+
+ Then build/test Folly with `@folly`.
+ E.g., `bazel build @folly//...`
+
+1. Run the `folly_to_bcr.sh` script to copy the `BUILD` files back into your new BCR Folly version.
+ You can run this script as many times as needed while iterating.
+ For example:
+
+ ```shell
+ cd /path/to/your/bazel-central-registry/modules/folly/2025.01.13.00.bcr.3/scripts
+ ./folly_to_bcr.sh /path/to/your/folly/repo
+ ```
+
+1. Generate Git patch files for any changes you made to Folly patch files and ensure they are added to the `patches` directory in BCR Folly.
+
+1. Update integrity as needed (must be run from the `bazel-central-registry` module).
+ For example:
+
+ ```shell
+ bazel run -- //tools:update_integrity folly
+ ```
+
+## Tips and other notes
+
+* For Folly `BUILD` files, use our Bazel `cpp_library` macro instead of the Folly `cpp_library macro`.
+* Add any custom `bzl` files under a directory called `bzl` in the Folly source tree.
+* Folly uses a build system called [Buck2](https://buck2.build/) which is very similar to Bazel.
+ The `BUCK` files in the folly source tree can be mostly copied to a file in the same directory called `BUILD.bazel`, and then modified from there to support Bazel.
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/BUILD.bazel
new file mode 100644
index 00000000000..f4b0e2bc9bb
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/BUILD.bazel
@@ -0,0 +1,15 @@
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
+exports_files(
+ ["CMakeLists.txt"],
+ visibility = ["//visibility:public"],
+)
+
+# Any library that depends on this library (directly or indirectly) can use angle brackets to
+# include headers from the root of the repo.
+# Every library target that uses cpp_library depends on this.
+cc_library(
+ name = "include_hack",
+ includes = ["."],
+ visibility = ["//:__subpackages__"],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/CMake/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/CMake/BUILD.bazel
new file mode 100644
index 00000000000..b36114c9d6f
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/CMake/BUILD.bazel
@@ -0,0 +1,4 @@
+exports_files(
+ ["folly-config.h.cmake"],
+ visibility = ["//visibility:public"],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/BUILD.bazel
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/cpp_library.bzl b/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/cpp_library.bzl
new file mode 100644
index 00000000000..9e3cf50ff23
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/cpp_library.bzl
@@ -0,0 +1,16 @@
+"""Wrapper around cc_library for folly."""
+
+load("@rules_cc//cc:defs.bzl", "cc_library")
+
+def cpp_library(name, **kwargs):
+ deps = kwargs.pop("deps", [])
+
+ # Append as a list like this so it still works if deps contains a select statement.
+ # buildifier: disable=list-append
+ deps += ["//:include_hack"]
+
+ cc_library(
+ name = name,
+ deps = deps,
+ **kwargs
+ )
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/cpp_unittest.bzl b/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/cpp_unittest.bzl
new file mode 100644
index 00000000000..586e9ffda0f
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/cpp_unittest.bzl
@@ -0,0 +1,21 @@
+"""Wrapper around cc_test to add test main."""
+
+load("@rules_cc//cc:defs.bzl", "cc_test")
+
+def cpp_unittest(name, **kwargs):
+ srcs = kwargs.pop("srcs", [])
+
+ # Change the default to small.
+ size = kwargs.pop("size", "small")
+ deps = kwargs.pop("deps", [])
+
+ cc_test(
+ name = name,
+ srcs = srcs,
+ size = size,
+ deps = deps + [
+ "//folly/test/common:test_main_lib",
+ "//folly/ext/buck2:test_ext",
+ ],
+ **kwargs
+ )
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/folly_config_optional_defines.bzl b/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/folly_config_optional_defines.bzl
new file mode 100644
index 00000000000..33c15a89fdf
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/bzl/folly_config_optional_defines.bzl
@@ -0,0 +1,52 @@
+"""Used to generate config flags that control settings in the generated folly-config.h file."""
+
+load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
+
+_FOLLY_CONFIG_FLAGS_AND_DEFINES = [
+ # Toolchain / platform dependent flags. Enable these only if you know your compiler toolchain
+ # and target platform support them. They are disabled by default to be conservative and ensure
+ # compatibility the the most platforms.
+ ("with_extrandom_sfmt19937", "FOLLY_HAVE_EXTRANDOM_SFMT19937"),
+ ("with_getrandom", "FOLLY_HAVE_GETRANDOM"),
+ ("with_int128", "FOLLY_HAVE_INT128_T"),
+ ("with_vla", "FOLLY_HAVE_VLA"),
+
+ # NOTE: dwarf is available for linux via the BCR. It is always compiled and linked to
+ # folly for linux. If this flag is not specified then folly's dwarf functionality is disabled.
+ ("use_dwarf", "FOLLY_HAVE_DWARF"),
+
+ # NOTE: libunwind is available for linux via the BCR. It is always compiled and linked to
+ # folly for linux. If this flag is not specified, libc backtrace will be used for stack traces
+ # and libunwind will not actually be used.
+ ("use_libunwind", "FOLLY_HAVE_LIBUNWIND"),
+]
+
+def folly_config_optional_defines(name = "folly_config_optional_defines"):
+ """Creates optional flags and config settings for folly-config.h.
+
+ Args:
+ name: unused, required by linter
+
+ Returns:
+ A list of defines created from flags. Looks something like this:
+ [] + select({":with_int128_setting": ["FOLLY_HAVE_INT128_T"], default: []})
+ + select({":with_pipe2_setting": ["FOLLY_HAVE_PIPE2"], ...})
+ """
+ out = []
+ for (flag_name, define_name) in _FOLLY_CONFIG_FLAGS_AND_DEFINES:
+ bool_flag(
+ name = flag_name,
+ build_setting_default = False,
+ visibility = ["//visibility:public"],
+ )
+ config_setting_name = flag_name + "_setting"
+ native.config_setting(
+ name = config_setting_name,
+ flag_values = {":" + flag_name: "true"},
+ visibility = ["//visibility:public"],
+ )
+ out = out + select({
+ config_setting_name: [define_name],
+ "//conditions:default": [],
+ })
+ return out
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/BUILD.bazel
new file mode 100644
index 00000000000..40cb712fba8
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/BUILD.bazel
@@ -0,0 +1,1453 @@
+load("@cmake_configure_file//:cmake_configure_file.bzl", "cmake_configure_file")
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:folly_config_optional_defines.bzl", "folly_config_optional_defines")
+
+package(default_visibility = ["//visibility:public"])
+
+config_setting(
+ name = "linux_aarch64",
+ constraint_values = [
+ "@platforms//os:linux",
+ "@platforms//cpu:aarch64",
+ ],
+ visibility = ["//:__subpackages__"],
+)
+
+cpp_library(
+ name = "concurrent_bit_set",
+ hdrs = ["ConcurrentBitSet.h"],
+ deps = [":portability"],
+)
+
+cpp_library(
+ name = "atomic_hash_array",
+ hdrs = ["AtomicHashArray.h"],
+ textual_hdrs = ["AtomicHashArray-inl.h"],
+ deps = [
+ ":thread_cached_int",
+ ":utility",
+ "//folly/detail:atomic_hash_utils",
+ "//folly/detail:iterators",
+ "//folly/hash",
+ "//folly/lang:bits",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "atomic_hash_map",
+ hdrs = ["AtomicHashMap.h"],
+ textual_hdrs = ["AtomicHashMap-inl.h"],
+ deps = [
+ ":atomic_hash_array",
+ ":c_portability",
+ ":likely",
+ ":thread_cached_int",
+ "//folly/container:foreach",
+ "//folly/detail:atomic_hash_utils",
+ "//folly/detail:iterators",
+ "//folly/hash",
+ ],
+)
+
+cpp_library(
+ name = "atomic_linked_list",
+ hdrs = [
+ "AtomicIntrusiveLinkedList.h",
+ "AtomicLinkedList.h",
+ ],
+ deps = [":memory"],
+)
+
+cpp_library(
+ name = "atomic_unordered_map",
+ hdrs = ["AtomicUnorderedMap.h"],
+ deps = [
+ ":conv",
+ ":likely",
+ ":random",
+ ":scope_guard",
+ ":traits",
+ "//folly/detail:atomic_unordered_map_utils",
+ "//folly/lang:bits",
+ "//folly/portability:sys_mman",
+ "//folly/portability:unistd",
+ ],
+)
+
+cpp_library(
+ name = "base64",
+ hdrs = ["base64.h"],
+ deps = [
+ ":c_portability",
+ ":portability",
+ "//folly/detail/base64_detail:base64_api",
+ "//folly/detail/base64_detail:base64_common",
+ "//folly/lang:exception",
+ "//folly/memory:uninitialized_memory_hacks",
+ ],
+)
+
+cpp_library(
+ name = "benchmark_util",
+ hdrs = [
+ "BenchmarkUtil.h",
+ ],
+ deps = [
+ ":portability",
+ "//folly/lang:hint",
+ ],
+)
+
+cpp_library(
+ name = "benchmark",
+ srcs = ["Benchmark.cpp"],
+ hdrs = ["Benchmark.h"],
+ deps = [
+ ":benchmark_util",
+ ":file_util",
+ ":map_util",
+ ":portability",
+ ":preprocessor",
+ ":range",
+ ":scope_guard",
+ ":string",
+ ":traits",
+ "//folly/detail:perf_scoped",
+ "//folly/functional:invoke",
+ "//folly/json:dynamic",
+ "//folly/lang:hint",
+ "//folly/portability:gflags",
+ "@boost.function_types",
+ "@boost.regex",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ # @shim
+ name = "bits",
+ hdrs = ["Bits.h"],
+ deps = ["//folly/lang:bits"],
+)
+
+cpp_library(
+ name = "c_portability",
+ hdrs = ["CPortability.h"],
+ deps = ["//folly/portability:config"],
+)
+
+cpp_library(
+ name = "cancellation_token",
+ srcs = ["CancellationToken.cpp"],
+ hdrs = ["CancellationToken.h"],
+ textual_hdrs = ["CancellationToken-inl.h"],
+ deps = [
+ ":cpp_attributes",
+ ":function",
+ ":optional",
+ "//folly:scope_guard",
+ "//folly/lang:new",
+ "//folly/portability:memory",
+ "//folly/synchronization/detail:sleeper",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "chrono",
+ hdrs = ["Chrono.h"],
+ deps = [
+ ":portability",
+ "//folly/lang:exception",
+ "//folly/portability:time",
+ ],
+)
+
+cpp_library(
+ name = "clock_gettime_wrappers",
+ srcs = ["ClockGettimeWrappers.cpp"],
+ hdrs = ["ClockGettimeWrappers.h"],
+ linkopts = select({
+ "@platforms//os:linux": [
+ "-ldl",
+ "-lrt",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":c_portability",
+ ":likely",
+ "//folly/portability:time",
+ ],
+)
+
+cpp_library(
+ name = "concurrent_lazy",
+ hdrs = ["ConcurrentLazy.h"],
+ deps = [
+ "//folly/functional:invoke",
+ "//folly/synchronization:delayed_init",
+ ],
+)
+
+cpp_library(
+ name = "concurrent_skip_list",
+ hdrs = ["ConcurrentSkipList.h"],
+ textual_hdrs = ["ConcurrentSkipList-inl.h"],
+ deps = [
+ ":constexpr_math",
+ ":likely",
+ ":memory",
+ ":thread_local",
+ "//folly/detail:iterators",
+ "//folly/synchronization:micro_spin_lock",
+ "@boost.random",
+ "@glog",
+ ],
+)
+
+cmake_configure_file(
+ name = "config_h_gen",
+ src = "//CMake:folly-config.h.cmake",
+ out = "folly-config.h",
+ cmakelists = ["//:CMakeLists.txt"],
+ defines = [
+ "FOLLY_HAVE_LIBBZ2",
+ "FOLLY_HAVE_LIBGLOG",
+ "FOLLY_HAVE_LIBGFLAGS",
+ "FOLLY_HAVE_LIBLZ4",
+ "FOLLY_HAVE_LIBLZMA",
+ "FOLLY_HAVE_LIBSNAPPY",
+ "FOLLY_HAVE_LIBZ",
+ "FOLLY_HAVE_LIBZSTD",
+ ] + select({
+ "@platforms//os:linux": [
+ "FOLLY_HAVE_ACCEPT4",
+ "FOLLY_HAVE_BACKTRACE",
+ "FOLLY_HAVE_CLOCK_GETTIME",
+ "FOLLY_HAVE_ELF",
+ "FOLLY_HAVE_LINUX_VDSO",
+ "FOLLY_HAVE_PIPE2",
+ "FOLLY_HAVE_PREADV",
+ "FOLLY_HAVE_PWRITEV",
+ "FOLLY_HAVE_PTHREAD",
+ "FOLLY_HAVE_PTHREAD_ATFORK",
+ "FOLLY_HAVE_UNALIGNED_ACCESS",
+ "FOLLY_HAVE_WEAK_SYMBOLS",
+ "FOLLY_USE_SYMBOLIZER",
+ ],
+ "@platforms//os:macos": [
+ "FOLLY_HAVE_BACKTRACE",
+ "FOLLY_HAVE_CLOCK_GETTIME", # NOTE: Requires macOS 11+
+ "FOLLY_HAVE_PREADV", # NOTE: Requires macOS 11+
+ "FOLLY_HAVE_PWRITEV", # NOTE: Requires macOS 11+
+ "FOLLY_HAVE_PTHREAD",
+ "FOLLY_HAVE_PTHREAD_ATFORK",
+ "FOLLY_HAVE_UNALIGNED_ACCESS",
+ "FOLLY_USE_SYMBOLIZER",
+ ],
+ "//conditions:default": [],
+ }) + folly_config_optional_defines(),
+ undefines = [
+ # jemalloc is not supported as of now.
+ "FOLLY_USE_JEMALLOC",
+
+ # Bazel will always build folly this as static libs, so this is disabled.
+ "FOLLY_SUPPORT_SHARED_LIBRARY",
+
+ # This is only used in folly tests, so just disable it.
+ "HAVE_VSNPRINTF_ERRORS",
+
+ # This does not appear to actually be used anywhere in folly so disable it.
+ "FOLLY_HAVE_IFUNC",
+
+ # The bazel build files don't enable the relevant flags for this anyways, so disable it.
+ "FOLLY_HAVE_SHADOW_LOCAL_WARNINGS",
+
+ # This functionality exists on some platforms, but has a history of being "present but
+ # discouraged". Just disable it since folly doesn't make heavy use of it anyways.
+ "FOLLY_HAVE_SWAPCONTEXT",
+
+ # Disabled since it's only used in unit tests. It also wouldn't be guaranteed to be
+ # supported on all platforms / toolchains.
+ "FOLLY_HAVE_WCHAR_SUPPORT",
+
+ # Just undefine this since it's usage in folly is a micro-optimization and it isn't
+ # guaranteed to exist on all platforms + toolchain combinations.
+ "FOLLY_HAVE_MALLOC_USABLE_SIZE",
+
+ # This is used only in folly/Singleton.cpp for an optional shutdown timer. Since that
+ # functionality is minimal, just disable it for easier toolchain / platform compatibility.
+ "FOLLY_HAVE_LIBRT",
+ ],
+ visibility = ["//visibility:public"],
+)
+
+cpp_library(
+ name = "config",
+ hdrs = [":config_h_gen"],
+)
+
+cpp_library(
+ name = "constexpr_math",
+ hdrs = ["ConstexprMath.h"],
+ deps = [
+ ":portability",
+ "//folly/lang:checked_math",
+ "//folly/portability:constexpr",
+ ],
+)
+
+cpp_library(
+ name = "constructor_callback_list",
+ hdrs = ["ConstructorCallbackList.h"],
+ deps = [
+ ":format",
+ ":function",
+ ":shared_mutex",
+ "//folly/detail:static_singleton_manager",
+ ],
+)
+
+cpp_library(
+ name = "conv",
+ srcs = ["Conv.cpp"],
+ hdrs = ["Conv.h"],
+ deps = [
+ ":c_portability",
+ ":demangle",
+ ":expected",
+ ":fbstring",
+ ":likely",
+ ":portability",
+ ":range",
+ ":traits",
+ ":unit",
+ ":utility",
+ "//folly/lang:exception",
+ "//folly/lang:pretty",
+ "//folly/lang:safe_assert",
+ "//folly/lang:to_ascii",
+ "//folly/portability:math",
+ "@double-conversion",
+ "@fast_float",
+ ],
+)
+
+cpp_library(
+ name = "cpp_attributes",
+ hdrs = ["CppAttributes.h"],
+ deps = [":portability"],
+)
+
+cpp_library(
+ name = "cpu_id",
+ hdrs = ["CpuId.h"],
+ deps = [":portability"],
+)
+
+cpp_library(
+ name = "default_keep_alive_executor",
+ hdrs = ["DefaultKeepAliveExecutor.h"],
+ deps = [
+ ":executor",
+ "//folly/executors:sequenced_executor",
+ "//folly/synchronization:baton",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "demangle",
+ srcs = ["Demangle.cpp"],
+ hdrs = ["Demangle.h"],
+ # TODO(kgk): Support binutils?
+ # os_deps = [(
+ # "linux",
+ # ["third-party//binutils:iberty"],
+ # )],
+ deps = [
+ ":c_portability",
+ ":cpp_attributes",
+ ":fbstring",
+ ":utility",
+ "//folly/functional:invoke",
+ "//folly/lang:c_string",
+ "//folly/portability:config",
+ ],
+)
+
+cpp_library(
+ name = "discriminated_ptr",
+ hdrs = ["DiscriminatedPtr.h"],
+ deps = [
+ ":likely",
+ ":portability",
+ "//folly/detail:discriminated_ptr_detail",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "dynamic",
+ hdrs = [
+ "DynamicConverter.h",
+ "dynamic.h",
+ "dynamic-inl.h",
+ "json.h",
+ ],
+ deps = ["//folly/json:dynamic"],
+)
+
+cpp_library(
+ name = "exception",
+ hdrs = ["Exception.h"],
+ deps = [
+ ":conv",
+ ":fbstring",
+ ":likely",
+ ":portability",
+ "//folly/portability:sys_types",
+ ],
+)
+
+cpp_library(
+ name = "exception_string",
+ srcs = ["ExceptionString.cpp"],
+ hdrs = ["ExceptionString.h"],
+ deps = [
+ ":demangle",
+ ":fbstring",
+ "//folly/lang:exception",
+ "//folly/lang:type_info",
+ ],
+)
+
+cpp_library(
+ name = "exception_wrapper",
+ srcs = ["ExceptionWrapper.cpp"],
+ hdrs = ["ExceptionWrapper.h"],
+ textual_hdrs = ["ExceptionWrapper-inl.h"],
+ deps = [
+ ":c_portability",
+ ":cpp_attributes",
+ ":demangle",
+ ":exception_string",
+ ":fbstring",
+ ":glog",
+ ":portability",
+ ":traits",
+ ":utility",
+ "//folly/functional:traits",
+ "//folly/lang:assume",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "executor",
+ srcs = ["Executor.cpp"],
+ hdrs = ["Executor.h"],
+ deps = [
+ ":exception_string",
+ ":function",
+ ":optional",
+ ":portability",
+ ":range",
+ ":utility",
+ "//folly/lang:exception",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "expected",
+ hdrs = ["Expected.h"],
+ deps = [
+ ":c_portability",
+ ":cpp_attributes",
+ ":likely",
+ ":portability",
+ ":preprocessor",
+ ":traits",
+ ":unit",
+ ":utility",
+ "//folly/coro:coroutine",
+ "//folly/lang:exception",
+ "//folly/lang:hint",
+ ],
+)
+
+cpp_library(
+ name = "fbstring",
+ hdrs = ["FBString.h"],
+ deps = [
+ ":c_portability",
+ ":cpp_attributes",
+ ":likely",
+ ":portability",
+ ":traits",
+ "//folly/hash",
+ "//folly/lang:assume",
+ "//folly/lang:checked_math",
+ "//folly/lang:exception",
+ "//folly/memory:malloc",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "fbvector",
+ hdrs = ["FBVector.h"],
+ deps = ["//folly/container:fbvector"],
+)
+
+cpp_library(
+ name = "file",
+ srcs = ["File.cpp"],
+ hdrs = ["File.h"],
+ deps = [
+ ":exception",
+ ":exception_wrapper",
+ ":expected",
+ ":file_util", # @manual
+ ":portability",
+ ":range",
+ ":scope_guard",
+ "//folly/portability:fcntl",
+ "//folly/portability:fmt_compile",
+ "//folly/portability:sys_file",
+ "//folly/portability:unistd",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "file_util",
+ srcs = ["FileUtil.cpp"],
+ hdrs = ["FileUtil.h"],
+ deps = [
+ ":portability",
+ ":range",
+ ":scope_guard",
+ "//folly/detail:file_util_detail",
+ "//folly/detail:file_util_vector_detail",
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/portability:fcntl",
+ "//folly/portability:sockets",
+ "//folly/portability:stdlib",
+ "//folly/portability:sys_file",
+ "//folly/portability:sys_stat",
+ "//folly/portability:sys_uio",
+ "//folly/portability:unistd",
+ ],
+)
+
+cpp_library(
+ name = "fingerprint",
+ srcs = ["Fingerprint.cpp"],
+ hdrs = ["Fingerprint.h"],
+ deps = [
+ ":portability",
+ ":range",
+ ":utility",
+ "//folly/detail:fingerprint_polynomial",
+ ],
+)
+
+cpp_library(
+ name = "fixed_string",
+ hdrs = ["FixedString.h"],
+ deps = [
+ ":constexpr_math",
+ ":portability",
+ ":range",
+ ":utility",
+ "//folly/lang:exception",
+ "//folly/lang:ordering",
+ "//folly/portability:constexpr",
+ ],
+)
+
+cpp_library(
+ name = "fmt_utility",
+ srcs = ["FmtUtility.cpp"],
+ hdrs = ["FmtUtility.h"],
+ deps = [
+ ":cpp_attributes",
+ ":range",
+ ":string",
+ "//folly/ssl:openssl_hash",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "format",
+ srcs = ["Format.cpp"],
+ hdrs = [
+ "Format.h",
+ "FormatArg.h",
+ ],
+ textual_hdrs = ["Format-inl.h"],
+ deps = [
+ ":c_portability",
+ ":constexpr_math",
+ ":conv",
+ ":cpp_attributes",
+ ":exception",
+ ":format_traits",
+ ":likely",
+ ":map_util",
+ ":portability",
+ ":range",
+ ":string",
+ ":traits",
+ "//folly/container:array",
+ "//folly/lang:exception",
+ "//folly/lang:to_ascii",
+ "//folly/portability:windows",
+ "@double-conversion",
+ ],
+)
+
+cpp_library(
+ name = "format_traits",
+ hdrs = ["FormatTraits.h"],
+)
+
+cpp_library(
+ name = "function",
+ hdrs = ["Function.h"],
+ deps = [
+ ":cpp_attributes",
+ ":portability",
+ ":traits",
+ "//folly/functional:invoke",
+ "//folly/lang:align",
+ "//folly/lang:exception",
+ "//folly/lang:new",
+ ],
+)
+
+cpp_library(
+ name = "group_varint",
+ srcs = ["GroupVarint.cpp"],
+ hdrs = ["GroupVarint.h"],
+ deps = [
+ ":portability",
+ ":range",
+ "//folly/container:array",
+ "//folly/detail:group_varint_detail",
+ "//folly/lang:bits",
+ "//folly/portability:builtins",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "hash",
+ hdrs = ["Hash.h"],
+ deps = ["//folly/hash"],
+)
+
+cpp_library(
+ name = "indestructible",
+ hdrs = ["Indestructible.h"],
+ deps = [
+ ":traits",
+ ":utility",
+ ],
+)
+
+cpp_library(
+ name = "indexed_mem_pool",
+ hdrs = ["IndexedMemPool.h"],
+ deps = [
+ ":portability",
+ "//folly/concurrency:cache_locality",
+ "//folly/portability:sys_mman",
+ "//folly/portability:unistd",
+ "//folly/synchronization:atomic_struct",
+ ],
+)
+
+cpp_library(
+ name = "intrusive_list",
+ hdrs = ["IntrusiveList.h"],
+ deps = ["//folly/container:intrusive_list"],
+)
+
+cpp_library(
+ name = "json",
+ deps = [":dynamic"],
+)
+
+cpp_library(
+ name = "json_pointer",
+ hdrs = ["json_pointer.h"],
+ deps = ["//folly/json:json_pointer"],
+)
+
+cpp_library(
+ name = "json_patch",
+ hdrs = ["json_patch.h"],
+ deps = ["//folly/json:json_patch"],
+)
+
+cpp_library(
+ name = "lazy",
+ hdrs = ["Lazy.h"],
+ deps = [
+ ":optional",
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "likely",
+ hdrs = ["Likely.h"],
+ deps = ["//folly/lang:builtin"],
+)
+
+cpp_library(
+ name = "glog",
+ hdrs = ["GLog.h"],
+ deps = [
+ ":likely",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "map_util",
+ hdrs = ["MapUtil.h"],
+ deps = ["//folly/container:map_util"],
+)
+
+cpp_library(
+ name = "math",
+ hdrs = ["Math.h"],
+)
+
+cpp_library(
+ name = "memset-impl",
+ srcs = ["FollyMemset.cpp"] + select({
+ "@platforms//cpu:x86_64": ["memset.S"],
+ ":linux_aarch64": ["memset_select_aarch64.cpp"],
+ "//conditions:default": [],
+ }),
+ copts = select({
+ "@platforms//cpu:x86_64": ["-mavx2"],
+ "//conditions:default": [],
+ }),
+ deps = select({
+ ":linux_aarch64": [
+ "//folly/external/aor:memset_aarch64", # @manual
+ ],
+ "//conditions:default": [],
+ }),
+)
+
+# This exports the symbol __folly_memset to C++ via a header.
+cpp_library(
+ name = "memset",
+ hdrs = ["FollyMemset.h"],
+ deps = [
+ ":memset-impl", # @manual
+ ],
+)
+
+# This overrides the libc memset with __folly_memset.
+cpp_library(
+ name = "memset-use",
+ srcs = ["FollyMemset.cpp"] + select({
+ "@platforms//cpu:x86_64": ["memset.S"],
+ ":linux_aarch64": ["memset_select_aarch64.cpp"],
+ "//conditions:default": [],
+ }),
+ copts = select({
+ ":linux_aarch64": [
+ "-DFOLLY_MEMCPY_IS_MEMCPY",
+ ],
+ "@platforms//cpu:x86_64": [
+ "-DFOLLY_MEMCPY_IS_MEMCPY",
+ "-mavx2",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = select({
+ ":linux_aarch64": [
+ "//folly/external/aor:memset_aarch64", # @manual
+ ],
+ "//conditions:default": [],
+ }),
+ alwayslink = True, # Set alwayslink to force linker to use __folly_memcpy
+)
+
+# This adds the symbol __folly_memcpy but does not replace the default memcpy.
+cpp_library(
+ name = "memcpy-impl",
+ srcs = ["FollyMemcpy.cpp"] + select({
+ "@platforms//cpu:x86_64": ["memcpy.S"],
+ ":linux_aarch64": ["memcpy_select_aarch64.cpp"],
+ "//conditions:default": [],
+ }),
+ copts = select({
+ "@platforms//cpu:x86_64": ["-mavx2"],
+ "//conditions:default": [],
+ }),
+ deps = select({
+ ":linux_aarch64": [
+ "//folly/external/aor:memcpy_aarch64", # @manual
+ ],
+ "//conditions:default": [],
+ }),
+)
+
+# This exports the symbol __folly_memcpy to C++ via a header.
+cpp_library(
+ name = "memcpy",
+ hdrs = ["FollyMemcpy.h"],
+ deps = [
+ ":memcpy-impl", # @manual
+ ],
+)
+
+# This overrides the libc memcpy with __folly_memcpy.
+cpp_library(
+ name = "memcpy-use",
+ srcs = ["FollyMemcpy.cpp"] + select({
+ "@platforms//cpu:x86_64": ["memcpy.S"],
+ ":linux_aarch64": ["memcpy_select_aarch64.cpp"],
+ "//conditions:default": [],
+ }),
+ copts = select({
+ ":linux_aarch64": [
+ "-DFOLLY_MEMCPY_IS_MEMCPY",
+ ],
+ "@platforms//cpu:x86_64": [
+ "-DFOLLY_MEMCPY_IS_MEMCPY",
+ "-march=haswell",
+ "-mavx2",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = select({
+ ":linux_aarch64": [
+ "//folly/external/aor:memcpy_aarch64-use", # @manual
+ ],
+ "//conditions:default": [],
+ }),
+ alwayslink = True, # Set alwayslink to force linker to use __folly_memcpy
+)
+
+cpp_library(
+ name = "memory",
+ hdrs = ["Memory.h"],
+ deps = [
+ ":constexpr_math",
+ ":likely",
+ ":portability",
+ ":traits",
+ ":utility",
+ "//folly/functional:invoke",
+ "//folly/lang:align",
+ "//folly/lang:exception",
+ "//folly/lang:thunk",
+ "//folly/memory:malloc",
+ "//folly/portability:config",
+ "//folly/portability:constexpr",
+ "//folly/portability:malloc",
+ ],
+)
+
+cpp_library(
+ name = "micro_lock",
+ srcs = ["MicroLock.cpp"],
+ hdrs = ["MicroLock.h"],
+ deps = [
+ ":optional",
+ ":portability",
+ "//folly/detail:futex",
+ "//folly/portability:asm",
+ ],
+)
+
+cpp_library(
+ # @shim
+ name = "micro_spin_lock",
+ hdrs = ["MicroSpinLock.h"],
+ deps = ["//folly/synchronization:micro_spin_lock"],
+)
+
+cpp_library(
+ name = "move_wrapper",
+ hdrs = ["MoveWrapper.h"],
+)
+
+cpp_library(
+ name = "mpmc_pipeline",
+ hdrs = ["MPMCPipeline.h"],
+ deps = [
+ ":portability",
+ "//folly/detail:mpmc_pipeline_detail",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "mpmc_queue",
+ hdrs = ["MPMCQueue.h"],
+ deps = [
+ ":traits",
+ "//folly/concurrency:cache_locality",
+ "//folly/detail:turn_sequencer",
+ "//folly/portability:unistd",
+ ],
+)
+
+cpp_library(
+ name = "network_address",
+ srcs = [
+ "IPAddress.cpp",
+ "IPAddressV4.cpp",
+ "IPAddressV6.cpp",
+ "MacAddress.cpp",
+ "SocketAddress.cpp",
+ ],
+ hdrs = [
+ "IPAddress.h",
+ "IPAddressException.h",
+ "IPAddressV4.h",
+ "IPAddressV6.h",
+ "MacAddress.h",
+ "SocketAddress.h",
+ ],
+ deps = [
+ ":c_portability",
+ ":constexpr_math",
+ ":conv",
+ ":exception",
+ ":expected",
+ ":fbstring",
+ ":format",
+ ":optional",
+ ":portability",
+ ":range",
+ ":scope_guard",
+ ":small_vector",
+ ":string",
+ ":unit",
+ "//folly/detail:ip_address",
+ "//folly/detail:ip_address_source",
+ "//folly/hash",
+ "//folly/lang:bits",
+ "//folly/lang:exception",
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/portability:sockets",
+ "@boost.container_hash",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "observer_container",
+ hdrs = ["ObserverContainer.h"],
+ deps = [
+ ":constructor_callback_list",
+ ":function",
+ ":optional",
+ ":scope_guard",
+ ":small_vector",
+ "//folly/io/async:destructor_check",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "optional",
+ hdrs = ["Optional.h"],
+ deps = [
+ ":portability",
+ ":traits",
+ ":utility",
+ "//folly/coro:coroutine",
+ "//folly/hash:traits",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "replaceable",
+ hdrs = ["Replaceable.h"],
+ deps = [
+ ":portability",
+ ":traits",
+ ":utility",
+ ],
+)
+
+cpp_library(
+ name = "overload",
+ hdrs = ["Overload.h"],
+ deps = [
+ ":portability",
+ ":traits",
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "packed_sync_ptr",
+ hdrs = ["PackedSyncPtr.h"],
+ deps = [
+ ":portability",
+ "//folly/synchronization:small_locks",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "padded",
+ hdrs = ["Padded.h"],
+ deps = [
+ ":portability",
+ ":traits",
+ "//folly/functional:invoke",
+ "//folly/portability:sys_types",
+ "@boost.iterator",
+ ],
+)
+
+cpp_library(
+ name = "portability",
+ hdrs = ["Portability.h"],
+ deps = [
+ ":c_portability",
+ "//folly/portability:config",
+ ],
+)
+
+cpp_library(
+ name = "preprocessor",
+ hdrs = ["Preprocessor.h"],
+ deps = [":c_portability"],
+)
+
+cpp_library(
+ name = "poly",
+ hdrs = ["Poly.h"],
+ textual_hdrs = ["Poly-inl.h"],
+ deps = [
+ ":c_portability",
+ ":cpp_attributes",
+ ":poly_exception",
+ ":traits",
+ "//folly/detail:poly_detail",
+ "//folly/detail:typelist",
+ "//folly/lang:assume",
+ ],
+)
+
+cpp_library(
+ name = "poly_exception",
+ hdrs = ["PolyException.h"],
+ deps = ["//folly:c_portability"],
+)
+
+cpp_library(
+ name = "producer_consumer_queue",
+ hdrs = ["ProducerConsumerQueue.h"],
+ deps = ["//folly/concurrency:cache_locality"],
+)
+
+cpp_library(
+ name = "random",
+ srcs = ["Random.cpp"],
+ hdrs = ["Random.h"],
+ textual_hdrs = ["Random-inl.h"],
+ # TODO(kgk): Is the bazel equivalent of this needed?
+ #os_deps = [(
+ # "windows",
+ # [
+ # "fbsource//third-party/toolchains/win:advapi32.lib",
+ # ],
+ #)],
+ deps = [
+ ":cpp_attributes",
+ ":portability",
+ ":singleton_thread_local",
+ ":thread_local",
+ ":traits",
+ "//folly/detail:file_util_detail",
+ "//folly/functional:invoke",
+ "//folly/lang:bits",
+ "//folly/portability:config",
+ "//folly/portability:sys_time",
+ "//folly/portability:unistd",
+ "//folly/synchronization:relaxed_atomic",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "range",
+ hdrs = ["Range.h"],
+ deps = [
+ ":cpu_id",
+ ":likely",
+ ":portability",
+ ":traits",
+ "//folly/detail:range_common",
+ "//folly/detail:range_simd",
+ "//folly/hash:spooky_hash_v2",
+ "//folly/lang:c_string",
+ "//folly/lang:exception",
+ "//folly/portability:constexpr",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ # @shim
+ name = "rw_spin_lock",
+ hdrs = ["RWSpinLock.h"],
+ deps = ["//folly/synchronization:rw_spin_lock"],
+)
+
+cpp_library(
+ name = "scope_guard",
+ srcs = ["ScopeGuard.cpp"],
+ hdrs = ["ScopeGuard.h"],
+ deps = [
+ ":portability",
+ ":preprocessor",
+ ":utility",
+ "//folly/lang:exception",
+ "//folly/lang:uncaught_exceptions",
+ ],
+)
+
+cpp_library(
+ name = "shared_mutex",
+ srcs = ["SharedMutex.cpp"],
+ hdrs = ["SharedMutex.h"],
+ deps = [
+ ":c_portability",
+ ":cpp_attributes",
+ ":indestructible",
+ ":likely",
+ "//folly/chrono:hardware",
+ "//folly/concurrency:cache_locality",
+ "//folly/detail:futex",
+ "//folly/lang:exception",
+ "//folly/portability:asm",
+ "//folly/portability:sys_resource",
+ "//folly/synchronization:lock",
+ "//folly/synchronization:relaxed_atomic",
+ "//folly/synchronization:sanitize_thread",
+ "//folly/system:thread_id",
+ ],
+)
+
+cpp_library(
+ name = "singleton",
+ srcs = ["Singleton.cpp"],
+ hdrs = ["Singleton.h"],
+ linkopts = select({
+ "@platforms//os:linux": [
+ "-ldl",
+ "-lrt",
+ ],
+ "//conditions:default": [],
+ }),
+ textual_hdrs = ["Singleton-inl.h"],
+ deps = [
+ ":cancellation_token",
+ ":demangle",
+ ":exception",
+ ":executor",
+ ":memory",
+ ":scope_guard",
+ ":synchronized",
+ "//folly/concurrency:core_cached_shared_ptr",
+ "//folly/concurrency/memory:read_mostly_shared_ptr",
+ "//folly/detail:singleton",
+ "//folly/detail:static_singleton_manager",
+ "//folly/experimental/symbolizer",
+ "//folly/hash",
+ "//folly/lang:exception",
+ "//folly/lang:safe_assert",
+ "//folly/memory:sanitize_leak",
+ "//folly/portability:config",
+ "//folly/portability:fmt_compile",
+ "//folly/synchronization:baton",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "singleton_thread_local",
+ srcs = ["SingletonThreadLocal.cpp"],
+ hdrs = ["SingletonThreadLocal.h"],
+ deps = [
+ ":scope_guard",
+ ":thread_local",
+ "//folly/detail:iterators",
+ "//folly/detail:singleton",
+ "//folly/detail:unique_instance",
+ "//folly/functional:invoke",
+ "//folly/lang:hint",
+ ],
+)
+
+cpp_library(
+ name = "small_vector",
+ hdrs = ["small_vector.h"],
+ deps = ["//folly/container:small_vector"],
+)
+
+cpp_library(
+ name = "sorted_vector_types",
+ hdrs = ["sorted_vector_types.h"],
+ deps = ["//folly/container:sorted_vector_types"],
+)
+
+cpp_library(
+ name = "spin_lock",
+ hdrs = ["SpinLock.h"],
+ deps = [
+ ":portability",
+ "//folly/synchronization:small_locks",
+ ],
+)
+
+cpp_library(
+ name = "stop_watch",
+ hdrs = ["stop_watch.h"],
+ deps = [
+ ":chrono",
+ ":utility",
+ "//folly/portability:time",
+ ],
+)
+
+cpp_library(
+ name = "string",
+ srcs = ["String.cpp"],
+ hdrs = ["String.h"],
+ textual_hdrs = ["String-inl.h"],
+ deps = [
+ ":conv",
+ ":cpp_attributes",
+ ":exception_string",
+ ":optional",
+ ":portability",
+ ":range",
+ ":scope_guard",
+ ":traits",
+ ":unit",
+ "//folly/container:array",
+ "//folly/container:reserve",
+ "//folly/detail:simple_simd_string_utils",
+ "//folly/detail:split_string_simd",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "subprocess",
+ srcs = ["Subprocess.cpp"],
+ hdrs = ["Subprocess.h"],
+ deps = [
+ ":conv",
+ ":exception",
+ ":file",
+ ":file_util",
+ ":function",
+ ":map_util",
+ ":optional",
+ ":portability",
+ ":range",
+ ":scope_guard",
+ ":string",
+ "//folly/gen:string",
+ "//folly/io:iobuf",
+ "//folly/lang:assume",
+ "//folly/logging",
+ "//folly/portability:dirent",
+ "//folly/portability:fcntl",
+ "//folly/portability:sockets",
+ "//folly/portability:stdlib",
+ "//folly/portability:sys_resource",
+ "//folly/portability:sys_syscall",
+ "//folly/portability:unistd",
+ "//folly/system:at_fork",
+ "//folly/system:shell",
+ "@boost.container",
+ "@boost.range",
+ "@boost.utility",
+ ],
+)
+
+cpp_library(
+ name = "synchronized",
+ hdrs = ["Synchronized.h"],
+ deps = [
+ ":function",
+ ":likely",
+ ":preprocessor",
+ ":shared_mutex",
+ ":traits",
+ ":utility",
+ "//folly/container:foreach",
+ "//folly/functional:apply_tuple",
+ "//folly/synchronization:lock",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "synchronized_ptr",
+ hdrs = ["SynchronizedPtr.h"],
+ deps = [":synchronized"],
+)
+
+cpp_library(
+ name = "thread_cached_int",
+ hdrs = ["ThreadCachedInt.h"],
+ deps = [
+ ":likely",
+ ":thread_local",
+ ],
+)
+
+cpp_library(
+ name = "thread_local",
+ hdrs = ["ThreadLocal.h"],
+ deps = [
+ ":likely",
+ ":portability",
+ ":scope_guard",
+ ":shared_mutex",
+ "//folly/detail:thread_local_detail",
+ ],
+)
+
+cpp_library(
+ name = "timeout_queue",
+ srcs = ["TimeoutQueue.cpp"],
+ hdrs = ["TimeoutQueue.h"],
+ deps = ["@boost.multi_index"],
+)
+
+cpp_library(
+ name = "token_bucket",
+ hdrs = ["TokenBucket.h"],
+ deps = [
+ ":constexpr_math",
+ ":likely",
+ ":optional",
+ "//folly/concurrency:cache_locality",
+ ],
+)
+
+cpp_library(
+ name = "traits",
+ hdrs = ["Traits.h"],
+ deps = [":portability"],
+)
+
+cpp_library(
+ name = "try",
+ srcs = ["Try.cpp"],
+ hdrs = ["Try.h"],
+ textual_hdrs = ["Try-inl.h"],
+ deps = [
+ ":exception_wrapper",
+ ":likely",
+ ":memory",
+ ":portability",
+ ":unit",
+ ":utility",
+ "//folly/functional:invoke",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "unicode",
+ srcs = ["Unicode.cpp"],
+ hdrs = ["Unicode.h"],
+ deps = [
+ ":conv",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "unit",
+ hdrs = ["Unit.h"],
+)
+
+cpp_library(
+ name = "uri",
+ srcs = ["Uri.cpp"],
+ hdrs = ["Uri.h"],
+ textual_hdrs = ["Uri-inl.h"],
+ deps = [
+ ":conv",
+ ":expected",
+ ":string",
+ "//folly/hash",
+ "@boost.regex",
+ ],
+)
+
+cpp_library(
+ name = "utf8_string",
+ hdrs = ["UTF8String.h"],
+ deps = [
+ ":range",
+ "@boost.regex",
+ ],
+)
+
+# For things that would go in c++ stdlib :
+cpp_library(
+ name = "utility",
+ hdrs = ["Utility.h"],
+ deps = [
+ ":c_portability",
+ ":portability",
+ ":traits",
+ ],
+)
+
+cpp_library(
+ name = "varint",
+ hdrs = ["Varint.h"],
+ deps = [
+ ":conv",
+ ":expected",
+ ":likely",
+ ":portability",
+ ":range",
+ ],
+)
+
+cpp_library(
+ name = "virtual_executor",
+ hdrs = ["VirtualExecutor.h"],
+ deps = ["//folly/executors:virtual_executor"],
+)
+
+cpp_library(
+ name = "maybe_managed_ptr",
+ hdrs = ["MaybeManagedPtr.h"],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/BUILD.bazel
new file mode 100644
index 00000000000..710603d0dd8
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/BUILD.bazel
@@ -0,0 +1,45 @@
+######################################################################
+# Libraries
+
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "contains",
+ srcs = ["Contains.cpp"],
+ hdrs = ["Contains.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly/algorithm/simd/detail:simd_contains_impl",
+ "//folly/algorithm/simd/detail:traits",
+ ],
+)
+
+cpp_library(
+ name = "find_fixed",
+ hdrs = ["FindFixed.h"],
+ deps = [
+ ":movemask",
+ "//folly:portability",
+ "//folly/algorithm/simd/detail:traits",
+ ],
+)
+
+cpp_library(
+ name = "ignore",
+ hdrs = ["Ignore.h"],
+ deps = [
+ "//folly/lang:bits",
+ ],
+)
+
+cpp_library(
+ name = "movemask",
+ hdrs = ["Movemask.h"],
+ deps = [
+ ":ignore",
+ "//folly:portability",
+ "//folly/lang:bits",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/detail/BUILD.bazel
new file mode 100644
index 00000000000..54b8a9e400c
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/detail/BUILD.bazel
@@ -0,0 +1,70 @@
+######################################################################
+# Libraries
+
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "simd_any_of",
+ hdrs = ["SimdAnyOf.h"],
+ deps = [
+ ":simd_for_each",
+ ":unroll_utils",
+ "//folly:c_portability",
+ ],
+)
+
+cpp_library(
+ name = "simd_platform",
+ hdrs = ["SimdPlatform.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/algorithm/simd:ignore",
+ "//folly/algorithm/simd:movemask",
+ "//folly/lang:safe_assert",
+ ],
+)
+
+cpp_library(
+ name = "simd_contains_impl",
+ hdrs = ["ContainsImpl.h"],
+ deps = [
+ ":simd_any_of",
+ ":simd_platform",
+ "//folly:c_portability",
+ "//folly/container:span",
+ ],
+)
+
+cpp_library(
+ name = "simd_for_each",
+ hdrs = ["SimdForEach.h"],
+ deps = [
+ ":unroll_utils",
+ "//folly:c_portability",
+ "//folly:traits",
+ "//folly/algorithm/simd:ignore",
+ "//folly/lang:align",
+ ],
+)
+
+cpp_library(
+ name = "traits",
+ hdrs = ["Traits.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:memory",
+ "//folly:traits",
+ "//folly/container:span",
+ ],
+)
+
+cpp_library(
+ name = "unroll_utils",
+ hdrs = ["UnrollUtils.h"],
+ deps = [
+ "//folly:portability",
+ "//folly:traits",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/detail/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/detail/test/BUILD.bazel
new file mode 100644
index 00000000000..ef3ef78bd2e
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/detail/test/BUILD.bazel
@@ -0,0 +1,46 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "simd_any_of_test",
+ srcs = [
+ "SimdAnyOfTest.cpp",
+ ],
+ deps = [
+ "//folly:range",
+ "//folly/algorithm/simd/detail:simd_any_of",
+ "//folly/algorithm/simd/detail:simd_platform",
+ "//folly/container:span",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "simd_for_each_test",
+ srcs = ["SimdForEachTest.cpp"],
+ deps = [
+ "//folly/algorithm/simd/detail:simd_for_each",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "traits_test",
+ srcs = ["TraitsTest.cpp"],
+ copts = ["--std=c++17"],
+ deps = [
+ "//folly/algorithm/simd/detail:traits",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "unroll_utils_test",
+ srcs = [
+ "UnrollUtilsTest.cpp",
+ ],
+ deps = [
+ "//folly/algorithm/simd/detail:unroll_utils",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/test/BUILD.bazel
new file mode 100644
index 00000000000..dd902ef6b49
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/algorithm/simd/test/BUILD.bazel
@@ -0,0 +1,42 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "contains_test",
+ srcs = ["ContainsTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/algorithm/simd:contains",
+ "//folly/algorithm/simd/detail:simd_contains_impl",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_unittest(
+ name = "find_fixed_test",
+ srcs = ["FindFixedTest.cpp"],
+ deps = [
+ "//folly:portability",
+ "//folly/algorithm/simd:find_fixed",
+ "//folly/portability:gtest",
+ "@fmt",
+ ],
+)
+
+cpp_unittest(
+ name = "momemask_test",
+ srcs = ["MovemaskTest.cpp"],
+ copts = select({
+ "@platforms//cpu:aarch64": ["-flax-vector-conversions"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:portability",
+ "//folly/algorithm/simd:movemask",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/BUILD.bazel
new file mode 100644
index 00000000000..37f857f5615
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/BUILD.bazel
@@ -0,0 +1,250 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "channel",
+ hdrs = [
+ "Channel.h",
+ "Channel-fwd.h",
+ ],
+ textual_hdrs = [
+ "Channel-inl.h",
+ ],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:synchronized",
+ "//folly/coro:coroutine",
+ "//folly/experimental/channels/detail:channel_bridge",
+ ],
+)
+
+cpp_library(
+ name = "channel_callback_handle",
+ hdrs = [
+ "ChannelCallbackHandle.h",
+ ],
+ deps = [
+ "//folly:intrusive_list",
+ "//folly:scope_guard",
+ "//folly/channels:channel",
+ ],
+)
+
+cpp_library(
+ name = "channel_processor",
+ hdrs = [
+ "ChannelProcessor.h",
+ ],
+ textual_hdrs = [
+ "ChannelProcessor-inl.h",
+ ],
+ deps = [
+ "//folly:executor",
+ "//folly/channels:consume_channel",
+ "//folly/channels:merge_channel",
+ "//folly/channels:rate_limiter",
+ "//folly/channels:transform",
+ "//folly/executors:serial_executor",
+ "//folly/experimental/channels/detail:intrusive_ptr",
+ ],
+)
+
+cpp_library(
+ name = "consume_channel",
+ hdrs = [
+ "ConsumeChannel.h",
+ ],
+ textual_hdrs = [
+ "ConsumeChannel-inl.h",
+ ],
+ deps = [
+ "//folly:executor",
+ "//folly:format",
+ "//folly:intrusive_list",
+ "//folly:scope_guard",
+ "//folly/channels:channel",
+ "//folly/channels:channel_callback_handle",
+ "//folly/coro:task",
+ "//folly/executors:sequenced_executor",
+ "//folly/experimental/channels/detail:utility",
+ ],
+)
+
+cpp_library(
+ name = "fanout_channel",
+ hdrs = [
+ "FanoutChannel.h",
+ ],
+ textual_hdrs = [
+ "FanoutChannel-inl.h",
+ ],
+ deps = [
+ "//folly/channels:channel",
+ "//folly/channels:fanout_sender",
+ "//folly/container:f14_hash",
+ "//folly/executors:sequenced_executor",
+ "//folly/experimental/channels/detail:utility",
+ ],
+)
+
+cpp_library(
+ name = "fanout_sender",
+ hdrs = [
+ "FanoutSender.h",
+ ],
+ textual_hdrs = [
+ "FanoutSender-inl.h",
+ ],
+ deps = [
+ "//folly/channels:channel",
+ "//folly/container:f14_hash",
+ "//folly/executors:sequenced_executor",
+ "//folly/experimental/channels/detail:pointer_variant",
+ "//folly/experimental/channels/detail:utility",
+ ],
+)
+
+cpp_library(
+ name = "merge",
+ hdrs = [
+ "Merge.h",
+ ],
+ textual_hdrs = [
+ "Merge-inl.h",
+ ],
+ deps = [
+ "//folly/channels:channel",
+ "//folly/container:f14_hash",
+ "//folly/executors:sequenced_executor",
+ "//folly/experimental/channels/detail:utility",
+ ],
+)
+
+cpp_library(
+ name = "merge_channel",
+ hdrs = [
+ "MergeChannel.h",
+ ],
+ textual_hdrs = [
+ "MergeChannel-inl.h",
+ ],
+ deps = [
+ "//folly/channels:channel",
+ "//folly/container:f14_hash",
+ "//folly/executors:sequenced_executor",
+ "//folly/experimental/channels/detail:utility",
+ ],
+)
+
+cpp_library(
+ name = "multiplex_channel",
+ hdrs = [
+ "MultiplexChannel.h",
+ ],
+ textual_hdrs = [
+ "MultiplexChannel-inl.h",
+ ],
+ deps = [
+ "//folly/channels:channel",
+ "//folly/channels:fanout_sender",
+ "//folly/channels:on_closed_exception",
+ "//folly/channels:rate_limiter",
+ "//folly/container:f14_hash",
+ "//folly/coro:future_util",
+ "//folly/coro:mutex",
+ "//folly/coro:promise",
+ "//folly/coro:task",
+ "//folly/executors:sequenced_executor",
+ "//folly/experimental/channels/detail:multiplexer_traits",
+ "//folly/experimental/channels/detail:utility",
+ "@range-v3",
+ ],
+)
+
+cpp_library(
+ name = "on_closed_exception",
+ hdrs = [
+ "OnClosedException.h",
+ ],
+)
+
+cpp_library(
+ name = "producer",
+ hdrs = [
+ "Producer.h",
+ ],
+ textual_hdrs = [
+ "Producer-inl.h",
+ ],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly/channels:channel",
+ "//folly/channels:channel_callback_handle",
+ "//folly/channels:consume_channel",
+ "//folly/coro:task",
+ "//folly/executors:sequenced_executor",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "proxy_channel",
+ hdrs = [
+ "ProxyChannel.h",
+ ],
+ textual_hdrs = [
+ "ProxyChannel-inl.h",
+ ],
+ deps = [
+ "//folly/channels:channel",
+ "//folly/executors:sequenced_executor",
+ "//folly/experimental/channels/detail:utility",
+ ],
+)
+
+cpp_library(
+ name = "rate_limiter",
+ hdrs = [
+ "RateLimiter.h",
+ ],
+ deps = [
+ "//folly:function",
+ "//folly/executors:sequenced_executor",
+ ],
+)
+
+cpp_library(
+ name = "max_concurrent_rate_limiter",
+ srcs = [
+ "MaxConcurrentRateLimiter.cpp",
+ ],
+ hdrs = [
+ "MaxConcurrentRateLimiter.h",
+ ],
+ deps = [
+ "//folly:synchronized",
+ "//folly/channels:rate_limiter",
+ "//folly/concurrency:unbounded_queue",
+ "//folly/executors:sequenced_executor",
+ ],
+)
+
+cpp_library(
+ name = "transform",
+ hdrs = [
+ "Transform.h",
+ ],
+ textual_hdrs = [
+ "Transform-inl.h",
+ ],
+ deps = [
+ "//folly/channels:channel",
+ "//folly/channels:on_closed_exception",
+ "//folly/channels:rate_limiter",
+ "//folly/coro:async_generator",
+ "//folly/coro:task",
+ "//folly/executors:sequenced_executor",
+ "//folly/experimental/channels/detail:utility",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/detail/BUILD.bazel
new file mode 100644
index 00000000000..22691528f86
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/detail/BUILD.bazel
@@ -0,0 +1,66 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "atomic_queue",
+ hdrs = [
+ "AtomicQueue.h",
+ ],
+ deps = [
+ "//folly/lang:assume",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "channel_bridge",
+ hdrs = ["ChannelBridge.h"],
+ deps = [
+ "//folly:try",
+ "//folly/experimental/channels/detail:atomic_queue",
+ ],
+)
+
+cpp_library(
+ name = "intrusive_ptr",
+ hdrs = ["IntrusivePtr.h"],
+ deps = [
+ "@boost.smart_ptr",
+ ],
+)
+
+cpp_library(
+ name = "multiplexer_traits",
+ hdrs = ["MultiplexerTraits.h"],
+ deps = [
+ "//folly:traits",
+ "//folly/functional:traits",
+ ],
+)
+
+cpp_library(
+ name = "pointer_variant",
+ hdrs = ["PointerVariant.h"],
+ deps = [
+ "//folly:demangle",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "utility",
+ hdrs = [
+ "Utility.h",
+ ],
+ deps = [
+ "//folly:exception_wrapper",
+ "//folly:function",
+ "//folly:scope_guard",
+ "//folly/channels:channel",
+ "//folly/channels:rate_limiter",
+ "//folly/coro:promise",
+ "//folly/coro:task",
+ "//folly/executors:sequenced_executor",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/detail/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/detail/test/BUILD.bazel
new file mode 100644
index 00000000000..86ca7d15201
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/detail/test/BUILD.bazel
@@ -0,0 +1,29 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "atomic_queue_test",
+ srcs = [
+ "AtomicQueueTest.cpp",
+ ],
+ deps = [
+ "//folly/experimental/channels/detail:atomic_queue",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "pointer_variant_test",
+ srcs = [
+ "PointerVariantTest.cpp",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/experimental/channels/detail:pointer_variant",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/test/BUILD.bazel
new file mode 100644
index 00000000000..43227955663
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/channels/test/BUILD.bazel
@@ -0,0 +1,198 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_unittest(
+ name = "channel_processor_test",
+ srcs = ["ChannelProcessorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/channels:channel_processor",
+ "//folly/executors:manual_executor",
+ "//folly/portability:gmock",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "channel_test",
+# srcs = ["ChannelTest.cpp"],
+# size = ["medium"],
+# deps = [
+# "//folly/channels:channel",
+# "//folly/channels/test:channel_test_util",
+# "//folly/coro:blocking_wait",
+# "//folly/executors:manual_executor",
+# "//folly/portability:gtest",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "fanout_channel_test",
+# srcs = ["FanoutChannelTest.cpp"],
+# deps = [
+# "//folly/channels:consume_channel",
+# "//folly/channels:fanout_channel",
+# "//folly/channels/test:channel_test_util",
+# "//folly/executors:manual_executor",
+# "//folly/executors:serial_executor",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "fanout_sender_test",
+ srcs = ["FanoutSenderTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/channels:consume_channel",
+ "//folly/channels:fanout_sender",
+ "//folly/channels/test:channel_test_util",
+ "//folly/executors:manual_executor",
+ "//folly/executors:serial_executor",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "max_concurrent_rate_limiter_test",
+ srcs = [
+ "MaxConcurrentRateLimiterTest.cpp",
+ ],
+ deps = [
+ "//folly/channels:max_concurrent_rate_limiter",
+ "//folly/executors:manual_executor",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "merge_channel_test",
+# srcs = [
+# "MergeChannelTest.cpp",
+# ],
+# deps = [
+# "//folly/channels:consume_channel",
+# "//folly/channels:merge_channel",
+# "//folly/channels/test:channel_test_util",
+# "//folly/executors:manual_executor",
+# "//folly/executors:serial_executor",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "merge_test",
+# srcs = ["MergeTest.cpp"],
+# deps = [
+# "//folly/channels:consume_channel",
+# "//folly/channels:merge",
+# "//folly/channels/test:channel_test_util",
+# "//folly/executors:manual_executor",
+# "//folly/executors:serial_executor",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "multiplex_channel_test",
+# srcs = ["MultiplexChannelTest.cpp"],
+# deps = [
+# "//folly/channels:consume_channel",
+# "//folly/channels:max_concurrent_rate_limiter",
+# "//folly/channels:multiplex_channel",
+# "//folly/channels/test:channel_test_util",
+# "//folly/coro:blocking_wait",
+# "//folly/executors:manual_executor",
+# "//folly/executors:serial_executor",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "producer_test",
+ srcs = ["ProducerTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/channels:producer",
+ "//folly/channels/test:channel_test_util",
+ "//folly/executors:manual_executor",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "proxy_channel_test",
+ srcs = ["ProxyChannelTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/channels:proxy_channel",
+ "//folly/channels/test:channel_test_util",
+ "//folly/executors:manual_executor",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "transform_test",
+# srcs = ["TransformTest.cpp"],
+# deps = [
+# "//folly:scope_guard",
+# "//folly:synchronized",
+# "//folly/channels:consume_channel",
+# "//folly/channels:max_concurrent_rate_limiter",
+# "//folly/channels:transform",
+# "//folly/channels/test:channel_test_util",
+# "//folly/coro:async_generator",
+# "//folly/coro:detach_on_cancel",
+# "//folly/executors:manual_executor",
+# "//folly/executors:serial_executor",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_library(
+ name = "channel_test_util",
+ hdrs = ["ChannelTestUtil.h"],
+ deps = [
+ "//folly/channels:consume_channel",
+ "//folly/coro:detach_on_cancel",
+ "//folly/coro:sleep",
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:io_thread_pool_executor",
+ "//folly/executors:sequenced_executor",
+ "//folly/futures:shared_promise",
+ "//folly/portability:gmock",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/chrono/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/chrono/BUILD.bazel
new file mode 100644
index 00000000000..915d04e96f1
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/chrono/BUILD.bazel
@@ -0,0 +1,29 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "clock",
+ hdrs = ["Clock.h"],
+)
+
+cpp_library(
+ name = "conv",
+ hdrs = ["Conv.h"],
+ deps = [
+ "//folly:constexpr_math",
+ "//folly:conv",
+ "//folly:expected",
+ "//folly:utility",
+ "//folly/portability:sys_time",
+ "//folly/portability:sys_types",
+ ],
+)
+
+cpp_library(
+ name = "hardware",
+ hdrs = ["Hardware.h"],
+ deps = [
+ "//folly:portability",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/chrono/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/chrono/test/BUILD.bazel
new file mode 100644
index 00000000000..9a5e9558dc7
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/chrono/test/BUILD.bazel
@@ -0,0 +1,20 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "clock_test",
+ srcs = ["ClockTest.cpp"],
+ deps = [
+ "//folly/chrono:clock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "conv_test",
+ srcs = ["ConvTest.cpp"],
+ deps = [
+ "//folly/chrono:conv",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/cli/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/cli/BUILD.bazel
new file mode 100644
index 00000000000..1cadfe4e510
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/cli/BUILD.bazel
@@ -0,0 +1,29 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "program_options",
+ srcs = [
+ "NestedCommandLineApp.cpp",
+ "ProgramOptions.cpp",
+ ],
+ hdrs = [
+ "NestedCommandLineApp.h",
+ "ProgramOptions.h",
+ ],
+ deps = [
+ "//folly:c_portability",
+ "//folly:conv",
+ "//folly:file_util",
+ "//folly:format",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:string",
+ "//folly/experimental/io:fs_util",
+ "//folly/portability:gflags",
+ "@boost.program_options",
+ "@gflags",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/cli/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/cli/test/BUILD.bazel
new file mode 100644
index 00000000000..c6c65b4a4e1
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/cli/test/BUILD.bazel
@@ -0,0 +1,69 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "nested_command_line_app_test",
+ srcs = ["NestedCommandLineAppTest.cpp"],
+ env = {
+ "FOLLY_NESTED_CMDLINE_HELPER": "$(rootpath :nested_command_line_app_test_helper)",
+ },
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":nested_command_line_app_test_helper",
+ "//folly:subprocess",
+ "//folly/cli:program_options",
+ "//folly/experimental/io:fs_util",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cc_binary(
+ name = "nested_command_line_app_test_helper",
+ srcs = ["NestedCommandLineAppTestHelper.cpp"],
+ deps = [
+ "//folly/cli:program_options",
+ "//folly/portability:gflags",
+ ],
+)
+
+cpp_unittest(
+ name = "program_options_test",
+ srcs = ["ProgramOptionsTest.cpp"],
+ env = {
+ "FOLLY_PROGRAM_OPTIONS_TEST_HELPER": "$(rootpath :program_options_test_helper)",
+ },
+ deps = [
+ ":program_options_test_helper",
+ "//folly:file_util",
+ "//folly:subprocess",
+ "//folly/cli:program_options",
+ "//folly/experimental/io:fs_util",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cc_binary(
+ name = "program_options_test_helper",
+ srcs = ["ProgramOptionsTestHelper.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly/cli:program_options",
+ "@glog",
+ ],
+)
+
+cc_binary(
+ name = "nested_command_line_app_example",
+ srcs = ["NestedCommandLineAppExample.cpp"],
+ deps = [
+ "//folly:scope_guard",
+ "//folly:string",
+ "//folly/cli:program_options",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/BUILD.bazel
new file mode 100644
index 00000000000..809a3c70871
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/BUILD.bazel
@@ -0,0 +1,124 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "compression",
+ srcs = [
+ "Compression.cpp",
+ "Zlib.cpp",
+ "Zstd.cpp",
+ ],
+ hdrs = [
+ "Compression.h",
+ "Utils.h",
+ "Zlib.h",
+ "Zstd.h",
+ ],
+ local_defines = [
+ # NOTE: This is defined in lz4_hc/lz4hc.h
+ # "LZ4_STATIC_LINKING_ONLY",
+ "LZ4_HC_STATIC_LINKING_ONLY",
+ "LZ4F_STATIC_LINKING_ONLY",
+ ],
+ deps = [
+ ":compression_context_pool_singletons",
+ "//folly:conv",
+ "//folly:memory",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:random",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly:stop_watch",
+ "//folly:varint",
+ "//folly/io:iobuf",
+ "//folly/lang:bits",
+ "//folly/portability:windows",
+ "@bzip2//:bz2",
+ "@glog",
+ "@lz4",
+ "@lz4//:lz4_frame",
+ "@lz4//:lz4_hc",
+ "@snappy",
+ "@xz//:lzma",
+ "@zlib",
+ "@zstd",
+ ],
+)
+
+cpp_library(
+ name = "compression_context_pool",
+ hdrs = [
+ "CompressionContextPool.h",
+ "CompressionCoreLocalContextPool.h",
+ ],
+ deps = [
+ "//folly:memory",
+ "//folly:synchronized",
+ "//folly/concurrency:cache_locality",
+ ],
+)
+
+cpp_library(
+ name = "compression_context_pool_singletons",
+ srcs = ["CompressionContextPoolSingletons.cpp"],
+ hdrs = ["CompressionContextPoolSingletons.h"],
+ deps = [
+ ":compression_context_pool",
+ "//folly:portability",
+ "//folly/memory:jemalloc_huge_page_allocator",
+ "//folly/memory:malloc",
+ "//folly/portability:config",
+ "@zstd",
+ ],
+)
+
+cpp_library(
+ name = "quotient_multiset",
+ srcs = [
+ "QuotientMultiSet.cpp",
+ ],
+ hdrs = [
+ "QuotientMultiSet.h",
+ "QuotientMultiSet-inl.h",
+ ],
+ deps = [
+ "//folly:format",
+ "//folly:math",
+ "//folly:portability",
+ "//folly:range",
+ "//folly/compression:instructions",
+ "//folly/compression:select64",
+ "//folly/io:iobuf",
+ "//folly/lang:bits",
+ "//folly/lang:bits_class",
+ "//folly/lang:safe_assert",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "instructions",
+ hdrs = ["Instructions.h"],
+ deps = [
+ "//folly:cpu_id",
+ "//folly:portability",
+ "//folly/lang:assume",
+ "//folly/portability:builtins",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "select64",
+ srcs = ["Select64.cpp"],
+ hdrs = ["Select64.h"],
+ deps = [
+ ":instructions",
+ "//folly:constexpr_math",
+ "//folly:portability",
+ "//folly:utility",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/elias_fano/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/elias_fano/BUILD.bazel
new file mode 100644
index 00000000000..ded7a1d947d
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/elias_fano/BUILD.bazel
@@ -0,0 +1,40 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "coding_detail",
+ hdrs = ["CodingDetail.h"],
+)
+
+cpp_library(
+ name = "bit_vector_coding",
+ hdrs = ["BitVectorCoding.h"],
+ deps = [
+ "//folly:likely",
+ "//folly:portability",
+ "//folly:range",
+ "//folly/compression:instructions",
+ "//folly/compression:select64",
+ "//folly/compression/elias_fano:coding_detail",
+ "//folly/lang:bits",
+ "//folly/lang:bits_class",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "elias_fano_coding",
+ hdrs = ["EliasFanoCoding.h"],
+ deps = [
+ "//folly:likely",
+ "//folly:portability",
+ "//folly:range",
+ "//folly/compression:instructions",
+ "//folly/compression:select64",
+ "//folly/compression/elias_fano:coding_detail",
+ "//folly/lang:assume",
+ "//folly/lang:bits",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/elias_fano/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/elias_fano/test/BUILD.bazel
new file mode 100644
index 00000000000..2a61e84ade7
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/elias_fano/test/BUILD.bazel
@@ -0,0 +1,28 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "bitvector_test",
+ srcs = ["BitVectorCodingTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:portability",
+ "//folly/compression:select64",
+ "//folly/compression/elias_fano:bit_vector_coding",
+ "//folly/experimental/test:coding_test_utils",
+ "//folly/init",
+ ],
+)
+
+cpp_unittest(
+ name = "eliasfano_test",
+ size = "large",
+ srcs = ["EliasFanoCodingTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:random",
+ "//folly/compression:select64",
+ "//folly/compression/elias_fano:elias_fano_coding",
+ "//folly/experimental/test:coding_test_utils",
+ "//folly/init",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/test/BUILD.bazel
new file mode 100644
index 00000000000..878c3d579b6
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/compression/test/BUILD.bazel
@@ -0,0 +1,110 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_unittest(
+ name = "compression_test",
+ size = "enormous",
+ srcs = ["CompressionTest.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly:varint",
+ "//folly/compression",
+ "//folly/hash",
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ "@glog",
+ "@zstd",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "compression_context_pool_test",
+# srcs = [
+# "CompressionContextPoolTest.cpp",
+# ],
+# deps = [
+# "//folly/compression:compression_context_pool",
+# "//folly/compression:compression_context_pool_singletons",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cc_binary(
+ name = "quotient_multiset_benchmark",
+ srcs = [
+ "QuotientMultiSetBenchmark.cpp",
+ ],
+ deps = [
+ "//folly:benchmark",
+ "//folly:format",
+ "//folly:random",
+ "//folly:string",
+ "//folly/compression:quotient_multiset",
+ "//folly/compression/elias_fano:elias_fano_coding",
+ "//folly/container:enumerate",
+ "//folly/container:f14_hash",
+ "//folly/container:foreach",
+ "//folly/experimental/test:coding_test_utils",
+ "//folly/init",
+ "@boost.sort",
+ ],
+)
+
+cpp_unittest(
+ name = "quotient_multiset_test",
+ srcs = [
+ "QuotientMultiSetTest.cpp",
+ ],
+ deps = [
+ "//folly:format",
+ "//folly:random",
+ "//folly/compression:quotient_multiset",
+ "//folly/container:enumerate",
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "instructions_test",
+ srcs = ["InstructionsTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/compression:instructions",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "select64_test",
+ srcs = ["Select64Test.cpp"],
+ deps = [
+ "//folly/compression:instructions",
+ "//folly/compression:select64",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "coding_test_utils",
+ srcs = ["CodingTestUtils.cpp"],
+ hdrs = ["CodingTestUtils.h"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:likely",
+ "//folly:optional",
+ "//folly/compression:instructions",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/BUILD.bazel
new file mode 100644
index 00000000000..3b11ef2a5d6
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/BUILD.bazel
@@ -0,0 +1,167 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "cache_locality",
+ srcs = ["CacheLocality.cpp"],
+ hdrs = ["CacheLocality.h"],
+ linkopts = select({
+ "@platforms//os:linux": ["-ldl"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:indestructible",
+ "//folly:likely",
+ "//folly:memory",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly/detail:static_singleton_manager",
+ "//folly/hash",
+ "//folly/lang:align",
+ "//folly/lang:exception",
+ "//folly/portability:unistd",
+ "//folly/synchronization:atomic_ref",
+ "//folly/system:thread_id",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "atomic_shared_ptr",
+ hdrs = [
+ "AtomicSharedPtr.h",
+ "detail/AtomicSharedPtr-detail.h",
+ ],
+ deps = [
+ "//folly:packed_sync_ptr",
+ "//folly/lang:safe_assert",
+ "//folly/memory:sanitize_leak",
+ "//folly/synchronization:atomic_struct",
+ "//folly/synchronization:atomic_util",
+ "//folly/synchronization/detail:atomic_utils",
+ ],
+)
+
+cpp_library(
+ name = "core_cached_shared_ptr",
+ hdrs = ["CoreCachedSharedPtr.h"],
+ deps = [
+ ":cache_locality",
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ "//folly:unit",
+ "//folly/synchronization:hazptr",
+ ],
+)
+
+cpp_library(
+ name = "concurrent_hash_map",
+ hdrs = [
+ "ConcurrentHashMap.h",
+ "detail/ConcurrentHashMap-detail.h",
+ ],
+ deps = [
+ "//folly:optional",
+ "//folly/container:heterogeneous_access",
+ "//folly/container/detail:f14_mask",
+ "//folly/lang:exception",
+ "//folly/synchronization:hazptr",
+ ],
+)
+
+cpp_library(
+ name = "dynamic_bounded_queue",
+ hdrs = [
+ "DynamicBoundedQueue.h",
+ ],
+ deps = [
+ ":cache_locality",
+ ":unbounded_queue",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "priority_unbounded_queue_set",
+ hdrs = [
+ "PriorityUnboundedQueueSet.h",
+ ],
+ deps = [
+ ":unbounded_queue",
+ "//folly:memory",
+ "//folly/lang:align",
+ ],
+)
+
+cpp_library(
+ name = "unbounded_queue",
+ hdrs = [
+ "UnboundedQueue.h",
+ ],
+ deps = [
+ ":cache_locality",
+ "//folly:constexpr_math",
+ "//folly:optional",
+ "//folly:traits",
+ "//folly/lang:align",
+ "//folly/synchronization:hazptr",
+ "//folly/synchronization:saturating_semaphore",
+ "//folly/synchronization:wait_options",
+ "//folly/synchronization/detail:spin",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "deadlock_detector",
+ srcs = ["DeadlockDetector.cpp"],
+ hdrs = [
+ "DeadlockDetector.h",
+ ],
+ deps = [
+ "//folly:executor",
+ "//folly/executors:queue_observer",
+ ],
+)
+
+cpp_library(
+ name = "thread_cached_synchronized",
+ hdrs = ["ThreadCachedSynchronized.h"],
+ deps = [
+ "//folly:shared_mutex",
+ "//folly:thread_local",
+ "//folly:utility",
+ "//folly/lang:access",
+ "//folly/synchronization:lock",
+ "//folly/synchronization:relaxed_atomic",
+ ],
+)
+
+cpp_library(
+ name = "process_local_unique_id",
+ srcs = ["ProcessLocalUniqueId.cpp"],
+ hdrs = ["ProcessLocalUniqueId.h"],
+ deps = [
+ "//folly:likely",
+ "//folly/synchronization:relaxed_atomic",
+ ],
+)
+
+cpp_library(
+ name = "singleton_relaxed_counter",
+ hdrs = [
+ "SingletonRelaxedCounter.h",
+ ],
+ deps = [
+ "//folly:likely",
+ "//folly:portability",
+ "//folly:synchronized",
+ "//folly:utility",
+ "//folly/detail:static_singleton_manager",
+ "//folly/detail:thread_local_globals",
+ "//folly/lang:safe_assert",
+ "//folly/synchronization:atomic_ref",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/container/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/container/BUILD.bazel
new file mode 100644
index 00000000000..cf215e2f078
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/container/BUILD.bazel
@@ -0,0 +1,72 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "atomic_grow_array",
+ hdrs = [
+ "atomic_grow_array.h",
+ ],
+ deps = [
+ "//folly:c_portability",
+ "//folly:constexpr_math",
+ "//folly:likely",
+ "//folly:scope_guard",
+ "//folly/container:span",
+ "//folly/lang:align",
+ "//folly/lang:bits",
+ "//folly/lang:new",
+ ],
+)
+
+cpp_library(
+ name = "relaxed_concurrent_priority_queue",
+ hdrs = [
+ "RelaxedConcurrentPriorityQueue.h",
+ ],
+ deps = [
+ "//folly:random",
+ "//folly:spin_lock",
+ "//folly:thread_local",
+ "//folly/detail:futex",
+ "//folly/lang:align",
+ "//folly/synchronization:hazptr",
+ "//folly/synchronization:wait_options",
+ "//folly/synchronization/detail:spin",
+ ],
+)
+
+cpp_library(
+ name = "lock_free_ring_buffer",
+ hdrs = ["LockFreeRingBuffer.h"],
+ deps = [
+ "//folly:portability",
+ "//folly:traits",
+ "//folly/detail:turn_sequencer",
+ "//folly/portability:unistd",
+ "//folly/synchronization:sanitize_thread",
+ "@boost.utility",
+ ],
+)
+
+cpp_library(
+ name = "flat_combining_priority_queue",
+ hdrs = ["FlatCombiningPriorityQueue.h"],
+ deps = [
+ "//folly:optional",
+ "//folly/detail:futex",
+ "//folly/synchronization:flat_combining",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "single_writer_fixed_hash_map",
+ hdrs = [
+ "SingleWriterFixedHashMap.h",
+ ],
+ deps = [
+ "//folly/lang:bits",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/container/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/container/test/BUILD.bazel
new file mode 100644
index 00000000000..7fafca88cff
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/container/test/BUILD.bazel
@@ -0,0 +1,69 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "atomic_grow_array_test",
+# srcs = ["atomic_grow_array_test.cpp"],
+# deps = [
+# "//folly/concurrency/container:atomic_grow_array",
+# "//folly/lang:keep",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "relaxed_concurrent_priority_queue_test",
+ srcs = ["RelaxedConcurrentPriorityQueueTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:random",
+ "//folly:spin_lock",
+ "//folly/concurrency/container:flat_combining_priority_queue",
+ "//folly/concurrency/container:relaxed_concurrent_priority_queue",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/test:deterministic_schedule",
+ "@boost.thread",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "lock_free_ring_buffer_test",
+ srcs = ["LockFreeRingBufferTest.cpp"],
+ deps = [
+ "//folly/concurrency/container:lock_free_ring_buffer",
+ "//folly/portability:gtest",
+ "//folly/test:deterministic_schedule",
+ ],
+)
+
+cpp_unittest(
+ name = "flat_combining_priority_queue_test",
+ srcs = ["FlatCombiningPriorityQueueTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/concurrency/container:flat_combining_priority_queue",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "single_writer_fixed_hash_map_test",
+ srcs = ["SingleWriterFixedHashMapTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/concurrency/container:single_writer_fixed_hash_map",
+ "//folly/container:array",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/synchronization/test:barrier",
+ "@boost.thread",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/memory/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/memory/BUILD.bazel
new file mode 100644
index 00000000000..d329ccc4b34
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/memory/BUILD.bazel
@@ -0,0 +1,49 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "atomic_read_mostly_main_ptr",
+ srcs = [
+ "AtomicReadMostlyMainPtr.cpp",
+ ],
+ hdrs = [
+ "AtomicReadMostlyMainPtr.h",
+ ],
+ deps = [
+ "//folly:indestructible",
+ "//folly/concurrency/memory:read_mostly_shared_ptr",
+ "//folly/executors:inline_executor",
+ "//folly/synchronization:rcu",
+ ],
+)
+
+cpp_library(
+ name = "read_mostly_shared_ptr",
+ hdrs = ["ReadMostlySharedPtr.h"],
+ deps = [
+ "//folly:function",
+ "//folly/concurrency/memory:tl_ref_count",
+ ],
+)
+
+cpp_library(
+ name = "primary_ptr",
+ hdrs = ["PrimaryPtr.h"],
+ deps = [
+ "//folly:function",
+ "//folly/futures:cleanup",
+ "//folly/futures:core",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "tl_ref_count",
+ hdrs = ["TLRefCount.h"],
+ deps = [
+ "//folly:thread_local",
+ "//folly/synchronization:asymmetric_thread_fence",
+ "//folly/synchronization/detail:sleeper",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/memory/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/memory/test/BUILD.bazel
new file mode 100644
index 00000000000..ec50f0a76b5
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/memory/test/BUILD.bazel
@@ -0,0 +1,64 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "atomic_read_mostly_main_ptr_test",
+ srcs = ["AtomicReadMostlyMainPtrTest.cpp"],
+ target_compatible_with = select({
+ # TODO: flaky on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/concurrency/memory:atomic_read_mostly_main_ptr",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "read_mostly_shared_ptr_stress_test",
+ size = "medium",
+ srcs = ["ReadMostlySharedPtrStressTest.cpp"],
+ deps = [
+ "//folly/concurrency/memory:read_mostly_shared_ptr",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "read_mostly_shared_ptr_test",
+ srcs = ["ReadMostlySharedPtrTest.cpp"],
+ deps = [
+ "//folly:memory",
+ "//folly/concurrency/memory:read_mostly_shared_ptr",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "primary_ptr_test",
+ srcs = ["PrimaryPtrTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/concurrency/memory:primary_ptr",
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:manual_executor",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "ref_count_test",
+ srcs = ["RefCountTest.cpp"],
+ deps = [
+ "//folly/concurrency/memory:tl_ref_count",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "//folly/synchronization/test:barrier",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/test/BUILD.bazel
new file mode 100644
index 00000000000..000712b0603
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/concurrency/test/BUILD.bazel
@@ -0,0 +1,200 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+# TODO(kgk): Fix test.
+# cc_binary(
+# name = "cache_locality_benchmark",
+# srcs = ["CacheLocalityBenchmark.cpp"],
+# deps = [
+# "//folly:benchmark",
+# "//folly/concurrency:cache_locality",
+# "//folly/lang:keep",
+# "@glog",
+# ],
+# )
+
+cpp_unittest(
+ name = "cache_locality_test",
+ srcs = ["CacheLocalityTest.cpp"],
+ deps = [
+ "//folly/concurrency:cache_locality",
+ "//folly/portability:gtest",
+ "//folly/portability:sys_resource",
+ "//folly/portability:unistd",
+ "//folly/test:test_utils",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "atomic_shared_ptr_test",
+# srcs = [
+# "AtomicSharedPtrCounted.h",
+# "AtomicSharedPtrTest.cpp",
+# ],
+# deps = [
+# "//folly:portability",
+# "//folly/concurrency:atomic_shared_ptr",
+# "//folly/portability:config",
+# "//folly/portability:gflags",
+# "//folly/portability:gtest",
+# "//folly/test:deterministic_schedule",
+# "@glog",
+# ],
+# )
+
+cc_binary(
+ name = "atomic_shared_ptr_performance",
+ srcs = ["AtomicSharedPtrPerformance.cpp"],
+ deps = [
+ "//folly/concurrency:atomic_shared_ptr",
+ "//folly/portability:config",
+ ],
+)
+
+cpp_unittest(
+ name = "core_cached_shared_ptr_test",
+ srcs = ["CoreCachedSharedPtrTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:portability",
+ "//folly/concurrency:atomic_shared_ptr",
+ "//folly/concurrency:core_cached_shared_ptr",
+ "//folly/concurrency:thread_cached_synchronized",
+ "//folly/concurrency/memory:read_mostly_shared_ptr",
+ "//folly/portability:config",
+ "//folly/portability:gtest",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "concurrent_hash_map_test",
+# srcs = ["ConcurrentHashMapTest.cpp"],
+# deps = [
+# "//folly:traits",
+# "//folly/concurrency:concurrent_hash_map",
+# "//folly/container/test:tracking_types",
+# "//folly/hash",
+# "//folly/portability:gflags",
+# "//folly/portability:gtest",
+# "//folly/synchronization:latch",
+# "//folly/test:deterministic_schedule",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "concurrent_hash_map_test_no_simd",
+# srcs = ["ConcurrentHashMapTest.cpp"],
+# local_defines = ["FOLLY_F14_FORCE_FALLBACK=1"],
+# deps = [
+# "//folly:traits",
+# "//folly/concurrency:concurrent_hash_map",
+# "//folly/container/test:tracking_types",
+# "//folly/hash",
+# "//folly/portability:gflags",
+# "//folly/portability:gtest",
+# "//folly/synchronization:latch",
+# "//folly/test:deterministic_schedule",
+# ],
+# )
+
+cpp_unittest(
+ name = "dynamic_bounded_queue_test",
+ srcs = ["DynamicBoundedQueueTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:mpmc_queue",
+ "//folly:producer_consumer_queue",
+ "//folly/concurrency:dynamic_bounded_queue",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "priority_unbounded_queue_set_test",
+ srcs = ["PriorityUnboundedQueueSetTest.cpp"],
+ deps = [
+ "//folly/concurrency:priority_unbounded_queue_set",
+ "//folly/container:enumerate",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "unbounded_queue_test",
+ srcs = ["UnboundedQueueTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:mpmc_queue",
+ "//folly:producer_consumer_queue",
+ "//folly/concurrency:unbounded_queue",
+ "//folly/lang:keep",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@boost.thread",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "thread_cached_synchronized_test",
+ srcs = ["ThreadCachedSynchronizedTest.cpp"],
+ deps = [
+ "//folly/concurrency:thread_cached_synchronized",
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "process_local_unique_id_test",
+ srcs = ["ProcessLocalUniqueIdTest.cpp"],
+ deps = [
+ "//folly:synchronized",
+ "//folly/concurrency:process_local_unique_id",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "singleton_relaxed_counter_bench",
+ srcs = [
+ "SingletonRelaxedCounterBench.cpp",
+ ],
+ deps = [
+ "//folly:benchmark",
+ "//folly/concurrency:singleton_relaxed_counter",
+ "//folly/init",
+ "//folly/lang:keep",
+ "//folly/portability:gflags",
+ "@boost.thread",
+ ],
+)
+
+cpp_unittest(
+ name = "singleton_relaxed_counter_test",
+ srcs = [
+ "SingletonRelaxedCounterTest.cpp",
+ ],
+ deps = [
+ "//folly:thread_local",
+ "//folly/concurrency:singleton_relaxed_counter",
+ "//folly/portability:gtest",
+ "@boost.thread",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/BUILD.bazel
new file mode 100644
index 00000000000..8fcdadd5a1c
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/BUILD.bazel
@@ -0,0 +1,345 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "access",
+ hdrs = ["Access.h"],
+ deps = [
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "array",
+ hdrs = ["Array.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:traits",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "bit_iterator",
+ hdrs = ["BitIterator.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/container/detail:bit_iterator_detail",
+ "//folly/lang:bits",
+ "@boost.iterator",
+ ],
+)
+
+cpp_library(
+ name = "iterator",
+ hdrs = ["Iterator.h"],
+ deps = [
+ ":access",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/functional:invoke",
+ "//folly/lang:rvalue_reference_wrapper",
+ ],
+)
+
+cpp_library(
+ name = "enumerate",
+ hdrs = ["Enumerate.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly/portability:sys_types",
+ ],
+)
+
+cpp_library(
+ name = "evicting_cache_map",
+ hdrs = ["EvictingCacheMap.h"],
+ deps = [
+ "//folly/container:f14_hash",
+ "//folly/container:heterogeneous_access",
+ "//folly/lang:exception",
+ "@boost.intrusive",
+ "@boost.iterator",
+ ],
+)
+
+cpp_library(
+ name = "f14_hash",
+ hdrs = [
+ "F14Map.h",
+ "F14Set.h",
+ ],
+ deps = [
+ ":f14_hash_fwd",
+ ":iterator",
+ ":view",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:traits",
+ "//folly/container/detail:f14_hash_detail",
+ "//folly/container/detail:util",
+ "//folly/lang:exception",
+ "//folly/lang:safe_assert",
+ ],
+)
+
+cpp_library(
+ name = "f14_hash_fwd",
+ hdrs = [
+ "F14Map-fwd.h",
+ "F14Set-fwd.h",
+ ],
+ deps = [
+ "//folly/container/detail:f14_defaults",
+ "//folly/memory:memory_resource",
+ ],
+)
+
+cpp_library(
+ name = "heap_vector_types",
+ hdrs = [
+ "heap_vector_types.h",
+ ],
+ deps = [
+ ":iterator",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly:small_vector",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/functional:invoke",
+ "//folly/lang:exception",
+ "//folly/memory:memory_resource",
+ "//folly/portability:builtins",
+ ],
+)
+
+cpp_library(
+ name = "foreach",
+ hdrs = [
+ "Foreach.h",
+ ],
+ textual_hdrs = [
+ "Foreach-inl.h",
+ ],
+ deps = [
+ ":access",
+ "//folly:portability",
+ "//folly:preprocessor",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "heterogeneous_access_fwd",
+ hdrs = [
+ "HeterogeneousAccess-fwd.h",
+ ],
+)
+
+cpp_library(
+ name = "heterogeneous_access",
+ hdrs = [
+ "HeterogeneousAccess.h",
+ ],
+ deps = [
+ ":heterogeneous_access_fwd",
+ "//folly:range",
+ "//folly:traits",
+ "//folly/hash",
+ ],
+)
+
+cpp_library(
+ name = "merge",
+ hdrs = ["Merge.h"],
+)
+
+cpp_library(
+ name = "range_traits",
+ hdrs = ["range_traits.h"],
+ deps = [
+ "//folly:traits",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "regex_match_cache",
+ srcs = ["RegexMatchCache.cpp"],
+ hdrs = ["RegexMatchCache.h"],
+ deps = [
+ ":f14_hash",
+ ":reserve",
+ ":span",
+ "//folly:chrono",
+ "//folly:function",
+ "//folly:map_util",
+ "//folly:string",
+ "//folly/lang:bits",
+ "//folly/portability:windows",
+ "//folly/ssl:openssl_hash",
+ "//folly/synchronization:atomic_util",
+ "@boost.regex",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "span",
+ hdrs = ["span.h"],
+ deps = [
+ ":access",
+ ":iterator",
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/functional:invoke",
+ "//folly/portability:constexpr",
+ ],
+)
+
+cpp_library(
+ name = "sparse_byte_set",
+ hdrs = ["SparseByteSet.h"],
+ deps = [
+ "//folly:c_portability",
+ ],
+)
+
+cpp_library(
+ name = "tape",
+ hdrs = [
+ "tape.h",
+ ],
+ deps = [
+ ":iterator",
+ "//folly:portability",
+ "//folly:range",
+ "//folly/container/detail:tape_detail",
+ "//folly/memory:uninitialized_memory_hacks",
+ ],
+)
+
+cpp_library(
+ name = "view",
+ hdrs = ["View.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/functional:invoke",
+ "//folly/lang:customization_point",
+ ],
+)
+
+cpp_library(
+ name = "weighted_evicting_cache_map",
+ hdrs = [
+ "WeightedEvictingCacheMap.h",
+ ],
+ deps = [
+ "//folly/container:evicting_cache_map",
+ ],
+)
+
+cpp_library(
+ name = "intrusive_heap",
+ hdrs = [
+ "IntrusiveHeap.h",
+ ],
+ deps = [
+ "//folly:portability",
+ "@boost.core",
+ "@boost.intrusive",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "reserve",
+ hdrs = [
+ "Reserve.h",
+ ],
+ deps = [
+ "//folly:likely",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "sorted_vector_types",
+ hdrs = [
+ "sorted_vector_types.h",
+ ],
+ deps = [
+ "//folly:scope_guard",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/lang:access",
+ "//folly/lang:exception",
+ "//folly/memory:memory_resource",
+ ],
+)
+
+cpp_library(
+ name = "fbvector",
+ hdrs = ["FBVector.h"],
+ deps = [
+ "//folly:format_traits",
+ "//folly:likely",
+ "//folly:scope_guard",
+ "//folly:traits",
+ "//folly/lang:checked_math",
+ "//folly/lang:exception",
+ "//folly/lang:hint",
+ "//folly/memory:malloc",
+ ],
+)
+
+cpp_library(
+ name = "intrusive_list",
+ hdrs = ["IntrusiveList.h"],
+ deps = [
+ "@boost.intrusive",
+ ],
+)
+
+cpp_library(
+ name = "map_util",
+ hdrs = ["MapUtil.h"],
+ deps = [
+ "//folly:optional",
+ "//folly:range",
+ "//folly/functional:invoke",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "small_vector",
+ hdrs = ["small_vector.h"],
+ deps = [
+ "//folly:constexpr_math",
+ "//folly:format_traits",
+ "//folly:likely",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:traits",
+ "//folly/functional:invoke",
+ "//folly/hash",
+ "//folly/lang:align",
+ "//folly/lang:assume",
+ "//folly/lang:checked_math",
+ "//folly/lang:exception",
+ "//folly/memory:malloc",
+ "//folly/memory:sanitize_leak",
+ "//folly/portability:malloc",
+ "@boost.utility",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/detail/BUILD.bazel
new file mode 100644
index 00000000000..f3c8cfb7dd9
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/detail/BUILD.bazel
@@ -0,0 +1,113 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "bit_iterator_detail",
+ hdrs = ["BitIteratorDetail.h"],
+ deps = [
+ "//folly/portability:sys_types",
+ "@boost.iterator",
+ ],
+)
+
+cpp_library(
+ name = "f14_intrinsics_availability",
+ hdrs = [
+ "F14IntrinsicsAvailability.h",
+ ],
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "f14_defaults",
+ hdrs = [
+ "F14Defaults.h",
+ ],
+ deps = [
+ "//folly/container:heterogeneous_access_fwd",
+ ],
+)
+
+cpp_library(
+ name = "f14_hash_detail",
+ srcs = [
+ "F14Table.cpp",
+ ],
+ hdrs = [
+ "F14MapFallback.h",
+ "F14Policy.h",
+ "F14SetFallback.h",
+ "F14Table.h",
+ ],
+ deps = [
+ ":f14_defaults",
+ ":f14_intrinsics_availability",
+ ":f14_mask",
+ ":util",
+ "//folly:bits",
+ "//folly:constexpr_math",
+ "//folly:likely",
+ "//folly:memory",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:traits",
+ "//folly:unit",
+ "//folly/container:heterogeneous_access",
+ "//folly/functional:invoke",
+ "//folly/hash",
+ "//folly/lang:align",
+ "//folly/lang:assume",
+ "//folly/lang:exception",
+ "//folly/lang:pretty",
+ "//folly/lang:safe_assert",
+ "//folly/memory:malloc",
+ "//folly/portability:builtins",
+ ],
+)
+
+cpp_library(
+ name = "f14_mask",
+ hdrs = [
+ "F14Mask.h",
+ ],
+ deps = [
+ ":f14_intrinsics_availability",
+ "//folly:bits",
+ "//folly:constexpr_math",
+ "//folly:likely",
+ "//folly:portability",
+ "//folly/lang:assume",
+ "//folly/lang:safe_assert",
+ ],
+)
+
+cpp_library(
+ name = "tape_detail",
+ hdrs = [
+ "tape_detail.h",
+ ],
+ deps = [
+ "//folly:portability",
+ "//folly:range",
+ "//folly/container:iterator",
+ "//folly/container:range_traits",
+ "//folly/lang:hint",
+ "//folly/memory:uninitialized_memory_hacks",
+ ],
+)
+
+cpp_library(
+ name = "util",
+ hdrs = [
+ "Util.h",
+ ],
+ deps = [
+ "//folly:traits",
+ "//folly/container:iterator",
+ "//folly/functional:apply_tuple",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/detail/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/detail/test/BUILD.bazel
new file mode 100644
index 00000000000..5870978c8c9
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/detail/test/BUILD.bazel
@@ -0,0 +1,12 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "f14_detail_test",
+ srcs = [
+ "F14DetailTest.cpp",
+ ],
+ deps = [
+ "//folly/container/detail:f14_hash_detail",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/test/BUILD.bazel
new file mode 100644
index 00000000000..53bfbbbdc62
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/container/test/BUILD.bazel
@@ -0,0 +1,486 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_unittest(
+ name = "access_test",
+ srcs = ["AccessTest.cpp"],
+ deps = [
+ "//folly/container:access",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "array_test",
+ srcs = ["ArrayTest.cpp"],
+ deps = [
+ "//folly/container:array",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "bit_iterator_test",
+ srcs = ["BitIteratorTest.cpp"],
+ deps = [
+ "//folly/container:bit_iterator",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "enumerate_test",
+ srcs = ["EnumerateTest.cpp"],
+ deps = [
+ "//folly:range",
+ "//folly/container:enumerate",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "evicting_cache_map_test",
+ srcs = ["EvictingCacheMapTest.cpp"],
+ deps = [
+ "//folly/container:evicting_cache_map",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "f14_test_util",
+ hdrs = [
+ "F14TestUtil.h",
+ ],
+ deps = [
+ "//folly/container/detail:f14_hash_detail",
+ ],
+)
+
+cpp_unittest(
+ name = "f14_fwd_test",
+ srcs = [
+ "F14FwdTest.cpp",
+ ],
+ deps = [
+ "//folly/container:f14_hash_fwd",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "f14_map_test",
+ size = "medium",
+ srcs = [
+ "F14MapTest.cpp",
+ ],
+ deps = [
+ ":f14_test_util",
+ ":tracking_types",
+ "//folly:benchmark",
+ "//folly:conv",
+ "//folly:fbstring",
+ "//folly:portability",
+ "//folly/container:f14_hash",
+ "//folly/hash",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "f14_map_fallback_test",
+ srcs = [
+ "F14MapTest.cpp",
+ ],
+ local_defines = ["FOLLY_F14_FORCE_FALLBACK"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":f14_test_util",
+ ":tracking_types",
+ "//folly:benchmark",
+ "//folly:conv",
+ "//folly:fbstring",
+ "//folly:portability",
+ "//folly/container:f14_hash",
+ "//folly/hash",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "f14_policy_test",
+ srcs = [
+ "F14PolicyTest.cpp",
+ ],
+ deps = [
+ "//folly/container:f14_hash",
+ "//folly/portability:gtest",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "f14_set_test",
+# srcs = [
+# "F14SetTest.cpp",
+# ],
+# deps = [
+# ":f14_test_util",
+# ":tracking_types",
+# "//folly:benchmark",
+# "//folly:conv",
+# "//folly:fbstring",
+# "//folly:portability",
+# "//folly/container:f14_hash",
+# "//folly/lang:keep",
+# "//folly/portability:gtest",
+# "//folly/test:test_utils",
+# "@glog",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "f14_set_fallback_test",
+# srcs = [
+# "F14SetTest.cpp",
+# ],
+# local_defines = ["FOLLY_F14_FORCE_FALLBACK=1"],
+# deps = [
+# ":f14_test_util",
+# ":tracking_types",
+# "//folly:benchmark",
+# "//folly:conv",
+# "//folly:fbstring",
+# "//folly:portability",
+# "//folly/container:f14_hash",
+# "//folly/lang:keep",
+# "//folly/portability:gtest",
+# "//folly/test:test_utils",
+# "@glog",
+# ],
+# )
+
+cpp_unittest(
+ name = "heap_vector_types_test",
+ srcs = ["heap_vector_types_test.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly:range",
+ "//folly:small_vector",
+ "//folly:sorted_vector_types",
+ "//folly:utility",
+ "//folly/container:heap_vector_types",
+ "//folly/memory:malloc",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "f14_interprocess_test",
+# srcs = [
+# "F14InterprocessTest.cpp",
+# ],
+# linkopts = select({
+# "@platforms//os:windows": [],
+# "//conditions:default": ["-lrt"],
+# }),
+# deps = [
+# "//folly:random",
+# "//folly:traits",
+# "//folly/container:f14_hash",
+# "//folly/portability:gtest",
+# "@boost.interprocess",
+# "@fmt",
+# ],
+# )
+
+cc_binary(
+ name = "f14_small_overheads",
+ srcs = [
+ "F14SmallOverheads.cpp",
+ ],
+ deps = [
+ "//folly/container:f14_hash",
+ ],
+)
+
+cpp_unittest(
+ name = "f14_asan_support_test",
+ srcs = [
+ "F14AsanSupportTest.cpp",
+ ],
+ deps = [
+ "//folly:portability",
+ "//folly/container:f14_hash",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "foreach_test",
+ srcs = ["ForeachTest.cpp"],
+ deps = [
+ "//folly/container:foreach",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "heterogeneous_access_test",
+ srcs = [
+ "HeterogeneousAccessTest.cpp",
+ ],
+ target_compatible_with = select({
+ # Test relies on char_traits, which isn't available on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:fbstring",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:small_vector",
+ "//folly:traits",
+ "//folly/container:heterogeneous_access",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "iterator_test",
+ srcs = ["IteratorTest.cpp"],
+ deps = [
+ "//folly/container:iterator",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "merge_test",
+ srcs = ["MergeTest.cpp"],
+ deps = [
+ "//folly/container:merge",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "range_traits_test",
+ srcs = ["range_traits_test.cpp"],
+ deps = [
+ "//folly/container:range_traits",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "regex_match_cache_test",
+ srcs = ["RegexMatchCacheTest.cpp"],
+ deps = [
+ "//folly:portability",
+ "//folly:utility",
+ "//folly/container:f14_hash",
+ "//folly/container:regex_match_cache",
+ "//folly/container:sorted_vector_types",
+ "//folly/container:span",
+ "//folly/lang:keep",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "@fmt",
+ ],
+)
+
+cpp_unittest(
+ name = "span_test",
+ srcs = ["span_test.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/container:span",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "sparse_byte_set_test",
+ srcs = ["SparseByteSetTest.cpp"],
+ deps = [
+ "//folly/container:sparse_byte_set",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "tracking_types",
+ hdrs = [
+ "TrackingTypes.h",
+ ],
+ deps = [
+ "//folly:function",
+ "//folly/hash",
+ "//folly/lang:safe_assert",
+ "//folly/portability:asm",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "tape_test",
+# srcs = ["tape_test.cpp"],
+# deps = [
+# "//folly:small_vector",
+# "//folly/container:tape",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "tape_bench",
+ srcs = ["tape_bench.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/container:tape",
+ "//folly/init",
+ ],
+)
+
+cpp_unittest(
+ name = "util_test",
+ srcs = ["UtilTest.cpp"],
+ deps = [
+ "//folly:optional",
+ "//folly:range",
+ "//folly/container/detail:util",
+ "//folly/container/test:tracking_types",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "weighted_evicting_cache_map_test",
+ srcs = ["WeightedEvictingCacheMapTest.cpp"],
+ deps = [
+ "//folly/container:weighted_evicting_cache_map",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "intrusive_heap_test",
+ srcs = ["IntrusiveHeapTest.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly/container:intrusive_heap",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "hash_maps_bench",
+ srcs = ["HashMapsBench.cpp"],
+ target_compatible_with = select({
+ # Uses functions that are not available on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:benchmark",
+ "//folly:conv",
+ "//folly:format",
+ "//folly:function",
+ "//folly/container:f14_hash",
+ "//folly/hash",
+ "//folly/init",
+ "//folly/portability:gflags",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "reserve_test",
+ srcs = ["ReserveTest.cpp"],
+ deps = [
+ "//folly/container:f14_hash",
+ "//folly/container:reserve",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "fbvector_test",
+ srcs = [
+ "FBVectorTest.cpp",
+ "FBVectorTests.cpp.h",
+ ],
+ deps = [
+ "//folly:fbstring",
+ "//folly:fbvector",
+ "//folly:random",
+ "//folly:traits",
+ "//folly/container:foreach",
+ "//folly/portability:gtest",
+ "//folly/test:fbvector_test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "map_util_test",
+ srcs = ["MapUtilTest.cpp"],
+ deps = [
+ "//folly:map_util",
+ "//folly:sorted_vector_types",
+ "//folly:traits",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "small_vector_test",
+ srcs = ["small_vector_test.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:small_vector",
+ "//folly:sorted_vector_types",
+ "//folly:traits",
+ "//folly/container:iterator",
+ "//folly/portability:gtest",
+ "@boost.algorithm",
+ "@fmt",
+ ],
+)
+
+cpp_unittest(
+ name = "sorted_vector_types_test",
+ srcs = ["sorted_vector_test.cpp"],
+ deps = [
+ "//folly:optional",
+ "//folly:range",
+ "//folly:small_vector",
+ "//folly:sorted_vector_types",
+ "//folly:utility",
+ "//folly/memory:malloc",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/coro/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/coro/BUILD.bazel
new file mode 100644
index 00000000000..0bd912a5b43
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/coro/BUILD.bazel
@@ -0,0 +1,717 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "accumulate",
+ hdrs = [
+ "Accumulate.h",
+ ],
+ textual_hdrs = [
+ "Accumulate-inl.h",
+ ],
+ deps = [
+ "//folly/coro:async_generator",
+ "//folly/coro:coroutine",
+ "//folly/coro:task",
+ ],
+)
+
+cpp_library(
+ name = "async_generator",
+ srcs = [],
+ hdrs = ["AsyncGenerator.h"],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:exception_wrapper",
+ "//folly:traits",
+ "//folly:try",
+ "//folly/coro:auto_cleanup_fwd",
+ "//folly/coro:coroutine",
+ "//folly/coro:current_executor",
+ "//folly/coro:detail_malloc",
+ "//folly/coro:detail_manual_lifetime",
+ "//folly/coro:invoke",
+ "//folly/coro:result",
+ "//folly/coro:scope_exit",
+ "//folly/coro:via_if_async",
+ "//folly/coro:with_async_stack",
+ "//folly/coro:with_cancellation",
+ "//folly/tracing:async_stack",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "async_pipe",
+ hdrs = ["AsyncPipe.h"],
+ deps = [
+ "//folly:try",
+ "//folly/coro:async_generator",
+ "//folly/coro:coroutine",
+ "//folly/coro:invoke",
+ "//folly/coro:small_unbounded_queue",
+ "//folly/coro:via_if_async",
+ "//folly/fibers:semaphore",
+ ],
+)
+
+cpp_library(
+ name = "async_scope",
+ hdrs = ["AsyncScope.h"],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:exception_wrapper",
+ "//folly/coro:coroutine",
+ "//folly/coro:current_executor",
+ "//folly/coro:detail_barrier",
+ "//folly/coro:detail_barrier_task",
+ "//folly/coro:task",
+ "//folly/futures:core",
+ "//folly/portability:source_location",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "async_stack",
+ hdrs = ["AsyncStack.h"],
+ deps = [
+ "//folly:executor",
+ "//folly/coro:coroutine",
+ "//folly/coro:with_async_stack",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "baton",
+ srcs = ["Baton.cpp"],
+ hdrs = ["Baton.h"],
+ deps = [
+ "//folly:try",
+ "//folly/coro:coroutine",
+ "//folly/synchronization:atomic_util",
+ ],
+)
+
+cpp_library(
+ name = "blocking_wait",
+ hdrs = ["BlockingWait.h"],
+ deps = [
+ "//folly:try",
+ "//folly/coro:coroutine",
+ "//folly/coro:detail_malloc",
+ "//folly/coro:detail_traits",
+ "//folly/coro:task",
+ "//folly/coro:traits",
+ "//folly/coro:via_if_async",
+ "//folly/coro:with_async_stack",
+ "//folly/executors:manual_executor",
+ "//folly/fibers:core",
+ "//folly/synchronization:baton",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "collect",
+ hdrs = [
+ "Collect.h",
+ ],
+ textual_hdrs = [
+ "Collect-inl.h",
+ ],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:exception_wrapper",
+ "//folly:try",
+ "//folly:unit",
+ "//folly/container:access",
+ "//folly/container:iterator",
+ "//folly/coro:async_generator",
+ "//folly/coro:async_pipe",
+ "//folly/coro:async_scope",
+ "//folly/coro:coroutine",
+ "//folly/coro:detail_barrier",
+ "//folly/coro:detail_barrier_task",
+ "//folly/coro:detail_current_async_frame",
+ "//folly/coro:detail_helpers",
+ "//folly/coro:detail_traits",
+ "//folly/coro:mutex",
+ "//folly/coro:task",
+ "//folly/coro:via_if_async",
+ ],
+)
+
+cpp_library(
+ name = "concat",
+ hdrs = [
+ "Concat.h",
+ ],
+ textual_hdrs = [
+ "Concat-inl.h",
+ ],
+ deps = [
+ "//folly/coro:async_generator",
+ "//folly/coro:coroutine",
+ ],
+)
+
+cpp_library(
+ name = "coroutine",
+ hdrs = ["Coroutine.h"],
+ deps = [
+ "//folly:portability",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "current_executor",
+ hdrs = ["CurrentExecutor.h"],
+ deps = [
+ "//folly:executor",
+ "//folly/coro:coroutine",
+ "//folly/coro:via_if_async",
+ "//folly/coro:with_async_stack",
+ "//folly/io/async:request_context",
+ ],
+)
+
+cpp_library(
+ name = "detach_on_cancel",
+ hdrs = ["DetachOnCancel.h"],
+ deps = [
+ "//folly/coro:baton",
+ "//folly/coro:coroutine",
+ "//folly/coro:detail_helpers",
+ "//folly/coro:invoke",
+ "//folly/coro:task",
+ "//folly/coro:traits",
+ ],
+)
+
+cpp_library(
+ name = "detail_barrier",
+ hdrs = ["detail/Barrier.h"],
+ deps = [
+ ":coroutine",
+ ":traits",
+ ":with_async_stack",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "detail_barrier_task",
+ hdrs = ["detail/BarrierTask.h"],
+ deps = [
+ ":coroutine",
+ ":detail_barrier",
+ ":detail_malloc",
+ ":with_async_stack",
+ ],
+)
+
+cpp_library(
+ name = "detail_current_async_frame",
+ hdrs = ["detail/CurrentAsyncFrame.h"],
+ deps = [
+ ":coroutine",
+ ":with_async_stack",
+ "//folly:executor",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "detail_helpers",
+ hdrs = ["detail/Helpers.h"],
+ deps = [
+ ":coroutine",
+ "//folly:executor",
+ "//folly:singleton_thread_local",
+ "//folly/io/async:request_context",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "detail_malloc",
+ srcs = ["detail/Malloc.cpp"],
+ hdrs = ["detail/Malloc.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly/lang:hint",
+ "//folly/lang:new",
+ ],
+)
+
+cpp_library(
+ name = "detail_manual_lifetime",
+ hdrs = ["detail/ManualLifetime.h"],
+ deps = [
+ "//folly:scope_guard",
+ ],
+)
+
+cpp_library(
+ name = "detail_traits",
+ hdrs = ["detail/Traits.h"],
+ deps = [
+ "//folly:traits",
+ ],
+)
+
+cpp_library(
+ name = "filter",
+ hdrs = [
+ "Filter.h",
+ ],
+ textual_hdrs = [
+ "Filter-inl.h",
+ ],
+ deps = [
+ "//folly/coro:async_generator",
+ "//folly/coro:coroutine",
+ ],
+)
+
+cpp_library(
+ name = "future_util",
+ hdrs = ["FutureUtil.h"],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly/coro:baton",
+ "//folly/coro:coroutine",
+ "//folly/coro:current_executor",
+ "//folly/coro:invoke",
+ "//folly/coro:task",
+ "//folly/coro:traits",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "generator",
+ hdrs = ["Generator.h"],
+ deps = [
+ "//folly/coro:coroutine",
+ "//folly/coro:invoke",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "gmock_helpers",
+ hdrs = ["GmockHelpers.h"],
+ deps = [
+ "//folly/coro:coroutine",
+ "//folly/coro:gtest_helpers",
+ "//folly/coro:result",
+ "//folly/coro:task",
+ "//folly/portability:gmock",
+ ],
+)
+
+cpp_library(
+ name = "gtest_helpers",
+ hdrs = ["GtestHelpers.h"],
+ deps = [
+ "//folly/coro:blocking_wait",
+ "//folly/coro:coroutine",
+ "//folly/coro:task",
+ "//folly/debugging/exception_tracer:smart_exception_stack_trace_hooks", # @manual
+ "//folly/debugging/exception_tracer:smart_exception_tracer",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "inline_task",
+ hdrs = ["detail/InlineTask.h"],
+ deps = [
+ ":coroutine",
+ ":detail_malloc",
+ ":with_async_stack",
+ "//folly:scope_guard",
+ "//folly:try",
+ "//folly/lang:assume",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "invoke",
+ hdrs = ["Invoke.h"],
+ deps = [
+ "//folly/functional:invoke",
+ "//folly/lang:customization_point",
+ ],
+)
+
+cpp_library(
+ name = "merge",
+ hdrs = [
+ "Merge.h",
+ ],
+ textual_hdrs = [
+ "Merge-inl.h",
+ ],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:executor",
+ "//folly:scope_guard",
+ "//folly/coro:async_generator",
+ "//folly/coro:baton",
+ "//folly/coro:coroutine",
+ "//folly/coro:detail_barrier",
+ "//folly/coro:detail_barrier_task",
+ "//folly/coro:detail_current_async_frame",
+ "//folly/coro:detail_helpers",
+ "//folly/coro:mutex",
+ "//folly/coro:task",
+ "//folly/coro:via_if_async",
+ "//folly/coro:with_cancellation",
+ ],
+)
+
+cpp_library(
+ name = "mutex",
+ srcs = ["Mutex.cpp"],
+ hdrs = ["Mutex.h"],
+ deps = [
+ "//folly:executor",
+ "//folly/coro:coroutine",
+ "//folly/coro:via_if_async",
+ ],
+)
+
+cpp_library(
+ name = "promise",
+ hdrs = ["Promise.h"],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:try",
+ "//folly/coro:baton",
+ "//folly/coro:coroutine",
+ "//folly/futures:core",
+ "//folly/synchronization:relaxed_atomic",
+ ],
+)
+
+cpp_library(
+ name = "result",
+ hdrs = ["Result.h"],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:exception_wrapper",
+ "//folly:try",
+ ],
+)
+
+cpp_library(
+ name = "retry",
+ hdrs = ["Retry.h"],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:constexpr_math",
+ "//folly:exception_wrapper",
+ "//folly:random",
+ "//folly:try",
+ "//folly/coro:coroutine",
+ "//folly/coro:result",
+ "//folly/coro:sleep",
+ "//folly/coro:task",
+ "//folly/coro:traits",
+ ],
+)
+
+cpp_library(
+ name = "rust_adaptors",
+ hdrs = ["RustAdaptors.h"],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:executor",
+ "//folly:optional",
+ "//folly/coro:async_generator",
+ "//folly/coro:task",
+ "//folly/futures:core",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_library(
+ name = "scope_exit",
+ hdrs = ["ScopeExit.h"],
+ deps = [
+ "//folly:exception_wrapper",
+ "//folly:executor",
+ "//folly:scope_guard",
+ "//folly/coro:coroutine",
+ "//folly/coro:traits",
+ "//folly/coro:via_if_async",
+ "//folly/functional:invoke",
+ "//folly/lang:assume",
+ "//folly/lang:customization_point",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "shared_lock",
+ hdrs = ["SharedLock.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/coro:coroutine",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "shared_mutex",
+ srcs = ["SharedMutex.cpp"],
+ hdrs = ["SharedMutex.h"],
+ deps = [
+ "//folly:executor",
+ "//folly:spin_lock",
+ "//folly:synchronized",
+ "//folly/coro:coroutine",
+ "//folly/coro:shared_lock",
+ "//folly/coro:via_if_async",
+ ],
+)
+
+cpp_library(
+ name = "sleep",
+ hdrs = [
+ "Sleep.h",
+ ],
+ textual_hdrs = [
+ "Sleep-inl.h",
+ ],
+ deps = [
+ "//folly/coro:coroutine",
+ "//folly/coro:future_util",
+ "//folly/coro:task",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "small_unbounded_queue",
+ hdrs = ["SmallUnboundedQueue.h"],
+ deps = [
+ "//folly/coro:baton",
+ "//folly/coro:coroutine",
+ "//folly/coro:mutex",
+ "//folly/coro:task",
+ "//folly/experimental/channels/detail:atomic_queue",
+ ],
+)
+
+cpp_library(
+ name = "task",
+ hdrs = ["Task.h"],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:executor",
+ "//folly:glog",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:traits",
+ "//folly:try",
+ "//folly/coro:coroutine",
+ "//folly/coro:current_executor",
+ "//folly/coro:detail_malloc",
+ "//folly/coro:detail_traits",
+ "//folly/coro:inline_task",
+ "//folly/coro:invoke",
+ "//folly/coro:result",
+ "//folly/coro:scope_exit",
+ "//folly/coro:traits",
+ "//folly/coro:via_if_async",
+ "//folly/coro:with_async_stack",
+ "//folly/coro:with_cancellation",
+ "//folly/futures:core",
+ "//folly/io/async:request_context",
+ "//folly/lang:assume",
+ "//folly/tracing:async_stack",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "task_wrapper",
+ hdrs = ["TaskWrapper.h"],
+ deps = [":task"],
+)
+
+cpp_library(
+ name = "timed_wait",
+ hdrs = ["TimedWait.h"],
+ deps = [
+ "//folly:optional",
+ "//folly/coro:baton",
+ "//folly/coro:coroutine",
+ "//folly/coro:detail_helpers",
+ "//folly/coro:invoke",
+ "//folly/coro:task",
+ "//folly/coro:traits",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "timeout",
+ hdrs = [
+ "Timeout.h",
+ ],
+ textual_hdrs = [
+ "Timeout-inl.h",
+ ],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly/coro:baton",
+ "//folly/coro:coroutine",
+ "//folly/coro:task",
+ "//folly/coro:traits",
+ "//folly/coro:with_cancellation",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "traits",
+ hdrs = ["Traits.h"],
+ deps = [
+ "//folly:traits",
+ "//folly/coro:coroutine",
+ ],
+)
+
+cpp_library(
+ name = "transform",
+ hdrs = [
+ "Transform.h",
+ ],
+ textual_hdrs = [
+ "Transform-inl.h",
+ ],
+ deps = [
+ "//folly:traits",
+ "//folly/coro:async_generator",
+ "//folly/coro:coroutine",
+ ],
+)
+
+cpp_library(
+ name = "unbounded_queue",
+ hdrs = ["UnboundedQueue.h"],
+ deps = [
+ "//folly/concurrency:unbounded_queue",
+ "//folly/coro:coroutine",
+ "//folly/coro:task",
+ "//folly/fibers:semaphore",
+ ],
+)
+
+cpp_library(
+ name = "via_if_async",
+ hdrs = ["ViaIfAsync.h"],
+ deps = [
+ "//folly:executor",
+ "//folly:traits",
+ "//folly/coro:coroutine",
+ "//folly/coro:detail_malloc",
+ "//folly/coro:traits",
+ "//folly/coro:with_async_stack",
+ "//folly/coro:with_cancellation",
+ "//folly/io/async:request_context",
+ "//folly/lang:customization_point",
+ "//folly/tracing:async_stack",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "with_async_stack",
+ hdrs = ["WithAsyncStack.h"],
+ deps = [
+ "//folly/coro:coroutine",
+ "//folly/coro:traits",
+ "//folly/functional:invoke",
+ "//folly/lang:assume",
+ "//folly/lang:customization_point",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "with_cancellation",
+ hdrs = ["WithCancellation.h"],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly/coro:coroutine",
+ "//folly/lang:customization_point",
+ ],
+)
+
+cpp_library(
+ name = "bounded_queue",
+ hdrs = ["BoundedQueue.h"],
+ deps = [
+ "//folly:mpmc_queue",
+ "//folly:producer_consumer_queue",
+ "//folly/coro:task",
+ "//folly/fibers:semaphore",
+ ],
+)
+
+cpp_library(
+ name = "shared_promise",
+ hdrs = [
+ "SharedPromise.h",
+ ],
+ deps = [
+ "//folly:small_vector",
+ "//folly:synchronized",
+ "//folly:utility",
+ "//folly/coro:promise",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "cleanup",
+ hdrs = [
+ "Cleanup.h",
+ ],
+ deps = [
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "auto_cleanup_fwd",
+ hdrs = [
+ "AutoCleanup-fwd.h",
+ ],
+ deps = [
+ "//folly/coro:cleanup",
+ "//folly/coro:coroutine",
+ ],
+)
+
+cpp_library(
+ name = "auto_cleanup",
+ hdrs = [
+ "AutoCleanup.h",
+ ],
+ deps = [
+ "//folly/coro:auto_cleanup_fwd",
+ "//folly/coro:collect",
+ "//folly/coro:task",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/coro/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/coro/test/BUILD.bazel
new file mode 100644
index 00000000000..7c0fcfb1ac3
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/coro/test/BUILD.bazel
@@ -0,0 +1,316 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "async_stack_test",
+ srcs = [
+ "AsyncStackTest.cpp",
+ ],
+ deps = [
+ "//folly:portability",
+ "//folly/coro:async_stack",
+ "//folly/coro:baton",
+ "//folly/coro:blocking_wait",
+ "//folly/coro:collect",
+ "//folly/coro:mutex",
+ "//folly/coro:task",
+ "//folly/portability:gtest",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "async_generator_test",
+# srcs = ["AsyncGeneratorTest.cpp"],
+# deps = [
+# "//folly:portability",
+# "//folly:scope_guard",
+# "//folly:traits",
+# "//folly/coro:async_generator",
+# "//folly/coro:baton",
+# "//folly/coro:blocking_wait",
+# "//folly/coro:collect",
+# "//folly/coro:invoke",
+# "//folly/coro:sleep",
+# "//folly/coro:task",
+# "//folly/coro:with_cancellation",
+# "//folly/futures:core",
+# "//folly/portability:gtest",
+# "//folly/portability:pthread",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "coro_test",
+# srcs = [
+# "AccumulateTest.cpp",
+# "AsyncPipeTest.cpp",
+# "AsyncScopeTest.cpp",
+# "BatonTest.cpp",
+# "BlockingWaitTest.cpp",
+# "BoundedQueueTest.cpp",
+# "CollectTest.cpp",
+# "ConcatTest.cpp",
+# "CoroTest.cpp",
+# "CurrentExecutorTest.cpp",
+# "ErrorTest.cpp",
+# "FilterTest.cpp",
+# "FutureUtilTest.cpp",
+# "InlineTaskTest.cpp",
+# "MergeTest.cpp",
+# "MutexTest.cpp",
+# "ScopeExitTest.cpp",
+# "SharedMutexTest.cpp",
+# "SmallUnboundedQueueTest.cpp",
+# "TaskTest.cpp",
+# "TimeoutTest.cpp",
+# "TraitsTest.cpp",
+# "TransformTest.cpp",
+# "UnboundedQueueTest.cpp",
+# ],
+# deps = [
+# "//folly:cancellation_token",
+# "//folly:chrono",
+# "//folly:conv",
+# "//folly:exception_wrapper",
+# "//folly:optional",
+# "//folly:portability",
+# "//folly:scope_guard",
+# "//folly:utility",
+# "//folly/coro:accumulate",
+# "//folly/coro:async_generator",
+# "//folly/coro:async_pipe",
+# "//folly/coro:async_scope",
+# "//folly/coro:auto_cleanup",
+# "//folly/coro:baton",
+# "//folly/coro:blocking_wait",
+# "//folly/coro:bounded_queue",
+# "//folly/coro:collect",
+# "//folly/coro:concat",
+# "//folly/coro:coroutine",
+# "//folly/coro:current_executor",
+# "//folly/coro:detach_on_cancel",
+# "//folly/coro:filter",
+# "//folly/coro:future_util",
+# "//folly/coro:generator",
+# "//folly/coro:gtest_helpers",
+# "//folly/coro:inline_task",
+# "//folly/coro:invoke",
+# "//folly/coro:merge",
+# "//folly/coro:mutex",
+# "//folly/coro:result",
+# "//folly/coro:shared_mutex",
+# "//folly/coro:sleep",
+# "//folly/coro:small_unbounded_queue",
+# "//folly/coro:task",
+# "//folly/coro:timed_wait",
+# "//folly/coro:timeout",
+# "//folly/coro:traits",
+# "//folly/coro:transform",
+# "//folly/coro:unbounded_queue",
+# "//folly/coro:with_cancellation",
+# "//folly/executors:cpu_thread_pool_executor",
+# "//folly/executors:global_executor",
+# "//folly/executors:inline_executor",
+# "//folly/executors:manual_executor",
+# "//folly/fibers:core_manager",
+# "//folly/fibers:fiber_manager_map",
+# "//folly/fibers:semaphore",
+# "//folly/futures:core",
+# "//folly/io/async:request_context",
+# "//folly/io/async:scoped_event_base_thread",
+# "//folly/lang:assume",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "coroutine_test",
+ srcs = ["CoroutineTest.cpp"],
+ deps = [
+ "//folly/coro:coroutine",
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "generator_test",
+ srcs = ["GeneratorTest.cpp"],
+ deps = [
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly/coro:generator",
+ "//folly/portability:gtest",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "gmock_helpers_test",
+# srcs = [
+# "GmockHelpersTest.cpp",
+# ],
+# deps = [
+# "//folly:portability",
+# "//folly/coro:blocking_wait",
+# "//folly/coro:gmock_helpers",
+# "//folly/coro:gtest_helpers",
+# "//folly/coro:task",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "gtest_helpers_test",
+# srcs = [
+# "GtestHelpersTest.cpp",
+# ],
+# deps = [
+# "//folly/coro:gtest_helpers",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "request_context_test",
+ srcs = ["RequestContextTest.cpp"],
+ deps = [
+ "//folly/coro:async_generator",
+ "//folly/coro:async_scope",
+ "//folly/coro:baton",
+ "//folly/coro:blocking_wait",
+ "//folly/coro:mutex",
+ "//folly/coro:task",
+ "//folly/coro:unbounded_queue",
+ "//folly/executors:manual_executor",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "retry_test",
+ srcs = ["RetryTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:portability",
+ "//folly/coro:blocking_wait",
+ "//folly/coro:retry",
+ "//folly/coro:sleep",
+ "//folly/coro:task",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "shared_promise_test",
+ srcs = [
+ "SharedPromiseTest.cpp",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/coro:blocking_wait",
+ "//folly/coro:detach_on_cancel",
+ "//folly/coro:shared_promise",
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/portability:gtest",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "sleep_test",
+# srcs = [
+# "SleepTest.cpp",
+# ],
+# deps = [
+# "//folly:portability",
+# "//folly/coro:async_scope",
+# "//folly/coro:gtest_helpers",
+# "//folly/coro:sleep",
+# "//folly/coro:task",
+# "//folly/executors:manual_executor",
+# "//folly/futures:manual_timekeeper",
+# "//folly/portability:gtest",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "suspended_stack_test",
+# srcs = [
+# "SuspendedStackTest.cpp",
+# ],
+# deps = [
+# "//folly/coro:async_stack",
+# "//folly/coro:baton",
+# "//folly/coro:gtest_helpers",
+# "//folly/coro:mutex",
+# "//folly/coro:task",
+# "//folly/debugging/symbolizer",
+# "//folly/lang:keep",
+# "//folly/portability:gtest",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "task_wrapper_test",
+# srcs = ["TaskWrapperTest.cpp"],
+# deps = [
+# "//folly/coro:gtest_helpers",
+# "//folly/coro:task_wrapper",
+# "//folly/coro:timeout",
+# "//folly/fibers:semaphore",
+# ],
+# )
+
+cpp_unittest(
+ name = "RustAdaptorsTest",
+ srcs = [
+ "RustAdaptorsTest.cpp",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:portability",
+ "//folly/coro:baton",
+ "//folly/coro:rust_adaptors",
+ "//folly/coro:sleep",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "PromiseTest",
+# srcs = [
+# "PromiseTest.cpp",
+# ],
+# deps = [
+# "//folly:portability",
+# "//folly/coro:blocking_wait",
+# "//folly/coro:collect",
+# "//folly/coro:gtest_helpers",
+# "//folly/coro:promise",
+# "//folly/coro:task",
+# "//folly/coro:with_cancellation",
+# "//folly/portability:gtest",
+# ],
+# )
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/BUILD.bazel
new file mode 100644
index 00000000000..913b30f9020
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/BUILD.bazel
@@ -0,0 +1,99 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "blake2xb",
+ srcs = [
+ "Blake2xb.cpp",
+ ],
+ hdrs = [
+ "Blake2xb.h",
+ ],
+ deps = [
+ "//folly:range",
+ "//folly/lang:bits",
+ "@libsodium",
+ ],
+)
+
+cpp_library(
+ name = "lt_hash",
+ srcs = [
+ "LtHash.cpp",
+ ],
+ hdrs = [
+ "LtHash.h",
+ ],
+ textual_hdrs = [
+ "LtHash-inl.h",
+ ],
+ deps = [
+ ":blake2xb",
+ "//folly:cpu_id",
+ "//folly:memory",
+ "//folly:optional",
+ "//folly:range",
+ "//folly/crypto/detail:lt_hash_internal",
+ "//folly/crypto/detail:math_operation_avx2_disable", # @manual
+ "//folly/crypto/detail:math_operation_simple", # @manual
+ "//folly/crypto/detail:math_operation_sse2_disable", # @manual
+ "//folly/io:iobuf",
+ "//folly/lang:bits",
+ "@libsodium",
+ ],
+)
+
+cpp_library(
+ name = "lt_hash_sse2",
+ srcs = [
+ "LtHash.cpp",
+ ],
+ hdrs = [
+ "LtHash.h",
+ ],
+ textual_hdrs = [
+ "LtHash-inl.h",
+ ],
+ deps = [
+ ":blake2xb",
+ "//folly:cpu_id",
+ "//folly:memory",
+ "//folly:optional",
+ "//folly:range",
+ "//folly/crypto/detail:lt_hash_internal",
+ "//folly/crypto/detail:math_operation_avx2_disable", # @manual
+ "//folly/crypto/detail:math_operation_simple", # @manual
+ "//folly/crypto/detail:math_operation_sse2", # @manual
+ "//folly/io:iobuf",
+ "//folly/lang:bits",
+ "@libsodium",
+ ],
+)
+
+cpp_library(
+ name = "lt_hash_avx2",
+ srcs = [
+ "LtHash.cpp",
+ ],
+ hdrs = [
+ "LtHash.h",
+ ],
+ textual_hdrs = [
+ "LtHash-inl.h",
+ ],
+ deps = [
+ ":blake2xb",
+ "//folly:cpu_id",
+ "//folly:memory",
+ "//folly:optional",
+ "//folly:range",
+ "//folly/crypto/detail:lt_hash_internal",
+ "//folly/crypto/detail:math_operation_avx2", # @manual
+ "//folly/crypto/detail:math_operation_simple", # @manual
+ "//folly/crypto/detail:math_operation_sse2", # @manual
+ "//folly/io:iobuf",
+ "//folly/lang:bits",
+ "@libsodium",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/detail/BUILD.bazel
new file mode 100644
index 00000000000..a29807bc88d
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/detail/BUILD.bazel
@@ -0,0 +1,122 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "lt_hash_internal",
+ hdrs = [
+ "LtHashInternal.h",
+ ],
+ deps = [
+ "//folly:range",
+ ],
+)
+
+cpp_library(
+ name = "math_operation_simple",
+ srcs = [
+ "MathOperation_Simple.cpp",
+ ],
+ copts = select({
+ "@platforms//cpu:x86_64": [
+ "-mno-avx",
+ "-mno-avx2",
+ "-mno-sse2",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":lt_hash_internal",
+ "//folly:memory",
+ "//folly/lang:bits",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "math_operation_sse2",
+ srcs = [
+ "MathOperation_SSE2.cpp",
+ ],
+ copts = select({
+ "@platforms//cpu:x86_64": [
+ "-mno-avx",
+ "-mno-avx2",
+ "-msse2",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":lt_hash_internal",
+ "//folly:memory",
+ "//folly/lang:bits",
+ "@glog",
+ "@libsodium",
+ ],
+)
+
+cpp_library(
+ name = "math_operation_avx2",
+ srcs = [
+ "MathOperation_AVX2.cpp",
+ ],
+ copts = select({
+ "@platforms//cpu:x86_64": [
+ "-mavx",
+ "-mavx2",
+ "-msse2",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":lt_hash_internal",
+ "//folly:memory",
+ "//folly/lang:bits",
+ "@glog",
+ "@libsodium",
+ ],
+)
+
+cpp_library(
+ name = "math_operation_sse2_disable",
+ srcs = [
+ "MathOperation_SSE2.cpp",
+ ],
+ copts = select({
+ "@platforms//cpu:x86_64": [
+ "-mno-avx",
+ "-mno-avx2",
+ "-mno-sse2",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":lt_hash_internal",
+ "//folly:memory",
+ "//folly/lang:bits",
+ "@glog",
+ "@libsodium",
+ ],
+)
+
+cpp_library(
+ name = "math_operation_avx2_disable",
+ srcs = [
+ "MathOperation_AVX2.cpp",
+ ],
+ copts = select({
+ "@platforms//cpu:x86_64": [
+ "-mno-avx",
+ "-mno-avx2",
+ "-mno-sse2",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":lt_hash_internal",
+ "//folly:memory",
+ "//folly/lang:bits",
+ "@glog",
+ "@libsodium",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/test/BUILD.bazel
new file mode 100644
index 00000000000..350536823f6
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/crypto/test/BUILD.bazel
@@ -0,0 +1,73 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "blake2xb_test",
+ srcs = ["Blake2xbTest.cpp"],
+ deps = [
+ "//folly:string",
+ "//folly/crypto:blake2xb",
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ "@libsodium",
+ ],
+)
+
+cpp_unittest(
+ name = "lt_hash_test",
+ srcs = [
+ "LtHashTest.cpp",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:random",
+ "//folly:string",
+ "//folly/crypto:lt_hash",
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ "@libsodium",
+ ],
+)
+
+cpp_unittest(
+ name = "lt_hash_test_sse2",
+ srcs = [
+ "LtHashTest.cpp",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:random",
+ "//folly:string",
+ "//folly/crypto:lt_hash_sse2", # @manual
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ "@libsodium",
+ ],
+)
+
+cpp_unittest(
+ name = "lt_hash_test_avx2",
+ srcs = [
+ "LtHashTest.cpp",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:random",
+ "//folly:string",
+ "//folly/crypto:lt_hash_avx2", # @manual
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ "@libsodium",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/exception_tracer/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/exception_tracer/BUILD.bazel
new file mode 100644
index 00000000000..794d7a5356f
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/exception_tracer/BUILD.bazel
@@ -0,0 +1,134 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "exception_abi",
+ hdrs = ["ExceptionAbi.h"],
+)
+
+cpp_library(
+ name = "exception_counter",
+ srcs = ["ExceptionCounterLib.cpp"],
+ hdrs = ["ExceptionCounterLib.h"],
+ deps = [
+ ":exception_tracer_base",
+ ":exception_tracer_callbacks",
+ ":stacktrace",
+ "//folly:range",
+ "//folly:synchronized",
+ "//folly:thread_local",
+ "//folly/experimental/symbolizer",
+ "//folly/hash:spooky_hash_v2",
+ "//folly/synchronization:rw_spin_lock",
+ ],
+ alwayslink = True,
+)
+
+cpp_library(
+ name = "exception_tracer",
+ srcs = ["ExceptionStackTraceLib.cpp"],
+ deps = [
+ ":exception_abi",
+ ":exception_tracer_base",
+ ":exception_tracer_callbacks",
+ ":stacktrace",
+ "//folly/experimental/symbolizer",
+ ],
+ alwayslink = True,
+)
+
+cpp_library(
+ name = "exception_tracer_base",
+ srcs = ["ExceptionTracer.cpp"],
+ hdrs = ["ExceptionTracer.h"],
+ linkopts = select({
+ "@platforms//os:linux": ["-ldl"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":exception_abi",
+ ":stacktrace",
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ "//folly:string",
+ "//folly/experimental/symbolizer",
+ "//folly/portability:config",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "exception_tracer_callbacks",
+ srcs = ["ExceptionTracerLib.cpp"],
+ hdrs = ["ExceptionTracerLib.h"],
+ linkopts = select({
+ "@platforms//os:linux": ["-ldl"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:indestructible",
+ "//folly:portability",
+ "//folly:shared_mutex",
+ "//folly:synchronized",
+ ],
+ alwayslink = True,
+)
+
+cpp_library(
+ name = "stacktrace",
+ srcs = ["StackTrace.cpp"],
+ hdrs = ["StackTrace.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/experimental/symbolizer:stack_trace",
+ ],
+)
+
+cpp_library(
+ name = "smart_exception_tracer_singleton",
+ srcs = [
+ "SmartExceptionTracerSingleton.cpp",
+ ],
+ hdrs = [
+ "SmartExceptionTracerSingleton.h",
+ ],
+ deps = [
+ ":stacktrace",
+ "//folly:synchronized",
+ "//folly/container:f14_hash",
+ ],
+)
+
+cpp_library(
+ name = "smart_exception_stack_trace_hooks",
+ srcs = [
+ "SmartExceptionStackTraceHooks.cpp",
+ ],
+ deps = [
+ ":exception_tracer_callbacks",
+ ":smart_exception_tracer_singleton",
+ "//folly/experimental/symbolizer",
+ ],
+ alwayslink = True,
+)
+
+cpp_library(
+ name = "smart_exception_tracer",
+ srcs = ["SmartExceptionTracer.cpp"],
+ hdrs = ["SmartExceptionTracer.h"],
+ deps = [
+ ":exception_tracer_base",
+ ":exception_tracer_callbacks",
+ ":smart_exception_tracer_singleton",
+ ":stacktrace",
+ "//folly:exception_wrapper",
+ "//folly:map_util",
+ "//folly:scope_guard",
+ "//folly:synchronized",
+ "//folly/container:f14_hash",
+ "//folly/experimental/symbolizer",
+ "//folly/lang:exception",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/exception_tracer/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/exception_tracer/test/BUILD.bazel
new file mode 100644
index 00000000000..946b970e4d6
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/exception_tracer/test/BUILD.bazel
@@ -0,0 +1,58 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "exception_counter_test",
+ srcs = ["ExceptionCounterTest.cpp"],
+ deps = [
+ "//folly/debugging/exception_tracer:exception_counter",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "exception_tracer_benchmark_main",
+ srcs = ["ExceptionTracerBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/debugging/exception_tracer:exception_tracer_base",
+ "//folly/portability:gflags",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "exception_tracer_test_main",
+ srcs = ["ExceptionTracerTest.cpp"],
+ deps = [
+ "//folly/debugging/exception_tracer:exception_tracer_base",
+ ],
+)
+
+cc_binary(
+ name = "exception_tracer_base_test",
+ deps = [
+ ":exception_tracer_test_main", # @manual
+ ],
+)
+
+cc_binary(
+ name = "exception_tracer_test",
+ deps = [
+ ":exception_tracer_test_main", # @manual
+ "//folly/debugging/exception_tracer", # @manual # @manual
+ ],
+)
+
+cpp_unittest(
+ name = "smart_exception_tracer_test",
+ srcs = ["SmartExceptionTracerTest.cpp"],
+ deps = [
+ "//folly/coro:blocking_wait",
+ "//folly/coro:task",
+ "//folly/debugging/exception_tracer:smart_exception_stack_trace_hooks", # @manual
+ "//folly/debugging/exception_tracer:smart_exception_tracer",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/BUILD.bazel
new file mode 100644
index 00000000000..df81b66a83d
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/BUILD.bazel
@@ -0,0 +1,190 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "dwarf",
+ srcs = [
+ "Dwarf.cpp",
+ "DwarfImpl.cpp",
+ "DwarfLineNumberVM.cpp",
+ "DwarfSection.cpp",
+ "DwarfUtil.cpp",
+ ],
+ hdrs = [
+ "Dwarf.h",
+ "DwarfImpl.h",
+ "DwarfLineNumberVM.h",
+ "DwarfSection.h",
+ "DwarfUtil.h",
+ ],
+ deps = [
+ "//folly:function",
+ "//folly:optional",
+ "//folly:range",
+ "//folly/experimental/symbolizer:elf",
+ "//folly/experimental/symbolizer:elf_cache",
+ "//folly/experimental/symbolizer:symbolized_frame",
+ "//folly/lang:safe_assert",
+ "//folly/portability:config",
+ "//folly/portability:unistd",
+ ] + select({
+ "//folly:use_dwarf_setting": ["@libdwarf"],
+ "//conditions:default": [],
+ }),
+)
+
+cpp_library(
+ name = "elf",
+ srcs = [
+ "Elf.cpp",
+ ],
+ hdrs = [
+ "Elf.h",
+ ],
+ textual_hdrs = [
+ "Elf-inl.h",
+ ],
+ deps = [
+ "//folly:conv",
+ "//folly:exception",
+ "//folly:likely",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly/lang:c_string",
+ "//folly/lang:safe_assert",
+ "//folly/portability:config",
+ "//folly/portability:sys_mman",
+ "//folly/portability:unistd",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "symbolized_frame",
+ srcs = ["SymbolizedFrame.cpp"],
+ hdrs = ["SymbolizedFrame.h"],
+ deps = [
+ "//folly:range",
+ ],
+)
+
+cpp_library(
+ name = "line_reader",
+ srcs = ["LineReader.cpp"],
+ hdrs = ["LineReader.h"],
+ deps = [
+ "//folly:file_util",
+ "//folly:range",
+ ],
+)
+
+cpp_library(
+ name = "stack_trace",
+ srcs = ["StackTrace.cpp"],
+ hdrs = ["StackTrace.h"],
+ deps = [
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ "//folly/portability:config",
+ "//folly/portability:libunwind",
+ "//folly/portability:sys_types",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "elf_cache",
+ srcs = [
+ "ElfCache.cpp",
+ ],
+ hdrs = [
+ "ElfCache.h",
+ ],
+ deps = [
+ "//folly:optional",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly/experimental/symbolizer:elf",
+ "//folly/hash",
+ "//folly/memory:reentrant_allocator",
+ "//folly/portability:config",
+ "//folly/portability:sys_mman",
+ "@boost.intrusive",
+ ],
+)
+
+cpp_library(
+ name = "symbolize_printer",
+ srcs = [
+ "SymbolizePrinter.cpp",
+ ],
+ hdrs = [
+ "SymbolizePrinter.h",
+ ],
+ deps = [
+ "//folly:demangle",
+ "//folly:fbstring",
+ "//folly:file_util",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly/experimental/symbolizer:symbolized_frame",
+ "//folly/io:iobuf",
+ "//folly/lang:to_ascii",
+ ],
+)
+
+cpp_library(
+ name = "symbolizer",
+ srcs = [
+ "Symbolizer.cpp",
+ ],
+ hdrs = [
+ "Symbolizer.h",
+ ],
+ deps = [
+ "//folly:fbstring",
+ "//folly:file_util",
+ "//folly:memory",
+ "//folly:optional",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly:string",
+ "//folly:synchronized",
+ "//folly/container:evicting_cache_map",
+ "//folly/experimental/symbolizer:dwarf",
+ "//folly/experimental/symbolizer:elf",
+ "//folly/experimental/symbolizer:elf_cache",
+ "//folly/experimental/symbolizer:line_reader",
+ "//folly/experimental/symbolizer:stack_trace",
+ "//folly/experimental/symbolizer:symbolize_printer",
+ "//folly/experimental/symbolizer:symbolized_frame",
+ "//folly/experimental/symbolizer/detail:debug",
+ "//folly/io:iobuf",
+ "//folly/lang:safe_assert",
+ "//folly/lang:to_ascii",
+ "//folly/memory:sanitize_address",
+ "//folly/portability:config",
+ "//folly/portability:sys_mman",
+ "//folly/portability:unistd",
+ "//folly/tracing:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "signal_handler",
+ srcs = [
+ "SignalHandler.cpp",
+ ],
+ hdrs = [
+ "SignalHandler.h",
+ ],
+ deps = [
+ "//folly:scope_guard",
+ "//folly/experimental/symbolizer",
+ "//folly/lang:to_ascii",
+ "//folly/portability:sys_syscall",
+ "//folly/portability:unistd",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/detail/BUILD.bazel
new file mode 100644
index 00000000000..f3a554260f8
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/detail/BUILD.bazel
@@ -0,0 +1,11 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "debug",
+ hdrs = ["Debug.h"],
+ deps = [
+ "//folly:cpp_attributes",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/test/BUILD.bazel
new file mode 100644
index 00000000000..1ebd3656139
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/debugging/symbolizer/test/BUILD.bazel
@@ -0,0 +1,53 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cc_binary(
+ name = "crash",
+ srcs = ["Crash.cpp"],
+ deps = [
+ "//folly/experimental/symbolizer:signal_handler",
+ ],
+)
+
+cc_binary(
+ name = "small_sigaltstack_crash",
+ srcs = ["SmallSigAltStackCrash.cpp"],
+ deps = [
+ "//folly/experimental/symbolizer:signal_handler",
+ ],
+)
+
+cpp_unittest(
+ name = "symbolized_frame_test",
+ srcs = ["SymbolizedFrameTest.cpp"],
+ deps = [
+ "//folly/experimental/symbolizer:symbolized_frame",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "elf_test",
+# srcs = ["ElfTest.cpp"],
+# deps = [
+# "//folly:file_util",
+# "//folly/experimental/symbolizer:elf",
+# "//folly/experimental/symbolizer/detail:debug",
+# "//folly/portability:gtest",
+# "//folly/testing:test_util",
+# ],
+# )
+
+cpp_unittest(
+ name = "line_reader_test",
+ srcs = ["LineReaderTest.cpp"],
+ deps = [
+ "//folly:file_util",
+ "//folly/experimental/symbolizer:line_reader",
+ "//folly/portability:gtest",
+ "//folly/testing:test_util",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/BUILD.bazel
new file mode 100644
index 00000000000..649dcfdfe94
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/BUILD.bazel
@@ -0,0 +1,390 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "async_trace",
+ srcs = ["AsyncTrace.cpp"],
+ hdrs = ["AsyncTrace.h"],
+ deps = [
+ "//folly:optional",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "atomic_hash_utils",
+ hdrs = ["AtomicHashUtils.h"],
+ deps = [
+ "//folly/portability:asm",
+ ],
+)
+
+cpp_library(
+ name = "atomic_unordered_map_utils",
+ hdrs = ["AtomicUnorderedMapUtils.h"],
+ deps = [
+ "//folly:exception",
+ "//folly/portability:sys_mman",
+ "//folly/portability:unistd",
+ ],
+)
+
+cpp_library(
+ name = "discriminated_ptr_detail",
+ hdrs = ["DiscriminatedPtrDetail.h"],
+ deps = [
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "file_util_detail",
+ srcs = ["FileUtilDetail.cpp"],
+ hdrs = ["FileUtilDetail.h"],
+ deps = [
+ "//folly/portability:config",
+ "//folly/portability:sys_types",
+ ],
+)
+
+cpp_library(
+ name = "file_util_vector_detail",
+ hdrs = ["FileUtilVectorDetail.h"],
+ deps = [
+ ":file_util_detail",
+ "//folly/portability:sys_uio",
+ "//folly/portability:unistd",
+ ],
+)
+
+cpp_library(
+ name = "fingerprint_polynomial",
+ hdrs = ["FingerprintPolynomial.h"],
+)
+
+cpp_library(
+ name = "futex",
+ srcs = ["Futex.cpp"],
+ hdrs = [
+ "Futex.h",
+ ],
+ textual_hdrs = [
+ "Futex-inl.h",
+ ],
+ deps = [
+ "//folly:scope_guard",
+ "//folly/hash",
+ "//folly/portability:sys_syscall",
+ "//folly/portability:unistd",
+ "//folly/synchronization:parking_lot",
+ ],
+)
+
+cpp_library(
+ name = "group_varint_detail",
+ hdrs = ["GroupVarintDetail.h"],
+)
+
+cpp_library(
+ name = "ip_address",
+ srcs = ["IPAddress.cpp"],
+ hdrs = ["IPAddress.h"],
+ deps = [
+ "//folly/portability:fmt_compile",
+ "//folly/portability:sockets",
+ ],
+)
+
+cpp_library(
+ name = "ip_address_source",
+ hdrs = ["IPAddressSource.h"],
+ deps = [
+ ":ip_address",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "iterators",
+ hdrs = ["Iterators.h"],
+)
+
+cpp_library(
+ name = "memory_idler",
+ srcs = ["MemoryIdler.cpp"],
+ hdrs = ["MemoryIdler.h"],
+ deps = [
+ ":futex",
+ "//folly:glog",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly/concurrency:cache_locality",
+ "//folly/hash",
+ "//folly/memory:mallctl_helper",
+ "//folly/memory:malloc",
+ "//folly/portability:gflags",
+ "//folly/portability:pthread",
+ "//folly/portability:sys_mman",
+ "//folly/portability:unistd",
+ "//folly/synchronization:atomic_struct",
+ "//folly/system:pid",
+ "//folly/system:thread_id",
+ ],
+)
+
+cpp_library(
+ name = "perf_scoped",
+ srcs = ["PerfScoped.cpp"],
+ hdrs = ["PerfScoped.h"],
+ deps = [
+ "//folly:conv",
+ "//folly/system:pid",
+ "//folly/testing:test_util",
+ ] + select({
+ # folly subprocess is not supported on windows
+ "@platforms//os:linux": ["//folly:subprocess"],
+ "//conditions:default": [],
+ }),
+)
+
+cpp_library(
+ name = "mpmc_pipeline_detail",
+ hdrs = ["MPMCPipelineDetail.h"],
+ deps = [
+ "//folly:mpmc_queue",
+ ],
+)
+
+cpp_library(
+ name = "poly_detail",
+ hdrs = ["PolyDetail.h"],
+ deps = [
+ ":typelist",
+ "//folly:poly_exception",
+ "//folly:portability",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/functional:invoke",
+ "//folly/lang:exception",
+ "//folly/lang:static_const",
+ ],
+)
+
+cpp_library(
+ name = "range_common",
+ srcs = ["RangeCommon.cpp"],
+ hdrs = ["RangeCommon.h"],
+ deps = [
+ "//folly:likely",
+ "//folly/container:sparse_byte_set",
+ ],
+)
+
+cpp_library(
+ name = "range_simd",
+ srcs = ["RangeSimd.cpp"],
+ hdrs = ["RangeSimd.h"],
+ deps = [
+ ":range_common",
+ ":range_sse42",
+ "//folly:portability",
+ "//folly/external/nvidia/detail:range_sve2",
+ ],
+)
+
+cpp_library(
+ name = "range_sse42",
+ srcs = ["RangeSse42.cpp"],
+ hdrs = ["RangeSse42.h"],
+ deps = [
+ ":range_common",
+ ":sse",
+ "//folly:likely",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "singleton",
+ hdrs = ["Singleton.h"],
+ deps = [
+ "//folly:traits",
+ ],
+)
+
+cpp_library(
+ name = "slow_fingerprint",
+ hdrs = ["SlowFingerprint.h"],
+ deps = [
+ ":fingerprint_polynomial",
+ "//folly:fingerprint",
+ "//folly:range",
+ ],
+)
+
+cpp_library(
+ name = "sse",
+ srcs = ["Sse.cpp"],
+ hdrs = ["Sse.h"],
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "simple_simd_string_utils",
+ srcs = ["SimpleSimdStringUtils.cpp"],
+ hdrs = [
+ "SimpleSimdStringUtils.h",
+ "SimpleSimdStringUtilsImpl.h",
+ ],
+ deps = [
+ "//folly:range",
+ "//folly/algorithm/simd/detail:simd_any_of",
+ "//folly/algorithm/simd/detail:simd_platform",
+ ],
+)
+
+cpp_library(
+ name = "split_string_simd",
+ srcs = ["SplitStringSimd.cpp"],
+ hdrs = [
+ "SplitStringSimd.h",
+ "SplitStringSimdImpl.h",
+ ],
+ deps = [
+ "//folly:fbstring",
+ "//folly:fbvector",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:small_vector",
+ "//folly/algorithm/simd:ignore",
+ "//folly/algorithm/simd:movemask",
+ "//folly/algorithm/simd/detail:simd_for_each",
+ "//folly/algorithm/simd/detail:simd_platform",
+ "//folly/lang:bits",
+ ],
+)
+
+cpp_library(
+ name = "socket_fast_open",
+ srcs = ["SocketFastOpen.cpp"],
+ hdrs = ["SocketFastOpen.h"],
+ deps = [
+ "//folly/net:network_socket",
+ "//folly/portability:sockets",
+ ],
+)
+
+cpp_library(
+ name = "static_singleton_manager",
+ srcs = ["StaticSingletonManager.cpp"],
+ hdrs = ["StaticSingletonManager.h"],
+ deps = [
+ ":singleton",
+ "//folly:c_portability",
+ "//folly:indestructible",
+ "//folly:likely",
+ "//folly:utility",
+ "//folly/lang:thunk",
+ "//folly/lang:type_info",
+ "//folly/memory:reentrant_allocator",
+ ],
+)
+
+cpp_library(
+ name = "thread_local_detail",
+ srcs = ["ThreadLocalDetail.cpp"],
+ hdrs = ["ThreadLocalDetail.h"],
+ deps = [
+ ":static_singleton_manager",
+ ":thread_local_globals",
+ ":unique_instance",
+ "//folly:constexpr_math",
+ "//folly:exception",
+ "//folly:function",
+ "//folly:map_util",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:shared_mutex",
+ "//folly:synchronized",
+ "//folly:utility",
+ "//folly/concurrency/container:atomic_grow_array",
+ "//folly/container:foreach",
+ "//folly/lang:exception",
+ "//folly/lang:hint",
+ "//folly/memory:malloc",
+ "//folly/memory:sanitize_leak",
+ "//folly/portability:pthread",
+ "//folly/synchronization:call_once",
+ "//folly/synchronization:micro_spin_lock",
+ "//folly/synchronization:relaxed_atomic",
+ "//folly/system:at_fork",
+ "//folly/system:thread_id",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "thread_local_globals",
+ srcs = ["thread_local_globals.cpp"],
+ hdrs = ["thread_local_globals.h"],
+ deps = [
+ ":static_singleton_manager",
+ "//folly/lang:exception",
+ "//folly/portability:pthread",
+ ],
+)
+
+cpp_library(
+ name = "turn_sequencer",
+ hdrs = ["TurnSequencer.h"],
+ deps = [
+ ":futex",
+ "//folly:portability",
+ "//folly/chrono:hardware",
+ "//folly/portability:asm",
+ "//folly/portability:unistd",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "typelist",
+ hdrs = ["TypeList.h"],
+ deps = [
+ "//folly:traits",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "unique_instance",
+ srcs = ["UniqueInstance.cpp"],
+ hdrs = ["UniqueInstance.h"],
+ deps = [
+ ":static_singleton_manager",
+ "//folly:cpp_attributes",
+ "//folly:demangle",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "traponavx512",
+ srcs = ["TrapOnAvx512.cpp"],
+ hdrs = ["TrapOnAvx512.h"],
+ copts = select({
+ "@platforms//cpu:x86_64": [
+ "-msse4.2",
+ "-mavx512f",
+ "-mavx512vl",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:portability",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/base64_detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/base64_detail/BUILD.bazel
new file mode 100644
index 00000000000..b665a4e284f
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/base64_detail/BUILD.bazel
@@ -0,0 +1,96 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "base64_api",
+ srcs = ["Base64Api.cpp"],
+ hdrs = ["Base64Api.h"],
+ deps = [
+ ":base64_common",
+ ":base64_scalar",
+ ":base64_sse4_2",
+ ":base64_swar",
+ "//folly:cpu_id",
+ "//folly:portability",
+ "//folly/portability:constexpr",
+ ],
+)
+
+cpp_library(
+ name = "base64_common",
+ hdrs = ["Base64Common.h"],
+)
+
+cpp_library(
+ name = "base64_constants",
+ hdrs = ["Base64Constants.h"],
+)
+
+cpp_library(
+ name = "base64_hidden_constants",
+ hdrs = ["Base64HiddenConstants.h"],
+ deps = [
+ ":base64_constants",
+ ],
+)
+
+cpp_library(
+ name = "base64_scalar",
+ hdrs = ["Base64Scalar.h"],
+ deps = [
+ ":base64_common",
+ ":base64_constants",
+ ],
+)
+
+cpp_library(
+ name = "base64_simd",
+ hdrs = ["Base64Simd.h"],
+ deps = [
+ ":base64_common",
+ ":base64_constants",
+ ":base64_hidden_constants",
+ ":base64_scalar",
+ ":base64_swar",
+ "//folly:c_portability",
+ ],
+)
+
+cpp_library(
+ name = "base64_sse4_2_platform",
+ hdrs = ["Base64_SSE4_2_Platform.h"],
+ deps = [
+ ":base64_hidden_constants",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "base64_sse4_2",
+ srcs = ["Base64_SSE4_2.cpp"],
+ hdrs = ["Base64_SSE4_2.h"],
+ copts = select({
+ "@platforms//cpu:x86_64": ["-msse4.2"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":base64_common",
+ ":base64_simd",
+ ":base64_sse4_2_platform",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "base64_swar",
+ srcs = ["Base64SWAR.cpp"],
+ hdrs = ["Base64SWAR.h"],
+ deps = [
+ ":base64_common",
+ ":base64_constants",
+ ":base64_hidden_constants",
+ ":base64_scalar",
+ "//folly:portability",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/base64_detail/tests/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/base64_detail/tests/BUILD.bazel
new file mode 100644
index 00000000000..c4b3f9d8109
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/base64_detail/tests/BUILD.bazel
@@ -0,0 +1,34 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "base64_against_scalar_test",
+ srcs = ["Base64AgainstScalarTest.cpp"],
+ deps = [
+ "//folly/detail/base64_detail:base64_common",
+ "//folly/detail/base64_detail:base64_scalar",
+ "//folly/detail/base64_detail:base64_sse4_2",
+ "//folly/detail/base64_detail:base64_swar",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "base64_platform_test",
+ srcs = ["Base64PlatformTest.cpp"],
+ deps = [
+ "//folly/detail/base64_detail:base64_sse4_2_platform",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "base64_special_cases_test",
+ srcs = ["Base64SpecialCasesTest.cpp"],
+ deps = [
+ "//folly/detail/base64_detail:base64_scalar",
+ "//folly/detail/base64_detail:base64_simd",
+ "//folly/detail/base64_detail:base64_sse4_2",
+ "//folly/portability:constexpr",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/test/BUILD.bazel
new file mode 100644
index 00000000000..2d6b4e4d998
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/detail/test/BUILD.bazel
@@ -0,0 +1,125 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "async_trace_test",
+ srcs = ["AsyncTraceTest.cpp"],
+ deps = [
+ "//folly/detail:async_trace",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "static_singleton_manager_test",
+ srcs = ["StaticSingletonManagerTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/detail:static_singleton_manager",
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "unique_instance_test",
+ srcs = ["UniqueInstanceTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:string",
+ "//folly:traits",
+ "//folly/detail:unique_instance",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "file_util_detail_test",
+ srcs = [
+ "FileUtilDetailTest.cpp",
+ ],
+ deps = [
+ "//folly/detail:file_util_detail",
+ "//folly/portability:gtest",
+ ],
+)
+
+# Disabled because perf needs special permissions on the machine in order to run.
+# cpp_unittest(
+# name = "perf_scoped_test",
+# srcs = [
+# "PerfScopedTest.cpp",
+# ],
+# deps = [
+# "//folly/detail:perf_scoped",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# "//folly/portability:unistd",
+# "//folly/test:test_utils",
+# ],
+# )
+
+cpp_unittest(
+ name = "simple_simd_string_utils_test",
+ srcs = [
+ "SimpleSimdStringUtilsTest.cpp",
+ ],
+ deps = [
+ "//folly/algorithm/simd/detail:simd_platform",
+ "//folly/detail:simple_simd_string_utils",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "split_string_simd_test",
+ srcs = [
+ "SplitStringSimdTest.cpp",
+ ],
+ deps = [
+ "//folly:fbstring",
+ "//folly:fbvector",
+ "//folly:range",
+ "//folly:small_vector",
+ "//folly/detail:split_string_simd",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "thread_local_detail_test",
+ srcs = [
+ "ThreadLocalDetailTest.cpp",
+ ],
+ deps = [
+ "//folly:synchronized",
+ "//folly:thread_local",
+ "//folly/portability:gtest",
+ "//folly/synchronization/test:barrier",
+ ],
+)
+
+cpp_unittest(
+ name = "traponavx512_test_negative",
+ srcs = ["TrapOnAvx512TestNegative.cpp"],
+ deps = [
+ "//folly/detail:traponavx512",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "detail_typelist_test",
+ srcs = ["TypeListTest.cpp"],
+ deps = [
+ "//folly/detail:typelist",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/BUILD.bazel
new file mode 100644
index 00000000000..b9121ed59c4
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/BUILD.bazel
@@ -0,0 +1,441 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "executors",
+ deps = [
+ ":async", # @manual
+ ":cpu_thread_pool_executor", # @manual
+ ":fiber_io_executor", # @manual
+ ":future_executor", # @manual
+ ":global_executor", # @manual
+ ":io_executor", # @manual
+ ":io_object_cache", # @manual
+ ":io_thread_pool_executor", # @manual
+ ":serial_executor", # @manual
+ ":thread_pool_executor", # @manual
+ ":threaded_executor", # @manual
+ "//folly/executors/task_queue:blocking_queue", # @manual
+ "//folly/executors/task_queue:lifo_sem_mpmc_queue", # @manual
+ "//folly/executors/task_queue:priority_lifo_sem_mpmc_queue", # @manual
+ "//folly/executors/task_queue:unbounded_blocking_queue", # @manual
+ "//folly/executors/thread_factory", # @manual
+ "//folly/executors/thread_factory:named_thread_factory", # @manual
+ "//folly/executors/thread_factory:priority_thread_factory", # @manual
+ ],
+)
+
+cpp_library(
+ name = "async",
+ hdrs = ["Async.h"],
+ deps = [
+ ":global_executor",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "codel",
+ srcs = ["Codel.cpp"],
+ hdrs = ["Codel.h"],
+ deps = [
+ "//folly/portability:gflags",
+ ],
+)
+
+cpp_library(
+ name = "cpu_thread_pool_executor",
+ srcs = ["CPUThreadPoolExecutor.cpp"],
+ hdrs = ["CPUThreadPoolExecutor.h"],
+ deps = [
+ ":queue_observer",
+ ":thread_pool_executor",
+ "//folly:executor",
+ "//folly:memory",
+ "//folly:optional",
+ "//folly/executors/task_queue:priority_lifo_sem_mpmc_queue",
+ "//folly/executors/task_queue:priority_unbounded_blocking_queue",
+ "//folly/executors/task_queue:unbounded_blocking_queue",
+ "//folly/portability:gflags",
+ "//folly/synchronization:throttled_lifo_sem",
+ ],
+)
+
+cpp_library(
+ name = "drivable_executor",
+ hdrs = ["DrivableExecutor.h"],
+ deps = [
+ "//folly:executor",
+ ],
+)
+
+cpp_library(
+ name = "edf_thread_pool_executor",
+ srcs = ["EDFThreadPoolExecutor.cpp"],
+ hdrs = ["EDFThreadPoolExecutor.h"],
+ deps = [
+ ":soft_real_time_executor",
+ ":thread_pool_executor",
+ "//folly:scope_guard",
+ "//folly/concurrency:process_local_unique_id",
+ "//folly/portability:gflags",
+ "//folly/synchronization:lifo_sem",
+ "//folly/synchronization:throttled_lifo_sem",
+ "//folly/tracing:static_tracepoint",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "fiber_io_executor",
+ hdrs = ["FiberIOExecutor.h"],
+ deps = [
+ ":io_executor",
+ "//folly/fibers:fiber_manager_map",
+ ],
+)
+
+cpp_library(
+ name = "future_executor",
+ hdrs = ["FutureExecutor.h"],
+ deps = [
+ "//folly/functional:invoke",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "global_executor",
+ srcs = ["GlobalExecutor.cpp"],
+ hdrs = ["GlobalExecutor.h"],
+ deps = [
+ ":cpu_thread_pool_executor",
+ ":inline_executor",
+ ":io_executor",
+ ":io_thread_pool_executor",
+ "//folly:executor",
+ "//folly:function",
+ "//folly:shared_mutex",
+ "//folly:singleton",
+ "//folly/detail:async_trace",
+ "//folly/portability:gflags",
+ "//folly/system:hardware_concurrency",
+ ],
+)
+
+cpp_library(
+ name = "global_thread_pool_list",
+ srcs = ["GlobalThreadPoolList.cpp"],
+ hdrs = ["GlobalThreadPoolList.h"],
+ deps = [
+ "//folly:cpp_attributes",
+ "//folly:indestructible",
+ "//folly:synchronized",
+ "//folly:thread_local",
+ "//folly/system:thread_id",
+ ],
+)
+
+cpp_library(
+ name = "inline_executor",
+ srcs = ["InlineExecutor.cpp"],
+ hdrs = ["InlineExecutor.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:cpp_attributes",
+ "//folly:executor",
+ "//folly:indestructible",
+ ],
+)
+
+cpp_library(
+ name = "manual_executor",
+ srcs = ["ManualExecutor.cpp"],
+ hdrs = ["ManualExecutor.h"],
+ deps = [
+ "//folly/executors:drivable_executor",
+ "//folly/executors:scheduled_executor",
+ "//folly/executors:sequenced_executor",
+ "//folly/synchronization:lifo_sem",
+ ],
+)
+
+cpp_library(
+ name = "io_executor",
+ hdrs = ["IOExecutor.h"],
+ deps = [
+ "//folly:executor",
+ ],
+)
+
+cpp_library(
+ name = "io_object_cache",
+ hdrs = ["IOObjectCache.h"],
+ deps = [
+ ":global_executor",
+ "//folly:thread_local",
+ "//folly/io/async:async_base",
+ ],
+)
+
+cpp_library(
+ name = "io_thread_pool_executor",
+ srcs = ["IOThreadPoolExecutor.cpp"],
+ hdrs = ["IOThreadPoolExecutor.h"],
+ deps = [
+ ":io_executor",
+ ":queue_observer",
+ ":thread_pool_executor",
+ "//folly:portability",
+ "//folly/detail:memory_idler",
+ "//folly/io/async:event_base_manager",
+ "//folly/portability:gflags",
+ "//folly/synchronization:relaxed_atomic",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "soft_real_time_executor",
+ srcs = ["SoftRealTimeExecutor.cpp"],
+ hdrs = ["SoftRealTimeExecutor.h"],
+ deps = [
+ "//folly:executor",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "scheduled_executor",
+ hdrs = ["ScheduledExecutor.h"],
+ deps = [
+ "//folly:executor",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "serial_executor",
+ hdrs = [
+ "SerialExecutor.h",
+ "SerialExecutor-inl.h",
+ ],
+ deps = [
+ ":global_executor",
+ ":serialized_executor",
+ "//folly:exception_string",
+ "//folly:scope_guard",
+ "//folly/concurrency:unbounded_queue",
+ "//folly/io/async:request_context",
+ "//folly/synchronization:distributed_mutex",
+ "//folly/synchronization:relaxed_atomic",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "sequenced_executor",
+ hdrs = ["SequencedExecutor.h"],
+ deps = [
+ "//folly:executor",
+ ],
+)
+
+cpp_library(
+ name = "serialized_executor",
+ hdrs = ["SerializedExecutor.h"],
+ deps = [
+ ":sequenced_executor",
+ ],
+)
+
+cpp_library(
+ name = "strand_executor",
+ srcs = ["StrandExecutor.cpp"],
+ hdrs = ["StrandExecutor.h"],
+ deps = [
+ ":global_executor",
+ ":serialized_executor",
+ "//folly:exception_string",
+ "//folly:optional",
+ "//folly/concurrency:unbounded_queue",
+ "//folly/io/async:request_context",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "thread_pool_executor",
+ srcs = ["ThreadPoolExecutor.cpp"],
+ hdrs = ["ThreadPoolExecutor.h"],
+ deps = [
+ ":global_thread_pool_list",
+ "//folly:default_keep_alive_executor",
+ "//folly:memory",
+ "//folly:shared_mutex",
+ "//folly/concurrency:process_local_unique_id",
+ "//folly/executors/task_queue:lifo_sem_mpmc_queue",
+ "//folly/executors/thread_factory:named_thread_factory",
+ "//folly/io/async:request_context",
+ "//folly/portability:gflags",
+ "//folly/portability:pthread",
+ "//folly/synchronization:asymmetric_thread_fence",
+ "//folly/synchronization:atomic_struct",
+ "//folly/synchronization:baton",
+ "//folly/tracing:static_tracepoint",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "threaded_executor",
+ srcs = ["ThreadedExecutor.cpp"],
+ hdrs = ["ThreadedExecutor.h"],
+ deps = [
+ "//folly:executor",
+ "//folly:scope_guard",
+ "//folly/concurrency:unbounded_queue",
+ "//folly/container:f14_hash",
+ "//folly/executors/thread_factory",
+ "//folly/executors/thread_factory:named_thread_factory",
+ "//folly/system:thread_name",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "timed_drivable_executor",
+ srcs = ["TimedDrivableExecutor.cpp"],
+ hdrs = ["TimedDrivableExecutor.h"],
+ deps = [
+ ":drivable_executor",
+ "//folly/concurrency:unbounded_queue",
+ ],
+)
+
+cpp_library(
+ name = "timekeeper_scheduled_executor",
+ srcs = ["TimekeeperScheduledExecutor.cpp"],
+ hdrs = ["TimekeeperScheduledExecutor.h"],
+ deps = [
+ ":scheduled_executor",
+ "//folly/futures:core",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "queued_immediate_executor",
+ srcs = ["QueuedImmediateExecutor.cpp"],
+ hdrs = ["QueuedImmediateExecutor.h"],
+ deps = [
+ ":inline_executor",
+ "//folly:executor",
+ "//folly:indestructible",
+ "//folly:scope_guard",
+ "//folly:thread_local",
+ "//folly/io/async:request_context",
+ ],
+)
+
+cpp_library(
+ name = "executor_with_priority",
+ srcs = ["ExecutorWithPriority.cpp"],
+ hdrs = [
+ "ExecutorWithPriority.h",
+ "ExecutorWithPriority-inl.h",
+ ],
+ deps = [
+ "//folly:executor",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "metered_executor",
+ hdrs = [
+ "MeteredExecutor.h",
+ "MeteredExecutor-inl.h",
+ ],
+ deps = [
+ ":queue_observer",
+ "//folly:default_keep_alive_executor",
+ "//folly/concurrency:unbounded_queue",
+ "//folly/io/async:async_base",
+ ],
+)
+
+cpp_library(
+ name = "io_thread_pool_deadlock_detector_observer",
+ srcs = ["IOThreadPoolDeadlockDetectorObserver.cpp"],
+ hdrs = ["IOThreadPoolDeadlockDetectorObserver.h"],
+ deps = [
+ "//folly:singleton",
+ "//folly/concurrency:deadlock_detector",
+ "//folly/executors:io_thread_pool_executor",
+ "//folly/executors:thread_pool_executor",
+ ],
+)
+
+cpp_library(
+ name = "queue_observer",
+ srcs = ["QueueObserver.cpp"],
+ hdrs = [
+ "QueueObserver.h",
+ ],
+ deps = [
+ "//folly:function",
+ "//folly:portability",
+ "//folly:synchronized",
+ "//folly/portability:sys_types",
+ ],
+)
+
+cpp_library(
+ name = "virtual_executor",
+ hdrs = [
+ "VirtualExecutor.h",
+ ],
+ deps = [
+ "//folly:default_keep_alive_executor",
+ ],
+)
+
+cpp_library(
+ name = "function_scheduler",
+ srcs = ["FunctionScheduler.cpp"],
+ hdrs = ["FunctionScheduler.h"],
+ deps = [
+ "//folly:conv",
+ "//folly:function",
+ "//folly:random",
+ "//folly:range",
+ "//folly:string",
+ "//folly/container:f14_hash",
+ "//folly/hash",
+ "//folly/system:thread_name",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "threaded_repeating_function_runner",
+ srcs = ["ThreadedRepeatingFunctionRunner.cpp"],
+ hdrs = ["ThreadedRepeatingFunctionRunner.h"],
+ deps = [
+ "//folly:function",
+ "//folly/system:thread_name",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "execution_observer",
+ srcs = ["ExecutionObserver.cpp"],
+ hdrs = ["ExecutionObserver.h"],
+ deps = [
+ "//folly/tracing:static_tracepoint",
+ "@boost.intrusive",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/task_queue/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/task_queue/BUILD.bazel
new file mode 100644
index 00000000000..5f68b50f2b4
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/task_queue/BUILD.bazel
@@ -0,0 +1,59 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "blocking_queue",
+ hdrs = ["BlockingQueue.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:optional",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "lifo_sem_mpmc_queue",
+ hdrs = ["LifoSemMPMCQueue.h"],
+ deps = [
+ ":blocking_queue",
+ "//folly:mpmc_queue",
+ "//folly/synchronization:lifo_sem",
+ ],
+)
+
+cpp_library(
+ name = "priority_lifo_sem_mpmc_queue",
+ hdrs = ["PriorityLifoSemMPMCQueue.h"],
+ deps = [
+ ":blocking_queue",
+ "//folly:executor",
+ "//folly:mpmc_queue",
+ "//folly:range",
+ "//folly/synchronization:lifo_sem",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "priority_unbounded_blocking_queue",
+ hdrs = ["PriorityUnboundedBlockingQueue.h"],
+ deps = [
+ ":blocking_queue",
+ "//folly:constexpr_math",
+ "//folly:executor",
+ "//folly/concurrency:priority_unbounded_queue_set",
+ "//folly/lang:exception",
+ "//folly/synchronization:lifo_sem",
+ ],
+)
+
+cpp_library(
+ name = "unbounded_blocking_queue",
+ hdrs = ["UnboundedBlockingQueue.h"],
+ deps = [
+ ":blocking_queue",
+ "//folly/concurrency:unbounded_queue",
+ "//folly/synchronization:lifo_sem",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/task_queue/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/task_queue/test/BUILD.bazel
new file mode 100644
index 00000000000..942c0e32168
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/task_queue/test/BUILD.bazel
@@ -0,0 +1,33 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "PriorityUnboundedBlockingQueueTest",
+ srcs = ["PriorityUnboundedBlockingQueueTest.cpp"],
+ deps = [
+ "//folly/container:enumerate",
+ "//folly/executors/task_queue:priority_unbounded_blocking_queue",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "UnboundedBlockingQueueTest",
+ srcs = ["UnboundedBlockingQueueTest.cpp"],
+ deps = [
+ "//folly/executors/task_queue:unbounded_blocking_queue",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "PriorityLifoSemMPMCQueueTest",
+ srcs = ["PriorityLifoSemMPMCQueueTest.cpp"],
+ deps = [
+ "//folly:range",
+ "//folly/container:enumerate",
+ "//folly/executors/task_queue:priority_lifo_sem_mpmc_queue",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/test/BUILD.bazel
new file mode 100644
index 00000000000..f3eda6257ed
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/test/BUILD.bazel
@@ -0,0 +1,350 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_unittest(
+ name = "AsyncTest",
+ srcs = ["AsyncTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/executors:async",
+ "//folly/executors:manual_executor",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "CodelTest",
+ srcs = ["CodelTest.cpp"],
+ deps = [
+ "//folly/executors:codel",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "FiberIOExecutorTest",
+ srcs = ["FiberIOExecutorTest.cpp"],
+ deps = [
+ "//folly/executors:fiber_io_executor",
+ "//folly/executors:io_thread_pool_executor",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "executor_test",
+ srcs = ["ExecutorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/executors:inline_executor",
+ "//folly/executors:manual_executor",
+ "//folly/executors:queued_immediate_executor",
+ "//folly/futures:core",
+ "//folly/io/async:request_context",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "GlobalExecutorTest",
+ srcs = ["GlobalExecutorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:global_executor",
+ "//folly/executors:io_executor",
+ "//folly/executors:io_thread_pool_executor",
+ "//folly/executors:virtual_executor",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "//folly/synchronization:saturating_semaphore",
+ "//folly/system:hardware_concurrency",
+ ],
+)
+
+cpp_unittest(
+ name = "GlobalCPUExecutorTest",
+ srcs = ["GlobalCPUExecutorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:global_executor",
+ "//folly/executors:io_executor",
+ "//folly/executors:io_thread_pool_executor",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "GlobalIOExecutorTest",
+ srcs = ["GlobalCPUExecutorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:global_executor",
+ "//folly/executors:io_executor",
+ "//folly/executors:io_thread_pool_executor",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "GlobalExecutorAssignmentTest",
+ srcs = ["GlobalExecutorAssignmentTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:singleton",
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:global_executor",
+ "//folly/executors:inline_executor",
+ "//folly/executors:io_executor",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "SerialExecutorTest",
+ srcs = ["SerialExecutorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:random",
+ "//folly:scope_guard",
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:inline_executor",
+ "//folly/executors:serial_executor",
+ "//folly/io/async:request_context",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "SequencedExecutorTest",
+ srcs = ["SequencedExecutorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:serial_executor",
+ "//folly/io/async:scoped_event_base_thread",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "StrandExecutorTest",
+ srcs = ["StrandExecutorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:cancellation_token",
+ "//folly/executors:global_executor",
+ "//folly/executors:manual_executor",
+ "//folly/executors:strand_executor",
+ "//folly/io/async:request_context",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "ThreadedExecutorTest",
+ srcs = ["ThreadedExecutorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:conv",
+ "//folly/executors:threaded_executor",
+ "//folly/futures:core",
+ "//folly/gen:base",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "ThreadPoolExecutorTest",
+ size = "medium",
+ srcs = ["ThreadPoolExecutorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:c_portability",
+ "//folly:default_keep_alive_executor",
+ "//folly:exception",
+ "//folly/container:f14_hash",
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:edf_thread_pool_executor",
+ "//folly/executors:future_executor",
+ "//folly/executors:io_thread_pool_executor",
+ "//folly/executors:thread_pool_executor",
+ "//folly/executors:virtual_executor",
+ "//folly/executors/task_queue:lifo_sem_mpmc_queue",
+ "//folly/executors/task_queue:unbounded_blocking_queue",
+ "//folly/executors/thread_factory:init_thread_factory",
+ "//folly/executors/thread_factory:priority_thread_factory",
+ "//folly/lang:keep",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/portability:pthread",
+ "//folly/portability:sys_resource",
+ "//folly/synchronization:latch",
+ "//folly/synchronization/detail:spin",
+ "//folly/system:thread_id",
+ "@boost.thread",
+ ],
+)
+
+cpp_unittest(
+ name = "TimedDrivableExecutorTest",
+ srcs = ["TimedDrivableExecutorTest.cpp"],
+ deps = [
+ "//folly/executors:timed_drivable_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "TimekeeperScheduledExecutorTest",
+ srcs = ["TimekeeperScheduledExecutorTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/executors:inline_executor",
+ "//folly/executors:serial_executor",
+ "//folly/executors:threaded_executor",
+ "//folly/executors:timekeeper_scheduled_executor",
+ "//folly/futures:manual_timekeeper",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "ExecutorWithPriorityTest",
+ srcs = ["ExecutorWithPriorityTest.cpp"],
+ deps = [
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:executor_with_priority",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "MeteredExecutorTest",
+ srcs = ["MeteredExecutorTest.cpp"],
+ # Mac Clang is stricter about not allowing you to use deprecated functions.
+ # std::shared_ptr::unique() was deprecated in C++17, so bring it back.
+ local_defines = ["_LIBCPP_ENABLE_CXX20_REMOVED_SHARED_PTR_UNIQUE"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:benchmark",
+ "//folly:synchronized",
+ "//folly/coro:blocking_wait",
+ "//folly/coro:task",
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:metered_executor",
+ "//folly/init",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "//folly/synchronization:latch",
+ "//folly/synchronization:lifo_sem",
+ "//folly/test:deterministic_schedule",
+ ],
+)
+
+cpp_library(
+ name = "IOThreadPoolExecutorBaseTestLib",
+ hdrs = [
+ "IOThreadPoolExecutorBaseTestLib.h",
+ ],
+ deps = [
+ "//folly:random",
+ "//folly/container:f14_hash",
+ "//folly/executors:io_thread_pool_executor",
+ "//folly/io/async:async_base",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "function_scheduler_test",
+ size = "medium",
+ srcs = ["FunctionSchedulerTest.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly/executors:function_scheduler",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "@boost.thread",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "threaded_repeating_function_runner_test",
+ srcs = ["ThreadedRepeatingFunctionRunnerTest.cpp"],
+ deps = [
+ "//folly/executors:threaded_repeating_function_runner",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/thread_factory/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/thread_factory/BUILD.bazel
new file mode 100644
index 00000000000..bd2215344d3
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/executors/thread_factory/BUILD.bazel
@@ -0,0 +1,45 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "named_thread_factory",
+ hdrs = ["NamedThreadFactory.h"],
+ deps = [
+ ":thread_factory",
+ "//folly:conv",
+ "//folly:range",
+ "//folly/system:thread_name",
+ ],
+)
+
+cpp_library(
+ name = "priority_thread_factory",
+ srcs = ["PriorityThreadFactory.cpp"],
+ hdrs = ["PriorityThreadFactory.h"],
+ deps = [
+ ":init_thread_factory",
+ "//folly:string",
+ "//folly/portability:sys_resource",
+ "//folly/portability:sys_time",
+ "//folly/system:thread_name",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "init_thread_factory",
+ hdrs = ["InitThreadFactory.h"],
+ deps = [
+ ":thread_factory",
+ "//folly:scope_guard",
+ ],
+)
+
+cpp_library(
+ name = "thread_factory",
+ hdrs = ["ThreadFactory.h"],
+ deps = [
+ "//folly:executor",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/BUILD.bazel
new file mode 100644
index 00000000000..4acd008a3c6
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/BUILD.bazel
@@ -0,0 +1,73 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "elias_fano_coding",
+ hdrs = [
+ "EliasFanoCoding.h",
+ ],
+ deps = [
+ "//folly/compression/elias_fano:elias_fano_coding",
+ ],
+)
+
+cpp_library(
+ name = "event_count",
+ hdrs = [
+ "EventCount.h",
+ ],
+ deps = [
+ "//folly/synchronization:event_count",
+ ],
+)
+
+cpp_library(
+ name = "flat_combining_priority_queue",
+ hdrs = [
+ "FlatCombiningPriorityQueue.h",
+ ],
+ deps = [
+ "//folly/concurrency/container:flat_combining_priority_queue",
+ ],
+)
+
+cpp_library(
+ name = "relaxed_concurrent_priority_queue",
+ hdrs = [
+ "RelaxedConcurrentPriorityQueue.h",
+ ],
+ deps = [
+ "//folly/concurrency/container:relaxed_concurrent_priority_queue",
+ ],
+)
+
+cpp_library(
+ name = "function_scheduler",
+ hdrs = [
+ "FunctionScheduler.h",
+ ],
+ deps = [
+ "//folly/executors:function_scheduler",
+ ],
+)
+
+cpp_library(
+ name = "test_util",
+ hdrs = [
+ "TestUtil.h",
+ ],
+ deps = [
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_library(
+ name = "threaded_repeating_function_runner",
+ hdrs = [
+ "ThreadedRepeatingFunctionRunner.h",
+ ],
+ deps = [
+ "//folly/executors:threaded_repeating_function_runner",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/BUILD.bazel
new file mode 100644
index 00000000000..22cbbde76b5
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/BUILD.bazel
@@ -0,0 +1,187 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "channel",
+ hdrs = [
+ "Channel.h",
+ "Channel-fwd.h",
+ ],
+ textual_hdrs = [
+ "Channel-inl.h",
+ ],
+ deps = [
+ "//folly/channels:channel",
+ ],
+)
+
+cpp_library(
+ name = "channel_callback_handle",
+ hdrs = [
+ "ChannelCallbackHandle.h",
+ ],
+ deps = [
+ "//folly/channels:channel_callback_handle",
+ ],
+)
+
+cpp_library(
+ name = "channel_processor",
+ hdrs = [
+ "ChannelProcessor.h",
+ ],
+ textual_hdrs = [
+ "ChannelProcessor-inl.h",
+ ],
+ deps = [
+ "//folly/channels:channel_processor",
+ ],
+)
+
+cpp_library(
+ name = "consume_channel",
+ hdrs = [
+ "ConsumeChannel.h",
+ ],
+ textual_hdrs = [
+ "ConsumeChannel-inl.h",
+ ],
+ deps = [
+ "//folly/channels:consume_channel",
+ ],
+)
+
+cpp_library(
+ name = "fanout_channel",
+ hdrs = [
+ "FanoutChannel.h",
+ ],
+ textual_hdrs = [
+ "FanoutChannel-inl.h",
+ ],
+ deps = [
+ "//folly/channels:fanout_channel",
+ ],
+)
+
+cpp_library(
+ name = "fanout_sender",
+ hdrs = [
+ "FanoutSender.h",
+ ],
+ textual_hdrs = [
+ "FanoutSender-inl.h",
+ ],
+ deps = [
+ "//folly/channels:fanout_sender",
+ ],
+)
+
+cpp_library(
+ name = "merge",
+ hdrs = [
+ "Merge.h",
+ ],
+ textual_hdrs = [
+ "Merge-inl.h",
+ ],
+ deps = [
+ "//folly/channels:merge",
+ ],
+)
+
+cpp_library(
+ name = "merge_channel",
+ hdrs = [
+ "MergeChannel.h",
+ ],
+ textual_hdrs = [
+ "MergeChannel-inl.h",
+ ],
+ deps = [
+ "//folly/channels:merge_channel",
+ ],
+)
+
+cpp_library(
+ name = "multiplex_channel",
+ hdrs = [
+ "MultiplexChannel.h",
+ ],
+ textual_hdrs = [
+ "MultiplexChannel-inl.h",
+ ],
+ deps = [
+ "//folly/channels:multiplex_channel",
+ ],
+)
+
+cpp_library(
+ name = "on_closed_exception",
+ hdrs = [
+ "OnClosedException.h",
+ ],
+ deps = [
+ "//folly/channels:on_closed_exception",
+ ],
+)
+
+cpp_library(
+ name = "producer",
+ hdrs = [
+ "Producer.h",
+ ],
+ textual_hdrs = [
+ "Producer-inl.h",
+ ],
+ deps = [
+ "//folly/channels:producer",
+ ],
+)
+
+cpp_library(
+ name = "proxy_channel",
+ hdrs = [
+ "ProxyChannel.h",
+ ],
+ textual_hdrs = [
+ "ProxyChannel-inl.h",
+ ],
+ deps = [
+ "//folly/channels:proxy_channel",
+ ],
+)
+
+cpp_library(
+ name = "rate_limiter",
+ hdrs = [
+ "RateLimiter.h",
+ ],
+ deps = [
+ "//folly/channels:rate_limiter",
+ ],
+)
+
+cpp_library(
+ name = "max_concurrent_rate_limiter",
+ hdrs = [
+ "MaxConcurrentRateLimiter.h",
+ ],
+ deps = [
+ "//folly/channels:max_concurrent_rate_limiter",
+ ],
+)
+
+cpp_library(
+ name = "transform",
+ hdrs = [
+ "Transform.h",
+ ],
+ textual_hdrs = [
+ "Transform-inl.h",
+ ],
+ deps = [
+ "//folly/channels:transform",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/detail/BUILD.bazel
new file mode 100644
index 00000000000..44126f5a88e
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/detail/BUILD.bazel
@@ -0,0 +1,63 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "atomic_queue",
+ hdrs = [
+ "AtomicQueue.h",
+ ],
+ deps = [
+ "//folly/channels/detail:atomic_queue",
+ ],
+)
+
+cpp_library(
+ name = "channel_bridge",
+ hdrs = [
+ "ChannelBridge.h",
+ ],
+ deps = [
+ "//folly/channels/detail:channel_bridge",
+ ],
+)
+
+cpp_library(
+ name = "intrusive_ptr",
+ hdrs = [
+ "IntrusivePtr.h",
+ ],
+ deps = [
+ "//folly/channels/detail:intrusive_ptr",
+ ],
+)
+
+cpp_library(
+ name = "multiplexer_traits",
+ hdrs = [
+ "MultiplexerTraits.h",
+ ],
+ deps = [
+ "//folly/channels/detail:multiplexer_traits",
+ ],
+)
+
+cpp_library(
+ name = "pointer_variant",
+ hdrs = [
+ "PointerVariant.h",
+ ],
+ deps = [
+ "//folly/channels/detail:pointer_variant",
+ ],
+)
+
+cpp_library(
+ name = "utility",
+ hdrs = [
+ "Utility.h",
+ ],
+ deps = [
+ "//folly/channels/detail:utility",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/test/BUILD.bazel
new file mode 100644
index 00000000000..b8a14feb7bb
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/channels/test/BUILD.bazel
@@ -0,0 +1,13 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "channel_test_util",
+ hdrs = [
+ "ChannelTestUtil.h",
+ ],
+ deps = [
+ "//folly/channels/test:channel_test_util",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/coro/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/coro/BUILD.bazel
new file mode 100644
index 00000000000..312a68236cf
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/coro/BUILD.bazel
@@ -0,0 +1,524 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "async_generator",
+ hdrs = [
+ "AsyncGenerator.h",
+ ],
+ deps = [
+ "//folly/coro:async_generator",
+ ],
+)
+
+cpp_library(
+ name = "async_pipe",
+ hdrs = [
+ "AsyncPipe.h",
+ ],
+ deps = [
+ "//folly/coro:async_pipe",
+ ],
+)
+
+cpp_library(
+ name = "async_scope",
+ hdrs = [
+ "AsyncScope.h",
+ ],
+ deps = [
+ "//folly/coro:async_scope",
+ ],
+)
+
+cpp_library(
+ name = "async_stack",
+ hdrs = [
+ "AsyncStack.h",
+ ],
+ deps = [
+ "//folly/coro:async_stack",
+ ],
+)
+
+cpp_library(
+ name = "baton",
+ hdrs = [
+ "Baton.h",
+ ],
+ deps = [
+ "//folly/coro:baton",
+ ],
+)
+
+cpp_library(
+ name = "blocking_wait",
+ hdrs = [
+ "BlockingWait.h",
+ ],
+ deps = [
+ "//folly/coro:blocking_wait",
+ ],
+)
+
+cpp_library(
+ name = "collect",
+ hdrs = [
+ "Collect.h",
+ ],
+ textual_hdrs = [
+ "Collect-inl.h",
+ ],
+ deps = [
+ "//folly/coro:collect",
+ ],
+)
+
+cpp_library(
+ name = "concat",
+ hdrs = [
+ "Concat.h",
+ ],
+ textual_hdrs = [
+ "Concat-inl.h",
+ ],
+ deps = [
+ "//folly/coro:concat",
+ ],
+)
+
+cpp_library(
+ name = "coroutine",
+ hdrs = [
+ "Coroutine.h",
+ ],
+ deps = [
+ "//folly/coro:coroutine",
+ ],
+)
+
+cpp_library(
+ name = "current_executor",
+ hdrs = [
+ "CurrentExecutor.h",
+ ],
+ deps = [
+ "//folly/coro:current_executor",
+ ],
+)
+
+cpp_library(
+ name = "detach_on_cancel",
+ hdrs = [
+ "DetachOnCancel.h",
+ ],
+ deps = [
+ "//folly/coro:detach_on_cancel",
+ ],
+)
+
+cpp_library(
+ name = "detail_barrier",
+ hdrs = [
+ "detail/Barrier.h",
+ ],
+ deps = [
+ "//folly/coro:detail_barrier",
+ ],
+)
+
+cpp_library(
+ name = "detail_barrier_task",
+ hdrs = [
+ "detail/BarrierTask.h",
+ ],
+ deps = [
+ "//folly/coro:detail_barrier_task",
+ ],
+)
+
+cpp_library(
+ name = "detail_current_async_frame",
+ hdrs = [
+ "detail/CurrentAsyncFrame.h",
+ ],
+ deps = [
+ "//folly/coro:detail_current_async_frame",
+ ],
+)
+
+cpp_library(
+ name = "detail_helpers",
+ hdrs = [
+ "detail/Helpers.h",
+ ],
+ deps = [
+ "//folly/coro:detail_helpers",
+ ],
+)
+
+cpp_library(
+ name = "detail_malloc",
+ hdrs = [
+ "detail/Malloc.h",
+ ],
+ deps = [
+ "//folly/coro:detail_malloc",
+ ],
+)
+
+cpp_library(
+ name = "detail_manual_lifetime",
+ hdrs = [
+ "detail/ManualLifetime.h",
+ ],
+ deps = [
+ "//folly/coro:detail_manual_lifetime",
+ ],
+)
+
+cpp_library(
+ name = "detail_traits",
+ hdrs = [
+ "detail/Traits.h",
+ ],
+ deps = [
+ "//folly/coro:detail_traits",
+ ],
+)
+
+cpp_library(
+ name = "filter",
+ hdrs = [
+ "Filter.h",
+ ],
+ textual_hdrs = [
+ "Filter-inl.h",
+ ],
+ deps = [
+ "//folly/coro:filter",
+ ],
+)
+
+cpp_library(
+ name = "future_util",
+ hdrs = [
+ "FutureUtil.h",
+ ],
+ deps = [
+ "//folly/coro:future_util",
+ ],
+)
+
+cpp_library(
+ name = "generator",
+ hdrs = [
+ "Generator.h",
+ ],
+ deps = [
+ "//folly/coro:generator",
+ ],
+)
+
+cpp_library(
+ name = "gmock_helpers",
+ hdrs = [
+ "GmockHelpers.h",
+ ],
+ deps = [
+ "//folly/coro:gmock_helpers",
+ ],
+)
+
+cpp_library(
+ name = "gtest_helpers",
+ hdrs = [
+ "GtestHelpers.h",
+ ],
+ deps = [
+ "//folly/coro:gtest_helpers",
+ ],
+)
+
+cpp_library(
+ name = "inline_task",
+ hdrs = [
+ "detail/InlineTask.h",
+ ],
+ deps = [
+ "//folly/coro:inline_task",
+ ],
+)
+
+cpp_library(
+ name = "invoke",
+ hdrs = [
+ "Invoke.h",
+ ],
+ deps = [
+ "//folly/coro:invoke",
+ ],
+)
+
+cpp_library(
+ name = "merge",
+ hdrs = [
+ "Merge.h",
+ ],
+ textual_hdrs = [
+ "Merge-inl.h",
+ ],
+ deps = [
+ "//folly/coro:merge",
+ ],
+)
+
+cpp_library(
+ name = "mutex",
+ hdrs = [
+ "Mutex.h",
+ ],
+ deps = [
+ "//folly/coro:mutex",
+ ],
+)
+
+cpp_library(
+ name = "promise",
+ hdrs = [
+ "Promise.h",
+ ],
+ deps = [
+ "//folly/coro:promise",
+ ],
+)
+
+cpp_library(
+ name = "result",
+ hdrs = [
+ "Result.h",
+ ],
+ deps = [
+ "//folly/coro:result",
+ ],
+)
+
+cpp_library(
+ name = "retry",
+ hdrs = [
+ "Retry.h",
+ ],
+ deps = [
+ "//folly/coro:retry",
+ ],
+)
+
+cpp_library(
+ name = "rust_adaptors",
+ hdrs = [
+ "RustAdaptors.h",
+ ],
+ deps = [
+ "//folly/coro:rust_adaptors",
+ ],
+)
+
+cpp_library(
+ name = "scope_exit",
+ hdrs = [
+ "ScopeExit.h",
+ ],
+ deps = [
+ "//folly/coro:scope_exit",
+ ],
+)
+
+cpp_library(
+ name = "shared_lock",
+ hdrs = [
+ "SharedLock.h",
+ ],
+ deps = [
+ "//folly/coro:shared_lock",
+ ],
+)
+
+cpp_library(
+ name = "shared_mutex",
+ hdrs = [
+ "SharedMutex.h",
+ ],
+ deps = [
+ "//folly/coro:shared_mutex",
+ ],
+)
+
+cpp_library(
+ name = "sleep",
+ hdrs = [
+ "Sleep.h",
+ ],
+ textual_hdrs = [
+ "Sleep-inl.h",
+ ],
+ deps = [
+ "//folly/coro:sleep",
+ ],
+)
+
+cpp_library(
+ name = "small_unbounded_queue",
+ hdrs = [
+ "SmallUnboundedQueue.h",
+ ],
+ deps = [
+ "//folly/coro:small_unbounded_queue",
+ ],
+)
+
+cpp_library(
+ name = "task",
+ hdrs = [
+ "Task.h",
+ ],
+ deps = [
+ "//folly/coro:task",
+ ],
+)
+
+cpp_library(
+ name = "timed_wait",
+ hdrs = [
+ "TimedWait.h",
+ ],
+ deps = [
+ "//folly/coro:timed_wait",
+ ],
+)
+
+cpp_library(
+ name = "timeout",
+ hdrs = [
+ "Timeout.h",
+ ],
+ textual_hdrs = [
+ "Timeout-inl.h",
+ ],
+ deps = [
+ "//folly/coro:timeout",
+ ],
+)
+
+cpp_library(
+ name = "traits",
+ hdrs = [
+ "Traits.h",
+ ],
+ deps = [
+ "//folly/coro:traits",
+ ],
+)
+
+cpp_library(
+ name = "transform",
+ hdrs = [
+ "Transform.h",
+ ],
+ textual_hdrs = [
+ "Transform-inl.h",
+ ],
+ deps = [
+ "//folly/coro:transform",
+ ],
+)
+
+cpp_library(
+ name = "unbounded_queue",
+ hdrs = [
+ "UnboundedQueue.h",
+ ],
+ deps = [
+ "//folly/coro:unbounded_queue",
+ ],
+)
+
+cpp_library(
+ name = "via_if_async",
+ hdrs = [
+ "ViaIfAsync.h",
+ ],
+ deps = [
+ "//folly/coro:via_if_async",
+ ],
+)
+
+cpp_library(
+ name = "with_async_stack",
+ hdrs = [
+ "WithAsyncStack.h",
+ ],
+ deps = [
+ "//folly/coro:with_async_stack",
+ ],
+)
+
+cpp_library(
+ name = "with_cancellation",
+ hdrs = [
+ "WithCancellation.h",
+ ],
+ deps = [
+ "//folly/coro:with_cancellation",
+ ],
+)
+
+cpp_library(
+ name = "bounded_queue",
+ hdrs = [
+ "BoundedQueue.h",
+ ],
+ deps = [
+ "//folly/coro:bounded_queue",
+ ],
+)
+
+cpp_library(
+ name = "shared_promise",
+ hdrs = [
+ "SharedPromise.h",
+ ],
+ deps = [
+ "//folly/coro:shared_promise",
+ ],
+)
+
+cpp_library(
+ name = "cleanup",
+ hdrs = [
+ "Cleanup.h",
+ ],
+ deps = [
+ "//folly/coro:cleanup",
+ ],
+)
+
+cpp_library(
+ name = "auto_cleanup_fwd",
+ hdrs = [
+ "AutoCleanup-fwd.h",
+ ],
+ deps = [
+ "//folly/coro:auto_cleanup_fwd",
+ ],
+)
+
+cpp_library(
+ name = "auto_cleanup",
+ hdrs = [
+ "AutoCleanup.h",
+ ],
+ deps = [
+ "//folly/coro:auto_cleanup",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/crypto/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/crypto/BUILD.bazel
new file mode 100644
index 00000000000..a8eee07680b
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/crypto/BUILD.bazel
@@ -0,0 +1,43 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "blake2xb",
+ hdrs = [
+ "Blake2xb.h",
+ ],
+ deps = [
+ "//folly/crypto:blake2xb",
+ ],
+)
+
+cpp_library(
+ name = "lt_hash",
+ hdrs = [
+ "LtHash.h",
+ ],
+ deps = [
+ "//folly/crypto:lt_hash",
+ ],
+)
+
+cpp_library(
+ name = "lt_hash_sse2",
+ hdrs = [
+ "LtHash.h",
+ ],
+ deps = [
+ "//folly/crypto:lt_hash_sse2", # @manual
+ ],
+)
+
+cpp_library(
+ name = "lt_hash_avx2",
+ hdrs = [
+ "LtHash.h",
+ ],
+ deps = [
+ "//folly/crypto:lt_hash_avx2", # @manual
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/exception_tracer/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/exception_tracer/BUILD.bazel
new file mode 100644
index 00000000000..a37bc48bca6
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/exception_tracer/BUILD.bazel
@@ -0,0 +1,75 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "exception_abi",
+ hdrs = ["ExceptionAbi.h"],
+ deps = [
+ "//folly/debugging/exception_tracer:exception_abi",
+ ],
+)
+
+cpp_library(
+ name = "exception_counter",
+ hdrs = ["ExceptionCounterLib.h"],
+ deps = [
+ "//folly/debugging/exception_tracer:exception_counter",
+ ],
+)
+
+cpp_library(
+ name = "exception_tracer",
+ deps = [
+ "//folly/debugging/exception_tracer",
+ ],
+)
+
+cpp_library(
+ name = "exception_tracer_base",
+ hdrs = ["ExceptionTracer.h"],
+ deps = [
+ "//folly/debugging/exception_tracer:exception_tracer_base",
+ ],
+)
+
+cpp_library(
+ name = "exception_tracer_callbacks",
+ hdrs = ["ExceptionTracerLib.h"],
+ deps = [
+ "//folly/debugging/exception_tracer:exception_tracer_callbacks",
+ ],
+)
+
+cpp_library(
+ name = "stacktrace",
+ hdrs = ["StackTrace.h"],
+ deps = [
+ "//folly/debugging/exception_tracer:stacktrace",
+ ],
+)
+
+cpp_library(
+ name = "smart_exception_tracer_singleton",
+ hdrs = [
+ "SmartExceptionTracerSingleton.h",
+ ],
+ deps = [
+ "//folly/debugging/exception_tracer:smart_exception_tracer_singleton",
+ ],
+)
+
+cpp_library(
+ name = "smart_exception_stack_trace_hooks",
+ deps = [
+ "//folly/debugging/exception_tracer:smart_exception_stack_trace_hooks",
+ ],
+)
+
+cpp_library(
+ name = "smart_exception_tracer",
+ hdrs = ["SmartExceptionTracer.h"],
+ deps = [
+ "//folly/debugging/exception_tracer:smart_exception_tracer",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/flat_combining/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/flat_combining/BUILD.bazel
new file mode 100644
index 00000000000..8b1ffd085ff
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/flat_combining/BUILD.bazel
@@ -0,0 +1,13 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "flat_combining",
+ hdrs = [
+ "FlatCombining.h",
+ ],
+ deps = [
+ "//folly/synchronization:flat_combining",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/flat_combining/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/flat_combining/test/BUILD.bazel
new file mode 100644
index 00000000000..dc87bb519c5
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/flat_combining/test/BUILD.bazel
@@ -0,0 +1,23 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "flat_combining_examples",
+ hdrs = [
+ "FlatCombiningExamples.h",
+ ],
+ deps = [
+ "//folly/synchronization/test:flat_combining_examples",
+ ],
+)
+
+cpp_library(
+ name = "flat_combining_test_helpers",
+ hdrs = [
+ "FlatCombiningTestHelpers.h",
+ ],
+ deps = [
+ "//folly/synchronization/test:flat_combining_test_helpers",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/io/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/io/BUILD.bazel
new file mode 100644
index 00000000000..35184741c36
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/io/BUILD.bazel
@@ -0,0 +1,169 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "async_base",
+ hdrs = [
+ "AsyncBase.h",
+ ],
+ deps = [
+ "//folly/io/async:async_base_class",
+ ],
+)
+
+cpp_library(
+ name = "async_io",
+ hdrs = [
+ "AsyncIO.h",
+ ],
+ deps = [
+ "//folly/io/async:async_io",
+ ],
+)
+
+cpp_library(
+ name = "liburing",
+ hdrs = [
+ "Liburing.h",
+ ],
+ deps = [
+ "//folly/io/async:liburing",
+ ],
+)
+
+cpp_library(
+ name = "async_io_uring_socket",
+ hdrs = [
+ "AsyncIoUringSocket.h",
+ "AsyncIoUringSocketFactory.h",
+ ],
+ deps = [
+ "//folly/io/async:async_io_uring_socket",
+ ],
+)
+
+cpp_library(
+ name = "simple_async_io",
+ hdrs = [
+ "SimpleAsyncIO.h",
+ ],
+ deps = [
+ "//folly/io/async:simple_async_io",
+ ],
+)
+
+cpp_library(
+ name = "epoll",
+ hdrs = [
+ "Epoll.h",
+ ],
+ deps = [
+ "//folly/io/async:epoll",
+ ],
+)
+
+cpp_library(
+ # @autodeps-skip
+ name = "epoll_backend",
+ hdrs = [
+ "Epoll.h",
+ "EpollBackend.h",
+ ],
+ deps = [
+ "//folly/io/async:epoll_backend",
+ ],
+)
+
+cpp_library(
+ name = "event_base_poller",
+ hdrs = [
+ "EventBasePoller.h",
+ ],
+ deps = [
+ "//folly/io/async:event_base_poller",
+ ],
+)
+
+cpp_library(
+ name = "mux_io_thread_pool_executor",
+ hdrs = [
+ "MuxIOThreadPoolExecutor.h",
+ ],
+ deps = [
+ "//folly/io/async:mux_io_thread_pool_executor",
+ ],
+)
+
+cpp_library(
+ name = "io_uring",
+ hdrs = [
+ "IoUring.h",
+ ],
+ deps = [
+ "//folly/io/async:io_uring",
+ ],
+)
+
+cpp_library(
+ name = "io_uring_backend",
+ hdrs = [
+ "IoUringBackend.h",
+ "IoUringBase.h",
+ ],
+ deps = [
+ "//folly/io/async:io_uring_backend",
+ ],
+)
+
+cpp_library(
+ # @autodeps-skip
+ name = "io_uring_provided_buffer_ring",
+ hdrs = [
+ "IoUringBase.h",
+ "IoUringProvidedBufferRing.h",
+ ],
+ deps = [
+ "//folly/io/async:io_uring_provided_buffer_ring",
+ ],
+)
+
+cpp_library(
+ name = "io_uring_event",
+ hdrs = [
+ "IoUringEvent.h",
+ ],
+ deps = [
+ "//folly/io/async:io_uring_event",
+ ],
+)
+
+cpp_library(
+ name = "io_uring_event_base_local",
+ hdrs = [
+ "IoUringEventBaseLocal.h",
+ ],
+ deps = [
+ "//folly/io/async:io_uring_event_base_local",
+ ],
+)
+
+cpp_library(
+ name = "fs_util",
+ hdrs = [
+ "FsUtil.h",
+ ],
+ deps = [
+ "//folly/io:fs_util",
+ ],
+)
+
+cpp_library(
+ name = "huge_pages",
+ hdrs = [
+ "HugePages.h",
+ ],
+ deps = [
+ "//folly/io:huge_pages",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/io/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/io/test/BUILD.bazel
new file mode 100644
index 00000000000..6ea89ae12e3
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/io/test/BUILD.bazel
@@ -0,0 +1,30 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "io_test_temp_file_util_lib",
+ hdrs = [
+ "IoTestTempFileUtil.h",
+ ],
+ deps = [
+ "//folly/io/async/test:io_test_temp_file_util_lib",
+ ],
+)
+
+cpp_library(
+ name = "async_base_test_lib",
+ hdrs = [
+ "AsyncBaseTestLib.h",
+ ],
+ deps = [
+ "//folly/io/async/test:async_base_test_lib",
+ ],
+)
+
+cpp_library(
+ name = "mux_io_thread_pool_executor_test_lib",
+ deps = [
+ "//folly/io/async/test:mux_io_thread_pool_executor_test_lib",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/observer/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/observer/BUILD.bazel
new file mode 100644
index 00000000000..cc9a3d98d31
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/observer/BUILD.bazel
@@ -0,0 +1,86 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "observable",
+ hdrs = [
+ "Observable.h",
+ ],
+ textual_hdrs = [
+ "Observable-inl.h",
+ ],
+ deps = [
+ "//folly/observer:observable",
+ ],
+)
+
+cpp_library(
+ name = "observer",
+ hdrs = [
+ "Observer.h",
+ ],
+ textual_hdrs = [
+ "Observer-inl.h",
+ "Observer-pre.h",
+ ],
+ deps = [
+ "//folly/observer",
+ ],
+)
+
+cpp_library(
+ name = "hazptr_observer",
+ hdrs = [
+ "HazptrObserver.h",
+ ],
+ deps = [
+ "//folly/observer:hazptr_observer",
+ ],
+)
+
+cpp_library(
+ name = "read_mostly_tl_observer",
+ hdrs = [
+ "ReadMostlyTLObserver.h",
+ ],
+ deps = [
+ "//folly/observer:read_mostly_tl_observer",
+ ],
+)
+
+cpp_library(
+ name = "core_cached_observer",
+ hdrs = [
+ "CoreCachedObserver.h",
+ ],
+ deps = [
+ "//folly/observer:core_cached_observer",
+ ],
+)
+
+cpp_library(
+ name = "simple_observable",
+ hdrs = [
+ "SimpleObservable.h",
+ ],
+ textual_hdrs = [
+ "SimpleObservable-inl.h",
+ ],
+ deps = [
+ "//folly/observer:simple_observable",
+ ],
+)
+
+cpp_library(
+ name = "with_jitter",
+ hdrs = [
+ "WithJitter.h",
+ ],
+ textual_hdrs = [
+ "WithJitter-inl.h",
+ ],
+ deps = [
+ "//folly/observer:with_jitter",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/observer/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/observer/detail/BUILD.bazel
new file mode 100644
index 00000000000..a5684713515
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/observer/detail/BUILD.bazel
@@ -0,0 +1,24 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "graph_cycle_detector",
+ hdrs = [
+ "GraphCycleDetector.h",
+ ],
+ deps = [
+ "//folly/observer/detail:graph_cycle_detector",
+ ],
+)
+
+cpp_library(
+ name = "observer_manager",
+ hdrs = [
+ "Core.h",
+ "ObserverManager.h",
+ ],
+ deps = [
+ "//folly/observer/detail:observer_manager",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/settings/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/settings/BUILD.bazel
new file mode 100644
index 00000000000..f6996d24697
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/settings/BUILD.bazel
@@ -0,0 +1,34 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "settings",
+ hdrs = [
+ "Settings.h",
+ "detail/SettingsImpl.h",
+ ],
+ deps = [
+ "//folly/settings",
+ ],
+)
+
+cpp_library(
+ name = "types",
+ hdrs = [
+ "Types.h",
+ ],
+ deps = [
+ "//folly/settings:types",
+ ],
+)
+
+cpp_library(
+ name = "immutables",
+ hdrs = [
+ "Immutables.h",
+ ],
+ deps = [
+ "//folly/settings:immutables",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/symbolizer/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/symbolizer/BUILD.bazel
new file mode 100644
index 00000000000..ba2c60c0368
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/symbolizer/BUILD.bazel
@@ -0,0 +1,100 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "dwarf",
+ hdrs = [
+ "Dwarf.h",
+ "DwarfImpl.h",
+ "DwarfLineNumberVM.h",
+ "DwarfSection.h",
+ "DwarfUtil.h",
+ ],
+ deps = [
+ "//folly/debugging/symbolizer:dwarf",
+ ],
+)
+
+cpp_library(
+ name = "elf",
+ hdrs = [
+ "Elf.h",
+ ],
+ textual_hdrs = [
+ "Elf-inl.h",
+ ],
+ deps = [
+ "//folly/debugging/symbolizer:elf",
+ ],
+)
+
+cpp_library(
+ name = "symbolized_frame",
+ hdrs = [
+ "SymbolizedFrame.h",
+ ],
+ deps = [
+ "//folly/debugging/symbolizer:symbolized_frame",
+ ],
+)
+
+cpp_library(
+ name = "line_reader",
+ hdrs = [
+ "LineReader.h",
+ ],
+ deps = [
+ "//folly/debugging/symbolizer:line_reader",
+ ],
+)
+
+cpp_library(
+ name = "stack_trace",
+ hdrs = [
+ "StackTrace.h",
+ ],
+ deps = [
+ "//folly/debugging/symbolizer:stack_trace",
+ ],
+)
+
+cpp_library(
+ name = "elf_cache",
+ hdrs = [
+ "ElfCache.h",
+ ],
+ deps = [
+ "//folly/debugging/symbolizer:elf_cache",
+ ],
+)
+
+cpp_library(
+ name = "symbolize_printer",
+ hdrs = [
+ "SymbolizePrinter.h",
+ ],
+ deps = [
+ "//folly/debugging/symbolizer:symbolize_printer",
+ ],
+)
+
+cpp_library(
+ name = "symbolizer",
+ hdrs = [
+ "Symbolizer.h",
+ ],
+ deps = [
+ "//folly/debugging/symbolizer",
+ ],
+)
+
+cpp_library(
+ name = "signal_handler",
+ hdrs = [
+ "SignalHandler.h",
+ ],
+ deps = [
+ "//folly/debugging/symbolizer:signal_handler",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/symbolizer/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/symbolizer/detail/BUILD.bazel
new file mode 100644
index 00000000000..60a4f543974
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/symbolizer/detail/BUILD.bazel
@@ -0,0 +1,13 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "debug",
+ hdrs = [
+ "Debug.h",
+ ],
+ deps = [
+ "//folly/debugging/symbolizer/detail:debug",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/test/BUILD.bazel
new file mode 100644
index 00000000000..c22de672b64
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/experimental/test/BUILD.bazel
@@ -0,0 +1,13 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "coding_test_utils",
+ hdrs = [
+ "CodingTestUtils.h",
+ ],
+ deps = [
+ "//folly/compression/test:coding_test_utils",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ext/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ext/BUILD.bazel
new file mode 100644
index 00000000000..3d3497e6f55
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ext/BUILD.bazel
@@ -0,0 +1,9 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "test_ext",
+ srcs = ["test_ext.cpp"],
+ hdrs = ["test_ext.h"],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ext/buck2/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ext/buck2/BUILD.bazel
new file mode 100644
index 00000000000..7541d20a6b2
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ext/buck2/BUILD.bazel
@@ -0,0 +1,14 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "test_ext",
+ srcs = ["test_ext.cpp"],
+ deps = [
+ "//folly/experimental/io:fs_util",
+ "//folly/ext:test_ext",
+ "//folly/json:dynamic",
+ "@boost.filesystem",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/aor/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/aor/BUILD.bazel
new file mode 100644
index 00000000000..1222d0f7fc0
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/aor/BUILD.bazel
@@ -0,0 +1,71 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "memcpy_aarch64",
+ srcs = [
+ "memcpy-advsimd.S",
+ "memcpy-armv8.S",
+ "memcpy-mops.S",
+ "memcpy_sve.S",
+ "memmove-mops.S",
+ ],
+ hdrs = [
+ "asmdefs.h",
+ ],
+ target_compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:aarch64",
+ ],
+)
+
+cpp_library(
+ name = "memcpy_aarch64-use",
+ srcs = [
+ "memcpy-advsimd.S",
+ "memcpy-armv8.S",
+ "memcpy-mops.S",
+ "memcpy_sve.S",
+ "memmove-mops.S",
+ ],
+ hdrs = [
+ "asmdefs.h",
+ ],
+ copts = ["-DFOLLY_MEMCPY_IS_MEMCPY"],
+ target_compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:aarch64",
+ ],
+)
+
+cpp_library(
+ name = "memset_aarch64",
+ srcs = [
+ "memset-advsimd.S",
+ "memset-mops.S",
+ ],
+ hdrs = [
+ "asmdefs.h",
+ ],
+ target_compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:aarch64",
+ ],
+)
+
+cpp_library(
+ name = "memset_aarch64-use",
+ srcs = [
+ "memset-advsimd.S",
+ "memset-mops.S",
+ ],
+ hdrs = [
+ "asmdefs.h",
+ ],
+ copts = ["-DFOLLY_MEMCPY_IS_MEMCPY"],
+ target_compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:aarch64",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/farmhash/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/farmhash/BUILD.bazel
new file mode 100644
index 00000000000..0e1853d83e0
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/farmhash/BUILD.bazel
@@ -0,0 +1,12 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "farmhash",
+ srcs = ["farmhash.cpp"],
+ hdrs = ["farmhash.h"],
+ deps = [
+ "//folly/portability:config",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/farmhash/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/farmhash/test/BUILD.bazel
new file mode 100644
index 00000000000..b8d4b833d47
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/farmhash/test/BUILD.bazel
@@ -0,0 +1,10 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "farmhash_test",
+ srcs = ["farmhash_test.cpp"],
+ deps = [
+ "//folly/external/farmhash",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/fast-crc32/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/fast-crc32/BUILD.bazel
new file mode 100644
index 00000000000..5ad4586a42a
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/fast-crc32/BUILD.bazel
@@ -0,0 +1,77 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "avx512_crc32c_v8s3x4",
+ srcs = [
+ "avx512_crc32c_v8s3x4.cpp",
+ ],
+ hdrs = [
+ "avx512_crc32c_v8s3x4.h",
+ ],
+ copts = select({
+ "@platforms//cpu:x86_64": [
+ "-mavx512f",
+ "-mavx512vl",
+ "-mpclmul",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "sse_crc32c_v8s3x3",
+ srcs = [
+ "sse_crc32c_v8s3x3.cpp",
+ ],
+ hdrs = [
+ "sse_crc32c_v8s3x3.h",
+ ],
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "neon_crc32c_v3s4x2e_v2",
+ srcs = [
+ "neon_crc32c_v3s4x2e_v2.cpp",
+ ],
+ hdrs = [
+ "neon_crc32c_v3s4x2e_v2.h",
+ ],
+ copts = select({
+ "@platforms//cpu:aarch64": [
+ "-march=armv8-a+crypto+crc",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:portability",
+ "//folly/system:aux_vector",
+ ],
+)
+
+cpp_library(
+ name = "neon_eor3_crc32c_v8s2x4_s3",
+ srcs = [
+ "neon_eor3_crc32c_v8s2x4_s3.cpp",
+ ],
+ hdrs = [
+ "neon_eor3_crc32c_v8s2x4_s3.h",
+ ],
+ copts = select({
+ "@platforms//cpu:aarch64": [
+ "-march=armv8-a+crypto+crc",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:portability",
+ "//folly/system:aux_vector",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/detail/BUILD.bazel
new file mode 100644
index 00000000000..f8fdb87215d
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/detail/BUILD.bazel
@@ -0,0 +1,13 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "range_sve2",
+ srcs = ["RangeSve2.cpp"],
+ hdrs = ["RangeSve2.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/detail:range_common",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/hash/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/hash/BUILD.bazel
new file mode 100644
index 00000000000..06332fd5ea4
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/hash/BUILD.bazel
@@ -0,0 +1,11 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "checksum",
+ srcs = ["Checksum.cpp"],
+ deps = [
+ "//folly:portability",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/hash/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/hash/detail/BUILD.bazel
new file mode 100644
index 00000000000..6e67feb8093
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/external/nvidia/hash/detail/BUILD.bazel
@@ -0,0 +1,12 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "crc32c_detail",
+ srcs = ["Crc32cDetail.cpp"],
+ hdrs = ["Crc32cCombineDetail.h"],
+ deps = [
+ "//folly:portability",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/BUILD.bazel
new file mode 100644
index 00000000000..92325f385ba
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/BUILD.bazel
@@ -0,0 +1,353 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "add_tasks",
+ hdrs = [
+ "AddTasks.h",
+ ],
+ textual_hdrs = [
+ "AddTasks-inl.h",
+ ],
+ deps = [
+ ":core",
+ "//folly:optional",
+ "//folly:try",
+ ],
+)
+
+cpp_library(
+ name = "atomic_batch_dispatcher",
+ hdrs = [
+ "AtomicBatchDispatcher.h",
+ ],
+ textual_hdrs = [
+ "AtomicBatchDispatcher-inl.h",
+ ],
+ deps = [
+ "//folly:c_portability",
+ "//folly:function",
+ "//folly:optional",
+ "//folly/fibers/detail:atomic_batch_dispatcher",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "batch_dispatcher",
+ hdrs = ["BatchDispatcher.h"],
+ deps = [
+ "//folly:function",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "boost_context_compatibility",
+ hdrs = ["BoostContextCompatibility.h"],
+ deps = [
+ "//folly:function",
+ "@boost.context",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "core",
+ srcs = [
+ "Baton.cpp",
+ "Fiber.cpp",
+ "FiberManager.cpp",
+ ],
+ hdrs = [
+ "Baton.h",
+ "Fiber.h",
+ "FiberManagerInternal.h",
+ "FiberManagerInternal-inl.h",
+ "Promise.h",
+ ],
+ textual_hdrs = [
+ "Promise-inl.h",
+ "Baton-inl.h",
+ "Fiber-inl.h",
+ ],
+ deps = [
+ ":boost_context_compatibility",
+ ":guard_page_allocator",
+ ":loop_controller",
+ ":traits",
+ "//folly:atomic_linked_list",
+ "//folly:c_portability",
+ "//folly:constexpr_math",
+ "//folly:executor",
+ "//folly:function",
+ "//folly:intrusive_list",
+ "//folly:likely",
+ "//folly:memory",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:singleton_thread_local",
+ "//folly:try",
+ "//folly/coro:coroutine",
+ "//folly/detail:async_trace",
+ "//folly/detail:futex",
+ "//folly/detail:memory_idler",
+ "//folly/executors:execution_observer",
+ "//folly/functional:invoke",
+ "//folly/io/async:async_base",
+ "//folly/io/async:request_context",
+ "//folly/lang:thunk",
+ "//folly/memory:sanitize_address",
+ "//folly/portability:asm",
+ "//folly/portability:config",
+ "//folly/portability:pthread",
+ "//folly/portability:sys_syscall",
+ "//folly/portability:unistd",
+ "//folly/synchronization:sanitize_thread",
+ "//folly/tracing:async_stack",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "core_manager",
+ hdrs = [
+ "FiberManager.h",
+ ],
+ textual_hdrs = [
+ "FiberManager-inl.h",
+ ],
+ deps = [
+ ":core",
+ "//folly/functional:invoke",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "event_base_loop_controller",
+ hdrs = [
+ "EventBaseLoopController.h",
+ ],
+ textual_hdrs = [
+ "EventBaseLoopController-inl.h",
+ ],
+ deps = [
+ ":core",
+ ":executor_based_loop_controller",
+ "//folly:cancellation_token",
+ "//folly:memory",
+ "//folly/io/async:async_base",
+ ],
+)
+
+cpp_library(
+ name = "executor_loop_controller",
+ hdrs = [
+ "ExecutorLoopController.h",
+ ],
+ textual_hdrs = [
+ "ExecutorLoopController-inl.h",
+ ],
+ deps = [
+ ":core",
+ ":executor_based_loop_controller",
+ "//folly:executor",
+ "//folly:scope_guard",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "fiber_manager_map",
+ hdrs = [
+ "FiberManagerMap.h",
+ ],
+ textual_hdrs = [
+ "FiberManagerMap-inl.h",
+ ],
+ deps = [
+ ":core",
+ ":event_base_loop_controller",
+ "//folly:function",
+ "//folly:scope_guard",
+ "//folly:singleton_thread_local",
+ "//folly:synchronized",
+ "//folly/container:f14_hash",
+ "//folly/io/async:async_base",
+ "//folly/synchronization:relaxed_atomic",
+ ],
+)
+
+cpp_library(
+ name = "fibers",
+ deps = [
+ ":add_tasks", # @manual
+ ":atomic_batch_dispatcher", # @manual
+ ":batch_dispatcher", # @manual
+ ":batch_semaphore", # @manual
+ ":boost_context_compatibility", # @manual
+ ":core", # @manual
+ ":core_manager", # @manual
+ ":event_base_loop_controller", # @manual
+ ":fiber_manager_map", # @manual
+ ":for_each", # @manual
+ ":generic_baton", # @manual
+ ":guard_page_allocator", # @manual
+ ":loop_controller", # @manual
+ ":semaphore", # @manual
+ ":semaphore_base", # @manual
+ ":simple_loop_controller", # @manual
+ ":timed_mutex", # @manual
+ ":traits", # @manual
+ ":when_n", # @manual
+ ],
+)
+
+cpp_library(
+ name = "for_each",
+ hdrs = [
+ "ForEach.h",
+ ],
+ textual_hdrs = [
+ "ForEach-inl.h",
+ ],
+ deps = [
+ ":core",
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "generic_baton",
+ hdrs = ["GenericBaton.h"],
+ deps = [
+ ":core",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_library(
+ name = "guard_page_allocator",
+ srcs = ["GuardPageAllocator.cpp"],
+ hdrs = ["GuardPageAllocator.h"],
+ linkopts = select({
+ "@platforms//os:linux": ["-ldl"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:singleton",
+ "//folly:spin_lock",
+ "//folly:synchronized",
+ "//folly/portability:sys_mman",
+ "//folly/portability:unistd",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "loop_controller",
+ hdrs = ["LoopController.h"],
+ deps = [
+ "//folly/io/async:async_base_fwd",
+ ],
+)
+
+cpp_library(
+ name = "executor_based_loop_controller",
+ hdrs = ["ExecutorBasedLoopController.h"],
+ deps = [
+ ":loop_controller",
+ "//folly:executor",
+ ],
+)
+
+cpp_library(
+ name = "semaphore",
+ srcs = ["Semaphore.cpp"],
+ hdrs = ["Semaphore.h"],
+ deps = [
+ ":core",
+ "//folly:intrusive_list",
+ "//folly:synchronized",
+ "//folly/coro:task",
+ "//folly/coro:timeout",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "batch_semaphore",
+ srcs = ["BatchSemaphore.cpp"],
+ hdrs = ["BatchSemaphore.h"],
+ deps = [
+ ":semaphore_base",
+ ],
+)
+
+cpp_library(
+ name = "semaphore_base",
+ srcs = ["SemaphoreBase.cpp"],
+ hdrs = ["SemaphoreBase.h"],
+ deps = [
+ ":core",
+ "//folly:intrusive_list",
+ "//folly:synchronized",
+ "//folly/coro:task",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "simple_loop_controller",
+ srcs = ["SimpleLoopController.cpp"],
+ hdrs = ["SimpleLoopController.h"],
+ deps = [
+ ":core_manager",
+ ":loop_controller",
+ "//folly:function",
+ "//folly:likely",
+ "//folly/io/async:async_base",
+ ],
+)
+
+cpp_library(
+ name = "timed_mutex",
+ hdrs = [
+ "CallOnce.h",
+ "TimedMutex.h",
+ ],
+ textual_hdrs = [
+ "TimedMutex-inl.h",
+ ],
+ deps = [
+ ":generic_baton",
+ "//folly:intrusive_list",
+ "//folly:portability",
+ "//folly:spin_lock",
+ "//folly/synchronization:call_once",
+ ],
+)
+
+cpp_library(
+ name = "traits",
+ hdrs = ["traits.h"],
+)
+
+cpp_library(
+ name = "when_n",
+ hdrs = [
+ "WhenN.h",
+ ],
+ textual_hdrs = [
+ "WhenN-inl.h",
+ ],
+ deps = [
+ ":core",
+ ":for_each",
+ "//folly:optional",
+ "//folly/functional:invoke",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/async/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/async/BUILD.bazel
new file mode 100644
index 00000000000..ee0f0886f6e
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/async/BUILD.bazel
@@ -0,0 +1,123 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "wait_utils",
+ hdrs = [
+ "WaitUtils.h",
+ ],
+ deps = [
+ ":core",
+ ":fiber_manager",
+ "//folly/fibers:core",
+ "//folly/fibers:fiber_manager_map",
+ ],
+)
+
+cpp_library(
+ name = "core",
+ srcs = ["Async.cpp"],
+ hdrs = [
+ "Async.h",
+ ],
+ deps = [
+ "//folly:traits",
+ "//folly:unit",
+ "//folly/fibers:core",
+ "//folly/functional:invoke",
+ "//folly/lang:customization_point",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "collect",
+ hdrs = [
+ "Collect.h",
+ ],
+ textual_hdrs = [
+ "Collect-inl.h",
+ ],
+ deps = [
+ ":baton",
+ ":core",
+ ":fiber_manager",
+ ":future",
+ "//folly:traits",
+ "//folly:try",
+ "//folly/fibers:core_manager",
+ "//folly/fibers:when_n",
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "baton",
+ hdrs = ["Baton.h"],
+ deps = [
+ ":core",
+ "//folly/fibers:core",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "fiber_manager",
+ hdrs = [
+ "FiberManager.h",
+ ],
+ deps = [
+ ":core",
+ "//folly/fibers:core_manager",
+ ],
+)
+
+cpp_library(
+ name = "future",
+ hdrs = [
+ "Future.h",
+ ],
+ deps = [
+ ":core",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_library(
+ name = "promise",
+ hdrs = [
+ "Promise.h",
+ ],
+ deps = [
+ ":core",
+ "//folly/fibers:core_manager",
+ "//folly/fibers:traits",
+ ],
+)
+
+cpp_library(
+ name = "task",
+ hdrs = [
+ "Task.h",
+ ],
+ deps = [
+ ":core",
+ "//folly/coro:blocking_wait",
+ "//folly/coro:task",
+ ],
+)
+
+cpp_library(
+ name = "stack_tracing",
+ hdrs = [
+ "AsyncStack.h",
+ ],
+ deps = [
+ ":core",
+ "//folly:c_portability",
+ "//folly:scope_guard",
+ "//folly/tracing:async_stack",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/async/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/async/test/BUILD.bazel
new file mode 100644
index 00000000000..5eb58e32eac
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/async/test/BUILD.bazel
@@ -0,0 +1,29 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "async_test",
+ srcs = ["AsyncTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/coro:blocking_wait",
+ "//folly/coro:sleep",
+ "//folly/fibers:core_manager",
+ "//folly/fibers:fiber_manager_map",
+ "//folly/fibers/async:baton",
+ "//folly/fibers/async:collect",
+ "//folly/fibers/async:core",
+ "//folly/fibers/async:fiber_manager",
+ "//folly/fibers/async:future",
+ "//folly/fibers/async:promise",
+ "//folly/fibers/async:stack_tracing",
+ "//folly/fibers/async:task",
+ "//folly/fibers/async:wait_utils",
+ "//folly/io/async:async_base",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/detail/BUILD.bazel
new file mode 100644
index 00000000000..bb782aa1958
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/detail/BUILD.bazel
@@ -0,0 +1,12 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "atomic_batch_dispatcher",
+ srcs = ["AtomicBatchDispatcher.cpp"],
+ hdrs = ["AtomicBatchDispatcher.h"],
+ deps = [
+ "@fmt",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/test/BUILD.bazel
new file mode 100644
index 00000000000..6910ddb1a70
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/fibers/test/BUILD.bazel
@@ -0,0 +1,66 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "fibers_test",
+# srcs = ["FibersTest.cpp"],
+# deps = [
+# "//folly:conv",
+# "//folly:memory",
+# "//folly:random",
+# "//folly/coro:blocking_wait",
+# "//folly/coro:gtest_helpers",
+# "//folly/coro:timeout",
+# "//folly/coro:with_cancellation",
+# "//folly/executors:cpu_thread_pool_executor",
+# "//folly/fibers:add_tasks",
+# "//folly/fibers:atomic_batch_dispatcher",
+# "//folly/fibers:batch_dispatcher",
+# "//folly/fibers:batch_semaphore",
+# "//folly/fibers:core_manager",
+# "//folly/fibers:event_base_loop_controller",
+# "//folly/fibers:executor_loop_controller",
+# "//folly/fibers:fiber_manager_map",
+# "//folly/fibers:generic_baton",
+# "//folly/fibers:semaphore",
+# "//folly/fibers:simple_loop_controller",
+# "//folly/fibers:timed_mutex",
+# "//folly/fibers:when_n",
+# "//folly/futures:core",
+# "//folly/io/async:scoped_event_base_thread",
+# "//folly/portability:gtest",
+# "//folly/tracing:async_stack",
+# ],
+# )
+
+cc_binary(
+ name = "fibers_test_app",
+ srcs = ["FibersTestApp.cpp"],
+ deps = [
+ "//folly:memory",
+ "//folly/fibers:core_manager",
+ "//folly/fibers:simple_loop_controller",
+ ],
+)
+
+cc_binary(
+ name = "stack_overflow",
+ srcs = ["StackOverflow.cpp"],
+ copts = ["-Wno-infinite-recursion"],
+ deps = [
+ "//folly/fibers:fiber_manager_map",
+ "//folly/init",
+ ],
+)
+
+cpp_unittest(
+ name = "semaphore_test",
+ srcs = ["SemaphoreTest.cpp"],
+ deps = [
+ "//folly/fibers:semaphore",
+ "//folly/portability:gtest",
+ "//folly/synchronization:relaxed_atomic",
+ "//folly/synchronization/detail:sleeper",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/functional/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/functional/BUILD.bazel
new file mode 100644
index 00000000000..5b0ee1e3d27
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/functional/BUILD.bazel
@@ -0,0 +1,55 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "apply_tuple",
+ hdrs = ["ApplyTuple.h"],
+ deps = [
+ ":invoke",
+ "//folly:traits",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "invoke",
+ hdrs = ["Invoke.h"],
+ deps = [
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ "//folly:preprocessor",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/lang:customization_point",
+ "@boost.preprocessor",
+ ],
+)
+
+cpp_library(
+ name = "partial",
+ hdrs = ["Partial.h"],
+ deps = [
+ ":invoke",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "protocol",
+ hdrs = ["protocol.h"],
+ deps = [
+ ":invoke",
+ ":traits",
+ "//folly:portability",
+ "//folly:traits",
+ ],
+)
+
+cpp_library(
+ name = "traits",
+ hdrs = ["traits.h"],
+ deps = [
+ "//folly:traits",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/functional/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/functional/test/BUILD.bazel
new file mode 100644
index 00000000000..f115447a4f4
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/functional/test/BUILD.bazel
@@ -0,0 +1,50 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "apply_tuple_test",
+ srcs = ["ApplyTupleTest.cpp"],
+ deps = [
+ "//folly:overload",
+ "//folly/functional:apply_tuple",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "invoke_test",
+ srcs = ["InvokeTest.cpp"],
+ deps = [
+ "//folly:cpp_attributes",
+ "//folly/functional:invoke",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "partial_test",
+ srcs = ["PartialTest.cpp"],
+ deps = [
+ "//folly:function",
+ "//folly/functional:partial",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "protocol_test",
+ srcs = ["protocol_test.cpp"],
+ deps = [
+ "//folly:traits",
+ "//folly/functional:protocol",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "traits_test",
+ srcs = ["traits_test.cpp"],
+ deps = [
+ "//folly/functional:traits",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/BUILD.bazel
new file mode 100644
index 00000000000..f2fc22f1549
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/BUILD.bazel
@@ -0,0 +1,141 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "barrier",
+ srcs = ["Barrier.cpp"],
+ hdrs = ["Barrier.h"],
+ deps = [
+ ":core",
+ "//folly:scope_guard",
+ "//folly/lang:new",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "core",
+ srcs = [
+ "Future.cpp",
+ "HeapTimekeeper.cpp",
+ "Promise.cpp",
+ "ThreadWheelTimekeeper.cpp",
+ ],
+ hdrs = [
+ "Future.h",
+ "Future-inl.h",
+ "Future-pre.h",
+ "HeapTimekeeper.h",
+ "Promise.h",
+ "Promise-inl.h",
+ "Retrying.h",
+ "ThreadWheelTimekeeper.h",
+ "WTCallback.h",
+ ],
+ deps = [
+ ":portability",
+ "//folly:chrono",
+ "//folly:likely",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:random",
+ "//folly:scope_guard",
+ "//folly:singleton",
+ "//folly:traits",
+ "//folly:try",
+ "//folly:unit",
+ "//folly:utility",
+ "//folly/container:foreach",
+ "//folly/container:intrusive_heap",
+ "//folly/coro:traits",
+ "//folly/detail:async_trace",
+ "//folly/executors:drivable_executor",
+ "//folly/executors:executor_with_priority",
+ "//folly/executors:global_executor",
+ "//folly/executors:inline_executor",
+ "//folly/executors:queued_immediate_executor",
+ "//folly/executors:timed_drivable_executor",
+ "//folly/fibers:core",
+ "//folly/functional:invoke",
+ "//folly/futures/detail:core",
+ "//folly/futures/detail:types",
+ "//folly/io/async:async_base",
+ "//folly/lang:exception",
+ "//folly/lang:pretty",
+ "//folly/lang:safe_assert",
+ "//folly/portability:gflags",
+ "//folly/synchronization:distributed_mutex",
+ "//folly/synchronization:relaxed_atomic",
+ "//folly/synchronization:saturating_semaphore",
+ "//folly/synchronization:wait_options",
+ "//folly/system:thread_name",
+ ],
+)
+
+cpp_library(
+ name = "future_splitter",
+ hdrs = ["FutureSplitter.h"],
+ deps = [
+ ":core",
+ ":shared_promise",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "futures",
+ deps = [
+ ":barrier", # @manual
+ ":core", # @manual
+ ":future_splitter", # @manual
+ ":shared_promise", # @manual
+ "//folly/executors:inline_executor", # @manual
+ "//folly/executors:manual_executor", # @manual
+ "//folly/executors:queued_immediate_executor", # @manual
+ "//folly/executors:scheduled_executor", # @manual
+ ],
+)
+
+cpp_library(
+ name = "manual_timekeeper",
+ srcs = ["ManualTimekeeper.cpp"],
+ hdrs = ["ManualTimekeeper.h"],
+ deps = [
+ "//folly:synchronized",
+ "//folly/futures:core",
+ "//folly/synchronization:atomic_util",
+ ],
+)
+
+cpp_library(
+ name = "portability",
+ hdrs = ["Portability.h"],
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "shared_promise",
+ srcs = ["SharedPromise.cpp"],
+ hdrs = [
+ "SharedPromise.h",
+ "SharedPromise-inl.h",
+ ],
+ deps = [
+ ":core",
+ "//folly:portability",
+ "//folly/executors:inline_executor",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "cleanup",
+ hdrs = ["Cleanup.h"],
+ deps = [
+ "//folly/futures:core",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/detail/BUILD.bazel
new file mode 100644
index 00000000000..8691a87ab65
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/detail/BUILD.bazel
@@ -0,0 +1,33 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "core",
+ srcs = [
+ "Core.cpp",
+ ],
+ hdrs = [
+ "Core.h",
+ "Types.h",
+ ],
+ deps = [
+ "//folly:executor",
+ "//folly:function",
+ "//folly:optional",
+ "//folly:scope_guard",
+ "//folly:try",
+ "//folly:utility",
+ "//folly/io/async:request_context",
+ "//folly/lang:assume",
+ "//folly/lang:exception",
+ "//folly/synchronization:atomic_util",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "types",
+ hdrs = ["Types.h"],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/test/BUILD.bazel
new file mode 100644
index 00000000000..5b0e8b095f9
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/futures/test/BUILD.bazel
@@ -0,0 +1,458 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_unittest(
+ name = "barrier_test",
+ srcs = ["BarrierTest.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly/futures:barrier",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "callback_lifetime_test",
+ srcs = ["CallbackLifetimeTest.cpp"],
+ deps = [
+ ":test_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "collect_test",
+ srcs = ["CollectTest.cpp"],
+ deps = [
+ "//folly:default_keep_alive_executor",
+ "//folly:random",
+ "//folly:small_vector",
+ "//folly/executors:cpu_thread_pool_executor",
+ "//folly/executors:manual_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "@boost.thread",
+ ],
+)
+
+cpp_unittest(
+ name = "context_test",
+ srcs = ["ContextTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "core_test",
+ srcs = ["CoreTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/futures/detail:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "ensure_test",
+ srcs = ["EnsureTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "filter_test",
+ srcs = ["FilterTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "future_splitter_test",
+ srcs = ["FutureSplitterTest.cpp"],
+ deps = [
+ "//folly/executors:manual_executor",
+ "//folly/futures:future_splitter",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "future_test",
+ srcs = ["FutureTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:executor",
+ "//folly:memory",
+ "//folly:unit",
+ "//folly/executors:manual_executor",
+ "//folly/futures:core",
+ "//folly/json:dynamic",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "semi_future_test",
+ srcs = ["SemiFutureTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:executor",
+ "//folly:memory",
+ "//folly:unit",
+ "//folly/executors:manual_executor",
+ "//folly/futures:core",
+ "//folly/io/async:async_base",
+ "//folly/json:dynamic",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "header_compile_test",
+ srcs = ["HeaderCompileTest.cpp"],
+ deps = [
+ "//folly:try",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "interrupt_test",
+ srcs = ["InterruptTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ # labels = ["load-sensitive-timing-test"],
+ deps = [
+ ":test_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "manual_timekeeper_test",
+ srcs = ["ManualTimekeeperTest.cpp"],
+ deps = [
+ "//folly/futures:manual_timekeeper",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "map_test",
+ srcs = ["MapTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "non_copyable_lambda_test",
+ srcs = ["NonCopyableLambdaTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "poll_test",
+ srcs = ["PollTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "promise_test",
+ srcs = ["PromiseTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "reduce_test",
+ srcs = ["ReduceTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "retrying_test",
+ srcs = ["RetryingTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":test_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ "//folly/portability:sys_resource",
+ ],
+)
+
+cpp_unittest(
+ name = "self_destruct_test",
+ srcs = ["SelfDestructTest.cpp"],
+ deps = [
+ "//folly/executors:inline_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "shared_promise_test",
+ srcs = ["SharedPromiseTest.cpp"],
+ deps = [
+ "//folly/futures:shared_promise",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "test_executor",
+ srcs = ["TestExecutor.cpp"],
+ hdrs = ["TestExecutor.h"],
+ deps = [
+ "//folly:executor",
+ ],
+)
+
+cpp_unittest(
+ name = "test_executor_test",
+ srcs = ["TestExecutorTest.cpp"],
+ deps = [
+ ":test_executor",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "then_compile_test",
+ srcs = [
+ "ThenCompileTest.cpp",
+ "ThenCompileTest.h",
+ ],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "then_test",
+ srcs = ["ThenTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "timekeeper_test",
+ srcs = ["TimekeeperTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:singleton",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "timekeeper_test_lib",
+ hdrs = ["TimekeeperTestLib.h"],
+ deps = [
+ "//folly:default_keep_alive_executor",
+ "//folly:random",
+ "//folly:singleton",
+ "//folly/executors:global_executor",
+ "//folly/executors:manual_executor",
+ "//folly/executors:serial_executor",
+ "//folly/executors:virtual_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "thread_wheel_timekeeper_test",
+ srcs = ["ThreadWheelTimekeeperTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":timekeeper_test_lib",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_unittest(
+ name = "heap_timekeeper_test",
+ srcs = ["HeapTimekeeperTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":timekeeper_test_lib",
+ "//folly/futures:core",
+ ],
+)
+
+cpp_unittest(
+ name = "times_test",
+ srcs = ["TimesTest.cpp"],
+ deps = [
+ "//folly/executors:manual_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "unwrap_test",
+ srcs = ["UnwrapTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "via_test",
+ srcs = ["ViaTest.cpp"],
+ deps = [
+ "//folly:mpmc_queue",
+ "//folly/executors:drivable_executor",
+ "//folly/executors:inline_executor",
+ "//folly/executors:manual_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "wait_test",
+ srcs = ["WaitTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":test_executor",
+ "//folly/executors:inline_executor",
+ "//folly/futures:core",
+ "//folly/io/async:async_base",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "when_test",
+ srcs = ["WhenTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "while_do_test",
+ srcs = ["WhileDoTest.cpp"],
+ deps = [
+ "//folly/executors:manual_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "will_equal_test",
+ srcs = ["WillEqualTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "window_test",
+ srcs = ["WindowTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly/executors:manual_executor",
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ "@boost.thread",
+ ],
+)
+
+cpp_unittest(
+ name = "conversion_operator",
+ srcs = ["ConversionOperatorTest.cpp"],
+ deps = [
+ "//folly/futures:core",
+ "//folly/portability:gtest",
+ ],
+)
+
+# NOTE: This fails only in BCR CI.
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "cleanup_test",
+# srcs = ["CleanupTest.cpp"],
+# deps = [
+# "//folly/executors:cpu_thread_pool_executor",
+# "//folly/executors:manual_executor",
+# "//folly/futures:cleanup",
+# "//folly/portability:gtest",
+# ],
+# )
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/gen/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/gen/BUILD.bazel
new file mode 100644
index 00000000000..aff9aa43e82
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/gen/BUILD.bazel
@@ -0,0 +1,126 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "base",
+ hdrs = [
+ "Base.h",
+ ],
+ textual_hdrs = [
+ "Base-inl.h",
+ ],
+ deps = [
+ ":core",
+ "//folly:conv",
+ "//folly:function",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:utility",
+ "//folly/container:access",
+ "//folly/container:f14_hash",
+ "//folly/functional:invoke",
+ "@range-v3",
+ ],
+)
+
+cpp_library(
+ name = "combine",
+ hdrs = [
+ "Combine.h",
+ ],
+ textual_hdrs = [
+ "Combine-inl.h",
+ ],
+ deps = [":base"],
+)
+
+cpp_library(
+ name = "core",
+ hdrs = [
+ "Core.h",
+ ],
+ textual_hdrs = [
+ "Core-inl.h",
+ ],
+ deps = ["//folly:portability"],
+)
+
+cpp_library(
+ name = "file",
+ hdrs = [
+ "File.h",
+ ],
+ textual_hdrs = [
+ "File-inl.h",
+ ],
+ deps = [
+ ":base",
+ ":string",
+ "//folly:exception",
+ "//folly:file",
+ "//folly/io:iobuf",
+ ],
+)
+
+cpp_library(
+ name = "parallel",
+ hdrs = [
+ "Parallel.h",
+ ],
+ textual_hdrs = [
+ "Parallel-inl.h",
+ ],
+ deps = [
+ ":base",
+ "//folly:mpmc_queue",
+ "//folly:scope_guard",
+ "//folly/synchronization:event_count",
+ ],
+)
+
+cpp_library(
+ name = "parallel_map",
+ hdrs = [
+ "ParallelMap.h",
+ ],
+ textual_hdrs = [
+ "ParallelMap-inl.h",
+ ],
+ deps = [
+ ":core",
+ "//folly:expected",
+ "//folly:mpmc_pipeline",
+ "//folly/functional:invoke",
+ "//folly/synchronization:event_count",
+ ],
+)
+
+cpp_library(
+ name = "string",
+ hdrs = [
+ "String.h",
+ ],
+ textual_hdrs = [
+ "String-inl.h",
+ ],
+ deps = [
+ ":base",
+ "//folly:conv",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:string",
+ "//folly/io:iobuf",
+ ],
+)
+
+cpp_library(
+ name = "istream",
+ hdrs = [
+ "IStream.h",
+ ],
+ deps = [
+ ":core",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/gen/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/gen/test/BUILD.bazel
new file mode 100644
index 00000000000..f1521b0cbf3
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/gen/test/BUILD.bazel
@@ -0,0 +1,103 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "base_test",
+ srcs = ["BaseTest.cpp"],
+ # labels = ["serialize_test_cases"],
+ deps = [
+ "//folly:fbvector",
+ "//folly:map_util",
+ "//folly:memory",
+ "//folly:string",
+ "//folly/gen:base",
+ "//folly/json:dynamic",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/testing:test_util",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "combine_test",
+ srcs = ["CombineTest.cpp"],
+ deps = [
+ "//folly:fbvector",
+ "//folly:range",
+ "//folly/gen:base",
+ "//folly/gen:combine",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "file_test",
+ srcs = ["FileTest.cpp"],
+ deps = [
+ "//folly:file",
+ "//folly:range",
+ "//folly/container:array",
+ "//folly/gen:base",
+ "//folly/gen:file",
+ "//folly/portability:gtest",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "parallel_test",
+ srcs = ["ParallelTest.cpp"],
+ # labels = ["serialize"],
+ deps = [
+ "//folly/gen:base",
+ "//folly/gen:parallel",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "parallel_map_test",
+ srcs = ["ParallelMapTest.cpp"],
+ deps = [
+ "//folly:memory",
+ "//folly/gen:base",
+ "//folly/gen:parallel_map",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "string_test",
+ srcs = ["StringTest.cpp"],
+ deps = [
+ "//folly/functional:apply_tuple",
+ "//folly/gen:string",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "istream_test",
+ srcs = ["IStreamTest.cpp"],
+ deps = [
+ "//folly/gen:base",
+ "//folly/gen:istream",
+ "//folly/gen:string",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "util",
+ hdrs = ["Bench.h"],
+ deps = [
+ "//folly:benchmark",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/BUILD.bazel
new file mode 100644
index 00000000000..378eb011f3e
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/BUILD.bazel
@@ -0,0 +1,82 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "checksum",
+ srcs = ["Checksum.cpp"],
+ hdrs = ["Checksum.h"],
+ deps = [
+ "//folly:cpu_id",
+ "//folly/detail:traponavx512",
+ "//folly/external/fast-crc32:avx512_crc32c_v8s3x4",
+ "//folly/external/fast-crc32:neon_crc32c_v3s4x2e_v2",
+ "//folly/external/fast-crc32:neon_eor3_crc32c_v8s2x4_s3",
+ "//folly/external/fast-crc32:sse_crc32c_v8s3x3",
+ "//folly/hash/detail:checksum_detail",
+ "@boost.crc",
+ ],
+)
+
+cpp_library(
+ name = "farm_hash",
+ hdrs = ["FarmHash.h"],
+ deps = [
+ "//folly/external/farmhash",
+ ],
+)
+
+cpp_library(
+ name = "hash",
+ hdrs = ["Hash.h"],
+ deps = [
+ ":murmur_hash",
+ ":spooky_hash_v1",
+ ":spooky_hash_v2",
+ "//folly:c_portability",
+ "//folly:portability",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/functional:apply_tuple",
+ "//folly/lang:bits",
+ ],
+)
+
+cpp_library(
+ name = "spooky_hash_v1",
+ srcs = ["SpookyHashV1.cpp"],
+ hdrs = ["SpookyHashV1.h"],
+ deps = [
+ "//folly:cpp_attributes",
+ ],
+)
+
+cpp_library(
+ name = "spooky_hash_v2",
+ srcs = ["SpookyHashV2.cpp"],
+ hdrs = ["SpookyHashV2.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ "//folly/lang:c_string",
+ ],
+)
+
+cpp_library(
+ name = "traits",
+ hdrs = ["traits.h"],
+ deps = [
+ "//folly:traits",
+ ],
+)
+
+cpp_library(
+ name = "murmur_hash",
+ hdrs = ["MurmurHash.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly/lang:bits",
+ "//folly/portability:constexpr",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/detail/BUILD.bazel
new file mode 100644
index 00000000000..788321a2697
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/detail/BUILD.bazel
@@ -0,0 +1,21 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "checksum_detail",
+ srcs = [
+ "ChecksumDetail.cpp",
+ "Crc32CombineDetail.cpp",
+ "Crc32cDetail.cpp",
+ ],
+ hdrs = ["ChecksumDetail.h"],
+ deps = [
+ "//folly:bits",
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ "//folly/external/nvidia/hash:checksum", # @manual
+ "//folly/external/nvidia/hash/detail:crc32c_detail", # @manual
+ "@boost.preprocessor",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/test/BUILD.bazel
new file mode 100644
index 00000000000..1d6b3b22b29
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/hash/test/BUILD.bazel
@@ -0,0 +1,83 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "checksum_test",
+ srcs = ["ChecksumTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:portability",
+ "//folly:random",
+ "//folly/external/fast-crc32:avx512_crc32c_v8s3x4",
+ "//folly/external/fast-crc32:neon_crc32c_v3s4x2e_v2",
+ "//folly/external/fast-crc32:neon_eor3_crc32c_v8s2x4_s3",
+ "//folly/external/fast-crc32:sse_crc32c_v8s3x3",
+ "//folly/hash",
+ "//folly/hash:checksum",
+ "//folly/hash/detail:checksum_detail",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@boost.crc",
+ ],
+)
+
+cpp_unittest(
+ name = "farm_hash_test",
+ srcs = ["FarmHashTest.cpp"],
+ deps = [
+ "//folly/hash:farm_hash",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "hash_test",
+ srcs = ["HashTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:map_util",
+ "//folly:random",
+ "//folly:range",
+ "//folly/hash",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "spooky_hash_v1_test",
+ srcs = ["SpookyHashV1Test.cpp"],
+ deps = [
+ "//folly/hash:spooky_hash_v1",
+ "//folly/portability:gtest",
+ "//folly/portability:time",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "spooky_hash_v2_test",
+ srcs = ["SpookyHashV2Test.cpp"],
+ deps = [
+ "//folly/hash:spooky_hash_v2",
+ "//folly/portability:gtest",
+ "//folly/portability:time",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "traits_test",
+ srcs = ["traits_test.cpp"],
+ deps = [
+ "//folly/hash:traits",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "murmur_hash_test",
+ srcs = ["MurmurHashTest.cpp"],
+ deps = [
+ "//folly/hash:murmur_hash",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/init/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/init/BUILD.bazel
new file mode 100644
index 00000000000..3778db70f6c
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/init/BUILD.bazel
@@ -0,0 +1,29 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "init",
+ srcs = ["Init.cpp"],
+ hdrs = ["Init.h"],
+ deps = [
+ ":phase",
+ "//folly:portability",
+ "//folly:singleton",
+ "//folly/logging:init",
+ "//folly/portability:config",
+ "//folly/portability:gflags",
+ "//folly/synchronization:hazptr_thread_pool_executor",
+ "@glog",
+ ] + select({
+ "@platforms//os:linux": ["//folly/experimental/symbolizer:signal_handler"],
+ "@platforms//os:macos": ["//folly/experimental/symbolizer:signal_handler"],
+ "//conditions:default": [],
+ }),
+)
+
+cpp_library(
+ name = "phase",
+ srcs = ["Phase.cpp"],
+ hdrs = ["Phase.h"],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/init/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/init/test/BUILD.bazel
new file mode 100644
index 00000000000..fd414973fe1
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/init/test/BUILD.bazel
@@ -0,0 +1,12 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "phase_test",
+ srcs = ["PhaseTest.cpp"],
+ deps = [
+ "//folly:singleton",
+ "//folly/init:phase",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/BUILD.bazel
new file mode 100644
index 00000000000..4306a9bdd74
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/BUILD.bazel
@@ -0,0 +1,158 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "iobuf",
+ srcs = [
+ "Cursor.cpp",
+ "IOBuf.cpp",
+ "IOBufIovecBuilder.cpp",
+ "IOBufQueue.cpp",
+ ],
+ hdrs = [
+ "Cursor.h",
+ "IOBuf.h",
+ "IOBufIovecBuilder.h",
+ "IOBufQueue.h",
+ ],
+ textual_hdrs = [
+ "Cursor-inl.h",
+ ],
+ deps = [
+ "//folly:conv",
+ "//folly:fbstring",
+ "//folly:fbvector",
+ "//folly:function",
+ "//folly:likely",
+ "//folly:memory",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly/container:span",
+ "//folly/detail:iterators",
+ "//folly/hash:spooky_hash_v2",
+ "//folly/lang:align",
+ "//folly/lang:bits",
+ "//folly/lang:checked_math",
+ "//folly/lang:exception",
+ "//folly/lang:hint",
+ "//folly/lang:ordering",
+ "//folly/memory:malloc",
+ "//folly/memory:sanitize_address",
+ "//folly/portability:iovec",
+ "//folly/portability:sys_uio",
+ "//folly/synchronization:micro_spin_lock",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "global_shutdown_socket_set",
+ srcs = ["GlobalShutdownSocketSet.cpp"],
+ hdrs = ["GlobalShutdownSocketSet.h"],
+ deps = [
+ ":shutdown_socket_set",
+ "//folly:singleton",
+ "//folly/concurrency/memory:read_mostly_shared_ptr",
+ ],
+)
+
+cpp_library(
+ name = "record_io",
+ srcs = [
+ "RecordIO.cpp",
+ ],
+ hdrs = [
+ "RecordIO.h",
+ ],
+ textual_hdrs = [
+ "RecordIO-inl.h",
+ ],
+ deps = [
+ ":iobuf",
+ "//folly:exception",
+ "//folly:file",
+ "//folly:file_util",
+ "//folly:memory",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly:string",
+ "//folly/detail:iterators",
+ "//folly/hash:spooky_hash_v2",
+ "//folly/portability:unistd",
+ "//folly/system:memory_mapping",
+ ],
+)
+
+cpp_library(
+ name = "shutdown_socket_set",
+ srcs = ["ShutdownSocketSet.cpp"],
+ hdrs = ["ShutdownSocketSet.h"],
+ deps = [
+ "//folly:file",
+ "//folly:file_util",
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/portability:sockets",
+ "//folly/synchronization:relaxed_atomic",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "typed_io_buf",
+ hdrs = ["TypedIOBuf.h"],
+ deps = [
+ ":iobuf",
+ "//folly/memory:malloc",
+ ],
+)
+
+cpp_library(
+ name = "socket_option_map",
+ srcs = [
+ "SocketOptionMap.cpp",
+ "SocketOptionValue.cpp",
+ ],
+ hdrs = [
+ "SocketOptionMap.h",
+ "SocketOptionValue.h",
+ ],
+ deps = [
+ "//folly/net:network_socket",
+ "//folly/portability:sockets",
+ ],
+)
+
+cpp_library(
+ name = "huge_pages",
+ srcs = ["HugePages.cpp"],
+ hdrs = ["HugePages.h"],
+ deps = [
+ "//folly:conv",
+ "//folly:cpp_attributes",
+ "//folly:format",
+ "//folly:range",
+ "//folly:string",
+ "//folly/experimental/io:fs_util",
+ "//folly/gen:base",
+ "//folly/gen:file",
+ "//folly/gen:string",
+ "//folly/portability:unistd",
+ "@boost.regex",
+ "@boost.utility",
+ ],
+)
+
+cpp_library(
+ name = "fs_util",
+ srcs = ["FsUtil.cpp"],
+ hdrs = ["FsUtil.h"],
+ deps = [
+ "//folly:exception",
+ "//folly/portability:windows",
+ "@boost.filesystem",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/BUILD.bazel
new file mode 100644
index 00000000000..08d5b614a26
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/BUILD.bazel
@@ -0,0 +1,786 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "async_base_fwd",
+ hdrs = [
+ "HHWheelTimer-fwd.h",
+ ],
+)
+
+cpp_library(
+ name = "async_base",
+ srcs = [
+ "AsyncTimeout.cpp",
+ "EventBase.cpp",
+ "EventBaseBackendBase.cpp",
+ "EventBaseLocal.cpp",
+ "EventHandler.cpp",
+ "HHWheelTimer.cpp",
+ "TimeoutManager.cpp",
+ "VirtualEventBase.cpp",
+ ],
+ hdrs = [
+ "AsyncTimeout.h",
+ "AtomicNotificationQueue.h",
+ "EventBase.h",
+ "EventBaseAtomicNotificationQueue.h",
+ "EventBaseBackendBase.h",
+ "EventBaseLocal.h",
+ "EventHandler.h",
+ "HHWheelTimer.h",
+ "NotificationQueue.h",
+ "TimeoutManager.h",
+ "VirtualEventBase.h",
+ ],
+ textual_hdrs = [
+ "AtomicNotificationQueue-inl.h",
+ "EventBaseAtomicNotificationQueue-inl.h",
+ ],
+ deps = [
+ ":async_base_fwd",
+ ":delayed_destruction",
+ ":event_util",
+ ":request_context",
+ "//folly:chrono",
+ "//folly:exception",
+ "//folly:exception_string",
+ "//folly:executor",
+ "//folly:file_util",
+ "//folly:function",
+ "//folly:likely",
+ "//folly:map_util",
+ "//folly:memory",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:spin_lock",
+ "//folly:string",
+ "//folly:synchronized",
+ "//folly/container:bit_iterator",
+ "//folly/container:f14_hash",
+ "//folly/executors:drivable_executor",
+ "//folly/executors:execution_observer",
+ "//folly/executors:io_executor",
+ "//folly/executors:queue_observer",
+ "//folly/executors:scheduled_executor",
+ "//folly/executors:sequenced_executor",
+ "//folly/io:iobuf",
+ "//folly/lang:align",
+ "//folly/lang:assume",
+ "//folly/lang:bits",
+ "//folly/lang:thunk",
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/portability:config",
+ "//folly/portability:event",
+ "//folly/portability:fcntl",
+ "//folly/portability:iovec",
+ "//folly/portability:sockets",
+ "//folly/portability:unistd",
+ "//folly/synchronization:baton",
+ "//folly/synchronization:call_once",
+ "//folly/synchronization:event_count",
+ "//folly/system:pid",
+ "//folly/system:thread_id",
+ "//folly/system:thread_name",
+ "@boost.intrusive",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "async_pipe",
+ srcs = ["AsyncPipe.cpp"],
+ hdrs = ["AsyncPipe.h"],
+ deps = [
+ ":async_base",
+ ":async_socket_exception",
+ ":async_transport",
+ ":delayed_destruction",
+ "//folly:file_util",
+ "//folly:utility",
+ "//folly/detail:file_util_detail",
+ "//folly/io:iobuf",
+ ],
+)
+
+cpp_library(
+ name = "async_signal_handler",
+ srcs = ["AsyncSignalHandler.cpp"],
+ hdrs = ["AsyncSignalHandler.h"],
+ deps = [
+ ":async_base",
+ "//folly:conv",
+ "//folly/portability:event",
+ ],
+)
+
+cpp_library(
+ name = "async_socket_transport",
+ srcs = ["AsyncSocketTransport.cpp"],
+ hdrs = ["AsyncSocketTransport.h"],
+ deps = [
+ ":async_socket_exception",
+ ":async_transport",
+ "//folly:network_address",
+ "//folly/io:iobuf",
+ "//folly/io:socket_option_map",
+ "//folly/net:network_socket",
+ ],
+)
+
+cpp_library(
+ name = "async_socket",
+ srcs = ["AsyncSocket.cpp"],
+ hdrs = ["AsyncSocket.h"],
+ deps = [
+ ":async_base",
+ ":async_socket_exception",
+ ":async_socket_transport",
+ ":async_transport",
+ ":delayed_destruction",
+ "//folly:constructor_callback_list",
+ "//folly:exception",
+ "//folly:format",
+ "//folly:network_address",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:small_vector",
+ "//folly:string",
+ "//folly/detail:socket_fast_open",
+ "//folly/io:iobuf",
+ "//folly/io:shutdown_socket_set",
+ "//folly/io:socket_option_map",
+ "//folly/io/async/observer:async_socket_observer_container",
+ "//folly/lang:checked_math",
+ "//folly/net:net_ops_dispatcher",
+ "//folly/net:tcpinfo",
+ "//folly/net:tcpinfo_dispatcher",
+ "//folly/portability:fcntl",
+ "//folly/portability:sockets",
+ "//folly/portability:sys_mman",
+ "//folly/portability:sys_uio",
+ "//folly/portability:unistd",
+ "@boost.preprocessor",
+ ],
+)
+
+cpp_library(
+ name = "async_socket_base",
+ hdrs = ["AsyncSocketBase.h"],
+ deps = [
+ ":async_base",
+ "//folly:network_address",
+ ],
+)
+
+cpp_library(
+ name = "async_socket_exception",
+ srcs = ["AsyncSocketException.cpp"],
+ hdrs = ["AsyncSocketException.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:format",
+ "//folly:range",
+ "//folly:string",
+ ],
+)
+
+cpp_library(
+ name = "async_ssl_socket",
+ srcs = ["AsyncSSLSocket.cpp"],
+ hdrs = ["AsyncSSLSocket.h"],
+ deps = [
+ ":async_base",
+ ":async_pipe",
+ ":async_socket",
+ ":certificate_identity_verifier",
+ ":ssl_context",
+ "//folly:format",
+ "//folly:indestructible",
+ "//folly:network_address",
+ "//folly:optional",
+ "//folly:spin_lock",
+ "//folly:string",
+ "//folly/io:iobuf",
+ "//folly/io:socket_option_map",
+ "//folly/io/async/ssl:basic_transport_certificate",
+ "//folly/io/async/ssl:openssl_utils",
+ "//folly/io/async/ssl:ssl_errors",
+ "//folly/io/async/ssl:tls_definitions",
+ "//folly/lang:bits",
+ "//folly/portability:openssl",
+ "//folly/portability:sockets",
+ "//folly/ssl:openssl_ptr_types",
+ "//folly/ssl:ssl_session",
+ "//folly/ssl:ssl_session_manager",
+ ],
+)
+
+cpp_library(
+ name = "async_transport",
+ hdrs = ["AsyncTransport.h"],
+ deps = [
+ ":async_base",
+ ":async_socket_base",
+ ":async_transport_certificate",
+ ":delayed_destruction",
+ ":write_flags",
+ "//folly:optional",
+ "//folly/io:iobuf",
+ "//folly/portability:openssl",
+ "//folly/portability:sys_uio",
+ "//folly/ssl:openssl_ptr_types",
+ ],
+)
+
+cpp_library(
+ name = "async_transport_certificate",
+ hdrs = ["AsyncTransportCertificate.h"],
+ deps = [
+ "//folly:optional",
+ ],
+)
+
+cpp_library(
+ name = "certificate_identity_verifier",
+ hdrs = ["CertificateIdentityVerifier.h"],
+ deps = [
+ ":async_transport_certificate",
+ "//folly:try",
+ "//folly:unit",
+ ],
+)
+
+cpp_library(
+ name = "async_udp_server_socket",
+ hdrs = ["AsyncUDPServerSocket.h"],
+ deps = [
+ ":async_base",
+ ":async_udp_socket",
+ "//folly:memory",
+ "//folly/io:iobuf",
+ ],
+)
+
+cpp_library(
+ name = "async_udp_socket",
+ srcs = ["AsyncUDPSocket.cpp"],
+ hdrs = ["AsyncUDPSocket.h"],
+ deps = [
+ ":async_base",
+ ":async_socket_base",
+ ":async_socket_exception",
+ "//folly:function",
+ "//folly:likely",
+ "//folly:network_address",
+ "//folly:scope_guard",
+ "//folly:small_vector",
+ "//folly:utility",
+ "//folly/io:iobuf",
+ "//folly/io:socket_option_map",
+ "//folly/net:net_ops",
+ "//folly/net:net_ops_dispatcher",
+ "//folly/net:network_socket",
+ "//folly/portability:fcntl",
+ "//folly/portability:sockets",
+ "//folly/portability:unistd",
+ "@boost.preprocessor",
+ ],
+)
+
+cpp_library(
+ name = "decorated_async_transport_wrapper",
+ hdrs = [
+ "DecoratedAsyncTransportWrapper.h",
+ "WriteChainAsyncTransportWrapper.h",
+ ],
+ deps = [
+ ":async_transport",
+ "//folly/io:iobuf",
+ ],
+)
+
+cpp_library(
+ name = "delayed_destruction",
+ srcs = [
+ "DelayedDestruction.cpp",
+ ],
+ hdrs = [
+ "DelayedDestruction.h",
+ "DelayedDestructionBase.h",
+ ],
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "destructor_check",
+ hdrs = ["DestructorCheck.h"],
+)
+
+cpp_library(
+ name = "event_base_manager",
+ srcs = ["EventBaseManager.cpp"],
+ hdrs = ["EventBaseManager.h"],
+ deps = [
+ ":async_base",
+ "//folly:optional",
+ "//folly:thread_local",
+ ],
+)
+
+cpp_library(
+ name = "event_base_thread",
+ srcs = ["EventBaseThread.cpp"],
+ hdrs = ["EventBaseThread.h"],
+ deps = [
+ ":async_base",
+ ":scoped_event_base_thread",
+ "//folly:memory",
+ "//folly:range",
+ ],
+)
+
+cpp_library(
+ name = "event_util",
+ hdrs = ["EventUtil.h"],
+ deps = [
+ "//folly/portability:event",
+ ],
+)
+
+cpp_library(
+ name = "request_context",
+ srcs = ["Request.cpp"],
+ hdrs = ["Request.h"],
+ deps = [
+ "//folly:glog",
+ "//folly:shared_mutex",
+ "//folly:singleton_thread_local",
+ "//folly:synchronized",
+ "//folly/concurrency:process_local_unique_id",
+ "//folly/concurrency/container:single_writer_fixed_hash_map",
+ "//folly/container:f14_hash",
+ "//folly/detail:iterators",
+ "//folly/synchronization:hazptr",
+ "//folly/tracing:static_tracepoint",
+ ],
+)
+
+cpp_library(
+ name = "scoped_event_base_thread",
+ srcs = ["ScopedEventBaseThread.cpp"],
+ hdrs = ["ScopedEventBaseThread.h"],
+ deps = [
+ ":async_base",
+ ":event_base_manager",
+ "//folly:function",
+ "//folly:range",
+ "//folly/synchronization:baton",
+ "//folly/system:thread_name",
+ ],
+)
+
+cpp_library(
+ name = "terminate_cancellation_token",
+ srcs = ["TerminateCancellationToken.cpp"],
+ hdrs = ["TerminateCancellationToken.h"],
+ deps = [
+ ":async_signal_handler",
+ ":scoped_event_base_thread",
+ "//folly:cancellation_token",
+ "//folly:singleton",
+ ],
+)
+
+cpp_library(
+ name = "server_socket",
+ srcs = ["AsyncServerSocket.cpp"],
+ hdrs = ["AsyncServerSocket.h"],
+ deps = [
+ ":async_base",
+ ":async_socket_base",
+ ":delayed_destruction",
+ "//folly:exception_wrapper",
+ "//folly:file_util",
+ "//folly:glog",
+ "//folly:network_address",
+ "//folly:portability",
+ "//folly:string",
+ "//folly/detail:socket_fast_open",
+ "//folly/io:shutdown_socket_set",
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/observer",
+ "//folly/portability:fcntl",
+ "//folly/portability:sockets",
+ "//folly/portability:unistd",
+ ],
+)
+
+cpp_library(
+ name = "ssl_context",
+ srcs = ["SSLContext.cpp"],
+ hdrs = ["SSLContext.h"],
+ deps = [
+ "//folly:format",
+ "//folly:function",
+ "//folly:memory",
+ "//folly:portability",
+ "//folly:random",
+ "//folly:range",
+ "//folly:shared_mutex",
+ "//folly:spin_lock",
+ "//folly:string",
+ "//folly/container:access",
+ "//folly/io/async/ssl:openssl_utils",
+ "//folly/portability:openssl",
+ "//folly/ssl:openssl_ptr_types",
+ "//folly/ssl:openssl_ticket_handler",
+ "//folly/ssl:password_collector",
+ "//folly/ssl:ssl_session_manager",
+ "//folly/system:thread_id",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "ssl_options",
+ srcs = ["SSLOptions.cpp"],
+ hdrs = ["SSLOptions.h"],
+ deps = [
+ ":ssl_context",
+ "//folly:format",
+ "//folly/container:array",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "password_in_file",
+ srcs = ["PasswordInFile.cpp"],
+ hdrs = ["PasswordInFile.h"],
+ deps = [
+ "//folly:file_util",
+ "//folly/portability:openssl",
+ "//folly/ssl:password_collector",
+ ],
+)
+
+cpp_library(
+ name = "write_flags",
+ hdrs = ["WriteFlags.h"],
+)
+
+cpp_library(
+ name = "timerfd",
+ srcs = [
+ "STTimerFDTimeoutManager.cpp",
+ "TimerFD.cpp",
+ "TimerFDTimeoutManager.cpp",
+ ],
+ hdrs = [
+ "STTimerFDTimeoutManager.h",
+ "TimerFD.h",
+ "TimerFDTimeoutManager.h",
+ ],
+ deps = [
+ "//folly:file_util",
+ "//folly/io/async:async_base",
+ "//folly/io/async:delayed_destruction",
+ "//folly/io/async:event_util",
+ ],
+)
+
+cpp_library(
+ name = "async_base_class",
+ srcs = ["AsyncBase.cpp"],
+ hdrs = ["AsyncBase.h"],
+ deps = [
+ "//folly:exception",
+ "//folly:format",
+ "//folly:function",
+ "//folly:likely",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:string",
+ "//folly/portability:filesystem",
+ "//folly/portability:sys_uio",
+ "//folly/portability:unistd",
+ "@boost.intrusive",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "async_io",
+ srcs = ["AsyncIO.cpp"],
+ hdrs = ["AsyncIO.h"],
+ deps = [
+ "//folly:exception",
+ "//folly:likely",
+ "//folly:small_vector",
+ "//folly:string",
+ "//folly/experimental/io:async_base",
+ "//folly/portability:unistd",
+ "@boost.intrusive",
+ "@fmt",
+ "@glog",
+ # TODO(kgk): Enable once @libaio is added to bcr. See:
+ # https://github.com/bazelbuild/bazel-central-registry/issues/3756
+ # "@libaio",
+ ],
+)
+
+cpp_library(
+ name = "liburing",
+ hdrs = ["Liburing.h"],
+ deps = select({
+ "@platforms//os:linux": ["@liburing"],
+ "//conditions:default": [],
+ }),
+)
+
+cpp_library(
+ name = "async_io_uring_socket",
+ srcs = [
+ "AsyncIoUringSocket.cpp",
+ ],
+ hdrs = [
+ "AsyncIoUringSocket.h",
+ "AsyncIoUringSocketFactory.h",
+ ],
+ deps = [
+ "//folly:conv",
+ "//folly:network_address",
+ "//folly:optional",
+ "//folly:small_vector",
+ "//folly/detail:socket_fast_open",
+ "//folly/futures:core",
+ "//folly/io:iobuf",
+ "//folly/io:socket_option_map",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:async_socket_exception",
+ "//folly/io/async:async_transport",
+ "//folly/io/async:delayed_destruction",
+ "//folly/io/async:io_uring_backend",
+ "//folly/io/async:io_uring_event_base_local",
+ "//folly/io/async:liburing",
+ "//folly/memory:malloc",
+ "//folly/net:net_ops_dispatcher",
+ "//folly/portability:sockets",
+ "//folly/portability:sys_uio",
+ "@boost.intrusive",
+ ],
+)
+
+cpp_library(
+ name = "simple_async_io",
+ srcs = ["SimpleAsyncIO.cpp"],
+ hdrs = ["SimpleAsyncIO.h"],
+ deps = [
+ "//folly:string",
+ "//folly:synchronized",
+ "//folly/coro:baton",
+ "//folly/coro:task",
+ "//folly/executors:global_executor",
+ "//folly/experimental/io:async_base",
+ "//folly/experimental/io:async_io",
+ "//folly/io/async:async_base",
+ "//folly/io/async:io_uring",
+ "//folly/io/async:liburing",
+ "//folly/io/async:scoped_event_base_thread",
+ "//folly/portability:sockets",
+ ],
+)
+
+cpp_library(
+ name = "epoll",
+ hdrs = [
+ "Epoll.h",
+ ],
+)
+
+cpp_library(
+ name = "epoll_backend",
+ srcs = [
+ "EpollBackend.cpp",
+ ],
+ hdrs = [
+ "Epoll.h",
+ "EpollBackend.h",
+ ],
+ deps = [
+ "//folly:file_util",
+ "//folly:intrusive_list",
+ "//folly:map_util",
+ "//folly:string",
+ "//folly/container:intrusive_heap",
+ "//folly/io/async:async_base",
+ ],
+)
+
+cpp_library(
+ name = "event_base_poller",
+ srcs = ["EventBasePoller.cpp"],
+ hdrs = ["EventBasePoller.h"],
+ deps = [
+ "//folly:file_util",
+ "//folly:function",
+ "//folly:range",
+ "//folly:string",
+ "//folly:synchronized",
+ "//folly/experimental/io:epoll",
+ "//folly/io/async:liburing",
+ "//folly/lang:align",
+ "//folly/portability:gflags",
+ "//folly/synchronization:baton",
+ "//folly/system:thread_name",
+ "@boost.conversion",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "mux_io_thread_pool_executor",
+ srcs = ["MuxIOThreadPoolExecutor.cpp"],
+ hdrs = ["MuxIOThreadPoolExecutor.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/concurrency:unbounded_queue",
+ "//folly/container:enumerate",
+ "//folly/executors:io_thread_pool_executor",
+ "//folly/executors:queue_observer",
+ "//folly/experimental/io:epoll_backend",
+ "//folly/experimental/io:event_base_poller",
+ "//folly/io/async:event_base_manager",
+ "//folly/lang:align",
+ "//folly/synchronization:baton",
+ "//folly/synchronization:latch",
+ "//folly/synchronization:relaxed_atomic",
+ "//folly/synchronization:throttled_lifo_sem",
+ "//folly/synchronization:wait_options",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "io_uring",
+ srcs = ["IoUring.cpp"],
+ hdrs = ["IoUring.h"],
+ deps = [
+ ":async_base_class",
+ ":liburing",
+ "//folly:exception",
+ "//folly:likely",
+ "//folly:shared_mutex",
+ "//folly:string",
+ "//folly/portability:unistd",
+ "@boost.intrusive",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "io_uring_backend",
+ srcs = [
+ "IoUringBackend.cpp",
+ ],
+ hdrs = [
+ "IoUringBackend.h",
+ "IoUringBase.h",
+ ],
+ deps = [
+ "//folly:c_portability",
+ "//folly:conv",
+ "//folly:cpp_attributes",
+ "//folly:demangle",
+ "//folly:exception_string",
+ "//folly:file_util",
+ "//folly:function",
+ "//folly:glog",
+ "//folly:likely",
+ "//folly:optional",
+ "//folly:range",
+ "//folly:small_vector",
+ "//folly:spin_lock",
+ "//folly:string",
+ "//folly/container:f14_hash",
+ "//folly/io:iobuf",
+ "//folly/io/async:async_base",
+ "//folly/io/async:delayed_destruction",
+ "//folly/io/async:io_uring_provided_buffer_ring",
+ "//folly/io/async:liburing",
+ "//folly/lang:bits",
+ "//folly/portability:asm",
+ "//folly/portability:gflags",
+ "//folly/portability:sockets",
+ "//folly/portability:sys_mman",
+ "//folly/portability:sys_syscall",
+ "//folly/synchronization:call_once",
+ "//folly/tracing:static_tracepoint",
+ "@boost.intrusive",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "io_uring_provided_buffer_ring",
+ srcs = [
+ "IoUringProvidedBufferRing.cpp",
+ ],
+ hdrs = [
+ "IoUringBase.h",
+ "IoUringProvidedBufferRing.h",
+ ],
+ deps = [
+ "//folly:conv",
+ "//folly:exception_string",
+ "//folly:string",
+ "//folly/io:iobuf",
+ "//folly/io/async:delayed_destruction",
+ "//folly/io/async:liburing",
+ "//folly/portability:sys_mman",
+ "@boost.intrusive",
+ ],
+)
+
+cpp_library(
+ name = "io_uring_event",
+ srcs = [
+ "IoUringEvent.cpp",
+ ],
+ hdrs = [
+ "IoUringEvent.h",
+ ],
+ deps = [
+ "//folly:file",
+ "//folly/io/async:async_base",
+ "//folly/io/async:io_uring_backend",
+ "//folly/io/async:liburing",
+ ],
+)
+
+cpp_library(
+ name = "io_uring_event_base_local",
+ srcs = [
+ "IoUringEventBaseLocal.cpp",
+ ],
+ hdrs = [
+ "IoUringEventBaseLocal.h",
+ ],
+ deps = [
+ "//folly:singleton",
+ "//folly/io/async:async_base",
+ "//folly/io/async:io_uring_backend",
+ "//folly/io/async:io_uring_event",
+ "//folly/io/async:liburing",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/fdsock/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/fdsock/BUILD.bazel
new file mode 100644
index 00000000000..ebaeedee954
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/fdsock/BUILD.bazel
@@ -0,0 +1,24 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "async_fd_socket",
+ srcs = ["AsyncFdSocket.cpp"],
+ hdrs = ["AsyncFdSocket.h"],
+ deps = [
+ ":socket_fds",
+ "//folly/io/async:async_socket",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "socket_fds",
+ srcs = ["SocketFds.cpp"],
+ hdrs = ["SocketFds.h"],
+ deps = [
+ "//folly:file",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/fdsock/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/fdsock/test/BUILD.bazel
new file mode 100644
index 00000000000..9bcca1af91e
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/fdsock/test/BUILD.bazel
@@ -0,0 +1,17 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "async_fd_socket_test",
+ srcs = ["AsyncFdSocketTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/io/async/fdsock:async_fd_socket",
+ "//folly/io/async/test:async_socket_test_lib",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/observer/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/observer/BUILD.bazel
new file mode 100644
index 00000000000..07fbbd7cd04
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/observer/BUILD.bazel
@@ -0,0 +1,23 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "async_socket_observer_interface",
+ hdrs = ["AsyncSocketObserverInterface.h"],
+ deps = [
+ "//folly:cpp_attributes",
+ "//folly:glog",
+ "//folly:optional",
+ "//folly/io/async:write_flags",
+ ],
+)
+
+cpp_library(
+ name = "async_socket_observer_container",
+ hdrs = ["AsyncSocketObserverContainer.h"],
+ deps = [
+ ":async_socket_observer_interface",
+ "//folly:observer_container",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/ssl/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/ssl/BUILD.bazel
new file mode 100644
index 00000000000..39e045be84f
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/ssl/BUILD.bazel
@@ -0,0 +1,67 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "openssl",
+ deps = [
+ "//folly/io/async/ssl:openssl_utils", # @manual
+ "//folly/io/async/ssl:ssl_errors", # @manual
+ ],
+)
+
+cpp_library(
+ name = "basic_transport_certificate",
+ hdrs = ["BasicTransportCertificate.h"],
+ deps = [
+ ":openssl_transport_certificate",
+ ],
+)
+
+cpp_library(
+ name = "openssl_transport_certificate",
+ hdrs = ["OpenSSLTransportCertificate.h"],
+ deps = [
+ "//folly/io/async:async_transport_certificate",
+ "//folly/portability:openssl",
+ "//folly/ssl:openssl_ptr_types",
+ ],
+)
+
+cpp_library(
+ name = "openssl_utils",
+ srcs = ["OpenSSLUtils.cpp"],
+ hdrs = ["OpenSSLUtils.h"],
+ deps = [
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly/io/async:async_socket_exception",
+ "//folly/net:network_socket",
+ "//folly/portability:openssl",
+ "//folly/portability:sockets",
+ "//folly/portability:unistd",
+ "//folly/ssl:openssl_ptr_types",
+ "//folly/ssl:ssl_session",
+ "//folly/ssl/detail:openssl_session",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "ssl_errors",
+ srcs = ["SSLErrors.cpp"],
+ hdrs = ["SSLErrors.h"],
+ deps = [
+ "//folly:range",
+ "//folly/io/async:async_socket_exception",
+ "//folly/portability:openssl",
+ ],
+)
+
+cpp_library(
+ name = "tls_definitions",
+ hdrs = ["TLSDefinitions.h"],
+ deps = [
+ "//folly/io:iobuf",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/ssl/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/ssl/test/BUILD.bazel
new file mode 100644
index 00000000000..38a7c6fba21
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/ssl/test/BUILD.bazel
@@ -0,0 +1,38 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "ssl_errors_test",
+ srcs = ["SSLErrorsTest.cpp"],
+ deps = [
+ "//folly/io/async/ssl:ssl_errors",
+ "//folly/portability:gtest",
+ "//folly/portability:openssl",
+ ],
+)
+
+cpp_unittest(
+ name = "basic_transport_certificate_test",
+ srcs = ["BasicTransportCertificateTest.cpp"],
+ data = [
+ "//folly/io/async/test/certs:tests-cert.pem",
+ ],
+ deps = [
+ "//folly:file_util",
+ "//folly/io/async/ssl:basic_transport_certificate",
+ "//folly/portability:gtest",
+ "//folly/ssl:openssl_cert_utils",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "openssl_utils_test",
+ srcs = ["OpenSSLUtilsTest.cpp"],
+ deps = [
+ "//folly:string",
+ "//folly/io/async/ssl:openssl_utils",
+ "//folly/portability:gtest",
+ "//folly/portability:openssl",
+ "//folly/ssl:openssl_ptr_types",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/test/BUILD.bazel
new file mode 100644
index 00000000000..df2129bf8fd
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/test/BUILD.bazel
@@ -0,0 +1,1176 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "test_ssl_server",
+ srcs = [
+ "TestSSLServer.cpp",
+ ],
+ hdrs = [
+ "TestSSLServer.h",
+ ],
+ data = [
+ "//folly/io/async/test/certs:ca-cert.pem",
+ "//folly/io/async/test/certs:client_ca_cert.pem",
+ "//folly/io/async/test/certs:client_cert.pem",
+ "//folly/io/async/test/certs:client_chain.pem",
+ "//folly/io/async/test/certs:client_key.pem",
+ "//folly/io/async/test/certs:tests-cert.pem",
+ "//folly/io/async/test/certs:tests-key.pem",
+ ],
+ deps = [
+ ":callback_state_enum",
+ "//folly:network_address",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:async_ssl_socket",
+ "//folly/io/async:async_transport",
+ "//folly/io/async:server_socket",
+ "//folly/io/async/ssl:ssl_errors",
+ "//folly/portability:gtest",
+ "//folly/portability:openssl",
+ "//folly/portability:sockets",
+ "//folly/portability:unistd",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_library(
+ name = "tfo_util",
+ srcs = [
+ "TFOUtil.cpp",
+ ],
+ hdrs = [
+ "TFOUtil.h",
+ ],
+ deps = [
+ "//folly/detail:socket_fast_open",
+ ],
+)
+
+cpp_library(
+ name = "async_signal_handler_test_lib",
+ hdrs = [
+ "AsyncSignalHandlerTestLib.h",
+ ],
+ deps = [
+ ":util",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_signal_handler",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "async_pipe_test",
+ srcs = [
+ "AsyncPipeTest.cpp",
+ ],
+ deps = [
+ "//folly:memory",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_pipe",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "async_ssl_socket_test_lib",
+ hdrs = [
+ "AsyncSSLSocketTest.h",
+ ],
+ deps = [
+ ":test_ssl_server",
+ "//folly:exception_wrapper",
+ "//folly:network_address",
+ "//folly/fibers:fiber_manager_map",
+ "//folly/io:socket_option_map",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:async_ssl_socket",
+ "//folly/io/async:async_transport",
+ "//folly/io/async:server_socket",
+ "//folly/io/async/ssl:ssl_errors",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/portability:pthread",
+ "//folly/portability:sockets",
+ "//folly/portability:string",
+ "//folly/portability:unistd",
+ "//folly/testing:test_util",
+ ],
+)
+
+# NOTE: Test does not work with OSS distribution.
+# cpp_unittest(
+# name = "async_ssl_socket_test",
+# srcs = [
+# "AsyncSSLSocketTest.cpp",
+# "AsyncSSLSocketTest2.cpp",
+# ],
+# # labels = ["oss-broken"],
+# data = [
+# "//folly/io/async/test/certs:ca-cert.pem",
+# "//folly/io/async/test/certs:client_ca_cert.pem",
+# "//folly/io/async/test/certs:client_cert.pem",
+# "//folly/io/async/test/certs:client_key.pem",
+# "//folly/io/async/test/certs:tests-cert.pem",
+# "//folly/io/async/test/certs:tests-key.pem",
+# ],
+# linkopts = select({
+# "@platforms//os:linux": ["-ldl"],
+# "//conditions:default": [],
+# }),
+# deps = [
+# ":async_ssl_socket_test_lib", # @manual
+# ":blocking_socket",
+# ":mocks",
+# ":test_ssl_server",
+# ":tfo_util",
+# "//folly:exception_wrapper",
+# "//folly:network_address",
+# "//folly:string",
+# "//folly/fibers:fiber_manager_map",
+# "//folly/futures:core",
+# "//folly/init",
+# "//folly/io:iobuf",
+# "//folly/io:socket_option_map",
+# "//folly/io/async:async_base",
+# "//folly/io/async:async_pipe",
+# "//folly/io/async:async_socket",
+# "//folly/io/async:async_ssl_socket",
+# "//folly/io/async:async_transport",
+# "//folly/io/async:event_base_thread",
+# "//folly/io/async:scoped_event_base_thread",
+# "//folly/io/async:server_socket",
+# "//folly/io/async:ssl_context",
+# "//folly/io/async:ssl_options",
+# "//folly/io/async/ssl:basic_transport_certificate",
+# "//folly/io/async/ssl:openssl_transport_certificate",
+# "//folly/io/async/ssl:ssl_errors",
+# "//folly/net:net_ops",
+# "//folly/net:network_socket",
+# "//folly/net/test:mock_net_ops_dispatcher",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# "//folly/portability:openssl",
+# "//folly/portability:pthread",
+# "//folly/portability:sockets",
+# "//folly/portability:string",
+# "//folly/portability:unistd",
+# "//folly/testing:test_util",
+# "@openssl//:ssl",
+# ],
+# )
+
+cpp_unittest(
+ name = "async_ssl_socket_write_test",
+ srcs = [
+ "AsyncSSLSocketWriteTest.cpp",
+ ],
+ target_compatible_with = select({
+ # MSG_MORE is only available on Linux.
+ "@platforms//os:linux": [],
+ "//conditions:default": ["@platforms//:incompatible"],
+ }),
+ deps = [
+ "//folly/io:iobuf",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:async_ssl_socket",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "async_socket_exception_test",
+ srcs = [
+ "AsyncSocketExceptionTest.cpp",
+ ],
+ deps = [
+ "//folly:conv",
+ "//folly/io/async:async_socket_exception",
+ "//folly/io/async:ssl_context",
+ "//folly/io/async/ssl:ssl_errors",
+ "//folly/portability:gtest",
+ "//folly/portability:openssl",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "async_socket_observer_test",
+# srcs = [
+# "AsyncSocketObserverTest.cpp",
+# ],
+# deps = [
+# ":async_socket_test_lib",
+# ":mocks",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_library(
+ name = "async_socket_test_lib",
+ hdrs = [
+ "AsyncSocketTest.h",
+ "AsyncSocketTest2.h",
+ ],
+ deps = [
+ ":blocking_socket",
+ ":callback_state_enum",
+ ":conn_callback",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:server_socket",
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/portability:sockets",
+ "//folly/synchronization:rw_spin_lock",
+ ],
+)
+
+# Disabled because it takes longer than 15 minutes.
+# cpp_unittest(
+# name = "async_socket_test",
+# size = "enormous",
+# srcs = [
+# "AsyncSocketTest.cpp",
+# "AsyncSocketTest2.cpp",
+# ],
+# linkopts = select({
+# "@platforms//os:windows": [],
+# "//conditions:default": ["-lrt"],
+# }),
+# deps = [
+# ":async_socket_test_lib", # @manual
+# ":blocking_socket",
+# ":callback_state_enum",
+# ":conn_callback",
+# ":mocks",
+# ":tfo_util",
+# ":util",
+# "//folly:exception_wrapper",
+# "//folly:network_address",
+# "//folly:random",
+# "//folly/io:iobuf",
+# "//folly/io:socket_option_map",
+# "//folly/io/async:async_base",
+# "//folly/io/async:async_socket",
+# "//folly/io/async:scoped_event_base_thread",
+# "//folly/io/async:server_socket",
+# "//folly/net:net_ops",
+# "//folly/net:network_socket",
+# "//folly/net/test:mock_net_ops_dispatcher",
+# "//folly/net/test:mock_tcpinfo_dispatcher",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# "//folly/portability:sockets",
+# "//folly/portability:unistd",
+# "//folly/synchronization:baton",
+# "//folly/synchronization:rw_spin_lock",
+# "//folly/test:socket_address_test_helper",
+# "//folly/testing:test_util",
+# ],
+# )
+
+cpp_unittest(
+ name = "async_transport_test",
+ srcs = [
+ "AsyncTransportTest.cpp",
+ ],
+ deps = [
+ ":mocks",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:async_transport",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "event_handler_test",
+ srcs = [
+ "EventHandlerTest.cpp",
+ ],
+ target_compatible_with = select({
+ # sys/eventfd.h is only available on Linux.
+ "@platforms//os:linux": [],
+ "//conditions:default": ["@platforms//:incompatible"],
+ }),
+ deps = [
+ "//folly:mpmc_queue",
+ "//folly:scope_guard",
+ "//folly/io/async:async_base",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/portability:sockets",
+ ],
+)
+
+cpp_unittest(
+ name = "async_timeout_test",
+ srcs = ["AsyncTimeoutTest.cpp"],
+ deps = [
+ "//folly/io/async:async_base",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "async_udp_socket_test",
+ srcs = ["AsyncUDPSocketTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:conv",
+ "//folly:network_address",
+ "//folly:string",
+ "//folly/io:iobuf",
+ "//folly/io:socket_option_map",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_udp_server_socket",
+ "//folly/io/async:async_udp_socket",
+ "//folly/net/test:mock_net_ops_dispatcher",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/portability:sockets",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "async_udp_socket_gso_gro_test",
+ srcs = ["AsyncUDPSocketGSOGROTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:network_address",
+ "//folly/io:iobuf",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_udp_server_socket",
+ "//folly/io/async:async_udp_socket",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "async_udp_socket_sendmmsg_test",
+ srcs = ["AsyncUDPSocketSendmmsgTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:network_address",
+ "//folly/io:iobuf",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_udp_server_socket",
+ "//folly/io/async:async_udp_socket",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "decorated_async_transport_wrapper_test",
+ srcs = ["DecoratedAsyncTransportWrapperTest.cpp"],
+ deps = [
+ "//folly/io/async:async_socket",
+ "//folly/io/async:async_transport",
+ "//folly/io/async:decorated_async_transport_wrapper",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "blocking_socket",
+ hdrs = ["BlockingSocket.h"],
+ deps = [
+ "//folly:optional",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:async_ssl_socket",
+ "//folly/io/async:ssl_context",
+ "//folly/net:network_socket",
+ ],
+)
+
+cpp_library(
+ name = "callback_state_enum",
+ hdrs = [
+ "CallbackStateEnum.h",
+ ],
+)
+
+cpp_library(
+ name = "conn_callback",
+ hdrs = [
+ "ConnCallback.h",
+ ],
+ deps = [
+ ":callback_state_enum",
+ "//folly/io/async:async_socket",
+ ],
+)
+
+cpp_unittest(
+ name = "delayed_destruction_base_test",
+ srcs = ["DelayedDestructionBaseTest.cpp"],
+ deps = [
+ "//folly/io/async:delayed_destruction",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "delayed_destruction_test",
+ srcs = ["DelayedDestructionTest.cpp"],
+ deps = [
+ "//folly/io/async:delayed_destruction",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "destructor_check_test",
+ srcs = ["DestructorCheckTest.cpp"],
+ deps = [
+ "//folly:memory",
+ "//folly/io/async:destructor_check",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "event_base_benchmark",
+ srcs = ["EventBaseBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/io/async:async_base",
+ "//folly/portability:gflags",
+ ],
+)
+
+cpp_library(
+ name = "event_base_test_lib",
+ hdrs = [
+ "EventBaseTestLib.h",
+ ],
+ deps = [
+ ":util",
+ "//folly:math",
+ "//folly:memory",
+ "//folly:scope_guard",
+ "//folly/futures:core",
+ "//folly/io/async:async_base",
+ "//folly/portability:gmock",
+ "//folly/portability:stdlib",
+ "//folly/portability:unistd",
+ "//folly/synchronization:baton",
+ "//folly/system:thread_id",
+ "//folly/system:thread_name",
+ ],
+)
+
+# Disabled because this test is real-time timing dependent, and is therefore flaky.
+# cpp_unittest(
+# name = "event_base_test",
+# srcs = ["EventBaseTest.cpp"],
+# deps = [
+# ":async_signal_handler_test_lib",
+# ":event_base_test_lib",
+# "//folly/init",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "event_base_local_test",
+ srcs = ["EventBaseLocalTest.cpp"],
+ deps = [
+ "//folly/io/async:async_base",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "event_base_thread_test",
+ srcs = ["EventBaseThreadTest.cpp"],
+ deps = [
+ "//folly/io/async:event_base_manager",
+ "//folly/io/async:event_base_thread",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "//folly/system:thread_name",
+ ],
+)
+
+# Disabled because this test is real-time timing dependent, and is therefore flaky.
+# cpp_unittest(
+# name = "hhwheel_timer_slow_test",
+# size = "medium",
+# srcs = ["HHWheelTimerSlowTests.cpp"],
+# deps = [
+# ":util",
+# "//folly:random",
+# "//folly/io/async:async_base",
+# "//folly/portability:gtest",
+# ],
+# )
+
+# Disabled because this test is real-time timing dependent, and is therefore flaky.
+# cpp_unittest(
+# name = "hhwheel_timer_test",
+# srcs = ["HHWheelTimerTest.cpp"],
+# deps = [
+# ":util",
+# "//folly/io/async:async_base",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_library(
+ name = "mocks",
+ hdrs = [
+ "MockAsyncSSLSocket.h",
+ "MockAsyncSocket.h",
+ "MockAsyncSocketLegacyObserver.h",
+ "MockAsyncSocketObserver.h",
+ "MockAsyncTransport.h",
+ "MockAsyncUDPSocket.h",
+ "MockTimeoutManager.h",
+ ],
+ deps = [
+ "//folly:memory",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:async_socket_exception",
+ "//folly/io/async:async_ssl_socket",
+ "//folly/io/async:async_transport",
+ "//folly/io/async:async_udp_socket",
+ "//folly/portability:gmock",
+ ],
+)
+
+cpp_library(
+ name = "mock_server_socket",
+ hdrs = ["MockAsyncServerSocket.h"],
+ deps = [
+ "//folly/io/async:async_base",
+ "//folly/io/async:server_socket",
+ "//folly/portability:gmock",
+ ],
+)
+
+cpp_unittest(
+ name = "notification_queue_test",
+ srcs = ["NotificationQueueTest.cpp"],
+ deps = [
+ "//folly/io/async:async_base",
+ "//folly/io/async:scoped_event_base_thread",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "atomic_notification_queue_test",
+ srcs = ["AtomicNotificationQueueTest.cpp"],
+ deps = [
+ "//folly/io/async:async_base",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "notification_queue_benchmark",
+ srcs = ["NotificationQueueBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/io/async:async_base",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "request_context_test",
+ srcs = [
+ "RequestContextHelper.h",
+ "RequestContextTest.cpp",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:memory",
+ "//folly:singleton",
+ "//folly/container:enumerate",
+ "//folly/io/async:async_base",
+ "//folly/io/async:request_context",
+ "//folly/portability:gtest",
+ "//folly/synchronization:relaxed_atomic",
+ "//folly/system:thread_name",
+ "@boost.thread",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "scoped_bound_port",
+ srcs = ["ScopedBoundPort.cpp"],
+ hdrs = ["ScopedBoundPort.h"],
+ deps = [
+ "//folly:memory",
+ "//folly:network_address",
+ "//folly/io/async:scoped_event_base_thread",
+ "//folly/io/async:server_socket",
+ ],
+)
+
+cpp_unittest(
+ name = "scoped_event_base_thread_test",
+ srcs = ["ScopedEventBaseThreadTest.cpp"],
+ deps = [
+ "//folly:optional",
+ "//folly/futures:core",
+ "//folly/io/async:event_base_manager",
+ "//folly/io/async:scoped_event_base_thread",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "//folly/system:thread_name",
+ ],
+)
+
+cpp_unittest(
+ name = "terminate_cancellation_token_test",
+ srcs = ["TerminateCancellationTokenTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/io/async:terminate_cancellation_token",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cc_binary(
+ name = "socket_client",
+ srcs = ["SocketClient.cpp"],
+ deps = [
+ ":blocking_socket",
+ "//folly:exception_wrapper",
+ "//folly/portability:gflags",
+ ],
+)
+
+cpp_unittest(
+ name = "ssl_session_test",
+ srcs = ["SSLSessionTest.cpp"],
+ data = [
+ "//folly/io/async/test/certs:ca-cert.pem",
+ "//folly/io/async/test/certs:tests-cert.pem",
+ "//folly/io/async/test/certs:tests-key.pem",
+ ],
+ deps = [
+ ":async_ssl_socket_test_lib",
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/portability:gtest",
+ "//folly/portability:openssl",
+ "//folly/portability:sockets",
+ "//folly/ssl:ssl_session",
+ "//folly/ssl/detail:openssl_session",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "time_util_test",
+ srcs = ["TimeUtilTest.cpp"],
+ deps = [
+ ":util",
+ "//folly/portability:gtest",
+ "//folly/portability:unistd",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "ssl_context_test",
+ srcs = ["SSLContextTest.cpp"],
+ data = [
+ "//folly/io/async/test/certs:client_chain.pem",
+ "//folly/io/async/test/certs:client_key.pem",
+ "//folly/io/async/test/certs:clienti_key.pem",
+ "//folly/io/async/test/certs:tests-cert.pem",
+ "//folly/io/async/test/certs:tests-key.pem",
+ ],
+ deps = [
+ ":ssl_util",
+ "//folly:file_util",
+ "//folly/io/async:ssl_context",
+ "//folly/portability:gtest",
+ "//folly/portability:openssl",
+ "//folly/ssl:openssl_cert_utils",
+ "//folly/ssl:openssl_key_utils",
+ "//folly/ssl:openssl_ptr_types",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "ssl_context_regression_test",
+ srcs = ["SSLContextRegressionTest.cpp"],
+ deps = [
+ "//folly:file_util",
+ "//folly/io/async:ssl_context",
+ "//folly/portability:gtest",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "ssl_options_test",
+ srcs = ["SSLOptionsTest.cpp"],
+ deps = [
+ ":ssl_util",
+ "//folly/io/async:ssl_context",
+ "//folly/io/async:ssl_options",
+ "//folly/portability:gtest",
+ "//folly/ssl:openssl_ptr_types",
+ ],
+)
+
+cpp_library(
+ name = "ssl_util",
+ srcs = [
+ "SSLUtil.cpp",
+ ],
+ hdrs = [
+ "SSLUtil.h",
+ ],
+ deps = [
+ "//folly/ssl:openssl_ptr_types",
+ ],
+)
+
+# Disabled because this test is real-time timing dependent, and is therefore flaky.
+# cpp_unittest(
+# name = "timerfd_timeout_manager_test",
+# srcs = ["TimerFDTimeoutManagerTest.cpp"],
+# deps = [
+# "//folly/io/async:timerfd",
+# "//folly/io/async/test:util",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_library(
+ name = "util",
+ srcs = [
+ "SocketPair.cpp",
+ "TimeUtil.cpp",
+ ],
+ hdrs = [
+ "SocketPair.h",
+ "TimeUtil.h",
+ "UndelayedDestruction.h",
+ "Util.h",
+ ],
+ deps = [
+ "//folly:conv",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:string",
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/portability:fcntl",
+ "//folly/portability:gtest",
+ "//folly/portability:sockets",
+ "//folly/portability:sys_types",
+ "//folly/portability:unistd",
+ "//folly/system:thread_id",
+ "//folly/test:test_utils",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "write_chain_async_transport_wrapper_test",
+ srcs = ["WriteChainAsyncTransportWrapperTest.cpp"],
+ deps = [
+ "//folly/io/async:async_transport",
+ "//folly/io/async:decorated_async_transport_wrapper",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "write_flags_test",
+ srcs = ["WriteFlagsTest.cpp"],
+ deps = [
+ "//folly/io/async:async_transport",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "zero_copy_lib",
+ srcs = ["ZeroCopy.cpp"],
+ hdrs = ["ZeroCopy.h"],
+ deps = [
+ "//folly:exception_wrapper",
+ "//folly:network_address",
+ "//folly/io:iobuf",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:server_socket",
+ ],
+)
+
+# NOTE: This fails only in BCR CI.
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "zero_copy_test",
+# srcs = ["ZeroCopyTest.cpp"],
+# deps = [
+# ":zero_copy_lib",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cc_binary(
+ name = "zero_copy_benchmark",
+ srcs = ["ZeroCopyBenchmark.cpp"],
+ deps = [
+ ":zero_copy_lib",
+ "//folly:benchmark",
+ "//folly/portability:gflags",
+ ],
+)
+
+# Disabled because it relies on real-time timing, so it is inherently flaky depending on CPU load.
+# cpp_unittest(
+# name = "hhwheel_timer_high_res_test",
+# srcs = ["HHWheelTimerHighResTest.cpp"],
+# deps = [
+# "//folly/io/async:async_base",
+# "//folly/io/async:timerfd",
+# "//folly/io/async/test:util",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cc_binary(
+ name = "hhwheel_timer_high_res_benchmark",
+ srcs = ["HHWheelTimerHighResBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/io/async:timerfd",
+ "//folly/io/async/test:util",
+ ],
+)
+
+# TODO(kgk): Enable once @libaio is added to bcr. See:
+# https://github.com/bazelbuild/bazel-central-registry/issues/3756
+# cpp_unittest(
+# name = "async_io_test",
+# srcs = ["AsyncIOTest.cpp"],
+# deps = [
+# "//folly/experimental/io:async_io",
+# "//folly/experimental/io/test:async_base_test_lib",
+# ],
+# )
+
+cpp_unittest(
+ name = "async_io_uring_socket_test",
+ srcs = ["AsyncIoUringSocketTest.cpp"],
+ target_compatible_with = select({
+ # liburing is only available on Linux.
+ "@platforms//os:linux": [],
+ "//conditions:default": ["@platforms//:incompatible"],
+ }),
+ deps = [
+ "//folly:file_util",
+ "//folly:subprocess",
+ "//folly/executors:global_executor",
+ "//folly/futures:core",
+ "//folly/io/async:async_base",
+ "//folly/io/async:async_io_uring_socket",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:io_uring_backend",
+ "//folly/io/async:io_uring_event",
+ "//folly/io/async:server_socket",
+ "//folly/portability:gtest",
+ "//folly/system:shell",
+ "//folly/test:socket_address_test_helper",
+ ],
+)
+
+# Disabled because it relies on real-time timing, so it is inherently flaky depending on CPU load.
+# cpp_unittest(
+# name = "epoll_backend_test",
+# srcs = ["EpollBackendTest.cpp"],
+# deps = [
+# "//folly/experimental/io:epoll_backend",
+# "//folly/io/async/test:async_signal_handler_test_lib",
+# "//folly/io/async/test:event_base_test_lib",
+# ],
+# )
+
+# TODO(kgk): Enable once @libaio is added to bcr. See:
+# https://github.com/bazelbuild/bazel-central-registry/issues/3756
+# cc_binary(
+# name = "io_benchmark",
+# srcs = ["IOBenchmark.cpp"],
+# deps = [
+# "//folly:benchmark",
+# "//folly:file_util",
+# "//folly/experimental/io:async_io",
+# "//folly/experimental/io/test:async_base_test_lib",
+# "//folly/experimental/io/test:io_test_temp_file_util_lib",
+# "//folly/io/async:io_uring",
+# "//folly/portability:gflags",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cc_binary(
+# name = "io_uring_backend_bench",
+# srcs = ["IoUringBackendBench.cpp"],
+# deps = [
+# "//folly:benchmark",
+# "//folly:file_util",
+# "//folly/experimental/io:epoll_backend",
+# "//folly/init",
+# "//folly/io/async:async_base",
+# "//folly/io/async:io_uring_backend",
+# "//folly/io/async:scoped_event_base_thread",
+# "//folly/portability:gflags",
+# ],
+# )
+
+cpp_unittest(
+ name = "io_uring_backend_setup_test",
+ srcs = ["IoUringBackendSetupTest.cpp"],
+ target_compatible_with = select({
+ # liburing is only available on Linux.
+ "@platforms//os:linux": [],
+ "//conditions:default": ["@platforms//:incompatible"],
+ }),
+ deps = [
+ "//folly/io/async:io_uring_backend",
+ "//folly/portability:gtest",
+ ],
+)
+
+# Disabled because this test is real-time timing dependent, and is therefore flaky.
+# cpp_unittest(
+# name = "io_uring_backend_test",
+# srcs = ["IoUringBackendTest.cpp"],
+# deps = [
+# "//folly:file_util",
+# "//folly:function",
+# "//folly:string",
+# "//folly/experimental/io/test:io_test_temp_file_util_lib",
+# "//folly/init",
+# "//folly/io/async:async_base",
+# "//folly/io/async:async_udp_server_socket",
+# "//folly/io/async:async_udp_socket",
+# "//folly/io/async:io_uring_backend",
+# "//folly/io/async/test:async_signal_handler_test_lib",
+# "//folly/io/async/test:event_base_test_lib",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "io_uring_event_base_local_test",
+ srcs = ["IoUringEventBaseLocalTest.cpp"],
+ target_compatible_with = select({
+ # liburing is only available on Linux.
+ "@platforms//os:linux": [],
+ "//conditions:default": ["@platforms//:incompatible"],
+ }),
+ deps = [
+ "//folly/futures:core",
+ "//folly/io/async:io_uring_backend",
+ "//folly/io/async:io_uring_event_base_local",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "io_uring_event_test",
+ srcs = ["IoUringEventTest.cpp"],
+ target_compatible_with = select({
+ # liburing is only available on Linux.
+ "@platforms//os:linux": [],
+ "//conditions:default": ["@platforms//:incompatible"],
+ }),
+ deps = [
+ "//folly/futures:core",
+ "//folly/io/async:async_base",
+ "//folly/io/async:io_uring_backend",
+ "//folly/io/async:io_uring_event",
+ "//folly/portability:gtest",
+ ],
+)
+
+# NOTE: Test does not work with OSS distribution.
+# cpp_unittest(
+# name = "io_uring_test",
+# srcs = ["IoUringTest.cpp"],
+# # labels = ["oss-broken"],
+# deps = [
+# "//folly/experimental/io/test:async_base_test_lib",
+# "//folly/init",
+# "//folly/io/async:io_uring",
+# ],
+# )
+
+# TODO(kgk): Fix test.
+# cc_binary(
+# name = "registered_fd_benchmark",
+# srcs = ["RegisteredFdBenchmark.cpp"],
+# deps = [
+# "//folly:benchmark",
+# "//folly:file_util",
+# "//folly/io/async:async_base",
+# "//folly/io/async:io_uring_backend",
+# "//folly/portability:gflags",
+# ],
+# )
+
+cpp_unittest(
+ name = "simple_async_io_test",
+ srcs = ["SimpleAsyncIOTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:file",
+ "//folly:random",
+ "//folly/coro:blocking_wait",
+ "//folly/coro:collect",
+ "//folly/experimental/io:simple_async_io",
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "io_test_temp_file_util_lib",
+ srcs = ["IoTestTempFileUtil.cpp"],
+ hdrs = ["IoTestTempFileUtil.h"],
+ target_compatible_with = select({
+ # parentDeathSignal() is only available on Linux, but this doesn't guard
+ # the call.
+ "@platforms//os:linux": [],
+ "//conditions:default": ["@platforms//:incompatible"],
+ }),
+ deps = [
+ "//folly:file_util",
+ "//folly:string",
+ "//folly/experimental/io:fs_util",
+ "//folly/testing:test_util",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "async_base_test_lib",
+ srcs = ["AsyncBaseTestLib.cpp"],
+ hdrs = ["AsyncBaseTestLib.h"],
+ target_compatible_with = select({
+ # O_DIRECT is only available on Linux.
+ "@platforms//os:linux": [],
+ "//conditions:default": ["@platforms//:incompatible"],
+ }),
+ deps = [
+ "//folly:scope_guard",
+ "//folly:string",
+ "//folly/experimental/io:async_base",
+ "//folly/experimental/io:fs_util",
+ "//folly/experimental/io/test:io_test_temp_file_util_lib",
+ "//folly/portability:gtest",
+ "//folly/portability:sockets",
+ "//folly/portability:unistd",
+ "//folly/test:test_utils",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "mux_io_thread_pool_executor_test_lib",
+ srcs = ["MuxIOThreadPoolExecutorTest.cpp"],
+ deps = [
+ "//folly/executors/test:IOThreadPoolExecutorBaseTestLib",
+ "//folly/experimental/io:epoll",
+ "//folly/experimental/io:mux_io_thread_pool_executor",
+ "//folly/portability:gtest",
+ "//folly/synchronization:latch",
+ ],
+)
+
+cpp_unittest(
+ name = "mux_io_thread_pool_executor_test_epoll",
+ args = [
+ "--folly_event_base_poller_backend=epoll",
+ "--folly_event_base_poller_epoll_rearm_inline=false",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":mux_io_thread_pool_executor_test_lib", # @manual
+ ],
+)
+
+cpp_unittest(
+ name = "mux_io_thread_pool_executor_test_epoll_rearm_inline",
+ args = [
+ "--folly_event_base_poller_backend=epoll",
+ "--folly_event_base_poller_epoll_rearm_inline=true",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":mux_io_thread_pool_executor_test_lib", # @manual
+ ],
+)
+
+cpp_unittest(
+ name = "mux_io_thread_pool_executor_test_io_uring",
+ args = [
+ "--folly_event_base_poller_backend=io_uring",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":mux_io_thread_pool_executor_test_lib", # @manual
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/test/certs/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/test/certs/BUILD.bazel
new file mode 100644
index 00000000000..394f8b5cc23
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/async/test/certs/BUILD.bazel
@@ -0,0 +1,3 @@
+package(default_visibility = ["//visibility:public"])
+
+exports_files(glob(["*.pem"]))
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/coro/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/coro/BUILD.bazel
new file mode 100644
index 00000000000..8b3b672e6ad
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/coro/BUILD.bazel
@@ -0,0 +1,59 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "transport_callback_base",
+ hdrs = [
+ "TransportCallbackBase.h",
+ ],
+ deps = [
+ "//folly:portability",
+ "//folly/coro:baton",
+ "//folly/coro:task",
+ "//folly/io/async:async_transport",
+ "//folly/io/async/ssl:ssl_errors",
+ ],
+)
+
+cpp_library(
+ name = "transport_callbacks",
+ hdrs = [
+ "TransportCallbacks.h",
+ ],
+ deps = [
+ ":transport_callback_base",
+ "//folly:network_address",
+ "//folly:range",
+ "//folly/coro:task",
+ "//folly/io:iobuf",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:async_socket_exception",
+ ],
+)
+
+cpp_library(
+ name = "socket",
+ srcs = [
+ "ServerSocket.cpp",
+ "Transport.cpp",
+ ],
+ hdrs = [
+ "ServerSocket.h",
+ "Transport.h",
+ ],
+ deps = [
+ ":transport_callbacks",
+ "//folly:exception_wrapper",
+ "//folly:expected",
+ "//folly:network_address",
+ "//folly:portability",
+ "//folly:range",
+ "//folly/coro:baton",
+ "//folly/coro:task",
+ "//folly/io:iobuf",
+ "//folly/io/async:async_socket",
+ "//folly/io/async:async_socket_exception",
+ "//folly/io/async:server_socket",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/coro/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/coro/test/BUILD.bazel
new file mode 100644
index 00000000000..2a422791dc9
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/coro/test/BUILD.bazel
@@ -0,0 +1,18 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "transport_test",
+ srcs = [
+ "TransportTest.cpp",
+ ],
+ deps = [
+ "//folly:portability",
+ "//folly/coro:blocking_wait",
+ "//folly/coro:collect",
+ "//folly/io/async/test:async_socket_test_lib",
+ "//folly/io/async/test:mocks",
+ "//folly/io/async/test:scoped_bound_port",
+ "//folly/io/coro:socket",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/test/BUILD.bazel
new file mode 100644
index 00000000000..fbe593baf5e
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/test/BUILD.bazel
@@ -0,0 +1,171 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cc_binary(
+ name = "iobuf_benchmark",
+ srcs = ["IOBufBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/io:iobuf",
+ ],
+)
+
+cpp_unittest(
+ name = "iobuf_test",
+ srcs = ["IOBufTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:range",
+ "//folly/io:iobuf",
+ "//folly/io:typed_io_buf",
+ "//folly/memory:malloc",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "iobuf_cb_test",
+ srcs = ["IOBufCBTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "iobuf_cursor_benchmark",
+ srcs = ["IOBufCursorBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:format",
+ "//folly:range",
+ "//folly/io:iobuf",
+ "//folly/lang:keep",
+ ],
+)
+
+cpp_unittest(
+ name = "iobuf_cursor_test",
+ srcs = ["IOBufCursorTest.cpp"],
+ deps = [
+ "//folly:format",
+ "//folly:range",
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "iobuf_network_bench",
+ srcs = ["NetworkBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/io:iobuf",
+ "//folly/portability:gflags",
+ ],
+)
+
+cpp_unittest(
+ name = "iobuf_queue_test",
+ srcs = ["IOBufQueueTest.cpp"],
+ deps = [
+ "//folly:range",
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ "@fmt",
+ ],
+)
+
+cpp_unittest(
+ name = "iobuf_iovec_builder_test",
+ srcs = ["IOBufIovecBuilderTest.cpp"],
+ deps = [
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "queueappender_benchmark",
+ srcs = ["QueueAppenderBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:format",
+ "//folly:range",
+ "//folly/io:iobuf",
+ ],
+)
+
+cpp_unittest(
+ name = "record_io_test",
+ srcs = ["RecordIOTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:fbstring",
+ "//folly:random",
+ "//folly/io:iobuf",
+ "//folly/io:record_io",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/portability:unistd",
+ "//folly/testing:test_util",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "shutdown_socket_set_test",
+ srcs = ["ShutdownSocketSetTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/io:shutdown_socket_set",
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "socket_option_value_test",
+ srcs = ["SocketOptionValueTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:conv",
+ "//folly/io:socket_option_map",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "fs_util_test",
+ srcs = ["FsUtilTest.cpp"],
+ deps = [
+ "//folly:string",
+ "//folly/experimental/io:fs_util",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/testing:test_util",
+ "@fmt",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/tool/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/tool/BUILD.bazel
new file mode 100644
index 00000000000..196117626de
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/io/tool/BUILD.bazel
@@ -0,0 +1,16 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+
+package(default_visibility = ["//visibility:public"])
+
+cc_binary(
+ name = "huge_page_util",
+ srcs = ["HugePageUtil.cpp"],
+ deps = [
+ "//folly:range",
+ "//folly/experimental/io:huge_pages",
+ "//folly/portability:gflags",
+ "//folly/system:memory_mapping",
+ "@fmt",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/BUILD.bazel
new file mode 100644
index 00000000000..d2cea2578c8
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/BUILD.bazel
@@ -0,0 +1,136 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "dynamic",
+ srcs = [
+ "dynamic.cpp",
+ "json.cpp",
+ ],
+ hdrs = [
+ "DynamicConverter.h",
+ "dynamic.h",
+ "json.h",
+ ],
+ textual_hdrs = [
+ "dynamic-inl.h",
+ ],
+ deps = [
+ "//folly:c_portability",
+ "//folly:conv",
+ "//folly:expected",
+ "//folly:format",
+ "//folly:function",
+ "//folly:json_pointer",
+ "//folly:likely",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:traits",
+ "//folly:unicode",
+ "//folly:utility",
+ "//folly/container:access",
+ "//folly/container:enumerate",
+ "//folly/container:f14_hash",
+ "//folly/detail:iterators",
+ "//folly/hash",
+ "//folly/lang:assume",
+ "//folly/lang:bits",
+ "//folly/lang:exception",
+ "//folly/portability:constexpr",
+ "@boost.algorithm",
+ "@boost.iterator",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "json_pointer",
+ srcs = ["json_pointer.cpp"],
+ hdrs = ["json_pointer.h"],
+ deps = [
+ "//folly:expected",
+ "//folly:range",
+ "//folly:string",
+ ],
+)
+
+cpp_library(
+ name = "json_patch",
+ srcs = ["json_patch.cpp"],
+ hdrs = ["json_patch.h"],
+ deps = [
+ "//folly:expected",
+ "//folly:json_pointer",
+ "//folly:optional",
+ "//folly/container:enumerate",
+ "//folly/json:dynamic",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "json_schema",
+ srcs = ["JSONSchema.cpp"],
+ hdrs = ["JSONSchema.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:conv",
+ "//folly:exception_wrapper",
+ "//folly:memory",
+ "//folly:optional",
+ "//folly:range",
+ "//folly:singleton",
+ "//folly:string",
+ "//folly/json:dynamic",
+ "//folly/portability:math",
+ "@boost.algorithm",
+ "@boost.regex",
+ ],
+)
+
+cpp_library(
+ name = "dynamic_parser",
+ srcs = ["DynamicParser.cpp"],
+ hdrs = [
+ "DynamicParser.h",
+ ],
+ textual_hdrs = [
+ "DynamicParser-inl.h",
+ ],
+ deps = [
+ "//folly:c_portability",
+ "//folly:conv",
+ "//folly/json:dynamic",
+ # for toPseudoJson(), since print_as_pseudo_json() is in json.cpp
+ "//folly:json", # @manual
+ "//folly:optional",
+ "//folly:scope_guard",
+ "//folly:traits",
+ "@boost.function_types",
+ "@boost.mpl",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "json_mock_util",
+ hdrs = ["JsonMockUtil.h"],
+ deps = [
+ "//folly/portability:gmock",
+ "//folly/test:json_test_util",
+ ],
+)
+
+cpp_library(
+ name = "json_test_util",
+ srcs = ["JsonTestUtil.cpp"],
+ hdrs = ["JsonTestUtil.h"],
+ deps = [
+ "//folly:conv",
+ "//folly:range",
+ "//folly/json:dynamic",
+ "//folly/lang:assume",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/bser/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/bser/BUILD.bazel
new file mode 100644
index 00000000000..add8f652e62
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/bser/BUILD.bazel
@@ -0,0 +1,22 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "bser",
+ srcs = [
+ "Dump.cpp",
+ "Load.cpp",
+ ],
+ hdrs = [
+ "Bser.h",
+ ],
+ deps = [
+ "//folly:c_portability",
+ "//folly:json", # @manual
+ "//folly:optional",
+ "//folly:string",
+ "//folly/io:iobuf",
+ "//folly/json:dynamic",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/bser/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/bser/test/BUILD.bazel
new file mode 100644
index 00000000000..5626901c55e
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/bser/test/BUILD.bazel
@@ -0,0 +1,11 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "testbser",
+ srcs = ["BserTest.cpp"],
+ deps = [
+ "//folly:string",
+ "//folly/json/bser",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/test/BUILD.bazel
new file mode 100644
index 00000000000..4ac4af087bc
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/test/BUILD.bazel
@@ -0,0 +1,115 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "dynamic_converter_test",
+ srcs = ["DynamicConverterTest.cpp"],
+ deps = [
+ "//folly:expected",
+ "//folly:fbvector",
+ "//folly:optional",
+ "//folly/json:dynamic",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "dynamic_other_test",
+ srcs = ["DynamicOtherTest.cpp"],
+ deps = [
+ "//folly/gen:base",
+ "//folly/json:dynamic",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "dynamic_test",
+ srcs = ["DynamicTest.cpp"],
+ deps = [
+ "//folly:range",
+ "//folly/hash",
+ "//folly/json:dynamic",
+ "//folly/portability:gtest",
+ "//folly/test:comparison_operator_test_util",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "json_other_test",
+ srcs = ["JsonOtherTest.cpp"],
+ deps = [
+ "//folly/json:dynamic",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "json_patch_test",
+ srcs = ["json_patch_test.cpp"],
+ deps = [
+ "//folly:json_patch",
+ "//folly:json_pointer",
+ "//folly/json:dynamic",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "json_test",
+ srcs = ["JsonTest.cpp"],
+ deps = [
+ "//folly/json:dynamic",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "json_pointer_test",
+ srcs = ["json_pointer_test.cpp"],
+ deps = [
+ "//folly:json_pointer",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "json_schema_test",
+ srcs = ["JSONSchemaTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/json:dynamic",
+ "//folly/json:json_schema",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "dynamic_parser_test",
+ srcs = ["DynamicParserTest.cpp"],
+ deps = [
+ "//folly:optional",
+ "//folly/json:dynamic_parser",
+ "//folly/portability:gtest",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "json_test_util_test",
+ srcs = ["JsonTestUtilTest.cpp"],
+ deps = [
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/test:json_mock_util",
+ "//folly/test:json_test_util",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/tool/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/tool/BUILD.bazel
new file mode 100644
index 00000000000..15be2a71457
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/json/tool/BUILD.bazel
@@ -0,0 +1,12 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+
+package(default_visibility = ["//visibility:public"])
+
+cc_binary(
+ name = "json_schema_tester",
+ srcs = ["JSONSchemaTester.cpp"],
+ deps = [
+ "//folly/json:dynamic",
+ "//folly/json:json_schema",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/lang/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/lang/BUILD.bazel
new file mode 100644
index 00000000000..831e8b59b1a
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/lang/BUILD.bazel
@@ -0,0 +1,280 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "access",
+ hdrs = ["Access.h"],
+ deps = [
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "align",
+ hdrs = ["Align.h"],
+ deps = [
+ "//folly:portability",
+ "//folly:traits",
+ ],
+)
+
+cpp_library(
+ name = "aligned",
+ hdrs = ["Aligned.h"],
+ deps = [
+ ":align",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "assume",
+ hdrs = ["Assume.h"],
+ deps = [
+ ":hint",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "badge",
+ hdrs = ["Badge.h"],
+ deps = [
+ "//folly:traits",
+ ],
+)
+
+cpp_library(
+ name = "bits",
+ hdrs = ["Bits.h"],
+ deps = [
+ ":assume",
+ ":c_string",
+ "//folly:constexpr_math",
+ "//folly:portability",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/portability:builtins",
+ ],
+)
+
+cpp_library(
+ name = "bits_class",
+ hdrs = ["BitsClass.h"],
+ deps = [
+ "//folly:portability",
+ "//folly:range",
+ "//folly/lang:bits",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "builtin",
+ hdrs = ["Builtin.h"],
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "c_array",
+ hdrs = ["CArray.h"],
+)
+
+cpp_library(
+ name = "c_string",
+ srcs = ["CString.cpp"],
+ hdrs = ["CString.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:cpp_attributes",
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "cast",
+ hdrs = ["Cast.h"],
+ deps = [
+ ":safe_assert",
+ "//folly:portability",
+ "//folly:traits",
+ ],
+)
+
+cpp_library(
+ name = "checked_math",
+ hdrs = ["CheckedMath.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:likely",
+ ],
+)
+
+cpp_library(
+ name = "customization_point",
+ hdrs = ["CustomizationPoint.h"],
+ deps = [
+ ":static_const",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "exception",
+ srcs = ["Exception.cpp"],
+ hdrs = ["Exception.h"],
+ linkopts = select({
+ "//conditions:default": [],
+ "@platforms//os:macos": ["-lc++abi"],
+ }),
+ deps = [
+ ":assume",
+ ":new",
+ ":safe_assert",
+ ":thunk",
+ ":type_info",
+ "//folly:c_portability",
+ "//folly:cpp_attributes",
+ "//folly:likely",
+ "//folly:portability",
+ "//folly:traits",
+ "//folly:utility",
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "extern",
+ hdrs = ["Extern.h"],
+)
+
+cpp_library(
+ name = "keep",
+ hdrs = ["Keep.h"],
+ deps = [
+ "//folly:c_portability",
+ ],
+)
+
+cpp_library(
+ name = "hint",
+ hdrs = [
+ "Hint.h",
+ "Hint-inl.h",
+ ],
+ deps = [
+ ":safe_assert",
+ "//folly:portability",
+ "//folly:traits",
+ ],
+)
+
+cpp_library(
+ name = "new",
+ hdrs = ["New.h"],
+ deps = [
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "ordering",
+ hdrs = ["Ordering.h"],
+ deps = [
+ ":exception",
+ ],
+)
+
+cpp_library(
+ name = "propagate_const",
+ hdrs = ["PropagateConst.h"],
+ deps = [
+ "//folly:traits",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "rvalue_reference_wrapper",
+ hdrs = ["RValueReferenceWrapper.h"],
+)
+
+cpp_library(
+ name = "safe_assert",
+ srcs = ["SafeAssert.cpp"],
+ hdrs = ["SafeAssert.h"],
+ deps = [
+ ":c_array",
+ ":to_ascii",
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ "//folly:preprocessor",
+ "//folly/detail:file_util_detail",
+ "//folly/portability:sys_types",
+ "//folly/portability:windows",
+ ],
+)
+
+cpp_library(
+ name = "static_const",
+ hdrs = ["StaticConst.h"],
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "thunk",
+ hdrs = ["Thunk.h"],
+ deps = [
+ ":new",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "to_ascii",
+ srcs = ["ToAscii.cpp"],
+ hdrs = ["ToAscii.h"],
+ deps = [
+ ":align",
+ ":c_array",
+ "//folly:constexpr_math",
+ "//folly:likely",
+ "//folly:portability",
+ "//folly:utility",
+ "//folly/portability:builtins",
+ ],
+)
+
+cpp_library(
+ name = "type_info",
+ hdrs = ["TypeInfo.h"],
+ deps = [
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "pretty",
+ hdrs = ["Pretty.h"],
+ deps = [
+ ":c_array",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "uncaught_exceptions",
+ srcs = ["UncaughtExceptions.cpp"],
+ hdrs = ["UncaughtExceptions.h"],
+ deps = [
+ ":exception",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/lang/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/lang/test/BUILD.bazel
new file mode 100644
index 00000000000..3e885010298
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/lang/test/BUILD.bazel
@@ -0,0 +1,236 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "align_test",
+ srcs = ["AlignTest.cpp"],
+ deps = [
+ "//folly/lang:align",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "aligned_test",
+ srcs = ["AlignedTest.cpp"],
+ deps = [
+ "//folly/lang:align",
+ "//folly/lang:aligned",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "badge_test",
+ srcs = ["BadgeTest.cpp"],
+ deps = [
+ "//folly/lang:badge",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "bits_benchmark",
+ srcs = ["BitsBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:cpp_attributes",
+ "//folly:random",
+ "//folly/lang:assume",
+ "//folly/lang:bits",
+ ],
+)
+
+cc_binary(
+ name = "bits_class_benchmark",
+ srcs = ["BitsClassBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/lang:bits_class",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "bits_class_test",
+ srcs = ["BitsClassTest.cpp"],
+ deps = [
+ "//folly/lang:bits_class",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "bits_test",
+ srcs = ["BitsTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:random",
+ "//folly/lang:bits",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "c_string_test",
+ srcs = ["CStringTest.cpp"],
+ deps = [
+ "//folly/lang:c_string",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "cast_test",
+ srcs = ["CastTest.cpp"],
+ deps = [
+ "//folly:utility",
+ "//folly/lang:cast",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "checked_math_test",
+ srcs = ["CheckedMathTest.cpp"],
+ deps = [
+ "//folly/lang:checked_math",
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "exception_bench",
+ srcs = ["ExceptionBench.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/lang:exception",
+ "//folly/lang:keep",
+ ],
+)
+
+cpp_unittest(
+ name = "exception_test",
+ srcs = ["ExceptionTest.cpp"],
+ deps = [
+ "//folly:portability",
+ "//folly/lang:align",
+ "//folly/lang:exception",
+ "//folly/lang:keep",
+ "//folly/lang:pretty",
+ "//folly/portability:gtest",
+ "@fmt",
+ ],
+)
+
+cpp_unittest(
+ name = "extern_test",
+ srcs = ["ExternTest.cpp"],
+ deps = [
+ "//folly/lang:extern",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "hint_test",
+ srcs = ["HintTest.cpp"],
+ deps = [
+ "//folly/lang:hint",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "new_test",
+ srcs = ["NewTest.cpp"],
+ deps = [
+ "//folly/lang:align",
+ "//folly/lang:new",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "ordering_test",
+ srcs = ["OrderingTest.cpp"],
+ deps = [
+ "//folly/lang:ordering",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "propagate_const_test",
+ srcs = ["PropagateConstTest.cpp"],
+ deps = [
+ "//folly/lang:propagate_const",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "rvalue_reference_wrapper_test",
+ srcs = ["RValueReferenceWrapperTest.cpp"],
+ deps = [
+ "//folly/lang:rvalue_reference_wrapper",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "safe_assert_test",
+ srcs = ["SafeAssertTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:conv",
+ "//folly/lang:keep",
+ "//folly/lang:safe_assert",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "thunk_test",
+ srcs = ["ThunkTest.cpp"],
+ deps = [
+ "//folly:traits",
+ "//folly/lang:thunk",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "to_ascii_test",
+ srcs = ["ToAsciiTest.cpp"],
+ deps = [
+ "//folly/lang:to_ascii",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "type_info_test",
+ srcs = ["TypeInfoTest.cpp"],
+ deps = [
+ "//folly/lang:type_info",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "pretty_test",
+ srcs = ["PrettyTest.cpp"],
+ deps = [
+ "//folly/lang:pretty",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/logging/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/logging/BUILD.bazel
new file mode 100644
index 00000000000..bee2a9b1cb3
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/logging/BUILD.bazel
@@ -0,0 +1,206 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+# "logging" is the core of the logging library
+# If you want to log messages from your code, this is the library you should
+# depend on.
+cpp_library(
+ name = "logging",
+ srcs = [
+ "AsyncFileWriter.cpp",
+ "AsyncLogWriter.cpp",
+ "CustomLogFormatter.cpp",
+ "FileWriterFactory.cpp",
+ "GlogStyleFormatter.cpp",
+ "ImmediateFileWriter.cpp",
+ "LogCategory.cpp",
+ "LogCategoryConfig.cpp",
+ "LogConfig.cpp",
+ "LogMessage.cpp",
+ "LogStream.cpp",
+ "LogStreamProcessor.cpp",
+ "Logger.cpp",
+ "LoggerDB.cpp",
+ "ObjectToString.cpp",
+ "StandardLogHandler.cpp",
+ "StandardLogHandlerFactory.cpp",
+ "StreamHandlerFactory.cpp",
+ "xlog.cpp",
+ ],
+ hdrs = [
+ "AsyncFileWriter.h",
+ "AsyncLogWriter.h",
+ "CustomLogFormatter.h",
+ "FileWriterFactory.h",
+ "GlogStyleFormatter.h",
+ "ImmediateFileWriter.h",
+ "LogCategory.h",
+ "LogCategoryConfig.h",
+ "LogConfig.h",
+ "LogFormatter.h",
+ "LogMessage.h",
+ "LogStream.h",
+ "LogStreamProcessor.h",
+ "LogWriter.h",
+ "Logger.h",
+ "LoggerDB.h",
+ "ObjectToString.h",
+ "StandardLogHandler.h",
+ "StandardLogHandlerFactory.h",
+ "StreamHandlerFactory.h",
+ "xlog.h",
+ ],
+ deps = [
+ ":log_handler",
+ ":log_level",
+ ":log_name",
+ ":rate_limiter",
+ "//folly:c_portability",
+ "//folly:constexpr_math",
+ "//folly:conv",
+ "//folly:cpp_attributes",
+ "//folly:demangle",
+ "//folly:exception",
+ "//folly:exception_string",
+ "//folly:file",
+ "//folly:file_util",
+ "//folly:format",
+ "//folly:likely",
+ "//folly:map_util",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly:string",
+ "//folly:synchronized",
+ "//folly/detail:static_singleton_manager",
+ "//folly/lang:exception",
+ "//folly/lang:type_info",
+ "//folly/portability:fcntl",
+ "//folly/portability:pthread",
+ "//folly/portability:time",
+ "//folly/portability:unistd",
+ "//folly/system:at_fork",
+ "//folly/system:thread_id",
+ "//folly/system:thread_name",
+ "@fmt",
+ ],
+)
+
+# "init" contains code needed to configure the logging library.
+# The main initialization code in your program should normally depend
+# on this to initialize the logging library.
+cpp_library(
+ name = "init",
+ srcs = [
+ "Init.cpp",
+ "LogConfigParser.cpp",
+ ],
+ hdrs = [
+ "Init.h",
+ "LogConfigParser.h",
+ ],
+ deps = [
+ ":init_weak", # @manual
+ ":log_name",
+ ":logging",
+ "//folly:c_portability",
+ "//folly:conv",
+ "//folly:range",
+ "//folly:string",
+ "//folly/json:dynamic",
+ "//folly/lang:safe_assert",
+ ],
+)
+
+cpp_library(
+ name = "init_weak",
+ srcs = [
+ "InitWeak.cpp",
+ ],
+ deps = [
+ "//folly:c_portability",
+ ],
+)
+
+cpp_library(
+ name = "file_handler_factory",
+ srcs = ["FileHandlerFactory.cpp"],
+ hdrs = ["FileHandlerFactory.h"],
+ deps = [
+ ":log_handler",
+ ":logging",
+ ],
+)
+
+cpp_library(
+ name = "log_handler",
+ srcs = [
+ "LogHandlerConfig.cpp",
+ ],
+ hdrs = [
+ "LogHandler.h",
+ "LogHandlerConfig.h",
+ "LogHandlerFactory.h",
+ ],
+ deps = [
+ ":log_level",
+ "//folly:cpp_attributes",
+ "//folly:optional",
+ "//folly:range",
+ "//folly/lang:safe_assert",
+ ],
+)
+
+cpp_library(
+ name = "log_level",
+ srcs = ["LogLevel.cpp"],
+ hdrs = ["LogLevel.h"],
+ deps = [
+ "//folly:conv",
+ "//folly:portability",
+ "//folly:range",
+ ],
+)
+
+cpp_library(
+ name = "log_name",
+ srcs = ["LogName.cpp"],
+ hdrs = ["LogName.h"],
+ deps = [
+ "//folly:range",
+ ],
+)
+
+cpp_library(
+ name = "rate_limiter",
+ srcs = ["RateLimiter.cpp"],
+ hdrs = ["RateLimiter.h"],
+ deps = [
+ "//folly:chrono",
+ ],
+)
+
+cpp_library(
+ name = "glog_bridge",
+ srcs = ["BridgeFromGoogleLogging.cpp"],
+ hdrs = ["BridgeFromGoogleLogging.h"],
+ deps = [
+ ":logging",
+ "//folly:utility",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "auto_timer",
+ hdrs = ["AutoTimer.h"],
+ deps = [
+ "//folly:conv",
+ "//folly:optional",
+ "//folly:string",
+ "@fmt",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/logging/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/logging/test/BUILD.bazel
new file mode 100644
index 00000000000..4dd1cc94057
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/logging/test/BUILD.bazel
@@ -0,0 +1,364 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "async_file_writer_test",
+ srcs = ["AsyncFileWriterTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:conv",
+ "//folly:exception",
+ "//folly:file",
+ "//folly:file_util",
+ "//folly:string",
+ "//folly:synchronized",
+ "//folly/futures:core",
+ "//folly/init",
+ "//folly/lang:safe_assert",
+ "//folly/logging",
+ "//folly/logging:init",
+ "//folly/portability:config",
+ "//folly/portability:gflags",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/portability:unistd",
+ "//folly/system:thread_id",
+ "//folly/system:thread_name",
+ "//folly/test:test_utils",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "async_log_writer_test",
+ srcs = ["AsyncLogWriterTest.cpp"],
+ deps = [
+ "//folly/logging",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_unittest(
+ name = "config_parser_test",
+ srcs = ["ConfigParserTest.cpp"],
+ deps = [
+ ":config_helpers",
+ "//folly:string",
+ "//folly/json:dynamic",
+ "//folly/logging",
+ "//folly/logging:init",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_unittest(
+ name = "config_update_test",
+ srcs = ["ConfigUpdateTest.cpp"],
+ deps = [
+ ":config_helpers",
+ ":test_handler",
+ "//folly/json:dynamic",
+ "//folly/logging",
+ "//folly/logging:init",
+ "//folly/logging:log_handler",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_unittest(
+ name = "file_handler_factory_test",
+ srcs = ["FileHandlerFactoryTest.cpp"],
+ deps = [
+ "//folly:exception",
+ "//folly/logging",
+ "//folly/logging:file_handler_factory",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "custom_log_formatter_test",
+ srcs = ["CustomLogFormatterTest.cpp"],
+ deps = [
+ "//folly:format",
+ "//folly/init",
+ "//folly/logging",
+ "//folly/portability:gtest",
+ "//folly/portability:stdlib",
+ "@fmt",
+ ],
+)
+
+cpp_unittest(
+ name = "glog_formatter_test",
+ srcs = ["GlogFormatterTest.cpp"],
+ deps = [
+ "//folly:format",
+ "//folly/init",
+ "//folly/logging",
+ "//folly/portability:gtest",
+ "//folly/portability:stdlib",
+ "//folly/system:thread_name",
+ "@fmt",
+ ],
+)
+
+cpp_unittest(
+ name = "immediate_file_writer_test",
+ srcs = ["ImmediateFileWriterTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:exception",
+ "//folly:file_util",
+ "//folly/logging",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/portability:unistd",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "init_test",
+ srcs = ["InitTest.cpp"],
+ deps = [
+ ":config_helpers",
+ "//folly/logging",
+ "//folly/logging:init",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_unittest(
+ name = "log_category_test",
+ srcs = ["LogCategoryTest.cpp"],
+ deps = [
+ ":test_handler",
+ "//folly:conv",
+ "//folly/logging",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "logger_db_test",
+ srcs = ["LoggerDBTest.cpp"],
+ deps = [
+ ":test_handler",
+ "//folly/logging",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "logger_test",
+ srcs = ["LoggerTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":test_handler",
+ "//folly/logging",
+ "//folly/logging:log_handler",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ "@fmt",
+ ],
+)
+
+cpp_unittest(
+ name = "log_level_test",
+ srcs = ["LogLevelTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:random",
+ "//folly/logging:log_level",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "log_message_test",
+ srcs = ["LogMessageTest.cpp"],
+ deps = [
+ "//folly:string",
+ "//folly/logging",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "log_name_test",
+ srcs = ["LogNameTest.cpp"],
+ deps = [
+ "//folly/logging:log_name",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "log_stream_test",
+ srcs = ["LogStreamTest.cpp"],
+ deps = [
+ "//folly/logging",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "rate_limiter_test",
+ srcs = ["RateLimiterTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly/logging:rate_limiter",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "standard_log_handler_test",
+ srcs = ["StandardLogHandlerTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly/logging",
+ "//folly/logging:log_handler",
+ "//folly/logging:log_level",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "config_helpers",
+ srcs = ["ConfigHelpers.cpp"],
+ hdrs = ["ConfigHelpers.h"],
+ deps = [
+ "//folly:string",
+ "//folly/logging",
+ "//folly/logging:init",
+ "//folly/logging:log_handler",
+ ],
+)
+
+cpp_unittest(
+ name = "sync_level_test",
+ srcs = ["SyncLevelTest.cpp"],
+ deps = [
+ "//folly/logging",
+ "//folly/logging:init",
+ "//folly/logging:log_handler",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_library(
+ name = "test_handler",
+ srcs = ["TestLogHandler.cpp"],
+ hdrs = ["TestLogHandler.h"],
+ deps = [
+ "//folly:map_util",
+ "//folly/logging",
+ "//folly/logging:log_handler",
+ ],
+)
+
+cpp_library(
+ name = "xlog_test_lib",
+ srcs = [
+ "XlogFile1.cpp",
+ "XlogFile2.cpp",
+ ],
+ hdrs = [
+ "XlogHeader1.h",
+ "XlogHeader2.h",
+ ],
+ deps = [
+ "//folly:range",
+ "//folly/logging",
+ ],
+)
+
+cc_binary(
+ name = "xlog_bench",
+ srcs = ["XlogBench.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/init",
+ "//folly/logging",
+ "//folly/logging:init",
+ "//folly/logging:log_handler",
+ "//folly/portability:gflags",
+ "@boost.preprocessor",
+ "@boost.thread",
+ ],
+)
+
+# This test fails for some reason when run with @folly as an external repo.
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "xlog_test",
+# srcs = ["XlogTest.cpp"],
+# deps = [
+# ":test_handler",
+# ":xlog_test_lib",
+# "//folly/logging",
+# "//folly/logging:init",
+# "//folly/logging:log_handler",
+# "//folly/portability:constexpr",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# "//folly/test:test_utils",
+# ],
+# )
+
+cpp_unittest(
+ name = "standard_log_handler_factory_test",
+ srcs = ["StandardLogHandlerFactoryTest.cpp"],
+ deps = [
+ "//folly/logging",
+ "//folly/logging:init",
+ "//folly/logging:log_handler",
+ "//folly/portability:gmock",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_unittest(
+ name = "bridge_from_google_logging_test",
+ srcs = ["BridgeFromGoogleLoggingTest.cpp"],
+ deps = [
+ ":test_handler",
+ "//folly/logging",
+ "//folly/logging:glog_bridge",
+ "//folly/logging:init",
+ "//folly/logging:log_handler",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_unittest(
+ name = "auto_timer_test",
+ srcs = ["AutoTimerTest.cpp"],
+ deps = [
+ "//folly/logging:auto_timer",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/BUILD.bazel
new file mode 100644
index 00000000000..895ec112a13
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/BUILD.bazel
@@ -0,0 +1,177 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "arena",
+ hdrs = [
+ "Arena.h",
+ ],
+ textual_hdrs = [
+ "Arena-inl.h",
+ ],
+ deps = [
+ ":malloc",
+ "//folly:conv",
+ "//folly:likely",
+ "//folly:memory",
+ "//folly/lang:align",
+ "//folly/lang:checked_math",
+ "//folly/lang:exception",
+ "//folly/lang:safe_assert",
+ "@boost.intrusive",
+ ],
+)
+
+cpp_library(
+ name = "mallctl_helper",
+ srcs = ["MallctlHelper.cpp"],
+ hdrs = ["MallctlHelper.h"],
+ deps = [
+ ":malloc",
+ "//folly:format",
+ "//folly:string",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "malloc",
+ hdrs = ["Malloc.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/lang:bits",
+ "//folly/lang:exception",
+ "//folly/memory/detail:malloc_impl",
+ "//folly/portability:malloc",
+ ],
+)
+
+cpp_library(
+ name = "memory_resource",
+ hdrs = ["MemoryResource.h"],
+)
+
+cpp_library(
+ name = "not_null",
+ srcs = [],
+ hdrs = [
+ "not_null.h",
+ ],
+ textual_hdrs = [
+ "not_null-inl.h",
+ ],
+ deps = [
+ "//folly:memory",
+ "//folly:portability",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "reentrant_allocator",
+ srcs = ["ReentrantAllocator.cpp"],
+ hdrs = ["ReentrantAllocator.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/lang:bits",
+ "//folly/lang:safe_assert",
+ "//folly/portability:sys_mman",
+ ],
+)
+
+cpp_library(
+ name = "sanitize_address",
+ srcs = ["SanitizeAddress.cpp"],
+ hdrs = ["SanitizeAddress.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/lang:extern",
+ ],
+)
+
+cpp_library(
+ name = "sanitize_leak",
+ srcs = ["SanitizeLeak.cpp"],
+ hdrs = ["SanitizeLeak.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/lang:extern",
+ ],
+)
+
+cpp_library(
+ name = "thread_cached_arena",
+ srcs = ["ThreadCachedArena.cpp"],
+ hdrs = ["ThreadCachedArena.h"],
+ deps = [
+ "//folly:likely",
+ "//folly:synchronized",
+ "//folly:thread_local",
+ "//folly/memory:arena",
+ ],
+)
+
+cpp_library(
+ name = "uninitialized_memory_hacks",
+ hdrs = ["UninitializedMemoryHacks.h"],
+)
+
+cpp_library(
+ name = "jemalloc_nodump_allocator",
+ srcs = ["JemallocNodumpAllocator.cpp"],
+ hdrs = ["JemallocNodumpAllocator.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:conv",
+ "//folly:string",
+ "//folly/memory:malloc",
+ "//folly/portability:config",
+ "//folly/portability:malloc",
+ "//folly/portability:sys_mman",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "jemalloc_huge_page_allocator",
+ srcs = ["JemallocHugePageAllocator.cpp"],
+ hdrs = ["JemallocHugePageAllocator.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly/memory:malloc",
+ "//folly/portability:malloc",
+ "//folly/portability:string",
+ "//folly/portability:sys_mman",
+ "//folly/portability:sys_types",
+ "@glog",
+ ],
+)
+
+# Disable jemalloc tests.
+#cpp_unittest(
+# name = "jemalloc_huge_page_allocator_test",
+# srcs = ["JemallocHugePageAllocatorTest.cpp"],
+# hdrs = [],
+# allocator = "jemalloc",
+# labels = ["oss-broken"],
+# deps = [
+# "//folly/container:f14_hash",
+# "//folly/memory:jemalloc_huge_page_allocator",
+# "//folly/memory:malloc",
+# "//folly/portability:gtest",
+# ],
+#)
+#
+#cpp_unittest(
+# name = "jemalloc_nodump_allocator_test",
+# srcs = ["JemallocNodumpAllocatorTest.cpp"],
+# hdrs = [],
+# allocator = "jemalloc",
+# deps = [
+# "//folly/io:iobuf",
+# "//folly/memory:jemalloc_nodump_allocator",
+# "//folly/memory:malloc",
+# "//folly/portability:gtest",
+# ],
+#)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/detail/BUILD.bazel
new file mode 100644
index 00000000000..c8a722d1db6
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/detail/BUILD.bazel
@@ -0,0 +1,10 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "malloc_impl",
+ srcs = ["MallocImpl.cpp"],
+ hdrs = ["MallocImpl.h"],
+ deps = ["//folly:portability"],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/test/BUILD.bazel
new file mode 100644
index 00000000000..b82c47d979e
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/memory/test/BUILD.bazel
@@ -0,0 +1,125 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "arena_test",
+ srcs = ["ArenaTest.cpp"],
+ deps = [
+ "//folly:memory",
+ "//folly:random",
+ "//folly/memory:arena",
+ "//folly/memory:mallctl_helper",
+ "//folly/memory:malloc",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "mallctl_helper_test",
+ srcs = ["MallctlHelperTest.cpp"],
+ deps = [
+ "//folly:c_portability",
+ "//folly/init",
+ "//folly/memory:mallctl_helper",
+ "//folly/memory:malloc",
+ "//folly/portability:gtest",
+ "//folly/portability:sys_types",
+ ],
+)
+
+cpp_unittest(
+ name = "malloc_test",
+ srcs = ["MallocTest.cpp"],
+ deps = [
+ "//folly/memory:malloc",
+ "//folly/portability:gtest",
+ "//folly/portability:malloc",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_unittest(
+ name = "memory_resource_test",
+ srcs = ["MemoryResourceTest.cpp"],
+ deps = [
+ "//folly/memory:memory_resource",
+ "//folly/portability:gtest",
+ ],
+)
+
+# NOTE: Test does not work with OSS distribution.
+# cpp_unittest(
+# name = "not_null_test",
+# srcs = [
+# "not_null_test.cpp",
+# ],
+# # target_compatible_with = ["fbcode//opensource/macros:broken-in-oss"],
+# deps = [
+# "//folly/memory:not_null",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "reentrant_allocator_test",
+ srcs = ["ReentrantAllocatorTest.cpp"],
+ deps = [
+ "//folly:utility",
+ "//folly/functional:invoke",
+ "//folly/memory:reentrant_allocator",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "sanitize_address_test",
+ srcs = ["SanitizeAddressTest.cpp"],
+ deps = [
+ "//folly/lang:new",
+ "//folly/memory:sanitize_address",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "sanitize_leak_test",
+ srcs = ["SanitizeLeakTest.cpp"],
+ deps = [
+ "//folly/memory:sanitize_leak",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "thread_cached_arena_test",
+ srcs = ["ThreadCachedArenaTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:memory",
+ "//folly:range",
+ "//folly/lang:align",
+ "//folly/memory:thread_cached_arena",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "uninitialized_memory_hacks_test",
+ srcs = [
+ "UninitializedMemoryHacksODR.cpp",
+ "UninitializedMemoryHacksTest.cpp",
+ ],
+ target_compatible_with = select({
+ # Test relies on char_traits, which isn't available on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:random",
+ "//folly/memory:uninitialized_memory_hacks",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/BUILD.bazel
new file mode 100644
index 00000000000..580288ccd0f
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/BUILD.bazel
@@ -0,0 +1,68 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "net_ops",
+ srcs = ["NetOps.cpp"],
+ hdrs = ["NetOps.h"],
+ deps = [
+ ":network_socket",
+ "//folly:c_portability",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:utility",
+ "//folly/net/detail:socket_file_descriptor_map",
+ "//folly/portability:iovec",
+ "//folly/portability:sys_types",
+ "//folly/portability:time",
+ "//folly/portability:windows",
+ ],
+)
+
+cpp_library(
+ name = "net_ops_dispatcher",
+ srcs = ["NetOpsDispatcher.cpp"],
+ hdrs = ["NetOpsDispatcher.h"],
+ deps = [
+ ":net_ops",
+ ],
+)
+
+cpp_library(
+ name = "network_socket",
+ hdrs = ["NetworkSocket.h"],
+ deps = [
+ "//folly/net/detail:socket_file_descriptor_map",
+ "//folly/portability:windows",
+ ],
+)
+
+cpp_library(
+ name = "tcpinfo",
+ srcs = ["TcpInfo.cpp"],
+ hdrs = [
+ "TcpInfo.h",
+ "TcpInfoTypes.h",
+ ],
+ deps = [
+ ":net_ops_dispatcher",
+ ":network_socket",
+ "//folly:expected",
+ "//folly:optional",
+ "//folly:string",
+ "//folly/portability:sockets",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "tcpinfo_dispatcher",
+ srcs = ["TcpInfoDispatcher.cpp"],
+ hdrs = ["TcpInfoDispatcher.h"],
+ deps = [
+ ":net_ops_dispatcher",
+ ":tcpinfo",
+ "//folly:expected",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/detail/BUILD.bazel
new file mode 100644
index 00000000000..7d41f2336e0
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/detail/BUILD.bazel
@@ -0,0 +1,12 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "socket_file_descriptor_map",
+ srcs = ["SocketFileDescriptorMap.cpp"],
+ hdrs = ["SocketFileDescriptorMap.h"],
+ deps = [
+ "//folly/portability:windows",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/detail/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/detail/test/BUILD.bazel
new file mode 100644
index 00000000000..d2e8eb4b3b9
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/detail/test/BUILD.bazel
@@ -0,0 +1,15 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "socket_file_descriptor_map_test",
+ srcs = ["SocketFileDescriptorMapTest.cpp"],
+ deps = [
+ "//folly:portability",
+ "//folly/net/detail:socket_file_descriptor_map",
+ "//folly/portability:fcntl",
+ "//folly/portability:gtest",
+ "//folly/portability:sockets",
+ "//folly/portability:unistd",
+ "//folly/portability:windows",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/test/BUILD.bazel
new file mode 100644
index 00000000000..50f1c849b55
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/net/test/BUILD.bazel
@@ -0,0 +1,67 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "mock_net_ops_dispatcher",
+ hdrs = [
+ "MockNetOpsDispatcher.h",
+ ],
+ deps = [
+ "//folly/net:net_ops_dispatcher",
+ "//folly/portability:gmock",
+ ],
+)
+
+cpp_library(
+ name = "mock_tcpinfo_dispatcher",
+ hdrs = [
+ "MockTcpInfoDispatcher.h",
+ ],
+ deps = [
+ "//folly/net:tcpinfo_dispatcher",
+ "//folly/portability:gmock",
+ ],
+)
+
+cpp_unittest(
+ name = "net_ops_test",
+ srcs = ["NetOpsTest.cpp"],
+ deps = [
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "tcpinfo_test",
+ srcs = ["TcpInfoTest.cpp"],
+ deps = [
+ ":tcpinfo_test_util",
+ "//folly/net:tcpinfo",
+ "//folly/net/test:mock_net_ops_dispatcher",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "tcpinfo_test_util",
+ hdrs = [
+ "TcpInfoTestUtil.h",
+ ],
+ target_compatible_with = select({
+ # Linux only.
+ "@platforms//os:linux": [],
+ "//conditions:default": ["@platforms//:incompatible"],
+ }),
+ deps = [
+ "//folly/net:tcpinfo",
+ "//folly/net/test:mock_net_ops_dispatcher",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/observer/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/observer/BUILD.bazel
new file mode 100644
index 00000000000..f2f71879680
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/observer/BUILD.bazel
@@ -0,0 +1,110 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "observable",
+ hdrs = [
+ "Observable.h",
+ ],
+ textual_hdrs = [
+ "Observable-inl.h",
+ ],
+ deps = [
+ "//folly/observer",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_library(
+ name = "observer",
+ hdrs = [
+ "Observer.h",
+ ],
+ textual_hdrs = [
+ "Observer-inl.h",
+ "Observer-pre.h",
+ ],
+ deps = [
+ "//folly:shared_mutex",
+ "//folly:synchronized",
+ "//folly:thread_local",
+ "//folly/experimental/observer/detail:observer_manager",
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "hazptr_observer",
+ hdrs = [
+ "HazptrObserver.h",
+ ],
+ deps = [
+ "//folly:synchronized",
+ "//folly/experimental/observer/detail:observer_manager",
+ "//folly/observer",
+ "//folly/synchronization:hazptr",
+ ],
+)
+
+cpp_library(
+ name = "read_mostly_tl_observer",
+ hdrs = [
+ "ReadMostlyTLObserver.h",
+ ],
+ deps = [
+ "//folly/concurrency/memory:read_mostly_shared_ptr",
+ "//folly/experimental/observer/detail:observer_manager",
+ "//folly/observer",
+ ],
+)
+
+cpp_library(
+ name = "core_cached_observer",
+ hdrs = [
+ "CoreCachedObserver.h",
+ ],
+ deps = [
+ "//folly/concurrency:core_cached_shared_ptr",
+ "//folly/experimental/observer/detail:observer_manager",
+ "//folly/observer",
+ ],
+)
+
+cpp_library(
+ name = "simple_observable",
+ hdrs = [
+ "SimpleObservable.h",
+ ],
+ textual_hdrs = [
+ "SimpleObservable-inl.h",
+ ],
+ deps = [
+ "//folly:function",
+ "//folly:synchronized",
+ "//folly/observer",
+ "//folly/observer:observable",
+ "//folly/synchronization:delayed_init",
+ ],
+)
+
+cpp_library(
+ name = "with_jitter",
+ hdrs = [
+ "WithJitter.h",
+ ],
+ textual_hdrs = [
+ "WithJitter-inl.h",
+ ],
+ deps = [
+ "//folly:default_keep_alive_executor",
+ "//folly:random",
+ "//folly:synchronized",
+ "//folly/executors:global_executor",
+ "//folly/futures:core",
+ "//folly/observer",
+ "//folly/observer:observable",
+ "@fmt",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/observer/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/observer/detail/BUILD.bazel
new file mode 100644
index 00000000000..643ea21b393
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/observer/detail/BUILD.bazel
@@ -0,0 +1,41 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "graph_cycle_detector",
+ hdrs = ["GraphCycleDetector.h"],
+ deps = [
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "observer_manager",
+ srcs = [
+ "Core.cpp",
+ "ObserverManager.cpp",
+ ],
+ hdrs = [
+ "Core.h",
+ "ObserverManager.h",
+ ],
+ deps = [
+ "//folly:exception_string",
+ "//folly:format",
+ "//folly:function",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:singleton",
+ "//folly:synchronized",
+ "//folly/concurrency:unbounded_queue",
+ "//folly/experimental/observer/detail:graph_cycle_detector",
+ "//folly/fibers:core_manager",
+ "//folly/functional:invoke",
+ "//folly/futures:core",
+ "//folly/portability:gflags",
+ "//folly/synchronization:sanitize_thread",
+ "//folly/system:thread_name",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/poly/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/poly/BUILD.bazel
new file mode 100644
index 00000000000..52f114e2062
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/poly/BUILD.bazel
@@ -0,0 +1,14 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "basic_interfaces",
+ hdrs = [
+ "Nullable.h",
+ "Regular.h",
+ ],
+ deps = [
+ "//folly:poly",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/portability/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/portability/BUILD.bazel
new file mode 100755
index 00000000000..ea9777e3360
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/portability/BUILD.bazel
@@ -0,0 +1,399 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "asm",
+ hdrs = ["Asm.h"],
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "atomic",
+ hdrs = ["Atomic.h"],
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "builtins",
+ srcs = ["Builtins.cpp"],
+ hdrs = ["Builtins.h"],
+ deps = [
+ ":windows",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "config",
+ hdrs = ["Config.h"],
+ deps = [
+ "//folly:config",
+ ],
+)
+
+cpp_library(
+ name = "constexpr",
+ hdrs = ["Constexpr.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "dirent",
+ srcs = ["Dirent.cpp"],
+ hdrs = ["Dirent.h"],
+ deps = [
+ ":windows",
+ ],
+)
+
+cpp_library(
+ name = "event",
+ hdrs = ["Event.h"],
+ deps = [
+ ":fcntl",
+ ":windows",
+ "//folly/net/detail:socket_file_descriptor_map",
+ "@libevent//:event_core",
+ ],
+)
+
+cpp_library(
+ name = "fcntl",
+ srcs = ["Fcntl.cpp"],
+ hdrs = ["Fcntl.h"],
+ deps = [
+ ":sockets",
+ ":sys_stat",
+ ":windows",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "filesystem",
+ srcs = ["Filesystem.cpp"],
+ hdrs = ["Filesystem.h"],
+)
+
+cpp_library(
+ name = "fmt_compile",
+ hdrs = ["FmtCompile.h"],
+ deps = [
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "gflags",
+ hdrs = ["GFlags.h"],
+ deps = [
+ ":config",
+ "@gflags",
+ ],
+)
+
+cpp_library(
+ name = "gmock",
+ hdrs = ["GMock.h"],
+ deps = [
+ ":unistd",
+ ":windows",
+ "//folly:portability",
+ "@googletest//:gtest",
+ ],
+)
+
+cpp_library(
+ name = "gtest",
+ hdrs = ["GTest.h"],
+ deps = [
+ ":unistd",
+ ":windows",
+ "//folly:portability",
+ "@googletest//:gtest",
+ ],
+)
+
+cpp_library(
+ name = "iovec",
+ hdrs = ["IOVec.h"],
+)
+
+cpp_library(
+ name = "libgen",
+ srcs = ["Libgen.cpp"],
+ hdrs = ["Libgen.h"],
+)
+
+cpp_library(
+ name = "libunwind",
+ hdrs = ["Libunwind.h"],
+ deps = select({
+ "//folly:use_libunwind_setting": ["@libunwind"],
+ "//conditions:default": [],
+ }),
+)
+
+cpp_library(
+ name = "malloc",
+ srcs = ["Malloc.cpp"],
+ hdrs = ["Malloc.h"],
+ deps = [
+ ":config",
+ "//folly:c_portability",
+ ],
+)
+
+cpp_library(
+ name = "math",
+ hdrs = ["Math.h"],
+)
+
+cpp_library(
+ # @shim
+ name = "memory",
+ hdrs = ["Memory.h"],
+ deps = ["//folly:memory"],
+)
+
+cpp_library(
+ name = "openat2",
+ srcs = ["openat2.c"],
+ hdrs = ["openat2.h"],
+ deps = [
+ "//folly:config",
+ ],
+)
+
+cpp_library(
+ name = "openssl",
+ srcs = ["OpenSSL.cpp"],
+ hdrs = ["OpenSSL.h"],
+ deps = [
+ ":windows",
+ "//folly:portability",
+ "@openssl//:crypto",
+ "@openssl//:ssl",
+ ],
+)
+
+cpp_library(
+ name = "sched",
+ srcs = ["Sched.cpp"],
+ hdrs = ["Sched.h"],
+ deps = [
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "pthread",
+ srcs = ["PThread.cpp"],
+ hdrs = ["PThread.h"],
+ linkopts = select({
+ "@platforms//os:windows": [],
+ "//conditions:default": ["-pthread"],
+ }),
+ deps = [
+ ":config",
+ ":sched",
+ ":time",
+ ":windows",
+ "//folly:portability",
+ "//folly/lang:assume",
+ "@boost.core",
+ "@boost.thread",
+ ],
+)
+
+cpp_library(
+ name = "sockets",
+ srcs = ["Sockets.cpp"],
+ hdrs = ["Sockets.h"],
+ deps = [
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly/net:net_ops",
+ "//folly/net:network_socket",
+ "//folly/net/detail:socket_file_descriptor_map",
+ ],
+)
+
+cpp_library(
+ name = "source_location",
+ hdrs = ["SourceLocation.h"],
+ deps = [
+ "@fmt",
+ ],
+)
+
+cpp_library(
+ name = "stdio",
+ srcs = ["Stdio.cpp"],
+ hdrs = ["Stdio.h"],
+ deps = [
+ ":unistd",
+ "//folly:scope_guard",
+ ],
+)
+
+cpp_library(
+ name = "stdlib",
+ srcs = ["Stdlib.cpp"],
+ hdrs = ["Stdlib.h"],
+ deps = [
+ ":config",
+ ":fcntl",
+ ":sys_stat",
+ ":windows",
+ "//folly:c_portability",
+ ],
+)
+
+cpp_library(
+ name = "string",
+ srcs = ["String.cpp"],
+ hdrs = ["String.h"],
+ deps = [":config"],
+)
+
+cpp_library(
+ name = "sys_file",
+ srcs = ["SysFile.cpp"],
+ hdrs = ["SysFile.h"],
+ deps = [
+ ":windows",
+ ],
+)
+
+cpp_library(
+ name = "sys_membarrier",
+ srcs = ["SysMembarrier.cpp"],
+ hdrs = ["SysMembarrier.h"],
+ deps = [
+ ":sys_syscall",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "sys_mman",
+ srcs = ["SysMman.cpp"],
+ hdrs = [
+ "SysMman.h",
+ ],
+ linkopts = select({
+ "@platforms//os:linux": ["-lrt"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":windows",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "sys_resource",
+ srcs = ["SysResource.cpp"],
+ hdrs = ["SysResource.h"],
+ deps = [
+ ":sys_time",
+ ":windows",
+ ],
+)
+
+cpp_library(
+ name = "sys_stat",
+ srcs = ["SysStat.cpp"],
+ hdrs = ["SysStat.h"],
+ deps = [
+ ":sys_types",
+ ":windows",
+ "//folly:c_portability",
+ ],
+)
+
+cpp_library(
+ name = "sys_syscall",
+ hdrs = ["SysSyscall.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "sys_time",
+ srcs = ["SysTime.cpp"],
+ hdrs = ["SysTime.h"],
+ deps = [":windows"],
+)
+
+cpp_library(
+ name = "sys_types",
+ hdrs = ["SysTypes.h"],
+)
+
+cpp_library(
+ name = "sys_uio",
+ srcs = ["SysUio.cpp"],
+ hdrs = ["SysUio.h"],
+ deps = [
+ ":config",
+ ":iovec",
+ ":sockets",
+ ":sys_file",
+ ":sys_types",
+ ":unistd",
+ "//folly:scope_guard",
+ ],
+)
+
+cpp_library(
+ name = "syslog",
+ hdrs = ["Syslog.h"],
+)
+
+cpp_library(
+ name = "time",
+ srcs = ["Time.cpp"],
+ hdrs = ["Time.h"],
+ linkopts = select({
+ "@platforms//os:linux": ["-lrt"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":config",
+ ":windows",
+ "//folly:c_portability",
+ "//folly:likely",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "unistd",
+ srcs = ["Unistd.cpp"],
+ hdrs = ["Unistd.h"],
+ deps = [
+ ":sockets",
+ ":sys_types",
+ ":windows",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly/net/detail:socket_file_descriptor_map",
+ ],
+)
+
+cpp_library(
+ name = "windows",
+ hdrs = ["Windows.h"],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/portability/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/portability/test/BUILD.bazel
new file mode 100644
index 00000000000..9256580b51a
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/portability/test/BUILD.bazel
@@ -0,0 +1,79 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "constexpr_test",
+ srcs = ["ConstexprTest.cpp"],
+ deps = [
+ "//folly/portability:constexpr",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "fcntl_test",
+ srcs = ["FcntlTest.cpp"],
+ deps = [
+ "//folly/portability:fcntl",
+ "//folly/portability:unistd",
+ ],
+)
+
+cpp_unittest(
+ name = "filesystem_test",
+ srcs = ["FilesystemTest.cpp"],
+ deps = [
+ "//folly/portability:filesystem",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "libgen_test",
+ srcs = ["LibgenTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/portability:libgen",
+ ],
+)
+
+cpp_unittest(
+ name = "openssl_portability_test",
+ srcs = ["OpenSSLPortabilityTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/ssl:openssl_ptr_types",
+ ],
+)
+
+cpp_unittest(
+ name = "pthread_test",
+ srcs = ["PThreadTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/portability:pthread",
+ ],
+)
+
+cpp_unittest(
+ name = "time_test",
+ srcs = ["TimeTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/portability:time",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_unittest(
+ name = "unistd_test",
+ srcs = ["UnistdTest.cpp"],
+ deps = [
+ "//folly/portability:unistd",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/settings/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/settings/BUILD.bazel
new file mode 100644
index 00000000000..644aa5a00ca
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/settings/BUILD.bazel
@@ -0,0 +1,74 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "settings",
+ srcs = [
+ "Settings.cpp",
+ ],
+ hdrs = [
+ "Settings.h",
+ "detail/SettingsImpl.h",
+ ],
+ deps = [
+ ":immutables",
+ ":types",
+ "//folly:conv",
+ "//folly:function",
+ "//folly:likely",
+ "//folly:optional",
+ "//folly:range",
+ "//folly:shared_mutex",
+ "//folly:synchronized",
+ "//folly:thread_local",
+ "//folly:utility",
+ "//folly/concurrency:singleton_relaxed_counter",
+ "//folly/container:f14_hash",
+ "//folly/lang:aligned",
+ ],
+)
+
+cpp_library(
+ name = "observer",
+ hdrs = [
+ "Observer.h",
+ ],
+ deps = [
+ ":settings",
+ "//folly/observer",
+ "//folly/observer:simple_observable",
+ ],
+)
+
+cpp_library(
+ name = "types",
+ srcs = [
+ "Types.cpp",
+ ],
+ hdrs = [
+ "Types.h",
+ ],
+ deps = [
+ "//folly:conv",
+ "//folly:expected",
+ "//folly:range",
+ "//folly:unit",
+ "//folly:utility",
+ ],
+)
+
+cpp_library(
+ name = "immutables",
+ srcs = [
+ "Immutables.cpp",
+ ],
+ hdrs = [
+ "Immutables.h",
+ ],
+ deps = [
+ "//folly:indestructible",
+ "//folly:synchronized",
+ "//folly/container:f14_hash",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/settings/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/settings/test/BUILD.bazel
new file mode 100644
index 00000000000..36c685f5f69
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/settings/test/BUILD.bazel
@@ -0,0 +1,59 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+# load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "settings_test",
+# srcs = [
+# "SettingsTest.cpp",
+# ],
+# deps = [
+# ":a",
+# ":b",
+# "//folly:format",
+# "//folly:string",
+# "//folly/experimental/observer/detail:observer_manager",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# "//folly/settings",
+# "//folly/settings:observer",
+# "//folly/synchronization/test:barrier",
+# "@fmt",
+# ],
+# )
+
+cpp_library(
+ name = "a",
+ srcs = [
+ "a.cpp",
+ ],
+ hdrs = [
+ "a.h",
+ ],
+ target_compatible_with = select({
+ # FOLLY_SETTING_DEFINE does not work on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/settings",
+ ],
+)
+
+cpp_library(
+ name = "b",
+ srcs = [
+ "b.cpp",
+ ],
+ hdrs = [
+ "b.h",
+ ],
+ target_compatible_with = select({
+ # FOLLY_SETTING_DEFINE does not work on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/settings",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/BUILD.bazel
new file mode 100644
index 00000000000..cf82dc471ff
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/BUILD.bazel
@@ -0,0 +1,94 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "openssl_ptr_types",
+ hdrs = ["OpenSSLPtrTypes.h"],
+ deps = [
+ "//folly:memory",
+ "//folly/portability:openssl",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "openssl_hash",
+ srcs = ["OpenSSLHash.cpp"],
+ hdrs = ["OpenSSLHash.h"],
+ deps = [
+ ":openssl_ptr_types",
+ "//folly:exception",
+ "//folly:format",
+ "//folly:range",
+ "//folly/io:iobuf",
+ "//folly/portability:openssl",
+ ],
+)
+
+cpp_library(
+ name = "openssl_cert_utils",
+ srcs = ["OpenSSLCertUtils.cpp"],
+ hdrs = ["OpenSSLCertUtils.h"],
+ deps = [
+ ":openssl_ptr_types",
+ "//folly:file_util",
+ "//folly:optional",
+ "//folly:scope_guard",
+ "//folly:string",
+ "//folly/io:iobuf",
+ "//folly/portability:openssl",
+ ],
+)
+
+cpp_library(
+ name = "openssl_version_finder",
+ hdrs = ["OpenSSLVersionFinder.h"],
+ deps = [
+ "//folly/portability:openssl",
+ ],
+)
+
+cpp_library(
+ name = "openssl_ticket_handler",
+ hdrs = ["OpenSSLTicketHandler.h"],
+ deps = [
+ "//folly/portability:openssl",
+ ],
+)
+
+cpp_library(
+ name = "ssl_session",
+ hdrs = ["SSLSession.h"],
+)
+
+cpp_library(
+ name = "ssl_session_manager",
+ srcs = ["SSLSessionManager.cpp"],
+ hdrs = ["SSLSessionManager.h"],
+ deps = [
+ ":openssl_ptr_types",
+ ":ssl_session",
+ "//folly:overload",
+ "//folly/portability:openssl",
+ "//folly/ssl/detail:openssl_session",
+ ],
+)
+
+cpp_library(
+ name = "password_collector",
+ srcs = ["PasswordCollector.cpp"],
+ hdrs = ["PasswordCollector.h"],
+)
+
+cpp_library(
+ name = "openssl_key_utils",
+ srcs = ["OpenSSLKeyUtils.cpp"],
+ hdrs = ["OpenSSLKeyUtils.h"],
+ deps = [
+ ":openssl_ptr_types",
+ ":password_collector",
+ "//folly:range",
+ "//folly/portability:openssl",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/detail/BUILD.bazel
new file mode 100644
index 00000000000..cb08b03ccf4
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/detail/BUILD.bazel
@@ -0,0 +1,16 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "openssl_session",
+ srcs = ["OpenSSLSession.cpp"],
+ hdrs = ["OpenSSLSession.h"],
+ deps = [
+ "//folly:shared_mutex",
+ "//folly:synchronized",
+ "//folly/portability:openssl",
+ "//folly/ssl:openssl_ptr_types",
+ "//folly/ssl:ssl_session",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/test/BUILD.bazel
new file mode 100644
index 00000000000..8842bf00abe
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/ssl/test/BUILD.bazel
@@ -0,0 +1,60 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "openssl_hash_test",
+ srcs = ["OpenSSLHashTest.cpp"],
+ deps = [
+ "//folly/io:iobuf",
+ "//folly/portability:gtest",
+ "//folly/ssl:openssl_hash",
+ ],
+)
+
+cpp_unittest(
+ name = "openssl_cert_utils_test",
+ srcs = ["OpenSSLCertUtilsTest.cpp"],
+ data = [
+ "//folly/io/async/test/certs:ca-cert.pem",
+ "//folly/io/async/test/certs:tests-cert.pem",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:format",
+ "//folly:range",
+ "//folly:string",
+ "//folly/container:enumerate",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/portability:openssl",
+ "//folly/portability:time",
+ "//folly/ssl:openssl_cert_utils",
+ "//folly/ssl:openssl_ptr_types",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "ssl_session_manager_test",
+ srcs = ["SSLSessionManagerTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/portability:openssl",
+ "//folly/ssl:openssl_ptr_types",
+ "//folly/ssl:ssl_session_manager",
+ "//folly/ssl/detail:openssl_session",
+ ],
+)
+
+cpp_unittest(
+ name = "openssl_key_utils_test",
+ srcs = ["OpenSSLKeyUtilsTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/ssl:openssl_key_utils",
+ "//folly/ssl:password_collector",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/BUILD.bazel
new file mode 100644
index 00000000000..404a24a7afd
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/BUILD.bazel
@@ -0,0 +1,145 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "bucketed_time_series",
+ hdrs = [
+ "BucketedTimeSeries.h",
+ ],
+ textual_hdrs = [
+ "BucketedTimeSeries-inl.h",
+ ],
+ deps = [
+ "//folly:likely",
+ "//folly/stats/detail:bucket",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "histogram",
+ hdrs = [
+ "Histogram.h",
+ ],
+ textual_hdrs = [
+ "Histogram-inl.h",
+ ],
+ deps = [
+ "//folly:c_portability",
+ "//folly:conv",
+ "//folly:traits",
+ "//folly/lang:exception",
+ "//folly/stats/detail:bucket",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "streaming_stats",
+ hdrs = [
+ "StreamingStats.h",
+ ],
+ deps = [
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "multi_level_time_series",
+ hdrs = [
+ "MultiLevelTimeSeries.h",
+ ],
+ textual_hdrs = [
+ "MultiLevelTimeSeries-inl.h",
+ ],
+ deps = [
+ ":bucketed_time_series",
+ "//folly:constexpr_math",
+ "//folly:string",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "quantile_estimator",
+ srcs = [
+ "QuantileEstimator.cpp",
+ ],
+ hdrs = [
+ "QuantileEstimator.h",
+ ],
+ textual_hdrs = [
+ "QuantileEstimator-inl.h",
+ ],
+ deps = [
+ ":tdigest",
+ "//folly/stats/detail:buffered_stat",
+ ],
+)
+
+cpp_library(
+ name = "quantile_histogram",
+ hdrs = [
+ "QuantileHistogram.h",
+ ],
+ textual_hdrs = [
+ "QuantileHistogram-inl.h",
+ ],
+ deps = [
+ ":digest_builder",
+ "//folly:conv",
+ "//folly:glog",
+ "//folly:likely",
+ "//folly:range",
+ "//folly:shared_mutex",
+ "//folly/lang:align",
+ ],
+)
+
+cpp_library(
+ name = "tdigest",
+ srcs = [
+ "TDigest.cpp",
+ ],
+ hdrs = [
+ "TDigest.h",
+ ],
+ deps = [
+ "//folly:range",
+ "//folly:utility",
+ "//folly/stats/detail:double_radix_sort",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "digest_builder",
+ srcs = [],
+ hdrs = [
+ "DigestBuilder.h",
+ ],
+ textual_hdrs = [
+ "DigestBuilder-inl.h",
+ ],
+ deps = [
+ "//folly:memory",
+ "//folly:spin_lock",
+ "//folly/concurrency:cache_locality",
+ "//folly/lang:bits",
+ ],
+)
+
+cpp_library(
+ name = "timeseries_histogram",
+ hdrs = [
+ "TimeseriesHistogram.h",
+ ],
+ textual_hdrs = [
+ "TimeseriesHistogram-inl.h",
+ ],
+ deps = [
+ ":histogram",
+ ":multi_level_time_series",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/detail/BUILD.bazel
new file mode 100644
index 00000000000..01e18519953
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/detail/BUILD.bazel
@@ -0,0 +1,50 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "bucket",
+ hdrs = ["Bucket.h"],
+ deps = [
+ "//folly:constexpr_math",
+ ],
+)
+
+cpp_library(
+ name = "buffered_stat",
+ srcs = [],
+ hdrs = [
+ "BufferedStat.h",
+ ],
+ textual_hdrs = [
+ "BufferedStat-inl.h",
+ ],
+ deps = [
+ ":sliding_window",
+ "//folly:shared_mutex",
+ "//folly/stats:digest_builder",
+ ],
+)
+
+cpp_library(
+ name = "sliding_window",
+ hdrs = [
+ "SlidingWindow.h",
+ ],
+ textual_hdrs = [
+ "SlidingWindow-inl.h",
+ ],
+ deps = [
+ "//folly:function",
+ ],
+)
+
+cpp_library(
+ name = "double_radix_sort",
+ srcs = [
+ "DoubleRadixSort.cpp",
+ ],
+ hdrs = [
+ "DoubleRadixSort.h",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/detail/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/detail/test/BUILD.bazel
new file mode 100644
index 00000000000..5c87b3ecbc3
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/detail/test/BUILD.bazel
@@ -0,0 +1,11 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "double_radix_sort_test",
+ srcs = ["DoubleRadixSortTest.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly/portability:gtest",
+ "//folly/stats/detail:double_radix_sort",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/test/BUILD.bazel
new file mode 100644
index 00000000000..412bbfc37fd
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/stats/test/BUILD.bazel
@@ -0,0 +1,108 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "buffered_stat_test",
+ srcs = ["BufferedStatTest.cpp"],
+ deps = [
+ "//folly:range",
+ "//folly/portability:gtest",
+ "//folly/stats/detail:buffered_stat",
+ ],
+)
+
+cpp_unittest(
+ name = "digest_builder_test",
+ srcs = ["DigestBuilderTest.cpp"],
+ deps = [
+ "//folly:range",
+ "//folly/portability:gtest",
+ "//folly/stats:digest_builder",
+ ],
+)
+
+cpp_unittest(
+ name = "histogram_test",
+ srcs = ["HistogramTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/stats:histogram",
+ ],
+)
+
+cpp_unittest(
+ name = "streaming_stats_test",
+ srcs = ["StreamingStatsTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/stats:streaming_stats",
+ ],
+)
+
+cpp_unittest(
+ name = "quantile_estimator_test",
+ srcs = ["QuantileEstimatorTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/stats:quantile_estimator",
+ ],
+)
+
+cpp_unittest(
+ name = "quantile_histogram_test",
+ srcs = ["QuantileHistogramTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:range",
+ "//folly/portability:gtest",
+ "//folly/stats:quantile_histogram",
+ ],
+)
+
+cpp_unittest(
+ name = "sliding_window_test",
+ srcs = ["SlidingWindowTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/stats/detail:sliding_window",
+ ],
+)
+
+cpp_unittest(
+ name = "tdigest_test",
+ srcs = ["TDigestTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/stats:tdigest",
+ ],
+)
+
+cpp_unittest(
+ name = "time_series_test",
+ srcs = ["TimeSeriesTest.cpp"],
+ deps = [
+ "//folly/container:foreach",
+ "//folly/portability:gtest",
+ "//folly/stats:bucketed_time_series",
+ "//folly/stats:multi_level_time_series",
+ "//folly/stats/detail:bucket",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "timeseries_histogram_test",
+ srcs = ["TimeseriesHistogramTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/stats:timeseries_histogram",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/BUILD.bazel
new file mode 100644
index 00000000000..03a9a4e9cc4
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/BUILD.bazel
@@ -0,0 +1,405 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "asymmetric_thread_fence",
+ srcs = ["AsymmetricThreadFence.cpp"],
+ hdrs = ["AsymmetricThreadFence.h"],
+ deps = [
+ ":relaxed_atomic",
+ "//folly:exception",
+ "//folly:indestructible",
+ "//folly/portability:asm",
+ "//folly/portability:sys_membarrier",
+ "//folly/portability:sys_mman",
+ ],
+)
+
+cpp_library(
+ name = "atomic_ref",
+ hdrs = ["AtomicRef.h"],
+ deps = [
+ "//folly:traits",
+ "//folly/lang:safe_assert",
+ ],
+)
+
+cpp_library(
+ name = "atomic_util",
+ hdrs = [
+ "AtomicUtil.h",
+ ],
+ textual_hdrs = [
+ "AtomicUtil-inl.h",
+ ],
+ deps = [
+ "//folly:constexpr_math",
+ "//folly:likely",
+ "//folly:portability",
+ "//folly:traits",
+ ],
+)
+
+cpp_library(
+ name = "atomic_notification",
+ srcs = [
+ "AtomicNotification.cpp",
+ ],
+ hdrs = [
+ "AtomicNotification.h",
+ ],
+ textual_hdrs = [
+ "AtomicNotification-inl.h",
+ ],
+ deps = [
+ ":parking_lot",
+ "//folly:portability",
+ "//folly/detail:futex",
+ ],
+)
+
+cpp_library(
+ name = "atomic_struct",
+ hdrs = ["AtomicStruct.h"],
+ deps = [
+ "//folly:constexpr_math",
+ "//folly:traits",
+ "//folly/synchronization/detail:atomic_utils",
+ ],
+)
+
+cpp_library(
+ name = "baton",
+ hdrs = ["Baton.h"],
+ deps = [
+ ":atomic_util",
+ ":wait_options",
+ "//folly:likely",
+ "//folly/detail:async_trace",
+ "//folly/detail:futex",
+ "//folly/detail:memory_idler",
+ "//folly/portability:asm",
+ "//folly/synchronization/detail:spin",
+ ],
+)
+
+cpp_library(
+ name = "call_once",
+ hdrs = ["CallOnce.h"],
+ deps = [
+ "//folly:likely",
+ "//folly:micro_lock",
+ "//folly:portability",
+ "//folly:shared_mutex",
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "distributed_mutex",
+ srcs = [
+ "DistributedMutex.cpp",
+ ],
+ hdrs = [
+ "DistributedMutex.h",
+ ],
+ textual_hdrs = [
+ "DistributedMutex-inl.h",
+ ],
+ deps = [
+ ":atomic_notification",
+ ":atomic_util",
+ ":lock",
+ "//folly:constexpr_math",
+ "//folly:function",
+ "//folly:likely",
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:utility",
+ "//folly/chrono:hardware",
+ "//folly/detail:futex",
+ "//folly/functional:invoke",
+ "//folly/lang:align",
+ "//folly/lang:bits",
+ "//folly/lang:exception",
+ "//folly/portability:asm",
+ "//folly/synchronization/detail:inline_function_ref",
+ "//folly/synchronization/detail:sleeper",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "hazptr",
+ srcs = [
+ "Hazptr.cpp",
+ "HazptrDomain.cpp",
+ ],
+ hdrs = [
+ "Hazptr.h",
+ "Hazptr-fwd.h",
+ "HazptrDomain.h",
+ "HazptrHolder.h",
+ "HazptrObj.h",
+ "HazptrObjLinked.h",
+ "HazptrRec.h",
+ "HazptrThrLocal.h",
+ ],
+ deps = [
+ ":asymmetric_thread_fence",
+ "//folly:c_portability",
+ "//folly:executor",
+ "//folly:indestructible",
+ "//folly:memory",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:singleton_thread_local",
+ "//folly:traits",
+ "//folly/concurrency:cache_locality",
+ "//folly/container:f14_hash",
+ "//folly/executors:inline_executor",
+ "//folly/portability:config",
+ "//folly/portability:gflags",
+ "//folly/synchronization/detail:hazptr_utils",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "hazptr_thread_pool_executor",
+ srcs = ["HazptrThreadPoolExecutor.cpp"],
+ hdrs = [
+ "HazptrThreadPoolExecutor.h",
+ ],
+ deps = [
+ ":hazptr",
+ "//folly:singleton",
+ "//folly/executors:cpu_thread_pool_executor",
+ ],
+)
+
+cpp_library(
+ name = "latch",
+ hdrs = ["Latch.h"],
+ deps = [
+ ":saturating_semaphore",
+ "//folly:c_portability",
+ "//folly:likely",
+ "//folly/lang:exception",
+ ],
+)
+
+cpp_library(
+ name = "lifo_sem",
+ hdrs = ["LifoSem.h"],
+ deps = [
+ ":atomic_struct",
+ ":saturating_semaphore",
+ "//folly:c_portability",
+ "//folly:indexed_mem_pool",
+ "//folly:likely",
+ "//folly:portability",
+ "//folly:traits",
+ "//folly/detail:static_singleton_manager",
+ "//folly/lang:aligned",
+ "//folly/lang:safe_assert",
+ ],
+)
+
+cpp_library(
+ name = "lock",
+ hdrs = ["Lock.h"],
+ deps = [
+ "//folly:portability",
+ "//folly:traits",
+ "//folly/functional:invoke",
+ "//folly/lang:exception",
+ "//folly/lang:hint",
+ ],
+)
+
+cpp_library(
+ name = "micro_spin_lock",
+ hdrs = ["MicroSpinLock.h"],
+ deps = [
+ ":sanitize_thread",
+ "//folly:portability",
+ "//folly/lang:align",
+ "//folly/synchronization/detail:sleeper",
+ ],
+)
+
+cpp_library(
+ name = "native_semaphore",
+ hdrs = ["NativeSemaphore.h"],
+ deps = [
+ "//folly:utility",
+ "//folly/lang:exception",
+ "//folly/portability:windows",
+ ],
+)
+
+cpp_library(
+ name = "pico_spin_lock",
+ hdrs = ["PicoSpinLock.h"],
+ deps = [
+ ":atomic_ref",
+ ":atomic_util",
+ ":sanitize_thread",
+ "//folly:portability",
+ "//folly/lang:safe_assert",
+ "//folly/synchronization/detail:sleeper",
+ ],
+)
+
+cpp_library(
+ name = "parking_lot",
+ srcs = [
+ "ParkingLot.cpp",
+ ],
+ hdrs = ["ParkingLot.h"],
+ deps = [
+ "//folly:hash",
+ "//folly:indestructible",
+ "//folly:portability",
+ "//folly:unit",
+ "//folly/lang:safe_assert",
+ ],
+)
+
+cpp_library(
+ name = "rcu",
+ srcs = [
+ "Rcu.cpp",
+ ],
+ hdrs = [
+ "Rcu.h",
+ ],
+ deps = [
+ "//folly:function",
+ "//folly:indestructible",
+ "//folly:optional",
+ "//folly/detail:static_singleton_manager",
+ "//folly/detail:turn_sequencer",
+ "//folly/executors:queued_immediate_executor",
+ "//folly/synchronization/detail:rcu-detail",
+ ],
+)
+
+cpp_library(
+ name = "rw_spin_lock",
+ hdrs = ["RWSpinLock.h"],
+ deps = [
+ ":lock",
+ "//folly:likely",
+ "//folly:portability",
+ "//folly/portability:asm",
+ ],
+)
+
+cpp_library(
+ name = "relaxed_atomic",
+ hdrs = ["RelaxedAtomic.h"],
+)
+
+cpp_library(
+ name = "sanitize_thread",
+ srcs = [
+ "SanitizeThread.cpp",
+ ],
+ hdrs = ["SanitizeThread.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/lang:extern",
+ ],
+)
+
+cpp_library(
+ name = "saturating_semaphore",
+ hdrs = ["SaturatingSemaphore.h"],
+ deps = [
+ ":atomic_util",
+ ":wait_options",
+ "//folly:likely",
+ "//folly/detail:futex",
+ "//folly/detail:memory_idler",
+ "//folly/portability:asm",
+ "//folly/synchronization/detail:spin",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "small_locks",
+ hdrs = ["SmallLocks.h"],
+ deps = [
+ ":micro_spin_lock",
+ ":pico_spin_lock",
+ "//folly:micro_lock",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "wait_options",
+ srcs = ["WaitOptions.cpp"],
+ hdrs = ["WaitOptions.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:portability",
+ ],
+)
+
+cpp_library(
+ name = "delayed_init",
+ hdrs = ["DelayedInit.h"],
+ deps = [
+ ":call_once",
+ "//folly/lang:safe_assert",
+ ],
+)
+
+cpp_library(
+ name = "throttled_lifo_sem",
+ hdrs = [
+ "ThrottledLifoSem.h",
+ ],
+ deps = [
+ ":distributed_mutex",
+ ":saturating_semaphore",
+ ":wait_options",
+ "//folly:glog",
+ "//folly:intrusive_list",
+ "//folly:optional",
+ "//folly/lang:align",
+ "//folly/synchronization/detail:spin",
+ ],
+)
+
+cpp_library(
+ name = "flat_combining",
+ hdrs = ["FlatCombining.h"],
+ deps = [
+ "//folly:function",
+ "//folly:indexed_mem_pool",
+ "//folly:portability",
+ "//folly/concurrency:cache_locality",
+ "//folly/synchronization:saturating_semaphore",
+ "//folly/system:thread_name",
+ ],
+)
+
+cpp_library(
+ name = "event_count",
+ hdrs = ["EventCount.h"],
+ deps = [
+ "//folly:likely",
+ "//folly/detail:futex",
+ "//folly/lang:bits",
+ "//folly/portability:sys_time",
+ "//folly/portability:unistd",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/detail/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/detail/BUILD.bazel
new file mode 100644
index 00000000000..083a1cebc8b
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/detail/BUILD.bazel
@@ -0,0 +1,93 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "atomic_utils",
+ hdrs = ["AtomicUtils.h"],
+ deps = [
+ "//folly/lang:assume",
+ ],
+)
+
+cpp_library(
+ name = "hazptr_utils",
+ hdrs = [
+ "HazptrUtils.h",
+ ],
+ deps = [
+ ":sleeper",
+ "//folly:portability",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "rcu-detail",
+ hdrs = [
+ "ThreadCachedLists.h",
+ "ThreadCachedReaders.h",
+ "ThreadCachedTag.h",
+ ],
+ deps = [
+ "//folly:function",
+ "//folly:synchronized",
+ "//folly:thread_local",
+ "//folly/synchronization:asymmetric_thread_fence",
+ "//folly/synchronization:relaxed_atomic",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "sleeper",
+ srcs = ["Sleeper.cpp"],
+ hdrs = ["Sleeper.h"],
+ deps = [
+ "//folly:portability",
+ "//folly/portability:asm",
+ ],
+)
+
+cpp_library(
+ name = "spin",
+ hdrs = ["Spin.h"],
+ deps = [
+ "//folly/portability:asm",
+ "//folly/synchronization:wait_options",
+ ],
+)
+
+cpp_library(
+ name = "inline_function_ref",
+ hdrs = [
+ "InlineFunctionRef.h",
+ "//folly:function",
+ "//folly:traits",
+ "//folly:utility",
+ "//folly/functional:invoke",
+ ],
+)
+
+cpp_library(
+ name = "hardware",
+ #srcs = [
+ # # Use source-specific flags so that these flags aren't applied to this
+ # # rules headers when they're compiled as a module, as they don't contain
+ # # any code that requires RTM and they'd conflict when imported by
+ # # dependents that don't also set it.
+ # (
+ # "Hardware.cpp",
+ # ["-mrtm"],
+ # ),
+ #],
+ srcs = ["Hardware.cpp"],
+ hdrs = ["Hardware.h"],
+ deps = [
+ "//folly:cpp_attributes",
+ "//folly:portability",
+ "//folly/lang:assume",
+ "//folly/lang:exception",
+ "@boost.preprocessor",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/detail/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/detail/test/BUILD.bazel
new file mode 100644
index 00000000000..8231213c7b2
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/detail/test/BUILD.bazel
@@ -0,0 +1,24 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "inline_function_ref_test",
+ srcs = [
+ "InlineFunctionRefTest.cpp",
+ ],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization/detail:inline_function_ref",
+ ],
+)
+
+cpp_unittest(
+ name = "hardware_test",
+ srcs = [
+ "HardwareTest.cpp",
+ ],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization/detail:hardware",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/example/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/example/BUILD.bazel
new file mode 100644
index 00000000000..5bdcd157430
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/example/BUILD.bazel
@@ -0,0 +1,27 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "hazptr_lock_free_lifo",
+ hdrs = ["HazptrLockFreeLIFO.h"],
+ deps = [
+ "//folly/synchronization:hazptr",
+ ],
+)
+
+cpp_library(
+ name = "hazptr_swmr_set",
+ hdrs = ["HazptrSWMRSet.h"],
+ deps = [
+ "//folly/synchronization:hazptr",
+ ],
+)
+
+cpp_library(
+ name = "hazptr_wide_cas",
+ hdrs = ["HazptrWideCAS.h"],
+ deps = [
+ "//folly/synchronization:hazptr",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/test/BUILD.bazel
new file mode 100644
index 00000000000..5fc01cb9d7b
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/synchronization/test/BUILD.bazel
@@ -0,0 +1,438 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_unittest(
+ name = "atomic_notification_test",
+ srcs = [
+ "AtomicNotificationTest.cpp",
+ ],
+ deps = [
+ "//folly:optional",
+ "//folly/portability:gtest",
+ "//folly/synchronization:atomic_notification",
+ ],
+)
+
+cpp_unittest(
+ name = "atomic_ref_test",
+ srcs = ["AtomicRefTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization:atomic_ref",
+ ],
+)
+
+cpp_unittest(
+ name = "atomic_struct_test",
+ srcs = ["AtomicStructTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization:atomic_struct",
+ ],
+)
+
+cpp_unittest(
+ name = "atomic_util_test",
+ srcs = ["AtomicUtilTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:benchmark",
+ "//folly:portability",
+ "//folly:utility",
+ "//folly/functional:invoke",
+ "//folly/portability:gtest",
+ "//folly/synchronization:atomic_ref",
+ "//folly/synchronization:atomic_util",
+ ],
+)
+
+cpp_library(
+ name = "barrier",
+ hdrs = ["Barrier.h"],
+)
+
+cpp_unittest(
+ name = "barrier_test",
+ srcs = ["BarrierTest.cpp"],
+ deps = [
+ ":barrier",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "baton_test",
+ srcs = ["BatonTest.cpp"],
+ deps = [
+ ":baton_test_helpers",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "//folly/test:deterministic_schedule",
+ ],
+)
+
+cpp_library(
+ name = "baton_test_helpers",
+ hdrs = ["BatonTestHelpers.h"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "//folly/test:deterministic_schedule",
+ ],
+)
+
+cc_binary(
+ name = "call_once_benchmark",
+ srcs = ["CallOnceBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/synchronization:call_once",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "call_once_test",
+ srcs = ["CallOnceTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:traits",
+ "//folly/portability:gtest",
+ "//folly/synchronization:call_once",
+ ],
+)
+
+cpp_unittest(
+ name = "delayed_init_test",
+ srcs = ["DelayedInitTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":barrier",
+ "//folly/portability:gtest",
+ "//folly/synchronization:delayed_init",
+ "@fmt",
+ ],
+)
+
+cpp_unittest(
+ name = "distributed_mutex_test",
+ size = "large",
+ srcs = [
+ "DistributedMutexTest.cpp",
+ ],
+ deps = [
+ "//folly:map_util",
+ "//folly:synchronized",
+ "//folly/container:array",
+ "//folly/container:foreach",
+ "//folly/lang:customization_point",
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "//folly/synchronization:distributed_mutex",
+ "//folly/test:deterministic_schedule",
+ "//folly/test:test_utils",
+ ],
+)
+
+cpp_unittest(
+ name = "hazptr_test",
+ srcs = ["HazptrTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":barrier",
+ "//folly:singleton",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/synchronization:hazptr",
+ "//folly/synchronization:hazptr_thread_pool_executor",
+ "//folly/synchronization/example:hazptr_lock_free_lifo",
+ "//folly/synchronization/example:hazptr_swmr_set",
+ "//folly/synchronization/example:hazptr_wide_cas",
+ "//folly/test:deterministic_schedule",
+ ],
+)
+
+cpp_unittest(
+ name = "latch_test",
+ srcs = ["LatchTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization:latch",
+ ],
+)
+
+cpp_unittest(
+ name = "lifo_sem_test",
+ srcs = ["LifoSemTests.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly/portability:asm",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/synchronization:lifo_sem",
+ "//folly/synchronization:native_semaphore",
+ "//folly/test:deterministic_schedule",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "lock_test",
+# srcs = ["LockTest.cpp"],
+# deps = [
+# "//folly/portability:gtest",
+# "//folly/synchronization:lock",
+# ],
+# )
+
+cpp_unittest(
+ name = "native_semaphore_test",
+ srcs = ["NativeSemaphoreTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization:native_semaphore",
+ ],
+)
+
+cc_binary(
+ name = "parking_lot_benchmark",
+ srcs = ["ParkingLotBenchmark.cpp"],
+ deps = [
+ ":barrier",
+ "//folly:benchmark",
+ "//folly/detail:futex",
+ "//folly/synchronization:baton",
+ "//folly/synchronization:parking_lot",
+ ],
+)
+
+cpp_unittest(
+ name = "parking_lot_test",
+ srcs = ["ParkingLotTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "//folly/synchronization:parking_lot",
+ ],
+)
+
+cc_binary(
+ name = "rcu_bench",
+ srcs = ["RcuBench.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/synchronization:rcu",
+ ],
+)
+
+cpp_unittest(
+ name = "rcu_test",
+ srcs = ["RcuTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:random",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/synchronization:rcu",
+ "//folly/synchronization:relaxed_atomic",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "relaxed_atomic_test",
+ srcs = ["RelaxedAtomicTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization:atomic_util",
+ "//folly/synchronization:relaxed_atomic",
+ ],
+)
+
+cpp_unittest(
+ name = "rw_spin_lock_test",
+ srcs = ["RWSpinLockTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/portability:unistd",
+ "//folly/synchronization:rw_spin_lock",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "saturating_semaphore_test",
+ srcs = ["SaturatingSemaphoreTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization:saturating_semaphore",
+ "//folly/test:deterministic_schedule",
+ ],
+)
+
+cpp_library(
+ name = "semaphore",
+ hdrs = ["Semaphore.h"],
+ deps = [
+ "//folly:optional",
+ "//folly:scope_guard",
+ "//folly/lang:exception",
+ "@boost.intrusive",
+ ],
+)
+
+cpp_unittest(
+ name = "semaphore_test",
+ srcs = ["SemaphoreTest.cpp"],
+ deps = [
+ ":barrier",
+ ":semaphore",
+ "//folly:traits",
+ "//folly/portability:gtest",
+ "//folly/portability:sys_mman",
+ "//folly/synchronization:latch",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "small_locks_test",
+ srcs = ["SmallLocksTest.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly/portability:asm",
+ "//folly/portability:gflags",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/portability:pthread",
+ "//folly/portability:unistd",
+ "//folly/synchronization:small_locks",
+ "//folly/test:test_utils",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "thread_cached_epoch_bench_util",
+ hdrs = ["ThreadCachedEpochBench.h"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/synchronization/detail:rcu-detail",
+ ],
+)
+
+cc_binary(
+ name = "thread_cached_readers_bench",
+ srcs = ["ThreadCachedReadersBench.cpp"],
+ deps = [
+ ":thread_cached_epoch_bench_util",
+ "//folly:benchmark",
+ "//folly/synchronization/detail:rcu-detail",
+ ],
+)
+
+cpp_unittest(
+ name = "thread_cached_readers_test",
+ srcs = ["ThreadCachedReadersTest.cpp"],
+ deps = [
+ "//folly:thread_local",
+ "//folly/portability:gtest",
+ "//folly/synchronization/detail:rcu-detail",
+ ],
+)
+
+cpp_unittest(
+ name = "throttled_lifo_sem_test",
+ srcs = [
+ "ThrottledLifoSemTest.cpp",
+ ],
+ deps = [
+ "//folly:benchmark",
+ "//folly:random",
+ "//folly/portability:gtest",
+ "//folly/synchronization:saturating_semaphore",
+ "//folly/synchronization:throttled_lifo_sem",
+ ],
+)
+
+cpp_library(
+ name = "flat_combining_examples",
+ hdrs = ["FlatCombiningExamples.h"],
+ deps = [
+ "//folly/synchronization:baton",
+ "//folly/synchronization:flat_combining",
+ ],
+)
+
+cpp_library(
+ name = "flat_combining_test_helpers",
+ hdrs = ["FlatCombiningTestHelpers.h"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/synchronization/test:flat_combining_examples",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "flat_combining_benchmark",
+ srcs = ["FlatCombiningBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/portability:gtest",
+ "//folly/synchronization/test:flat_combining_test_helpers",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "flat_combining_test",
+ srcs = ["FlatCombiningTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/synchronization/test:flat_combining_test_helpers",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "event_count_test",
+ srcs = ["EventCountTest.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly/portability:gtest",
+ "//folly/synchronization:event_count",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/system/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/system/BUILD.bazel
new file mode 100644
index 00000000000..34a47ba7200
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/system/BUILD.bazel
@@ -0,0 +1,125 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "at_fork",
+ srcs = ["AtFork.cpp"],
+ hdrs = ["AtFork.h"],
+ deps = [
+ "//folly:function",
+ "//folly:scope_guard",
+ "//folly/lang:exception",
+ "//folly/portability:pthread",
+ "//folly/portability:sys_types",
+ "//folly/synchronization:sanitize_thread",
+ ],
+)
+
+cpp_library(
+ name = "aux_vector",
+ hdrs = ["AuxVector.h"],
+ deps = [
+ "//folly:portability",
+ "//folly:preprocessor",
+ ],
+)
+
+cpp_library(
+ name = "env_util",
+ srcs = ["EnvUtil.cpp"],
+ hdrs = ["EnvUtil.h"],
+ deps = [
+ "//folly:c_portability",
+ "//folly:memory",
+ "//folly:string",
+ "//folly/portability:stdlib",
+ "//folly/portability:unistd",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "hardware_concurrency",
+ srcs = ["HardwareConcurrency.cpp"],
+ hdrs = [
+ "HardwareConcurrency.h",
+ ],
+ deps = [
+ "//folly/portability:sched",
+ ],
+)
+
+cpp_library(
+ name = "memory_mapping",
+ srcs = ["MemoryMapping.cpp"],
+ hdrs = ["MemoryMapping.h"],
+ deps = [
+ "//folly:file",
+ "//folly:portability",
+ "//folly:range",
+ "//folly/portability:gflags",
+ "//folly/portability:sys_mman",
+ "//folly/portability:sys_syscall",
+ "//folly/portability:unistd",
+ "@fmt",
+ "@glog",
+ ] + select({
+ "@platforms//os:linux": ["//folly/experimental/io:huge_pages"],
+ "//conditions:default": [],
+ }),
+)
+
+cpp_library(
+ name = "pid",
+ srcs = ["Pid.cpp"],
+ hdrs = ["Pid.h"],
+ deps = [
+ ":at_fork",
+ "//folly/portability:sys_types",
+ "//folly/portability:unistd",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "shell",
+ srcs = ["Shell.cpp"],
+ hdrs = ["Shell.h"],
+ deps = [
+ "//folly:conv",
+ "//folly:format",
+ "//folly:range",
+ ],
+)
+
+cpp_library(
+ name = "thread_id",
+ srcs = ["ThreadId.cpp"],
+ hdrs = ["ThreadId.h"],
+ deps = [
+ ":at_fork",
+ "//folly:likely",
+ "//folly/portability:pthread",
+ "//folly/portability:sys_syscall",
+ "//folly/portability:unistd",
+ "//folly/portability:windows",
+ "//folly/synchronization:relaxed_atomic",
+ ],
+)
+
+cpp_library(
+ name = "thread_name",
+ srcs = ["ThreadName.cpp"],
+ hdrs = ["ThreadName.h"],
+ deps = [
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly:traits",
+ "//folly/portability:config",
+ "//folly/portability:pthread",
+ "//folly/portability:windows",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/system/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/system/test/BUILD.bazel
new file mode 100644
index 00000000000..c12eba48ec8
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/system/test/BUILD.bazel
@@ -0,0 +1,109 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "at_fork_test",
+ srcs = ["AtForkTest.cpp"],
+ deps = [
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/system:at_fork",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "aux_vector_test",
+ srcs = ["AuxVectorTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/system:aux_vector",
+ ],
+)
+
+cc_binary(
+ name = "env_util_subprocess",
+ srcs = ["EnvUtilSubprocess.cpp"],
+)
+
+cpp_unittest(
+ name = "env_util_test",
+ srcs = ["EnvUtilTest.cpp"],
+ args = [
+ "--env_util_subprocess_binary=$(rootpath :env_util_subprocess)",
+ ],
+ data = [":env_util_subprocess"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":env_util_subprocess",
+ "//folly:memory",
+ "//folly:subprocess",
+ "//folly/container:array",
+ "//folly/portability:fcntl",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/portability:stdlib",
+ "//folly/system:env_util",
+ "@boost.algorithm",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "pid_test",
+ srcs = ["PidTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/system:pid",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "memory_mapping_test",
+ srcs = ["MemoryMappingTest.cpp"],
+ deps = [
+ "//folly:file_util",
+ "//folly:random",
+ "//folly/portability:gtest",
+ "//folly/portability:sys_mman",
+ "//folly/system:memory_mapping",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "shell_test",
+ srcs = ["ShellTest.cpp"],
+ deps = [
+ "//folly/portability:gtest",
+ "//folly/system:shell",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "thread_id_test",
+ srcs = ["ThreadIdTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/portability:gtest",
+ "//folly/portability:unistd",
+ "//folly/system:thread_id",
+ ],
+)
+
+cpp_unittest(
+ name = "thread_name_test",
+ srcs = ["ThreadNameTest.cpp"],
+ deps = [
+ "//folly:scope_guard",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ "//folly/system:thread_name",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/BUILD.bazel
new file mode 100644
index 00000000000..015f2bace8a
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/BUILD.bazel
@@ -0,0 +1,1496 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_library.bzl", "cpp_library")
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_unittest(
+ name = "ahm_int_stress_test",
+ srcs = ["AHMIntStressTest.cpp"],
+ deps = [
+ "//folly:atomic_hash_map",
+ "//folly:memory",
+ "//folly:scope_guard",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "unicode_test",
+ srcs = ["UnicodeTest.cpp"],
+ deps = [
+ "//folly:range",
+ "//folly:unicode",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "arena_smart_ptr_test",
+ srcs = ["ArenaSmartPtrTest.cpp"],
+ deps = [
+ "//folly:memory",
+ "//folly/memory:arena",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "ascii_case_insensitive_test",
+ srcs = ["AsciiCaseInsensitiveTest.cpp"],
+ deps = [
+ "//folly:range",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "base64_test",
+ srcs = ["base64_test.cpp"],
+ deps = [
+ "//folly:base64",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "concurrent_bit_set_test",
+ srcs = ["ConcurrentBitSetTest.cpp"],
+ deps = [
+ "//folly:concurrent_bit_set",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "buffered_atomic_test",
+ srcs = ["BufferedAtomicTest.cpp"],
+ deps = [
+ ":deterministic_schedule",
+ "//folly:singleton_thread_local",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "atomic_hash_array_test",
+ srcs = ["AtomicHashArrayTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:atomic_hash_array",
+ "//folly:conv",
+ "//folly:memory",
+ "//folly/hash",
+ "//folly/portability:gtest",
+ "//folly/portability:string",
+ "//folly/portability:sys_mman",
+ ],
+)
+
+cpp_unittest(
+ name = "atomic_hash_map_test",
+ size = "medium",
+ srcs = ["AtomicHashMapTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:atomic_hash_map",
+ "//folly:benchmark",
+ "//folly:conv",
+ "//folly/portability:atomic",
+ "//folly/portability:gtest",
+ "//folly/portability:sys_time",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "atomic_linked_list_test",
+ srcs = ["AtomicLinkedListTest.cpp"],
+ deps = [
+ "//folly:atomic_linked_list",
+ "//folly:utility",
+ "//folly/portability:gtest",
+ "//folly/synchronization/test:barrier",
+ ],
+)
+
+cpp_unittest(
+ name = "atomic_unordered_map_test",
+ srcs = ["AtomicUnorderedMapTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":deterministic_schedule",
+ "//folly:atomic_unordered_map",
+ "//folly:benchmark",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ ],
+)
+
+# NOTE: Parsing the output of the perf command seems to not be working as expected in this test.
+# cpp_unittest(
+# name = "benchmark_test",
+# srcs = ["BenchmarkTest.cpp"],
+# deps = [
+# ":test_utils",
+# "//folly:benchmark",
+# "//folly/detail:perf_scoped",
+# "//folly/portability:gflags",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "cancellation_token_test",
+ srcs = ["CancellationTokenTest.cpp"],
+ deps = [
+ "//folly:cancellation_token",
+ "//folly:optional",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "chrono_test",
+ srcs = ["ChronoTest.cpp"],
+ deps = [
+ "//folly:chrono",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "clock_gettime_wrappers_test",
+ srcs = ["ClockGettimeWrappersTest.cpp"],
+ deps = [
+ ":test_utils",
+ "//folly:clock_gettime_wrappers",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "concurrent_lazy_test",
+ srcs = ["ConcurrentLazyTest.cpp"],
+ deps = [
+ "//folly:concurrent_lazy",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "concurrent_skip_list_test",
+ size = "medium",
+ srcs = ["ConcurrentSkipListTest.cpp"],
+ deps = [
+ "//folly:concurrent_skip_list",
+ "//folly:memory",
+ "//folly:string",
+ "//folly/container:foreach",
+ "//folly/memory:arena",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "constexpr_math_test",
+ srcs = ["ConstexprMathTest.cpp"],
+ deps = [
+ "//folly:constexpr_math",
+ "//folly/lang:bits",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "constructor_callback_list_test",
+ srcs = ["ConstructorCallbackListTest.cpp"],
+ deps = [
+ "//folly:constructor_callback_list",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "conv_benchmark",
+ srcs = ["ConvBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:conv",
+ "//folly:cpp_attributes",
+ "//folly/container:foreach",
+ "//folly/lang:to_ascii",
+ "@boost.conversion",
+ ],
+)
+
+cpp_unittest(
+ name = "conv_test",
+ srcs = ["ConvTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:random",
+ "//folly/container:foreach",
+ "//folly/portability:gtest",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "cpu_id_test",
+ srcs = ["CpuIdTest.cpp"],
+ deps = [
+ "//folly:cpu_id",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "demangle_test",
+ srcs = ["DemangleTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:demangle",
+ "//folly/lang:pretty",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "deterministic_schedule",
+ srcs = [
+ "BufferedAtomic.cpp",
+ "DeterministicSchedule.cpp",
+ ],
+ hdrs = [
+ "BufferedAtomic.h",
+ "DeterministicSchedule.h",
+ ],
+ deps = [
+ "//folly:random",
+ "//folly:scope_guard",
+ "//folly:singleton_thread_local",
+ "//folly/concurrency:cache_locality",
+ "//folly/detail:futex",
+ "//folly/lang:customization_point",
+ "//folly/synchronization:atomic_notification",
+ "//folly/synchronization/detail:atomic_utils",
+ "//folly/synchronization/test:semaphore",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "deterministic_schedule_test",
+ srcs = ["DeterministicScheduleTest.cpp"],
+ deps = [
+ ":deterministic_schedule",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/synchronization:atomic_util",
+ ],
+)
+
+cpp_unittest(
+ name = "discriminated_ptr_test",
+ srcs = ["DiscriminatedPtrTest.cpp"],
+ deps = [
+ "//folly:discriminated_ptr",
+ "//folly/portability:gtest",
+ ],
+)
+
+# This test depends only on :dynamic. Tests which require other
+# dependencies should be added to dynamic_other_test.
+
+cpp_unittest(
+ name = "endian_test",
+ srcs = ["EndianTest.cpp"],
+ deps = [
+ "//folly/lang:bits",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "exception_string_test",
+ srcs = ["ExceptionStringTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:exception_string",
+ "//folly:portability",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "exception_test",
+ srcs = ["ExceptionTest.cpp"],
+ deps = [
+ "//folly:exception",
+ "//folly/portability:gtest",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "exception_wrapper_test",
+ srcs = ["ExceptionWrapperTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:conv",
+ "//folly:exception_wrapper",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "executor_test",
+ srcs = ["ExecutorTest.cpp"],
+ deps = [
+ "//folly:executor",
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "expected_coroutines_test",
+ srcs = ["ExpectedCoroutinesTest.cpp"],
+ deps = [
+ "//folly:expected",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "expected_test",
+ srcs = ["ExpectedTest.cpp"],
+ deps = [
+ "//folly:expected",
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "fbstring_test",
+ srcs = ["FBStringTest.cpp"],
+ deps = [
+ ":test_utils",
+ "//folly:conv",
+ "//folly:fbstring",
+ "//folly:portability",
+ "//folly:random",
+ "//folly:utility",
+ "//folly/container:foreach",
+ "//folly/portability:gtest",
+ "@boost.algorithm",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "fbvector_test_util",
+ srcs = [
+ "FBVectorTestUtil.cpp",
+ ],
+ hdrs = [
+ "FBVectorTestUtil.h",
+ ],
+ deps = [
+ "//folly:fbstring",
+ "//folly:random",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "file_test",
+ srcs = ["FileTest.cpp"],
+ deps = [
+ "//folly:file",
+ "//folly:string",
+ "//folly/portability:fcntl",
+ "//folly/portability:filesystem",
+ "//folly/portability:gtest",
+ "@fmt",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "file_lock_test",
+ srcs = ["FileLockTest.cpp"],
+ env = {
+ "FOLLY_FILE_LOCK_TEST_HELPER": "$(rootpath :file_test_lock_helper)",
+ },
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":file_test_lock_helper",
+ "//folly:file",
+ "//folly:string",
+ "//folly:subprocess",
+ "//folly/experimental/io:fs_util",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/testing:test_util",
+ "@boost.thread",
+ "@glog",
+ ],
+)
+
+cc_binary(
+ name = "file_test_lock_helper",
+ srcs = ["FileTestLockHelper.cpp"],
+ deps = [
+ "//folly:file",
+ "//folly/portability:gflags",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "file_util_test",
+ srcs = ["FileUtilTest.cpp"],
+ linkopts = select({
+ "@platforms//os:linux": ["-ldl"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:exception",
+ "//folly:file",
+ "//folly:file_util",
+ "//folly:range",
+ "//folly:string",
+ "//folly/detail:file_util_detail",
+ "//folly/detail:file_util_vector_detail",
+ "//folly/portability:gtest",
+ "//folly/testing:test_util",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "fingerprint_test",
+ srcs = ["FingerprintTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:fingerprint",
+ "//folly/detail:slow_fingerprint",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "fixed_string_test",
+ srcs = ["FixedStringTest.cpp"],
+ deps = [
+ "//folly:fixed_string",
+ "//folly:range",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "fmt_utility_test",
+ srcs = ["FmtUtilityTest.cpp"],
+ deps = [
+ "//folly:fmt_utility",
+ ],
+)
+
+# This test depends only on :format. Tests for user-defined formatters
+# should be added to format_other_test.
+cpp_unittest(
+ name = "format_test",
+ srcs = ["FormatTest.cpp"],
+ deps = [
+ "//folly:format",
+ "//folly:utility",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "format_other_test",
+ srcs = ["FormatOtherTest.cpp"],
+ deps = [
+ "//folly:fbvector",
+ "//folly:file_util",
+ "//folly:format",
+ "//folly:portability",
+ "//folly:small_vector",
+ "//folly/json:dynamic",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "function_ref_test",
+ srcs = ["FunctionRefTest.cpp"],
+ deps = [
+ "//folly:function",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "function_test",
+ srcs = ["FunctionTest.cpp"],
+ deps = [
+ "//folly:function",
+ "//folly:memory",
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "futex_test",
+ srcs = ["FutexTest.cpp"],
+ deps = [
+ ":deterministic_schedule",
+ "//folly:chrono",
+ "//folly/detail:futex",
+ "//folly/portability:gtest",
+ "//folly/portability:time",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "group_varint_test",
+ srcs = ["GroupVarintTest.cpp"],
+ deps = [
+ "//folly:group_varint",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "group_varint_test_ssse3",
+ srcs = ["GroupVarintTest.cpp"],
+ copts = ["-mssse3"],
+ target_compatible_with = ["@platforms//cpu:x86_64"],
+ deps = [
+ "//folly:group_varint",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "indestructible_test",
+ srcs = ["IndestructibleTest.cpp"],
+ deps = [
+ "//folly:indestructible",
+ "//folly:memory",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "indexed_mem_pool_test",
+ srcs = ["IndexedMemPoolTest.cpp"],
+ deps = [
+ ":deterministic_schedule",
+ "//folly:indexed_mem_pool",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/portability:unistd",
+ ],
+)
+
+cpp_unittest(
+ name = "ip_address_test",
+ srcs = ["IPAddressTest.cpp"],
+ deps = [
+ "//folly:network_address",
+ "//folly:string",
+ "//folly/container:bit_iterator",
+ "//folly/detail:ip_address_source",
+ "//folly/lang:bits",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "@fmt",
+ ],
+)
+
+cpp_unittest(
+ name = "iterators_test",
+ srcs = ["IteratorsTest.cpp"],
+ deps = [
+ "//folly/container:array",
+ "//folly/detail:iterators",
+ "//folly/portability:gtest",
+ "//folly/portability:sys_types",
+ ],
+)
+
+# This test depends only on :json. Tests which require other
+# dependencies should be added to json_other_test.
+
+cpp_unittest(
+ name = "lazy_test",
+ srcs = ["LazyTest.cpp"],
+ deps = [
+ "//folly:lazy",
+ "//folly/portability:gtest",
+ ],
+)
+
+cc_binary(
+ name = "glog_benchmark",
+ srcs = ["GLogBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:glog",
+ ],
+)
+
+cpp_unittest(
+ name = "glog_test",
+ srcs = ["GLogTest.cpp"],
+ deps = [
+ "//folly:glog",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "mac_address_test",
+ srcs = ["MacAddressTest.cpp"],
+ deps = [
+ "//folly:network_address",
+ "//folly/portability:gtest",
+ "@fmt",
+ ],
+)
+
+cc_binary(
+ name = "math_benchmark",
+ srcs = ["MathBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:math",
+ ],
+)
+
+cpp_unittest(
+ name = "math_test",
+ srcs = ["MathTest.cpp"],
+ deps = [
+ "//folly:math",
+ "//folly:portability",
+ "//folly/functional:invoke",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+# Test MaybeManagedPtr with default settings and on c++17 and c++20.
+# We test c++17 and c++20 explicitly since c++20 can synthesize `operator!=` whereas c++17 cannot.
+cpp_unittest(
+ name = "maybe_managed_ptr_test",
+ srcs = ["MaybeManagedPtrTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:maybe_managed_ptr",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "maybe_managed_ptr_test_c++17",
+ srcs = ["MaybeManagedPtrTest.cpp"],
+ copts = [
+ "-std=c++17",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:maybe_managed_ptr",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "maybe_managed_ptr_test_c++20",
+ srcs = ["MaybeManagedPtrTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:maybe_managed_ptr",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "memset_test",
+ srcs = [
+ "MemsetTest.cpp",
+ ],
+ deps = [
+ "//folly:memset",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "memcpy_test",
+ srcs = ["MemcpyTest.cpp"],
+ deps = [
+ "//folly:memcpy",
+ "//folly:portability",
+ "//folly/portability:gtest",
+ "//folly/portability:sys_types",
+ ],
+)
+
+cc_binary(
+ name = "memcpy_benchmark",
+ srcs = ["MemcpyBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:memcpy",
+ "//folly/portability:unistd",
+ ],
+)
+
+cpp_unittest(
+ name = "memcpy_use_test",
+ srcs = ["MemcpyUseTest.cpp"],
+ linkstatic = True,
+ deps = [
+ "//folly:memcpy-use", # @manual
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "memory_test",
+ srcs = ["MemoryTest.cpp"],
+ deps = [
+ "//folly:constexpr_math",
+ "//folly:memory",
+ "//folly:string",
+ "//folly/lang:keep",
+ "//folly/memory:arena",
+ "//folly/portability:asm",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cc_binary(
+ name = "memory_idler_benchmark",
+ srcs = ["MemoryIdlerBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly/detail:memory_idler",
+ ],
+)
+
+cpp_unittest(
+ name = "memory_idler_test",
+ srcs = ["MemoryIdlerTest.cpp"],
+ deps = [
+ "//folly/detail:memory_idler",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/synchronization:baton",
+ ],
+)
+
+cpp_unittest(
+ name = "move_wrapper_test",
+ srcs = ["MoveWrapperTest.cpp"],
+ deps = [
+ "//folly:move_wrapper",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "mpmc_pipeline_test",
+ srcs = ["MPMCPipelineTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:mpmc_pipeline",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "mpmc_queue_test",
+ size = "medium",
+ srcs = ["MPMCQueueTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":deterministic_schedule",
+ "//folly:format",
+ "//folly:memory",
+ "//folly:mpmc_queue",
+ "//folly:stop_watch",
+ "//folly/portability:gtest",
+ "//folly/portability:sys_resource",
+ "//folly/portability:sys_time",
+ "//folly/portability:unistd",
+ "@boost.intrusive",
+ "@boost.thread",
+ ],
+)
+
+cpp_library(
+ name = "observer_container_test_util",
+ hdrs = ["ObserverContainerTestUtil.h"],
+ deps = [
+ "//folly:function",
+ "//folly:optional",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "observer_container_test",
+# srcs = ["ObserverContainerTest.cpp"],
+# # Prevents error due to masking name ObserverContainer.
+# copts = ["-fpermissive"],
+# deps = [
+# ":observer_container_test_util",
+# "//folly:observer_container",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# ],
+# )
+
+cpp_unittest(
+ name = "optional_test",
+ srcs = ["OptionalTest.cpp"],
+ deps = [
+ "//folly:optional",
+ "//folly:portability",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "optional_coroutines_test",
+ srcs = ["OptionalCoroutinesTest.cpp"],
+ deps = [
+ "//folly:optional",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "replaceable_test",
+ srcs = ["ReplaceableTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:replaceable",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "overload_test",
+ srcs = ["OverloadTest.cpp"],
+ deps = [
+ "//folly:discriminated_ptr",
+ "//folly:overload",
+ "//folly/portability:gtest",
+ "@boost.variant",
+ ],
+)
+
+cpp_unittest(
+ name = "packed_sync_ptr_test",
+ srcs = ["PackedSyncPtrTest.cpp"],
+ deps = [
+ "//folly:packed_sync_ptr",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "padded_test",
+ srcs = ["PaddedTest.cpp"],
+ deps = [
+ "//folly:padded",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "poly_test",
+ srcs = ["PolyTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:poly",
+ "//folly/poly:basic_interfaces",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "portability_test",
+ srcs = ["PortabilityTest.cpp"],
+ deps = [
+ "//folly:portability",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "producer_consumer_queue_test",
+ srcs = ["ProducerConsumerQueueTest.cpp"],
+ deps = [
+ "//folly:producer_consumer_queue",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cc_binary(
+ name = "random_benchmark",
+ srcs = ["RandomBenchmark.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:random",
+ "//folly/container:foreach",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "random_test",
+ srcs = ["RandomTest.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "range_test",
+ srcs = ["RangeTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:cpp_attributes",
+ "//folly:memory",
+ "//folly:range",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/portability:sys_mman",
+ "//folly/portability:unistd",
+ "@boost.algorithm",
+ "@boost.range",
+ "@range-v3",
+ ],
+)
+
+cpp_unittest(
+ name = "scope_guard_test",
+ srcs = ["ScopeGuardTest.cpp"],
+ deps = [
+ "//folly:scope_guard",
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "shared_mutex_test",
+ size = "medium",
+ srcs = ["SharedMutexTest.cpp"],
+ target_compatible_with = select({
+ # Macs ship with older Clang versions that might not support alignas.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":deterministic_schedule",
+ ":test_utils",
+ "//folly:benchmark",
+ "//folly:mpmc_queue",
+ "//folly:shared_mutex",
+ "//folly/fibers:core",
+ "//folly/fibers:timed_mutex",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/synchronization:rw_spin_lock",
+ "@boost.thread",
+ ],
+)
+
+# TODO(kgk): Fix test.
+# cpp_unittest(
+# name = "singleton_test",
+# srcs = ["SingletonTest.cpp"],
+# deps = [
+# ":singleton_test_structs",
+# ":test_utils",
+# "//folly:singleton",
+# "//folly/io/async:async_base",
+# "//folly/portability:gmock",
+# "//folly/portability:gtest",
+# "@boost.thread",
+# "@glog",
+# ],
+# )
+
+cpp_unittest(
+ name = "singleton_test_global",
+ srcs = ["SingletonTestGlobal.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":singleton_test_structs",
+ "//folly:benchmark",
+ "//folly:singleton",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "singleton_test_structs",
+ srcs = ["SingletonTestStructs.cpp"],
+ hdrs = ["SingletonTestStructs.h"],
+ deps = [
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "socket_address_test",
+ srcs = ["SocketAddressTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":socket_address_test_helper",
+ "//folly:network_address",
+ "//folly:string",
+ "//folly/container:array",
+ "//folly/portability:gtest",
+ "//folly/portability:sockets",
+ "//folly/testing:test_util",
+ ],
+)
+
+cpp_library(
+ name = "socket_address_test_helper",
+ srcs = ["SocketAddressTestHelper.cpp"],
+ hdrs = ["SocketAddressTestHelper.h"],
+ deps = [
+ "//folly/portability:sockets",
+ ],
+)
+
+cpp_unittest(
+ name = "spin_lock_test",
+ srcs = ["SpinLockTest.cpp"],
+ deps = [
+ "//folly:random",
+ "//folly:spin_lock",
+ "//folly:utility",
+ "//folly/portability:asm",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "string_test",
+ srcs = ["StringTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":test_utils",
+ "//folly:fbvector",
+ "//folly:string",
+ "//folly/container:array",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "@boost.regex",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "subprocess_test",
+ srcs = ["SubprocessTest.cpp"],
+ data = [
+ ":subprocess_test_parent_death_helper",
+ ],
+ deps = [
+ ":subprocess_test_parent_death_helper", # @manual
+ "//folly:exception",
+ "//folly:file_util",
+ "//folly:format",
+ "//folly:string",
+ "//folly:subprocess",
+ "//folly/experimental/io:fs_util",
+ "//folly/gen:base",
+ "//folly/gen:file",
+ "//folly/gen:string",
+ "//folly/portability:gtest",
+ "//folly/portability:unistd",
+ "//folly/testing:test_util",
+ "@boost.container",
+ "@glog",
+ ],
+)
+
+cc_binary(
+ name = "subprocess_test_parent_death_helper",
+ srcs = ["SubprocessTestParentDeathHelper.cpp"],
+ target_compatible_with = select({
+ # parentDeathSignal() is only available on Linux, but this doesn't guard
+ # the call.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:conv",
+ "//folly:subprocess",
+ "//folly/portability:gflags",
+ "//folly/portability:unistd",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "synchronized_test",
+ srcs = ["SynchronizedTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":synchronized_test_lib",
+ "//folly:function",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly:shared_mutex",
+ "//folly:spin_lock",
+ "//folly:synchronized",
+ "//folly/portability:gtest",
+ "//folly/synchronization:distributed_mutex",
+ "//folly/synchronization:rw_spin_lock",
+ ],
+)
+
+cpp_unittest(
+ name = "synchronized_ptr_test",
+ srcs = ["SynchronizedPtrTest.cpp"],
+ deps = [
+ "//folly:optional",
+ "//folly:replaceable",
+ "//folly:synchronized_ptr",
+ "//folly/portability:gtest",
+ "//folly/synchronization:rw_spin_lock",
+ ],
+)
+
+cpp_library(
+ name = "synchronized_test_lib",
+ hdrs = [
+ "SynchronizedTestLib.h",
+ "SynchronizedTestLib-inl.h",
+ ],
+ deps = [
+ "//folly:random",
+ "//folly:synchronized",
+ "//folly/container:foreach",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "test_utils",
+ hdrs = ["TestUtils.h"],
+ deps = [
+ "//folly:conv",
+ "//folly:exception_string",
+ "//folly:fbstring",
+ "//folly:fixed_string",
+ "//folly:range",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "thread_cached_int_test",
+ srcs = ["ThreadCachedIntTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:thread_cached_int",
+ "//folly/container:foreach",
+ "//folly/hash",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/system:thread_id",
+ "@glog",
+ ],
+)
+
+cc_binary(
+ name = "thread_local_benchmark",
+ srcs = ["ThreadLocalBenchmark.cpp"],
+ target_compatible_with = select({
+ # Macs ship with older Clang versions that might not support jthread.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:benchmark",
+ "//folly:thread_local",
+ "//folly/lang:keep",
+ "//folly/portability:gflags",
+ "//folly/synchronization:latch",
+ "@boost.thread",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "timeout_queue_test",
+ srcs = ["TimeoutQueueTest.cpp"],
+ deps = [
+ "//folly:timeout_queue",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "token_bucket_test",
+ srcs = [
+ "TokenBucketTest.cpp",
+ "TokenBucketTest.h",
+ ],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ "//folly:string",
+ "//folly:token_bucket",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "traits_test",
+ srcs = ["TraitsTest.cpp"],
+ deps = [
+ "//folly:cpp_attributes",
+ "//folly:scope_guard",
+ "//folly:traits",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "try_test",
+ srcs = ["TryTest.cpp"],
+ deps = [
+ "//folly:traits",
+ "//folly:try",
+ "//folly/lang:exception",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "unit_test",
+ srcs = ["UnitTest.cpp"],
+ deps = [
+ "//folly:unit",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "uri_test",
+ srcs = ["UriTest.cpp"],
+ deps = [
+ "//folly:uri",
+ "//folly/portability:gtest",
+ "@boost.algorithm",
+ "@glog",
+ ],
+)
+
+cpp_unittest(
+ name = "utf8_string_test",
+ srcs = ["UTF8StringTest.cpp"],
+ deps = [
+ ":test_utils",
+ "//folly:range",
+ "//folly:utf8_string",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "utility_test",
+ srcs = ["UtilityTest.cpp"],
+ deps = [
+ "//folly:utility",
+ "//folly/lang:keep",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_unittest(
+ name = "varint_test",
+ srcs = ["VarintTest.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:random",
+ "//folly:varint",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cpp_library(
+ name = "json_mock_util",
+ hdrs = [
+ "JsonMockUtil.h",
+ ],
+ deps = [
+ "//folly/json:json_mock_util",
+ ],
+)
+
+cpp_library(
+ name = "json_test_util",
+ hdrs = [
+ "JsonTestUtil.h",
+ ],
+ deps = [
+ "//folly/json:json_test_util",
+ ],
+)
+
+cpp_unittest(
+ name = "test_utils_test",
+ srcs = ["TestUtilsTest.cpp"],
+ target_compatible_with = select({
+ # TODO: fails on Mac.
+ "@platforms//os:macos": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":test_utils",
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ ],
+)
+
+cpp_library(
+ name = "comparison_operator_test_util",
+ hdrs = ["ComparisonOperatorTestUtil.h"],
+ deps = [
+ "//folly/portability:gtest",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/common/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/common/BUILD.bazel
new file mode 100644
index 00000000000..ed7e9130092
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/common/BUILD.bazel
@@ -0,0 +1,23 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cc_binary(
+ name = "test_main",
+ deps = [
+ ":test_main_lib",
+ ],
+)
+
+cpp_library(
+ name = "test_main_lib",
+ srcs = ["TestMain.cpp"],
+ deps = [
+ "//folly:portability",
+ "//folly/init",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/stl_tests/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/stl_tests/BUILD.bazel
new file mode 100644
index 00000000000..2c9981186a6
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/test/stl_tests/BUILD.bazel
@@ -0,0 +1,19 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "stl_vector_test",
+ size = "enormous",
+ srcs = ["StlVectorTest.cpp"],
+ deps = [
+ "//folly:conv",
+ "//folly:fbvector",
+ "//folly:portability",
+ "//folly:scope_guard",
+ "//folly/chrono:hardware",
+ "//folly/lang:pretty",
+ "//folly/portability:gflags",
+ "//folly/portability:gtest",
+ "//folly/test:test_utils",
+ "@boost.preprocessor",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/testing/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/testing/BUILD.bazel
new file mode 100644
index 00000000000..a11eea7b610
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/testing/BUILD.bazel
@@ -0,0 +1,25 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "test_util",
+ srcs = ["TestUtil.cpp"],
+ hdrs = ["TestUtil.h"],
+ deps = [
+ "//folly:exception",
+ "//folly:file",
+ "//folly:file_util",
+ "//folly:memory",
+ "//folly:range",
+ "//folly:scope_guard",
+ "//folly:string",
+ "//folly/experimental/io:fs_util",
+ "//folly/ext:test_ext",
+ "//folly/ext/buck2:test_ext",
+ "//folly/portability:fcntl",
+ "@bazel_tools//tools/cpp/runfiles",
+ "@boost.regex",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/testing/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/testing/test/BUILD.bazel
new file mode 100644
index 00000000000..38161007854
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/testing/test/BUILD.bazel
@@ -0,0 +1,16 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "test_util_test",
+ srcs = ["TestUtilTest.cpp"],
+ deps = [
+ "//folly:memory",
+ "//folly/portability:fcntl",
+ "//folly/portability:gtest",
+ "//folly/portability:stdlib",
+ "//folly/portability:unistd",
+ "//folly/testing:test_util",
+ "@boost.algorithm",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/tool/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/tool/BUILD.bazel
new file mode 100644
index 00000000000..46284cdaa4c
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/tool/BUILD.bazel
@@ -0,0 +1,14 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary")
+
+package(default_visibility = ["//visibility:public"])
+
+cc_binary(
+ name = "benchmark_compare",
+ srcs = ["BenchmarkCompare.cpp"],
+ deps = [
+ "//folly:benchmark",
+ "//folly:file_util",
+ "//folly/init",
+ "//folly/json:dynamic",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/tracing/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/tracing/BUILD.bazel
new file mode 100644
index 00000000000..c3f28d78b0a
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/tracing/BUILD.bazel
@@ -0,0 +1,47 @@
+load("//bzl:cpp_library.bzl", "cpp_library")
+
+package(default_visibility = ["//visibility:public"])
+
+cpp_library(
+ name = "static_tracepoint",
+ hdrs = [
+ "StaticTracepoint.h",
+ "StaticTracepoint-ELF.h",
+ ],
+ deps = [
+ "//folly:c_portability",
+ ],
+)
+
+cpp_library(
+ name = "scoped_trace_section",
+ hdrs = [
+ "ScopedTraceSection.h",
+ ],
+)
+
+cpp_library(
+ name = "async_stack",
+ srcs = [
+ "AsyncStack.cpp",
+ ],
+ hdrs = [
+ "AsyncStack.h",
+ ],
+ textual_hdrs = [
+ "AsyncStack-inl.h",
+ ],
+ deps = [
+ "//folly:c_portability",
+ "//folly:cpp_attributes",
+ "//folly:function",
+ "//folly:indestructible",
+ "//folly:likely",
+ "//folly:portability",
+ "//folly:synchronized",
+ "//folly/coro:coroutine",
+ "//folly/lang:hint",
+ "//folly/portability:pthread",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/overlay/folly/tracing/test/BUILD.bazel b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/tracing/test/BUILD.bazel
new file mode 100644
index 00000000000..181ab2babe0
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/overlay/folly/tracing/test/BUILD.bazel
@@ -0,0 +1,12 @@
+load("//bzl:cpp_unittest.bzl", "cpp_unittest")
+
+cpp_unittest(
+ name = "async_stack_test",
+ srcs = ["AsyncStackTest.cpp"],
+ deps = [
+ "//folly/portability:gmock",
+ "//folly/portability:gtest",
+ "//folly/tracing:async_stack",
+ "@glog",
+ ],
+)
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/fix_async_fd_socket_test.patch b/modules/folly/2025.01.13.00.bcr.5/patches/fix_async_fd_socket_test.patch
new file mode 100644
index 00000000000..e5406abd6bc
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/fix_async_fd_socket_test.patch
@@ -0,0 +1,13 @@
+diff --git a/folly/io/async/fdsock/test/AsyncFdSocketTest.cpp b/folly/io/async/fdsock/test/AsyncFdSocketTest.cpp
+index 197e012e8..c03994f2b 100644
+--- a/folly/io/async/fdsock/test/AsyncFdSocketTest.cpp
++++ b/folly/io/async/fdsock/test/AsyncFdSocketTest.cpp
+@@ -245,7 +245,7 @@ TEST_F(AsyncFdSocketTest, MultiPartSend) {
+ }
+ rcb_.verifyData(data.data(), data.size());
+ rcb_.clearData();
+- EXPECT_EQ(numSendParts, sendSock.numWrites_);
++ EXPECT_GE(sendSock.numWrites_, numSendParts);
+
+ // There are no more data or FDs
+ evb_.loopOnce(EVLOOP_NONBLOCK);
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/fix_async_udp_socket_test.patch b/modules/folly/2025.01.13.00.bcr.5/patches/fix_async_udp_socket_test.patch
new file mode 100644
index 00000000000..7a16b88bc91
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/fix_async_udp_socket_test.patch
@@ -0,0 +1,57 @@
+diff --git a/folly/io/async/test/AsyncUDPSocketTest.cpp b/folly/io/async/test/AsyncUDPSocketTest.cpp
+index 632873c8c..1d71c9bf1 100644
+--- a/folly/io/async/test/AsyncUDPSocketTest.cpp
++++ b/folly/io/async/test/AsyncUDPSocketTest.cpp
+@@ -130,7 +130,10 @@ class UDPServer {
+ acceptors_.emplace_back(
+ &evb, i, changePortForWrites_, socket_->address());
+
+- std::thread t([&]() { evb.loopForever(); });
++ // Store a pointer to evb so the capture below does not capture the local reference, which
++ // will point to the last evb instead of the intended instance.
++ auto* evbPtr = &evb;
++ std::thread t([evbPtr]() { evbPtr->loopForever(); });
+
+ evb.waitUntilRunning();
+
+@@ -146,16 +149,25 @@ class UDPServer {
+
+ void shutdown() {
+ CHECK(evb_->isInEventBaseThread());
++ if (!socket_) {
++ return;
++ }
++ socket_->pauseAccepting();
+ socket_->close();
+- socket_.reset();
+
+ for (auto& evb : evbs_) {
++ evb.runInEventBaseThreadAndWait([] {
++ // barrier: ensures prior queued callbacks execute before we terminate
++ });
+ evb.terminateLoopSoon();
+ }
+
+ for (auto& t : threads_) {
+ t.join();
+ }
++
++ threads_.clear();
++ socket_.reset();
+ }
+
+ void pauseAccepting() { socket_->pauseAccepting(); }
+@@ -470,8 +482,11 @@ class AsyncSocketIntegrationTest : public Test {
+
+ void TearDown() override {
+ // Shutdown server
+- sevb.runInEventBaseThread([&]() {
+- server->shutdown();
++ sevb.runInEventBaseThreadAndWait([&]() {
++ if (server) {
++ server->shutdown();
++ server.reset(); // destroy on sevb thread
++ }
+ sevb.terminateLoopSoon();
+ });
+
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/fix_basic_transport_certificate_test.patch b/modules/folly/2025.01.13.00.bcr.5/patches/fix_basic_transport_certificate_test.patch
new file mode 100644
index 00000000000..48f633afe18
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/fix_basic_transport_certificate_test.patch
@@ -0,0 +1,13 @@
+diff --git a/folly/io/async/ssl/test/BasicTransportCertificateTest.cpp b/folly/io/async/ssl/test/BasicTransportCertificateTest.cpp
+index b4c608e51..a38818ce3 100644
+--- a/folly/io/async/ssl/test/BasicTransportCertificateTest.cpp
++++ b/folly/io/async/ssl/test/BasicTransportCertificateTest.cpp
+@@ -25,7 +25,7 @@ using namespace folly;
+ using namespace folly::ssl;
+ using folly::test::find_resource;
+
+-const char* kTestCerts = "folly/io/async/ssl/test/tests-cert.pem";
++const char* kTestCerts = "folly/io/async/test/certs/tests-cert.pem";
+
+ TEST(BasicTransportCertificateTest, TestCerts) {
+ auto path = find_resource(kTestCerts);
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/fix_exception_test.patch b/modules/folly/2025.01.13.00.bcr.5/patches/fix_exception_test.patch
new file mode 100644
index 00000000000..922e8b3dbf5
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/fix_exception_test.patch
@@ -0,0 +1,33 @@
+diff --git a/folly/lang/test/ExceptionTest.cpp b/folly/lang/test/ExceptionTest.cpp
+index 84dee13b1..060ee1a11 100644
+--- a/folly/lang/test/ExceptionTest.cpp
++++ b/folly/lang/test/ExceptionTest.cpp
+@@ -426,17 +426,17 @@ TEST_F(ExceptionTest, exception_shared_string) {
+ EXPECT_STREQ(c, folly::exception_shared_string(std::string(c)).what());
+ }
+
+-#if FOLLY_CPLUSPLUS >= 202002
+-
+-TEST_F(ExceptionTest, exception_shared_string_literal) {
+- using namespace folly::string_literals;
+- auto s0 = folly::exception_shared_string("hello, world!"_litv);
+- auto s1 = s0;
+- auto s2 = s1;
+- EXPECT_STREQ("hello, world!", s2.what());
+-}
+-
+-#endif
++// #if FOLLY_CPLUSPLUS >= 202002
++//
++// TEST_F(ExceptionTest, exception_shared_string_literal) {
++// using namespace folly::string_literals;
++// auto s0 = folly::exception_shared_string("hello, world!"_litv);
++// auto s1 = s0;
++// auto s2 = s1;
++// EXPECT_STREQ("hello, world!", s2.what());
++// }
++//
++// #endif
+ // example of how to do the in-place formatting efficiently
+ struct format_param_fn {
+ template
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/fix_flat_combining_benchmark_test.patch b/modules/folly/2025.01.13.00.bcr.5/patches/fix_flat_combining_benchmark_test.patch
new file mode 100644
index 00000000000..612ec9bf4f4
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/fix_flat_combining_benchmark_test.patch
@@ -0,0 +1,13 @@
+diff --git a/folly/synchronization/test/FlatCombiningBenchmark.cpp b/folly/synchronization/test/FlatCombiningBenchmark.cpp
+index f3263c85a..771414f4f 100644
+--- a/folly/synchronization/test/FlatCombiningBenchmark.cpp
++++ b/folly/synchronization/test/FlatCombiningBenchmark.cpp
+@@ -22,6 +22,8 @@
+
+ using namespace folly::test;
+
++#include
++
+ // use option --benchmark to run folly::Benchmark
+ // use option --direct to run direct benchmark measurements
+ DEFINE_bool(direct, false, "run direct measurement");
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/fix_hasptr_test.patch b/modules/folly/2025.01.13.00.bcr.5/patches/fix_hasptr_test.patch
new file mode 100644
index 00000000000..6217c79fb76
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/fix_hasptr_test.patch
@@ -0,0 +1,13 @@
+diff --git a/folly/synchronization/test/HazptrTest.cpp b/folly/synchronization/test/HazptrTest.cpp
+index b28e01cd2..b31b1fa15 100644
+--- a/folly/synchronization/test/HazptrTest.cpp
++++ b/folly/synchronization/test/HazptrTest.cpp
+@@ -34,6 +34,8 @@ DEFINE_int64(num_reps, 10, "Number of test reps");
+ DEFINE_int32(num_threads, 6, "Number of threads");
+ DEFINE_int64(num_ops, 1003, "Number of ops or pairs of ops per rep");
+
++#include
++
+ using folly::default_hazptr_domain;
+ using folly::hazard_pointer;
+ using folly::hazard_pointer_clean_up;
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/fix_io_uring_backend_test.patch b/modules/folly/2025.01.13.00.bcr.5/patches/fix_io_uring_backend_test.patch
new file mode 100644
index 00000000000..126ea4a0723
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/fix_io_uring_backend_test.patch
@@ -0,0 +1,49 @@
+diff --git a/folly/io/async/test/IoUringBackendTest.cpp b/folly/io/async/test/IoUringBackendTest.cpp
+index 75cd85ff4..f32f566f9 100644
+--- a/folly/io/async/test/IoUringBackendTest.cpp
++++ b/folly/io/async/test/IoUringBackendTest.cpp
+@@ -710,7 +710,7 @@ TEST(IoUringBackend, Rename) {
+ auto newPath = dirPath / newName;
+
+ int fd = folly::fileops::open(
+- oldPath.string().c_str(), O_CREAT | O_WRONLY | O_TRUNC);
++ oldPath.string().c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0600);
+ CHECK_GE(fd, 0);
+
+ SCOPE_EXIT {
+@@ -747,7 +747,7 @@ TEST(IoUringBackend, RenameDstExists) {
+
+ {
+ int oldFd = folly::fileops::open(
+- oldPath.string().c_str(), O_CREAT | O_WRONLY | O_TRUNC);
++ oldPath.string().c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0600);
+ CHECK_GE(oldFd, 0);
+ folly::fileops::close(oldFd);
+ }
+@@ -758,7 +758,7 @@ TEST(IoUringBackend, RenameDstExists) {
+
+ {
+ int newFd = folly::fileops::open(
+- newPath.string().c_str(), O_CREAT | O_WRONLY | O_TRUNC);
++ newPath.string().c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0600);
+ CHECK_GE(newFd, 0);
+ folly::fileops::close(newFd);
+ }
+@@ -817,7 +817,7 @@ TEST(IoUringBackend, Statx) {
+ dirPath.string().c_str(), O_DIRECTORY | O_RDONLY, 0666);
+ CHECK_GE(dfd, 0);
+ int fd = folly::fileops::open(
+- filePath.string().c_str(), O_CREAT | O_WRONLY | O_TRUNC);
++ filePath.string().c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0600);
+ CHECK_GE(fd, 0);
+
+ SCOPE_EXIT {
+@@ -850,7 +850,7 @@ TEST(IoUringBackend, StatxAbsolute) {
+ auto filePath = dirPath / path;
+
+ int fd = folly::fileops::open(
+- filePath.string().c_str(), O_CREAT | O_WRONLY | O_TRUNC);
++ filePath.string().c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0600);
+ CHECK_GE(fd, 0);
+
+ SCOPE_EXIT {
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/fix_shared_mutex_test.patch b/modules/folly/2025.01.13.00.bcr.5/patches/fix_shared_mutex_test.patch
new file mode 100644
index 00000000000..eafb4f2c85e
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/fix_shared_mutex_test.patch
@@ -0,0 +1,44 @@
+diff --git a/folly/test/SharedMutexTest.cpp b/folly/test/SharedMutexTest.cpp
+index 1e172c186..c6b4f9e84 100644
+--- a/folly/test/SharedMutexTest.cpp
++++ b/folly/test/SharedMutexTest.cpp
+@@ -344,9 +344,9 @@ void runFailingTryTimeoutTest() {
+ lock.unlock();
+
+ for (int p = 0; p < 8; ++p) {
+- typename std::shared_lock holder1(lock);
+- typename std::shared_lock holder2(lock);
+- typename std::shared_lock holder3(lock);
++ typename std::shared_lock holder1(lock);
++ typename std::shared_lock holder2(lock);
++ typename std::shared_lock holder3(lock);
+ EXPECT_FALSE(lock.try_lock_for(nanoseconds(1 << p)));
+ }
+ }
+@@ -555,7 +555,7 @@ struct PosixMutex {
+ template class Atom, typename Lock, typename Locker>
+ static void runContendedReaders(
+ size_t numOps, size_t numThreads, bool useSeparateLocks) {
+- struct alignas(hardware_destructive_interference_size)
++ alignas(folly::hardware_destructive_interference_size) struct
+ GlobalLockAndProtectedValue {
+ Lock globalLock;
+ int valueProtectedByLock = 10;
+@@ -663,7 +663,7 @@ static void runMixed(
+ size_t numThreads,
+ double writeFraction,
+ bool useSeparateLocks) {
+- struct alignas(hardware_destructive_interference_size)
++ alignas(folly::hardware_destructive_interference_size) struct
+ GlobalLockAndProtectedValue {
+ Lock globalLock;
+ int valueProtectedByLock = 0;
+@@ -1358,7 +1358,7 @@ static void burn(size_t n) {
+ // in turn with reader/writer conflict
+ template class Atom = atomic>
+ static void runPingPong(size_t numRounds, size_t burnCount) {
+- struct alignas(hardware_destructive_interference_size) PaddedLock {
++ alignas(folly::hardware_destructive_interference_size) struct PaddedLock {
+ Lock lock_;
+ };
+ array paddedLocks;
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/fix_ssl_cert_utils_test.patch b/modules/folly/2025.01.13.00.bcr.5/patches/fix_ssl_cert_utils_test.patch
new file mode 100644
index 00000000000..dd679aa5073
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/fix_ssl_cert_utils_test.patch
@@ -0,0 +1,15 @@
+diff --git a/folly/ssl/test/OpenSSLCertUtilsTest.cpp b/folly/ssl/test/OpenSSLCertUtilsTest.cpp
+index 6221e3416..67585a252 100644
+--- a/folly/ssl/test/OpenSSLCertUtilsTest.cpp
++++ b/folly/ssl/test/OpenSSLCertUtilsTest.cpp
+@@ -31,8 +31,8 @@ using namespace testing;
+ using namespace folly;
+ using folly::test::find_resource;
+
+-const char* kTestCertWithoutSan = "folly/ssl/test/tests-cert.pem";
+-const char* kTestCa = "folly/ssl/test/ca-cert.pem";
++const char* kTestCertWithoutSan = "folly/io/async/test/certs/tests-cert.pem";
++const char* kTestCa = "folly/io/async/test/certs/ca-cert.pem";
+
+ // Test key
+ const std::string kTestKey = folly::stripLeftMargin(R"(
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/fix_uninitialized_memory_hacks.patch b/modules/folly/2025.01.13.00.bcr.5/patches/fix_uninitialized_memory_hacks.patch
new file mode 100644
index 00000000000..d44af09992e
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/fix_uninitialized_memory_hacks.patch
@@ -0,0 +1,38 @@
+diff --git a/folly/memory/UninitializedMemoryHacks.h b/folly/memory/UninitializedMemoryHacks.h
+index daf5eb735..22e0014b4 100644
+--- a/folly/memory/UninitializedMemoryHacks.h
++++ b/folly/memory/UninitializedMemoryHacks.h
+@@ -309,7 +309,11 @@ struct std_vector_layout {
+
+ pointer __begin_;
+ pointer __end_;
+- std::__compressed_pair __end_cap_;
++#ifdef _LIBCPP_COMPRESSED_PAIR
++ _LIBCPP_COMPRESSED_PAIR(pointer, __cap_ = nullptr, allocator_type, __alloc_);
++#else
++ std::__compressed_pair __end_cap_;
++#endif
+ };
+
+ template
+@@ -332,10 +336,19 @@ void unsafeVectorSetLargerSize(std::vector& v, std::size_t n) {
+ // enabled we need to call the appropriate annotation functions in order to
+ // stop ASAN from reporting false positives. When ASAN is disabled, the
+ // annotation function is a no-op.
+-#ifndef _LIBCPP_HAS_NO_ASAN
++#if defined(_LIBCPP_HAS_ASAN)
++#define FOLLY_ASAN_ANNOTATE_CONTIGUOUS_CONTAINER _LIBCPP_HAS_ASAN
++#elif defined(_LIBCPP_HAS_NO_ASAN)
++#define FOLLY_ASAN_ANNOTATE_CONTIGUOUS_CONTAINER 0
++#else
++#define FOLLY_ASAN_ANNOTATE_CONTIGUOUS_CONTAINER 1
++#endif
++
++#if FOLLY_ASAN_ANNOTATE_CONTIGUOUS_CONTAINER
+ __sanitizer_annotate_contiguous_container(
+ v.data(), v.data() + v.capacity(), v.data() + s, v.data() + n);
+ #endif
++
+ }
+
+ #define FOLLY_DECLARE_VECTOR_RESIZE_WITHOUT_INIT(TYPE)
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/folly_Math.h.patch b/modules/folly/2025.01.13.00.bcr.5/patches/folly_Math.h.patch
new file mode 100644
index 00000000000..8a1aff42688
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/folly_Math.h.patch
@@ -0,0 +1,13 @@
+diff --git a/folly/Math.h b/folly/Math.h
+index c7dd7fe1e..1c5406836 100644
+--- a/folly/Math.h
++++ b/folly/Math.h
+@@ -21,6 +21,8 @@
+
+ #pragma once
+
++#include
++
+ #include
+
+ #include
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_Dwarf.cpp.patch b/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_Dwarf.cpp.patch
new file mode 100644
index 00000000000..a4b6840a075
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_Dwarf.cpp.patch
@@ -0,0 +1,13 @@
+diff --git a/folly/debugging/symbolizer/Dwarf.cpp b/folly/debugging/symbolizer/Dwarf.cpp
+index d92a091c6..a4301121f 100644
+--- a/folly/debugging/symbolizer/Dwarf.cpp
++++ b/folly/debugging/symbolizer/Dwarf.cpp
+@@ -27,7 +27,7 @@
+
+ #if FOLLY_HAVE_DWARF && FOLLY_HAVE_ELF
+
+-#include // @manual=fbsource//third-party/libdwarf:dwarf
++#include // @manual=fbsource//third-party/libdwarf:dwarf
+
+ namespace folly {
+ namespace symbolizer {
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfImpl.cpp.patch b/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfImpl.cpp.patch
new file mode 100644
index 00000000000..6da10310023
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfImpl.cpp.patch
@@ -0,0 +1,13 @@
+diff --git a/folly/debugging/symbolizer/DwarfImpl.cpp b/folly/debugging/symbolizer/DwarfImpl.cpp
+index ac4eef961..a0b22435b 100644
+--- a/folly/debugging/symbolizer/DwarfImpl.cpp
++++ b/folly/debugging/symbolizer/DwarfImpl.cpp
+@@ -27,7 +27,7 @@
+
+ #if FOLLY_HAVE_DWARF && FOLLY_HAVE_ELF
+
+-#include // @manual=fbsource//third-party/libdwarf:dwarf
++#include // @manual=fbsource//third-party/libdwarf:dwarf
+
+ // We need a single dwarf5 tag, but may not be building against
+ // a new enough libdwarf, so just define it ourselves.
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfUtil.cpp.patch b/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfUtil.cpp.patch
new file mode 100644
index 00000000000..0e3915f1af3
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfUtil.cpp.patch
@@ -0,0 +1,13 @@
+diff --git a/folly/debugging/symbolizer/DwarfUtil.cpp b/folly/debugging/symbolizer/DwarfUtil.cpp
+index 8dba0e0c1..7c434bb03 100644
+--- a/folly/debugging/symbolizer/DwarfUtil.cpp
++++ b/folly/debugging/symbolizer/DwarfUtil.cpp
+@@ -27,7 +27,7 @@
+
+ #if FOLLY_HAVE_DWARF && FOLLY_HAVE_ELF
+
+-#include // @manual=fbsource//third-party/libdwarf:dwarf
++#include // @manual=fbsource//third-party/libdwarf:dwarf
+
+ // We need a single dwarf5 tag, but may not be building against
+ // a new enough libdwarf, so just define it ourselves.
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfUtil.h.patch b/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfUtil.h.patch
new file mode 100644
index 00000000000..04ecd9e39bd
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/folly_debugging_symbolizer_DwarfUtil.h.patch
@@ -0,0 +1,13 @@
+diff --git a/folly/debugging/symbolizer/DwarfUtil.h b/folly/debugging/symbolizer/DwarfUtil.h
+index b1ff6819e..c8cdcf741 100644
+--- a/folly/debugging/symbolizer/DwarfUtil.h
++++ b/folly/debugging/symbolizer/DwarfUtil.h
+@@ -26,7 +26,7 @@
+ #include
+
+ #if FOLLY_HAVE_DWARF && FOLLY_HAVE_ELF
+-#include // @manual=fbsource//third-party/libdwarf:dwarf
++#include // @manual=fbsource//third-party/libdwarf:dwarf
+
+ namespace folly {
+ namespace symbolizer {
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/folly_executors_test_FiberIOExecutorTest.cpp.patch b/modules/folly/2025.01.13.00.bcr.5/patches/folly_executors_test_FiberIOExecutorTest.cpp.patch
new file mode 100644
index 00000000000..fdd3205b702
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/folly_executors_test_FiberIOExecutorTest.cpp.patch
@@ -0,0 +1,15 @@
+diff --git a/folly/executors/test/FiberIOExecutorTest.cpp b/folly/executors/test/FiberIOExecutorTest.cpp
+index 207467a08..69051a810 100644
+--- a/folly/executors/test/FiberIOExecutorTest.cpp
++++ b/folly/executors/test/FiberIOExecutorTest.cpp
+@@ -36,7 +36,9 @@ TEST_F(FiberIOExecutorTest, event_base) {
+
+ TEST_F(FiberIOExecutorTest, basic_execution) {
+ auto tpe = std::make_shared(1);
+- folly::FiberIOExecutor e(tpe);
++ folly::fibers::FiberManager::Options opts;
++ opts.stackSize = 64 * 1024;
++ folly::FiberIOExecutor e(tpe, opts);
+
+ // FiberIOExecutor should add tasks using the FiberManager mapped to the
+ // IOThreadPoolExecutor's event base.
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/folly_fibers_async_test_AsyncTest.cpp.patch b/modules/folly/2025.01.13.00.bcr.5/patches/folly_fibers_async_test_AsyncTest.cpp.patch
new file mode 100644
index 00000000000..3e52996c547
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/folly_fibers_async_test_AsyncTest.cpp.patch
@@ -0,0 +1,26 @@
+diff --git a/folly/fibers/async/test/AsyncTest.cpp b/folly/fibers/async/test/AsyncTest.cpp
+index 3683de427..dd195fdf8 100644
+--- a/folly/fibers/async/test/AsyncTest.cpp
++++ b/folly/fibers/async/test/AsyncTest.cpp
+@@ -92,7 +92,9 @@ TEST(AsyncTest, asyncAwait) {
+
+ TEST(AsyncTest, asyncBaton) {
+ folly::EventBase evb;
+- auto& fm = getFiberManager(evb);
++ folly::fibers::FiberManager::Options opts;
++ opts.stackSize = 64 * 1024;
++ auto& fm = getFiberManager(evb, opts);
+ std::chrono::steady_clock::time_point start;
+
+ EXPECT_NO_THROW(
+@@ -135,7 +137,9 @@ TEST(AsyncTest, asyncPromise) {
+
+ TEST(AsyncTest, asyncFuture) {
+ folly::EventBase evb;
+- auto& fm = getFiberManager(evb);
++ folly::fibers::FiberManager::Options opts;
++ opts.stackSize = 64 * 1024;
++ auto& fm = getFiberManager(evb, opts);
+
+ // Return format: Info about where continuation runs (thread_id,
+ // in_fiber_loop, on_active_fiber)
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/folly_io_async_test_IoTestTempFileUtil.cpp.patch b/modules/folly/2025.01.13.00.bcr.5/patches/folly_io_async_test_IoTestTempFileUtil.cpp.patch
new file mode 100644
index 00000000000..da2938984d9
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/folly_io_async_test_IoTestTempFileUtil.cpp.patch
@@ -0,0 +1,16 @@
+diff --git a/folly/io/async/test/IoTestTempFileUtil.cpp b/folly/io/async/test/IoTestTempFileUtil.cpp
+index 0e70b7e69..0ca931837 100644
+--- a/folly/io/async/test/IoTestTempFileUtil.cpp
++++ b/folly/io/async/test/IoTestTempFileUtil.cpp
+@@ -49,7 +49,11 @@ TemporaryFile TempFileUtil::getTempFile(size_t size) {
+ size -= n;
+ }
+
++#ifdef __APPLE__
++ CHECK_EQ(::fsync(fd), 0);
++#else
+ CHECK_EQ(::fdatasync(fd), 0);
++#endif
+
+ // the file was opened with O_EXCL so we need to close to be able
+ // to open it again
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/folly_io_async_test_TerminateCancellationTokenTest.cpp.patch b/modules/folly/2025.01.13.00.bcr.5/patches/folly_io_async_test_TerminateCancellationTokenTest.cpp.patch
new file mode 100644
index 00000000000..acffd808464
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/folly_io_async_test_TerminateCancellationTokenTest.cpp.patch
@@ -0,0 +1,13 @@
+diff --git a/folly/io/async/test/TerminateCancellationTokenTest.cpp b/folly/io/async/test/TerminateCancellationTokenTest.cpp
+index d3af92225..f32e1fa4f 100644
+--- a/folly/io/async/test/TerminateCancellationTokenTest.cpp
++++ b/folly/io/async/test/TerminateCancellationTokenTest.cpp
+@@ -14,6 +14,8 @@
+ * limitations under the License.
+ */
+
++#include
++
+ #include
+
+ #include
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/test_utils_bazel_runfiles.patch b/modules/folly/2025.01.13.00.bcr.5/patches/test_utils_bazel_runfiles.patch
new file mode 100644
index 00000000000..6e39a9cc2f2
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/test_utils_bazel_runfiles.patch
@@ -0,0 +1,33 @@
+diff --git a/folly/testing/TestUtil.cpp b/folly/testing/TestUtil.cpp
+index cadf8757f..3b756bbed 100644
+--- a/folly/testing/TestUtil.cpp
++++ b/folly/testing/TestUtil.cpp
+@@ -38,6 +38,8 @@
+ // in various headers that we include.
+ #include
+
++#include "tools/cpp/runfiles/runfiles.h"
++
+ namespace folly {
+ namespace test {
+
+@@ -236,10 +238,15 @@ fs::path find_resource(const std::string& resource) {
+ if (pos == std::string::npos) {
+ throw std::invalid_argument("invalid: " + resource);
+ }
+- auto const ext = folly::ext::test_find_resource;
+- auto fn = ext //
+- ? fs::path(ext(resource)) // hooked, eg via internal extension
+- : fs::executable_path().parent_path() / resource; // current cmake build
++
++ using bazel::tools::cpp::runfiles::Runfiles;
++ std::string error;
++ std::unique_ptr runfiles(Runfiles::CreateForTest(BAZEL_CURRENT_REPOSITORY, &error));
++ if (runfiles == nullptr) {
++ throw std::runtime_error("error initializing bazel runfiles: " + error);
++ }
++ const fs::path fn = runfiles->Rlocation(std::string("folly/") + resource);
++
+ if (!fs::exists(fn)) {
+ throw std::runtime_error("missing: " + resource);
+ }
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/use_quote_includes_for_double_conversion.patch b/modules/folly/2025.01.13.00.bcr.5/patches/use_quote_includes_for_double_conversion.patch
new file mode 100644
index 00000000000..7d2e61b8166
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/use_quote_includes_for_double_conversion.patch
@@ -0,0 +1,39 @@
+diff --git a/folly/Conv.h b/folly/Conv.h
+index abd396c7d..93b06dd79 100644
+--- a/folly/Conv.h
++++ b/folly/Conv.h
+@@ -127,7 +127,7 @@
+ #include
+ #endif
+
+-#include // V8 JavaScript implementation
++#include "double-conversion/double-conversion.h" // V8 JavaScript implementation
+
+ #include
+
+diff --git a/folly/Format.cpp b/folly/Format.cpp
+index 6ab655ba5..203d5fd06 100644
+--- a/folly/Format.cpp
++++ b/folly/Format.cpp
+@@ -23,7 +23,7 @@
+ #include
+ #include
+
+-#include
++#include "double-conversion/double-conversion.h"
+
+ namespace folly {
+ namespace detail {
+diff --git a/folly/test/StringToFloatBenchmark.cpp b/folly/test/StringToFloatBenchmark.cpp
+index b2b4055fd..b0790d616 100644
+--- a/folly/test/StringToFloatBenchmark.cpp
++++ b/folly/test/StringToFloatBenchmark.cpp
+@@ -44,7 +44,7 @@
+ #include
+ #include
+
+-#include
++#include "double-conversion/double-conversion.h"
+ #include // @manual=fbsource//third-party/fast_float:fast_float
+
+ template
diff --git a/modules/folly/2025.01.13.00.bcr.5/patches/use_quote_includes_for_snappy.patch b/modules/folly/2025.01.13.00.bcr.5/patches/use_quote_includes_for_snappy.patch
new file mode 100644
index 00000000000..24550590fcb
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/patches/use_quote_includes_for_snappy.patch
@@ -0,0 +1,15 @@
+diff --git a/folly/compression/Compression.cpp b/folly/compression/Compression.cpp
+index 463c103ac..f4c5da408 100644
+--- a/folly/compression/Compression.cpp
++++ b/folly/compression/Compression.cpp
+@@ -27,8 +27,8 @@
+ #include
+
+ #if FOLLY_HAVE_LIBSNAPPY
+-#include
+-#include
++#include "snappy-sinksource.h"
++#include "snappy.h"
+ #endif
+
+ #if FOLLY_HAVE_LIBZ
diff --git a/modules/folly/2025.01.13.00.bcr.5/presubmit.yml b/modules/folly/2025.01.13.00.bcr.5/presubmit.yml
new file mode 100644
index 00000000000..f95e57f5b11
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/presubmit.yml
@@ -0,0 +1,39 @@
+matrix:
+ platform:
+ # Disable platforms that do not support c++20 or have a new enough gcc (>11)
+ # - debian10
+ # - debian11
+ # - ubuntu2004
+ # - ubuntu2004_arm64
+ # Windows is not yet supported.
+ # - windows
+ - ubuntu2204
+ - ubuntu2204_arm64
+ - ubuntu2404
+ - macos_arm64
+ bazel:
+ - 7.x
+ - 8.x
+ # Temporarily disabled due to @double-conversion not using rules_cc. See:
+ # https://github.com/google/double-conversion/pull/269
+ # - rolling
+tasks:
+ verify_targets:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--cxxopt=-std=c++20"
+ - "--host_cxxopt=-std=c++20"
+ # Disable spammy warnings in external dependencies to make build output readable.
+ - "--per_file_copt=external/.*@-w"
+ - "--host_per_file_copt=external/.*@-w"
+ test_flags:
+ - "--cxxopt=-std=c++20"
+ - "--host_cxxopt=-std=c++20"
+ # Disable spammy warnings in external dependencies to make build output readable.
+ - "--per_file_copt=external/.*@-w"
+ - "--host_per_file_copt=external/.*@-w"
+ build_targets:
+ - "@folly//..."
+ test_targets:
+ - "@folly//..."
diff --git a/modules/folly/2025.01.13.00.bcr.5/scripts/bcr_to_folly.sh b/modules/folly/2025.01.13.00.bcr.5/scripts/bcr_to_folly.sh
new file mode 100755
index 00000000000..d8b15e4c934
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/scripts/bcr_to_folly.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# Copies all files under the overlay dir in BCR Folly to a Folly repo and
+# applies all BCR patches. This script is not idempotent, it should only be run
+# once on a clean Folly repo. Meant to be run from this directory.
+#
+# Example usage:
+# ./bcr_to_folly.sh /path/to/folly/repo
+
+set -eou pipefail
+
+if [[ "$#" -ne 1 ]]; then
+ echo "usage: $0 " >&2
+ exit 1
+fi
+
+bcr_folly=".."
+folly_repo="$1"
+
+if [[ ! -d $folly_repo ]]; then
+ echo "error: folly repo dir \"${folly_repo}\" does not exist or is not a directory" >&2
+ exit 2
+fi
+
+rsync -avL "${bcr_folly}/overlay/." "${folly_repo}"
+git -C "${folly_repo}" apply -p 1 "$(realpath ${bcr_folly})/patches/"*.patch
+
+echo
+echo "Copied all files from $(realpath ${bcr_folly}) to ${folly_repo} and applied all patches, happy Bazelfying!"
diff --git a/modules/folly/2025.01.13.00.bcr.5/scripts/folly_to_bcr.sh b/modules/folly/2025.01.13.00.bcr.5/scripts/folly_to_bcr.sh
new file mode 100755
index 00000000000..bf2ad64319f
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/scripts/folly_to_bcr.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Copies all Bazel files from a Folly repo to BCR Folly. Meant to be run from
+# this directory. This script can be run multiple times.
+#
+# Example usage:
+# ./folly_to_bcr.sh /path/to/folly/repo
+
+set -eou pipefail
+
+if [ "$#" -ne 1 ]; then
+ echo "usage: $0 " >&2
+ exit 1
+fi
+
+folly_repo="$1"
+
+if [[ ! -d $folly_repo ]]; then
+ echo "error: folly repo dir \"${folly_repo}\" does not exist or is not a directory" >&2
+ exit 2
+fi
+
+dir="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
+overlay_dir="${dir}/../overlay"
+
+mkdir -p "${overlay_dir}"
+
+cd "${folly_repo}"
+find . -name "BUILD.bazel" | rsync -av --files-from=- . "${overlay_dir}"
+rsync -avR bzl/ "${overlay_dir}"
+rsync -av MODULE.bazel "${dir}/../MODULE.bazel"
diff --git a/modules/folly/2025.01.13.00.bcr.5/source.json b/modules/folly/2025.01.13.00.bcr.5/source.json
new file mode 100644
index 00000000000..392add99f7d
--- /dev/null
+++ b/modules/folly/2025.01.13.00.bcr.5/source.json
@@ -0,0 +1,184 @@
+{
+ "url": "https://github.com/facebook/folly/releases/download/v2025.01.13.00/folly-v2025.01.13.00.tar.gz",
+ "integrity": "sha256-/nm7bdRwniGd2HokKhGGlFqSKjO66YrKJF1n2j8Ia7o=",
+ "overlay": {
+ "BUILD.bazel": "sha256-3nwDWDamoBDeaDtJWz1Z+3xz2zvlXSITjlXr37Vzhw0=",
+ "CMake/BUILD.bazel": "sha256-xJ8uTg94UaEOKP+eAHX25OijxrH2+AzQ9o07e0wohc8=",
+ "bzl/BUILD.bazel": "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
+ "bzl/cpp_library.bzl": "sha256-XGfl7WWYz4F/r5zItF8OTRXm6ROlJmelmQM8vrBhs6U=",
+ "bzl/cpp_unittest.bzl": "sha256-6Fx2rsg9KfpRXzk+FXODIbQK+zDOUwz4r31PjgJm/SU=",
+ "bzl/folly_config_optional_defines.bzl": "sha256-J9LljgXlr1QIW049BH5OjbaKVFws3fJBpJQwWesgQH8=",
+ "folly/BUILD.bazel": "sha256-0X2RafOvkQOXEdUsl3wKvxd8TR6kJBMXNIz0FamCDRQ=",
+ "folly/algorithm/simd/BUILD.bazel": "sha256-pfB9vmJkNCKZnj5Cfdcw8sWG09FFrEdfp4p80Wzik/c=",
+ "folly/algorithm/simd/detail/BUILD.bazel": "sha256-34eyInlcxrA7PCLgDL/0oyT05cFMT96HI4N4Bre+1T0=",
+ "folly/algorithm/simd/detail/test/BUILD.bazel": "sha256-tjyChJvKMejq3stLJPVcKl2TVTHBALoi0FEmu/2qRlw=",
+ "folly/algorithm/simd/test/BUILD.bazel": "sha256-3OdEFmbVpvaWBJOOqkIx+1mZNP50pse3dBRwMJXyQFo=",
+ "folly/channels/BUILD.bazel": "sha256-WGMhGjzHMZLzQnCEwpxRr6Zx4rfLdhUnaoivYFD/Ewg=",
+ "folly/channels/detail/BUILD.bazel": "sha256-cREU8AcY6y8xs0fZzey3Ls1lwJYRjVFTxOWpXDWUGOU=",
+ "folly/channels/detail/test/BUILD.bazel": "sha256-oum7DII98HoSyDGDqRy+0sIW+bQKezXOt8i9UfaJ128=",
+ "folly/channels/test/BUILD.bazel": "sha256-GHmOKDDw3g0wrhWhOelak0i9JUIr+Cb0oh7EoxcA6UI=",
+ "folly/chrono/BUILD.bazel": "sha256-YdYqkc5NGKqF1DGZNYJy1bUI0P4YTaBHdXGqw24BboM=",
+ "folly/chrono/test/BUILD.bazel": "sha256-LDI60xU93iL1bpsQEooBI3wZQYrzpIr5zZYgn/mD1Pk=",
+ "folly/cli/BUILD.bazel": "sha256-J5qpzfw/4vAGo6YMf/Qqlet7J7DFva+h70YCGT9fhYM=",
+ "folly/cli/test/BUILD.bazel": "sha256-vPFVqd/poVHlTSxfJzLW/pWaOpxNa9J5QvLSTPMJYWU=",
+ "folly/compression/BUILD.bazel": "sha256-PYWjIgp666iARR8UwLlnrzIAhdCvU50b5h0dKC1NhvQ=",
+ "folly/compression/elias_fano/BUILD.bazel": "sha256-51WfIxq7XinS2fqt5X8DcNmlqO2mr99MHuOukI19a1A=",
+ "folly/compression/elias_fano/test/BUILD.bazel": "sha256-D0q6+iSDMyhlseyCc75/7iV9fIsDb5PuTlRc1UQLC+k=",
+ "folly/compression/test/BUILD.bazel": "sha256-4zVso5q5kUk4jKE7GBXywcuPuy1g+wBK6bAj1yV0r5Q=",
+ "folly/concurrency/BUILD.bazel": "sha256-aniR19pruR5EgbuzECaXNvNemnYolFOWGvS2OLX36qw=",
+ "folly/concurrency/container/BUILD.bazel": "sha256-2FhUTlumFdgk2iISLR66N/WkP/g1ZVgtw3Izs43+ft8=",
+ "folly/concurrency/container/test/BUILD.bazel": "sha256-mZMz/UcQlSzMti8pqXRut1+W/HYj0MTQ7z7oWZoShnw=",
+ "folly/concurrency/memory/BUILD.bazel": "sha256-wQhdTtTxbMJlVri1hWlldkQdyLrWRVPP/vHByk8L/7o=",
+ "folly/concurrency/memory/test/BUILD.bazel": "sha256-vXhpycTgjQCDwXXZ5gHpvTnb8p/PhVyEII1lDNT9g3U=",
+ "folly/concurrency/test/BUILD.bazel": "sha256-rVae3RgCONu02XKTZeGYR2ro21VMrJ/X1dcjURto6n8=",
+ "folly/container/BUILD.bazel": "sha256-8t1g8YdNHYzuDNz+Q0ZsX+1GRf+8ceJJdmgyBR8SFK0=",
+ "folly/container/detail/BUILD.bazel": "sha256-TYb+anOsfBkZbx9ns5IMScTQfh0DZXsjwAUZ/0HWW/k=",
+ "folly/container/detail/test/BUILD.bazel": "sha256-ayVmC4Ur9VCii+LdRJi7P5lPfwVFjje15bpfLBa8avs=",
+ "folly/container/test/BUILD.bazel": "sha256-81TEadh3qcCRUfT96HXriKdWieDZQLcufZuRkC1Pxqw=",
+ "folly/coro/BUILD.bazel": "sha256-FxC7vmn1xaLA0ipN4FEqNPllVmBA+U0uY53Lcukm+gU=",
+ "folly/coro/test/BUILD.bazel": "sha256-4BE5xAjGb24SjrjihxkZOeH88uCfLWXb0M5P530uiN4=",
+ "folly/crypto/BUILD.bazel": "sha256-DJGssc00TgSAcG7X36G06CCQEntwPU5u4rMSq+G1CvI=",
+ "folly/crypto/detail/BUILD.bazel": "sha256-S3pQEqQb2se29xR2JUZPUEdxEgRpVM92ktq+wFlqjT8=",
+ "folly/crypto/test/BUILD.bazel": "sha256-HP73RV1HVhfYJ4Lj/vGFbU/6o/V2Uzex2lVngfurq0E=",
+ "folly/debugging/exception_tracer/BUILD.bazel": "sha256-3lcg2ixS7yioIDl2Aw5POJ8J3HSG7EHW3sy9rYwdnjY=",
+ "folly/debugging/exception_tracer/test/BUILD.bazel": "sha256-8iGC95O4CeVpZxGBOUND+cp83LWDaQOQ10CIaX9abNc=",
+ "folly/debugging/symbolizer/BUILD.bazel": "sha256-V1YpW0+19C7ENe324AOTVm9QY2d0Tkuz5bgloyQSbcQ=",
+ "folly/debugging/symbolizer/detail/BUILD.bazel": "sha256-MliUql1f33q/iIMfD3HgOf/9l6QKq9/7bamsW5cC09M=",
+ "folly/debugging/symbolizer/test/BUILD.bazel": "sha256-W1lvErQ7avpg9RD6M8F5lmlhrrED3rpY1/Us5hCUdkI=",
+ "folly/detail/BUILD.bazel": "sha256-YDrh3dhjut7ywISPj/6cd3pDNNxAQ8MadK2OG2++coM=",
+ "folly/detail/base64_detail/BUILD.bazel": "sha256-EshXlyTPHzw+CbAZD09RCmKgJMT+6MPvkTlsejeBluw=",
+ "folly/detail/base64_detail/tests/BUILD.bazel": "sha256-Muyqap8Aj0YOvpxksiKwmvpBEn8eosOT10AxKQx2wcI=",
+ "folly/detail/test/BUILD.bazel": "sha256-6owl17hIz3tXyUylUPDJJ9EidfQpuHk9cHMXsluW+zE=",
+ "folly/executors/BUILD.bazel": "sha256-hFdWM5veyeYxtUUQZN7lpt/JE1YH4yJJw6LGMOZQEjc=",
+ "folly/executors/task_queue/BUILD.bazel": "sha256-BzYWbdgq2lYbVKXXfQaZI2+cBeDf5Ly2DhHaDulYtC8=",
+ "folly/executors/task_queue/test/BUILD.bazel": "sha256-53f58VlpYqpb/ZIRXiLu78lREM9MwUwjNp85R398xQI=",
+ "folly/executors/test/BUILD.bazel": "sha256-cZHMpcDh0EWJFewOPVvr8zT4xHtQoavuSMI1NSGt9eA=",
+ "folly/executors/thread_factory/BUILD.bazel": "sha256-fzd8PTSpYfW0lxnngcZTRAhr5Ynm/aFk7uUu7Qxbbsk=",
+ "folly/experimental/BUILD.bazel": "sha256-vIx/wU2FTAf9v349sjqLR39kS9bYFuseK7d4WRA5EKE=",
+ "folly/experimental/channels/BUILD.bazel": "sha256-ILzLl3AStFtO5OZK/mzIbMoyg7XC73jWwMfMdYrKQWA=",
+ "folly/experimental/channels/detail/BUILD.bazel": "sha256-TPZ+PfLKMqacT2wZOytfmtYEsAk0bZLXaHBNlqtSljU=",
+ "folly/experimental/channels/test/BUILD.bazel": "sha256-sxuzgN+qACC6KzI6MGiU3GJT2xt+aVX5ETGoyCmy2Rc=",
+ "folly/experimental/coro/BUILD.bazel": "sha256-eu1iv7E2E3l1wV9CgLT6kDn6jyA9PRGREVUAJsfWlUA=",
+ "folly/experimental/crypto/BUILD.bazel": "sha256-ChGcfOOQQuoKgYU6mzpxip/ofuOoEdzpLLtQrqFxepE=",
+ "folly/experimental/exception_tracer/BUILD.bazel": "sha256-HbJvNIsnbqSA+Bt36XBNRMU2SR0hFQP65AaJtk72KhM=",
+ "folly/experimental/flat_combining/BUILD.bazel": "sha256-jmADvHUfJ03ytNzTaDkwiur0y7pXyyHN9WiD8KQGXPU=",
+ "folly/experimental/flat_combining/test/BUILD.bazel": "sha256-Jmtjk+bcwXGs+nmOUZhtRkABd3u913iO0bbanx1IPTI=",
+ "folly/experimental/io/BUILD.bazel": "sha256-+vmsU3NOD7ub6AajijTghuS4wy+gVd/oQzRZtmAMJc0=",
+ "folly/experimental/io/test/BUILD.bazel": "sha256-TA2q1KJbW1ORbhMxpaUo5BveTHL40jDDGFQozn0764w=",
+ "folly/experimental/observer/BUILD.bazel": "sha256-DHhjMbDGusg/4MMOrbe5qpgE7j+GoiYoxrrO7361s+k=",
+ "folly/experimental/observer/detail/BUILD.bazel": "sha256-/1f+C5dTZhi2WvkZgF+GywguVyy3bs5MyT3xMsZVRR8=",
+ "folly/experimental/settings/BUILD.bazel": "sha256-7XwYVtSI418uZ3IVm9q1TjqSwxRdpRWZJqJv/4Hqs/o=",
+ "folly/experimental/symbolizer/BUILD.bazel": "sha256-SKIyXHy/TMMn5A/zu0kEFPkW5DXB2iar3dN0r6AZs3E=",
+ "folly/experimental/symbolizer/detail/BUILD.bazel": "sha256-oCEMI2HEgbxuOQDUSbO5yvoORTLURFUk5AaKQUT8qKc=",
+ "folly/experimental/test/BUILD.bazel": "sha256-T2dIevuOikzUsYiPkh9AOWvpnZAXrpnrRpGd5Rj1KOc=",
+ "folly/ext/BUILD.bazel": "sha256-PLK9wTpfjduwIpZx43+YT9157WN2a+TxWu4AMRrqMgQ=",
+ "folly/ext/buck2/BUILD.bazel": "sha256-c7/B1CY/WXjfk3cgRx6sVAII5oGNnbib4CWev2Ghfdk=",
+ "folly/external/aor/BUILD.bazel": "sha256-KLfVIOQHOPCQKuGuWFiaFx5uCLRHuJn4XZgu/dXtdkg=",
+ "folly/external/farmhash/BUILD.bazel": "sha256-+adfAfFmcQGSRzOteRw1IMn/NtoXadhknlNkQZ4E4HQ=",
+ "folly/external/farmhash/test/BUILD.bazel": "sha256-2NPHrgCVUARMW16bey5YiLIivxQCmw4DSdOr0vVzjOY=",
+ "folly/external/fast-crc32/BUILD.bazel": "sha256-iuXFsqSR84Pnj6epXzp72NIQaGR32DEPZ976BL0NiC0=",
+ "folly/external/nvidia/detail/BUILD.bazel": "sha256-NuxwuK+Q6oUe9yZ0jObvoUqaa2q54pZ4L5xV9fdHzeE=",
+ "folly/external/nvidia/hash/BUILD.bazel": "sha256-XPFOZ0R59lHUlQoSRPfIASsNuPUXlde0Q0SwQgDiAaY=",
+ "folly/external/nvidia/hash/detail/BUILD.bazel": "sha256-fMtLKSnO731frHfQ9tXIdoEpRGxeXOlRyJHqNLvxDCg=",
+ "folly/fibers/BUILD.bazel": "sha256-HyERRX/x9RricTJ+XoLpVNs1RjiMYHi7kGDoW2uJ2ZE=",
+ "folly/fibers/async/BUILD.bazel": "sha256-17ebmhAchf2lc5Num1g5IQtnpBL47Cw7h7b62MfUryQ=",
+ "folly/fibers/async/test/BUILD.bazel": "sha256-Y+AYHcA2KDVOiJzkKii33n1+igYXF7DTUWcV+KtZ/Qs=",
+ "folly/fibers/detail/BUILD.bazel": "sha256-p9b/FL7VbvMp6dxIIbJBtT4Ntqu/oN5E5HckRRO8ymg=",
+ "folly/fibers/test/BUILD.bazel": "sha256-duSfFxu5ssax2zV2O5mIG2hCi1/iNXMW+gQGWLjjAZA=",
+ "folly/functional/BUILD.bazel": "sha256-no7ys9bMcnQ4cXri8e33fT+PuBYrFJ4+pXSA/PYl9pc=",
+ "folly/functional/test/BUILD.bazel": "sha256-5glo+E5pDTj/DNA1AeY1KW7+5jp8dBVvRa4657cGLoA=",
+ "folly/futures/BUILD.bazel": "sha256-XTivSlBanLv0Vt0HEAxzrb1idASZOwVGmgv/7MOHyoM=",
+ "folly/futures/detail/BUILD.bazel": "sha256-As9Ic/T2xNIcYP0dIcTjQH2vIU20+q0S1DUfp3TehXc=",
+ "folly/futures/test/BUILD.bazel": "sha256-dSZFGe7Qpx/rUX1wcEF2JJqM5a/8/SuHVYhT4SrkQVw=",
+ "folly/gen/BUILD.bazel": "sha256-8u5legeVSBp0oWce7zh/6ckZSGtd0gQ3d7E6SqpW5NU=",
+ "folly/gen/test/BUILD.bazel": "sha256-mOeKbElJKmGTnlXeibQjLlSfk3eJ8VFkZsF9QpxVuks=",
+ "folly/hash/BUILD.bazel": "sha256-9DxQA6HpOhz7WQOO6ITenhIGY6ChlNIG+64x0Hg66AQ=",
+ "folly/hash/detail/BUILD.bazel": "sha256-xYlg6QOuGkGAzuo4RLgUpRYLrY8/H5eKVIcZjGp4V4k=",
+ "folly/hash/test/BUILD.bazel": "sha256-auPyk7dj3mZBq9XzhwfURCnI+t2L0rHdrsuer6v+mTI=",
+ "folly/init/BUILD.bazel": "sha256-3KUBBTHSdfG7QVRHHpDAHE9SXtnfTKtb+RTt+5iKYPE=",
+ "folly/init/test/BUILD.bazel": "sha256-PjW5PacjTGoad9tm0rOO/mR5Yj+Blp2PDreXqetKZ+M=",
+ "folly/io/BUILD.bazel": "sha256-iu8kVXLT/p6ppQyXXmJAZXTjDxQJEQez7gOQqGamFWY=",
+ "folly/io/async/BUILD.bazel": "sha256-Oo19gnIAL9l8FXjGEZqb0h05CcSKnC+e0UCH0MTwgwU=",
+ "folly/io/async/fdsock/BUILD.bazel": "sha256-tgctK+AUK+36up5MHE8Mop+IUfaxRAm/rgOViDREd7Y=",
+ "folly/io/async/fdsock/test/BUILD.bazel": "sha256-ZoBO1tV99UWnvqp7MgMjknWM5ja6HC4MXQZOK1N3nU4=",
+ "folly/io/async/observer/BUILD.bazel": "sha256-74xj5yun3u+QOgVbtUWALzo/zENVCrxNPb3Trrknzgg=",
+ "folly/io/async/ssl/BUILD.bazel": "sha256-QhH050vaqL9ANp9cyfu9wFLDSyOpvi1plliiW0xZEYo=",
+ "folly/io/async/ssl/test/BUILD.bazel": "sha256-UX0VLDweRMQ5P+9pupz2fzGNbpt3kHsYHCTlN9VAE94=",
+ "folly/io/async/test/BUILD.bazel": "sha256-rDxKOO3yfnadUVcmRDq2saoz101y43mGUmr5EoGyf1w=",
+ "folly/io/async/test/certs/BUILD.bazel": "sha256-LnyYswIqeYdyLeI8gAWVd6R+lSuxlSVf8mSqKek8kpw=",
+ "folly/io/coro/BUILD.bazel": "sha256-NwZ+uY0tXu1Iu9goJj5LxiaMnpkU/roIo2lbmYj1wXw=",
+ "folly/io/coro/test/BUILD.bazel": "sha256-R0PjzAWrlW6mydIXyGLXKOm76C6j2MMGruTt0luSJKk=",
+ "folly/io/test/BUILD.bazel": "sha256-29WflIXS9ToY+uFo9y5oumWBsRzJ4OOGLJ2rmx7f1Lg=",
+ "folly/io/tool/BUILD.bazel": "sha256-56J1xEoczky8RrW6WHOXKhVJzm59io8aNiW+0rtwVv4=",
+ "folly/json/BUILD.bazel": "sha256-A6TC5AGbYHJqpot6lHUWM96m/5nw0YMSGJgP4oJzDUU=",
+ "folly/json/bser/BUILD.bazel": "sha256-RsFGmqIczlx+jdj+0FxR0CU7gfPuuj9M42idUaoE+fw=",
+ "folly/json/bser/test/BUILD.bazel": "sha256-JbSSUOa6EKgW9zh+9MtiNhPT1eniQNDon0h10JC5YAM=",
+ "folly/json/test/BUILD.bazel": "sha256-2InrO64ESjWFrItF/GOg9/uLq5tM4/O/5PQNggpGGCo=",
+ "folly/json/tool/BUILD.bazel": "sha256-yjr+pL1A5KtRg9U3CI+04AQMO8LET4LAu7MbFGwlpUA=",
+ "folly/lang/BUILD.bazel": "sha256-9wEXa9ywUrpUrDfNx+ZvcbPtcIX9oxzJieVGdc8aX6c=",
+ "folly/lang/test/BUILD.bazel": "sha256-usMJW3/Rt7BHRPhhpWjwkpffaw1jxu9pLM+KxnuBihY=",
+ "folly/logging/BUILD.bazel": "sha256-SmeGAVYGvjfVeBV3GuhxfatPYTmX8OpuyDRw2/LHYVs=",
+ "folly/logging/test/BUILD.bazel": "sha256-Xz2mj/L7e4mb0UBnnCD/phijg8AeGbNKa3N2d8oH5r4=",
+ "folly/memory/BUILD.bazel": "sha256-wI6GolSLcyf+UVMrHqOk882QSZCIiA7F9LukSVXkT9A=",
+ "folly/memory/detail/BUILD.bazel": "sha256-4Cv0pSXMrkJ3BupaA6v6/go1o5j8UYQFTu2clKQaNAM=",
+ "folly/memory/test/BUILD.bazel": "sha256-/Pin5E9DLDGYOBXkw/qYajDKU3S8xFIT1Dd2EGxAUVE=",
+ "folly/net/BUILD.bazel": "sha256-11bRnVzA1tXscHIZ9pyD+WkwVKGzw7PtrYsA0Fxon48=",
+ "folly/net/detail/BUILD.bazel": "sha256-KkMmGLp6B+BvwhY9AV3ERT8836tdK5H0pcCdslMotGw=",
+ "folly/net/detail/test/BUILD.bazel": "sha256-THgYPNOB6Fo8OStR2COCwqXNoVHBGncAA0E+X1437XM=",
+ "folly/net/test/BUILD.bazel": "sha256-N0YULa3ywDfDSjLzv8fPPw25o84uSWLUNcqJ+kjPfXo=",
+ "folly/observer/BUILD.bazel": "sha256-eh1sPCzr1xKBR8Hsvf+qz9aF2DxI6nrvwCq6BQXaNoo=",
+ "folly/observer/detail/BUILD.bazel": "sha256-9z6tjmKjpQsRjXoEggIoqSNEjKd1rh9e0bYelDsHeOA=",
+ "folly/poly/BUILD.bazel": "sha256-udn3trEuI5VPX7yQCLI4dUo7iwZx6xjFLWhlT9l8Fu8=",
+ "folly/portability/BUILD.bazel": "sha256-tn1SqCfic3Custgzw2qsX49848DWrrOQtfB3rW39LNM=",
+ "folly/portability/test/BUILD.bazel": "sha256-bWHyWLIP0yjFq8NcmEg9z/ZiJS3suI5F37vcEEL/9TI=",
+ "folly/settings/BUILD.bazel": "sha256-s7IXB7hFkKOqkNu2aI7MZOnSCJfAvuoVkEaVkUX02iQ=",
+ "folly/settings/test/BUILD.bazel": "sha256-JH+BoAEBfRjSxAGs7EujZ5nqsoF/pZ0cmwb4TQFuSKk=",
+ "folly/ssl/BUILD.bazel": "sha256-6WTuuQiSMw5JjDBdGoAstYTCbWQX8FzCXKrX4Wtr41o=",
+ "folly/ssl/detail/BUILD.bazel": "sha256-Mv24c0VOHGhn97aRHXuBIRZ/WZsyM1pOH26NIJgw4eM=",
+ "folly/ssl/test/BUILD.bazel": "sha256-qrBDzEkmWCJFotSBPVmNkOHDVbU/5SV42ruvykc1s+k=",
+ "folly/stats/BUILD.bazel": "sha256-RvQb+GxOg5UBPc9FtrUFkJkjGTbBCrtiiAxdkmg7edM=",
+ "folly/stats/detail/BUILD.bazel": "sha256-Xy5+oFdlFA3La0IihkgUDhuqBRPBqj8h1PB/m46HckI=",
+ "folly/stats/detail/test/BUILD.bazel": "sha256-P0Wk1pTdxMM7r1Q8Os1y9jUGCWtpTp+c1qCJHYAMVEE=",
+ "folly/stats/test/BUILD.bazel": "sha256-MRz4Mu1/cU7439Ad2NDvrAQevF06ePsS0IlF0oBePGk=",
+ "folly/synchronization/BUILD.bazel": "sha256-u+0HtGgT5DqtzK9xD1J38YG+HQeSKWQeF2dW4TtZRQU=",
+ "folly/synchronization/detail/BUILD.bazel": "sha256-5lRvKNzNEl1q0CS/jY2deO2zkLrs84S5Fl97olrROss=",
+ "folly/synchronization/detail/test/BUILD.bazel": "sha256-lRw+LRablBXQKGL4wH/BvPEY8v6myxXCqBIOGICH3U8=",
+ "folly/synchronization/example/BUILD.bazel": "sha256-o4gHfMec6Vqt5nXcNg0/lpxGkH5hgxiqKQ9e3/3Wl1M=",
+ "folly/synchronization/test/BUILD.bazel": "sha256-VQavTxLfFmO5cZH9Kc7NNbgALRHfU3WLNUmanod7HhA=",
+ "folly/system/BUILD.bazel": "sha256-O9mXvrOJs7xEzzitJpyM2r5stGtzzbS22Jr8bmXyyec=",
+ "folly/system/test/BUILD.bazel": "sha256-t6QuLoUQHejJVNRTcuL9ZcMbU+EbuDCqD/PlVFl8gq0=",
+ "folly/test/BUILD.bazel": "sha256-K6o0p6JDs6zWk0r2mJX9g7xcjrssTH7U9Dwpl5EZKTk=",
+ "folly/test/common/BUILD.bazel": "sha256-yZLcOFzzZP6Xu++D53DphKdxPoDO2Y2+6sPCSxaFuRo=",
+ "folly/test/stl_tests/BUILD.bazel": "sha256-QNl6iAc2zr5AsuLaCvSB8v3tO164qu1NCSl2uKW/cbU=",
+ "folly/testing/BUILD.bazel": "sha256-6shKBk8Hs0mVvIKgtddaQMfkYrjAvmRbgAn8IM/Ax3c=",
+ "folly/testing/test/BUILD.bazel": "sha256-dS4ItsMbUsy6ziWK7bHNt2qzFB7XmiyxsvCGZpO0ees=",
+ "folly/tool/BUILD.bazel": "sha256-tqWiY/yn1tCG5OeEBPJUKzcGC6Zph/ul+I2Zplxwb3Q=",
+ "folly/tracing/BUILD.bazel": "sha256-BSbdIpcuZDDWdsw4kwoxI+Qb7R6zvYH9W1womPZ0iqM=",
+ "folly/tracing/test/BUILD.bazel": "sha256-2J9U+yvgSOOJDfWojau4YO6lJimepq26KQAxWOu6+Ck="
+ },
+ "patches": {
+ "fix_async_fd_socket_test.patch": "sha256-XkwjenxR4qeUBQV2UxHP+UDOKNcDdiFxH/UkhqfkngQ=",
+ "fix_basic_transport_certificate_test.patch": "sha256-Wgj1Uvo/DPuZuSnReKeqra6L8HutmtfmSJDx0TH6yQs=",
+ "fix_exception_test.patch": "sha256-31wS+VlMHNv7sZHPlVgiF/aTYxTu8VJAT5GIb4NreOU=",
+ "fix_flat_combining_benchmark_test.patch": "sha256-qJySTMnswHNpIg/XQuR+QLMthyr82J+GeZI0sX0JIeI=",
+ "fix_hasptr_test.patch": "sha256-2kZTjiyAtzLJaDKOPrZxRSpRQhYm103429fhZHZk+hA=",
+ "fix_io_uring_backend_test.patch": "sha256-fAsAtCRu5IhMRmTLyAx5wFnhFjd173MVwZT8+Ejj/gQ=",
+ "fix_shared_mutex_test.patch": "sha256-oSqlA/N2sAOwx6lC2rgKGvtkZ/KOppdbL3vCynALxk8=",
+ "fix_ssl_cert_utils_test.patch": "sha256-vYhTzoAuQ259VtQdWjowDwld/s8SK7LY3PY2VEY1VdE=",
+ "test_utils_bazel_runfiles.patch": "sha256-x7IXcl8op5iAIy8NNxn4rpSTDF6LsqF0CE0VGXjmIFU=",
+ "use_quote_includes_for_double_conversion.patch": "sha256-oV/QtKm1PMQHnDbt0SjVDMbdNs1dRuFAjk/hD2PFg2Y=",
+ "use_quote_includes_for_snappy.patch": "sha256-4GtkBXGn+hdIQr18d6B0RLDXGEUjfAlQlit5fIA4hPo=",
+ "folly_debugging_symbolizer_Dwarf.cpp.patch": "sha256-YTXiIICYlyIkRlW8vNCRsKuBoUduCljIGA2c21b0L6g=",
+ "folly_debugging_symbolizer_DwarfImpl.cpp.patch": "sha256-Bg51zxayPblplGwMfg8kd5Qs/VWrz2EkkPDeHgc7SBI=",
+ "folly_debugging_symbolizer_DwarfUtil.cpp.patch": "sha256-rfANh5BdnmbK4Byyet3wHvMtqhSYOuho28xUgaZmnkM=",
+ "folly_debugging_symbolizer_DwarfUtil.h.patch": "sha256-xpcfpS1ejgBYC6pVo/R37LE/Sgso16IZpkREjBmGouo=",
+ "folly_executors_test_FiberIOExecutorTest.cpp.patch": "sha256-/rwjr1fCKDzGmXlxcSPBkPoW4OzgAH6Ii30nYxB8Ocs=",
+ "folly_fibers_async_test_AsyncTest.cpp.patch": "sha256-Z1qVRj15zc2UEGjdL6n7mm/7arfnIxvn+x5gdkWK5zM=",
+ "folly_Math.h.patch": "sha256-xAioLwWupbjts5Ag+PSYAHo5fGywHBnsVBTsshyeNMc=",
+ "folly_io_async_test_IoTestTempFileUtil.cpp.patch": "sha256-IyWrTXdh30R/YcMFIt1LKB0R24ruJg8OJacBA5P/7Tg=",
+ "folly_io_async_test_TerminateCancellationTokenTest.cpp.patch": "sha256-R6XEE28Pp0dBUjqLV1fkbWlucd8hIxY788JtG4KPr6Q=",
+ "fix_async_udp_socket_test.patch": "sha256-5Db0D53oLszajUaV97W3R7F3s83Fpc5r3KL+Yh4Rx2g=",
+ "fix_uninitialized_memory_hacks.patch": "sha256-4Ur6u10WpvFI72bNRUU6nHpVqtkexAcpWERiipJ30zw="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/folly/metadata.json b/modules/folly/metadata.json
index 132fabe2bc4..b7c172a72b1 100644
--- a/modules/folly/metadata.json
+++ b/modules/folly/metadata.json
@@ -22,7 +22,8 @@
"2025.01.13.00.bcr.1",
"2025.01.13.00.bcr.2",
"2025.01.13.00.bcr.3",
- "2025.01.13.00.bcr.4"
+ "2025.01.13.00.bcr.4",
+ "2025.01.13.00.bcr.5"
],
"yanked_versions": {}
}
From 43b259d16e0f4edc72995e828a949b158570510e Mon Sep 17 00:00:00 2001
From: Machine account for bazel-contrib
Date: Wed, 14 Jan 2026 22:48:51 -0800
Subject: [PATCH 003/367] {rules_python,rules_python_gazelle_plugin}@1.8.0-rc4
(#7154)
Release:
https://github.com/bazel-contrib/rules_python/releases/tag/1.8.0-rc4
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: rickeylev <34175098+rickeylev@users.noreply.github.com>
---
modules/rules_python/1.8.0-rc4/MODULE.bazel | 460 ++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 +
modules/rules_python/1.8.0-rc4/presubmit.yml | 33 ++
modules/rules_python/1.8.0-rc4/source.json | 9 +
modules/rules_python/metadata.json | 3 +-
.../1.8.0-rc4/MODULE.bazel | 47 ++
.../patches/module_dot_bazel_version.patch | 12 +
.../1.8.0-rc4/presubmit.yml | 41 ++
.../1.8.0-rc4/source.json | 9 +
.../rules_python_gazelle_plugin/metadata.json | 3 +-
10 files changed, 627 insertions(+), 2 deletions(-)
create mode 100644 modules/rules_python/1.8.0-rc4/MODULE.bazel
create mode 100644 modules/rules_python/1.8.0-rc4/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_python/1.8.0-rc4/presubmit.yml
create mode 100644 modules/rules_python/1.8.0-rc4/source.json
create mode 100644 modules/rules_python_gazelle_plugin/1.8.0-rc4/MODULE.bazel
create mode 100644 modules/rules_python_gazelle_plugin/1.8.0-rc4/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_python_gazelle_plugin/1.8.0-rc4/presubmit.yml
create mode 100644 modules/rules_python_gazelle_plugin/1.8.0-rc4/source.json
diff --git a/modules/rules_python/1.8.0-rc4/MODULE.bazel b/modules/rules_python/1.8.0-rc4/MODULE.bazel
new file mode 100644
index 00000000000..548a7ceda64
--- /dev/null
+++ b/modules/rules_python/1.8.0-rc4/MODULE.bazel
@@ -0,0 +1,460 @@
+module(
+ name = "rules_python",
+ version = "1.8.0-rc4",
+ compatibility_level = 1,
+)
+
+bazel_dep(name = "bazel_features", version = "1.21.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "rules_cc", version = "0.1.5")
+bazel_dep(name = "platforms", version = "0.0.11")
+
+# Those are loaded only when using py_proto_library
+# Use py_proto_library directly from protobuf repository
+bazel_dep(name = "protobuf", version = "29.0-rc2", repo_name = "com_google_protobuf")
+
+rules_python_config = use_extension("//python/extensions:config.bzl", "config")
+use_repo(
+ rules_python_config,
+ "pypi__build",
+ "pypi__click",
+ "pypi__colorama",
+ "pypi__importlib_metadata",
+ "pypi__installer",
+ "pypi__more_itertools",
+ "pypi__packaging",
+ "pypi__pep517",
+ "pypi__pip",
+ "pypi__pip_tools",
+ "pypi__pyproject_hooks",
+ "pypi__setuptools",
+ "pypi__tomli",
+ "pypi__wheel",
+ "pypi__zipp",
+ "rules_python_internal",
+)
+
+# We need to do another use_extension call to expose the "pythons_hub"
+# repo.
+python = use_extension("//python/extensions:python.bzl", "python")
+
+# The default toolchain to use if nobody configures a toolchain.
+# NOTE: This is not a stable version. It is provided for convenience, but will
+# change frequently to track the most recent Python version.
+# NOTE: The root module can override this.
+# NOTE: There must be a corresponding `python.toolchain()` call for the version
+# specified here.
+python.defaults(
+ python_version = "3.11",
+)
+python.toolchain(
+ python_version = "3.11",
+)
+use_repo(
+ python,
+ "python_3_11",
+ "pythons_hub",
+ python = "python_versions",
+)
+
+# This call registers the Python toolchains.
+register_toolchains("@pythons_hub//:all")
+
+#####################
+# Install twine for our own runfiles wheel publishing and allow bzlmod users to use it.
+
+pip = use_extension("//python/extensions:pip.bzl", "pip")
+
+# NOTE @aignas 2025-07-06: we define these platforms to keep backwards compatibility with the
+# current `experimental_index_url` implementation. Whilst we stabilize the API this list may be
+# updated with a mention in the CHANGELOG.
+[
+ pip.default(
+ arch_name = cpu,
+ config_settings = [
+ "@platforms//cpu:{}".format(cpu),
+ "@platforms//os:linux",
+ "//python/config_settings:_is_py_freethreaded_{}".format(
+ "yes" if freethreaded else "no",
+ ),
+ ],
+ env = {"platform_version": "0"},
+ marker = "python_version >= '3.13'" if freethreaded else "",
+ os_name = "linux",
+ platform = "linux_{}{}".format(cpu, freethreaded),
+ whl_abi_tags = ["cp{major}{minor}t"] if freethreaded else [
+ "abi3",
+ "cp{major}{minor}",
+ ],
+ whl_platform_tags = [
+ "linux_{}".format(cpu),
+ "manylinux_*_{}".format(cpu),
+ ],
+ )
+ for cpu in [
+ "x86_64",
+ "aarch64",
+ ]
+ for freethreaded in [
+ "",
+ "_freethreaded",
+ ]
+]
+
+[
+ pip.default(
+ arch_name = cpu,
+ config_settings = [
+ "@platforms//cpu:{}".format(cpu),
+ "@platforms//os:osx",
+ "//python/config_settings:_is_py_freethreaded_{}".format(
+ "yes" if freethreaded else "no",
+ ),
+ ],
+ # We choose the oldest non-EOL version at the time when we release `rules_python`.
+ # See https://endoflife.date/macos
+ env = {"platform_version": "14.0"},
+ marker = "python_version >= '3.13'" if freethreaded else "",
+ os_name = "osx",
+ platform = "osx_{}{}".format(cpu, freethreaded),
+ whl_abi_tags = ["cp{major}{minor}t"] if freethreaded else [
+ "abi3",
+ "cp{major}{minor}",
+ ],
+ whl_platform_tags = [
+ "macosx_*_{}".format(suffix)
+ for suffix in platform_tag_cpus
+ ],
+ )
+ for cpu, platform_tag_cpus in {
+ "aarch64": [
+ "universal2",
+ "arm64",
+ ],
+ "x86_64": [
+ "universal2",
+ "x86_64",
+ ],
+ }.items()
+ for freethreaded in [
+ "",
+ "_freethreaded",
+ ]
+]
+
+[
+ pip.default(
+ arch_name = cpu,
+ config_settings = [
+ "@platforms//cpu:{}".format(cpu),
+ "@platforms//os:windows",
+ "//python/config_settings:_is_py_freethreaded_{}".format(
+ "yes" if freethreaded else "no",
+ ),
+ ],
+ env = {"platform_version": "0"},
+ marker = "python_version >= '3.13'" if freethreaded else "",
+ os_name = "windows",
+ platform = "windows_{}{}".format(cpu, freethreaded),
+ whl_abi_tags = ["cp{major}{minor}t"] if freethreaded else [
+ "abi3",
+ "cp{major}{minor}",
+ ],
+ whl_platform_tags = whl_platform_tags,
+ )
+ for cpu, whl_platform_tags in {
+ "x86_64": ["win_amd64"],
+ }.items()
+ for freethreaded in [
+ "",
+ "_freethreaded",
+ ]
+]
+
+[
+ pip.default(
+ arch_name = cpu,
+ config_settings = [
+ "@platforms//cpu:{}".format(cpu),
+ "@platforms//os:windows",
+ "//python/config_settings:_is_py_freethreaded_{}".format(
+ "yes" if freethreaded else "no",
+ ),
+ ],
+ env = {"platform_version": "0"},
+ marker = "python_version >= '3.13'" if freethreaded else "python_version >= '3.11'",
+ os_name = "windows",
+ platform = "windows_{}{}".format(cpu, freethreaded),
+ whl_abi_tags = ["cp{major}{minor}t"] if freethreaded else [
+ "abi3",
+ "cp{major}{minor}",
+ ],
+ whl_platform_tags = whl_platform_tags,
+ )
+ for cpu, whl_platform_tags in {
+ "aarch64": ["win_arm64"],
+ }.items()
+ for freethreaded in [
+ "",
+ "_freethreaded",
+ ]
+]
+
+pip.parse(
+ hub_name = "rules_python_publish_deps",
+ python_version = "3.11",
+ requirements_by_platform = {
+ "//tools/publish:requirements_darwin.txt": "osx_*",
+ "//tools/publish:requirements_linux.txt": "linux_*",
+ "//tools/publish:requirements_windows.txt": "windows_*",
+ },
+)
+use_repo(pip, "rules_python_publish_deps")
+
+# Not a dev dependency to allow usage of //sphinxdocs code, which refers to stardoc repos.
+bazel_dep(name = "stardoc", version = "0.7.2", repo_name = "io_bazel_stardoc")
+
+# ===== DEV ONLY DEPS AND SETUP BELOW HERE =====
+bazel_dep(name = "rules_bazel_integration_test", version = "0.27.0", dev_dependency = True)
+bazel_dep(name = "rules_testing", version = "0.6.0", dev_dependency = True)
+bazel_dep(name = "rules_shell", version = "0.3.0", dev_dependency = True)
+bazel_dep(name = "rules_multirun", version = "0.9.0", dev_dependency = True)
+bazel_dep(name = "bazel_ci_rules", version = "1.0.0", dev_dependency = True)
+bazel_dep(name = "rules_pkg", version = "1.0.1", dev_dependency = True)
+bazel_dep(name = "other", version = "0", dev_dependency = True)
+bazel_dep(name = "another_module", version = "0", dev_dependency = True)
+
+# Extra gazelle plugin deps so that WORKSPACE.bzlmod can continue including it for e2e tests.
+# We use `WORKSPACE.bzlmod` because it is impossible to have dev-only local overrides.
+bazel_dep(name = "rules_go", version = "0.41.0", dev_dependency = True, repo_name = "io_bazel_rules_go")
+
+internal_dev_deps = use_extension(
+ "//python/private:internal_dev_deps.bzl",
+ "internal_dev_deps",
+ dev_dependency = True,
+)
+use_repo(
+ internal_dev_deps,
+ "buildkite_config",
+ "implicit_namespace_ns_sub1",
+ "implicit_namespace_ns_sub2",
+ "pkgutil_nspkg1",
+ "pkgutil_nspkg2",
+ "rules_python_runtime_env_tc_info",
+ "somepkg_with_build_files",
+ "whl_with_build_files",
+)
+
+dev_rules_python_config = use_extension(
+ "//python/extensions:config.bzl",
+ "config",
+ dev_dependency = True,
+)
+dev_rules_python_config.add_transition_setting(
+ # Intentionally add a setting already present for testing
+ setting = "//python/config_settings:python_version",
+)
+dev_rules_python_config.add_transition_setting(
+ setting = "//tests/multi_pypi:external_deps_name",
+)
+
+local_path_override(
+ module_name = "other",
+ path = "tests/modules/other",
+)
+
+local_path_override(
+ module_name = "another_module",
+ path = "tests/modules/another_module",
+)
+
+dev_python = use_extension(
+ "//python/extensions:python.bzl",
+ "python",
+ dev_dependency = True,
+)
+dev_python.override(
+ register_all_versions = True,
+)
+
+# For testing an arbitrary runtime triggered by a custom flag.
+# See //tests/toolchains:custom_platform_toolchain_test
+dev_python.single_version_platform_override(
+ platform = "linux-x86-install-only-stripped",
+ python_version = "3.13.1",
+ sha256 = "56817aa976e4886bec1677699c136cb01c1cdfe0495104c0d8ef546541864bbb",
+ target_compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
+ ],
+ target_settings = [
+ "@@//tests/support:is_custom_runtime_linux-x86-install-only-stripped",
+ ],
+ urls = ["https://github.com/astral-sh/python-build-standalone/releases/download/20250115/cpython-3.13.1+20250115-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz"],
+)
+
+dev_pip = use_extension(
+ "//python/extensions:pip.bzl",
+ "pip",
+ dev_dependency = True,
+)
+
+[
+ dev_pip.parse(
+ download_only = True,
+ experimental_index_url = "https://pypi.org/simple",
+ hub_name = "dev_pip",
+ parallel_download = False,
+ python_version = python_version,
+ requirements_lock = "//docs:requirements.txt",
+ # Ensure that we are setting up the following platforms
+ target_platforms = [
+ "{os}_{arch}",
+ "{os}_{arch}_freethreaded",
+ ],
+ )
+ for python_version in [
+ "3.9",
+ "3.10",
+ "3.11",
+ "3.12",
+ "3.13",
+ "3.14",
+ ]
+]
+
+dev_pip.parse(
+ download_only = True,
+ experimental_index_url = "https://pypi.org/simple",
+ hub_name = "pypiserver",
+ python_version = "3.11",
+ requirements_lock = "//examples/wheel:requirements_server.txt",
+)
+dev_pip.parse(
+ hub_name = "pypi_alpha",
+ python_version = "3.11",
+ requirements_lock = "//tests/multi_pypi/alpha:requirements.txt",
+)
+dev_pip.parse(
+ hub_name = "pypi_beta",
+ python_version = "3.11",
+ requirements_lock = "//tests/multi_pypi/beta:requirements.txt",
+)
+use_repo(dev_pip, "dev_pip", "pypi_alpha", "pypi_beta", "pypiserver")
+
+# Bazel integration test setup below
+
+bazel_binaries = use_extension(
+ "@rules_bazel_integration_test//:extensions.bzl",
+ "bazel_binaries",
+ dev_dependency = True,
+)
+
+# Keep in sync with //:version.bzl
+bazel_binaries.local(
+ name = "self",
+ path = "tests/integration/bazel_from_env",
+)
+bazel_binaries.download(version = "7.4.1")
+bazel_binaries.download(version = "8.0.0")
+bazel_binaries.download(version = "9.0.0rc1")
+use_repo(
+ bazel_binaries,
+ "bazel_binaries",
+ # These don't appear necessary, but are reported as direct dependencies
+ # that should be use_repo()'d, so we add them as requested
+ "bazel_binaries_bazelisk",
+ "build_bazel_bazel_7_4_1",
+ "build_bazel_bazel_8_0_0",
+ "build_bazel_bazel_9_0_0rc1",
+ # "build_bazel_bazel_rolling",
+ "build_bazel_bazel_self",
+)
+
+# TODO @aignas 2025-01-27: should this be moved to `//python/extensions:uv.bzl` or should
+# it stay as it is? I think I may prefer to move it.
+uv = use_extension("//python/uv:uv.bzl", "uv")
+
+# Here is how we can define platforms for the `uv` binaries - this will affect
+# all of the downstream callers because we are using the extension without
+# `dev_dependency = True`.
+uv.default(
+ base_url = "https://github.com/astral-sh/uv/releases/download",
+ manifest_filename = "dist-manifest.json",
+ version = "0.6.3",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:macos",
+ "@platforms//cpu:aarch64",
+ ],
+ platform = "aarch64-apple-darwin",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:aarch64",
+ ],
+ platform = "aarch64-unknown-linux-gnu",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:ppc",
+ ],
+ platform = "powerpc64-unknown-linux-gnu",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:ppc64le",
+ ],
+ platform = "powerpc64le-unknown-linux-gnu",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:s390x",
+ ],
+ platform = "s390x-unknown-linux-gnu",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:riscv64",
+ ],
+ platform = "riscv64-unknown-linux-gnu",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:macos",
+ "@platforms//cpu:x86_64",
+ ],
+ platform = "x86_64-apple-darwin",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:windows",
+ "@platforms//cpu:x86_64",
+ ],
+ platform = "x86_64-pc-windows-msvc",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
+ ],
+ platform = "x86_64-unknown-linux-gnu",
+)
+use_repo(uv, "uv")
+
+register_toolchains("@uv//:all")
+
+uv_dev = use_extension(
+ "//python/uv:uv.bzl",
+ "uv",
+ dev_dependency = True,
+)
+uv_dev.configure(
+ version = "0.6.2",
+)
diff --git a/modules/rules_python/1.8.0-rc4/patches/module_dot_bazel_version.patch b/modules/rules_python/1.8.0-rc4/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..d09fea0380a
--- /dev/null
+++ b/modules/rules_python/1.8.0-rc4/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "rules_python",
+- version = "0.0.0",
++ version = "1.8.0-rc4",
+ compatibility_level = 1,
+ )
+
+ bazel_dep(name = "bazel_features", version = "1.21.0")
diff --git a/modules/rules_python/1.8.0-rc4/presubmit.yml b/modules/rules_python/1.8.0-rc4/presubmit.yml
new file mode 100644
index 00000000000..1ad61c7f5a3
--- /dev/null
+++ b/modules/rules_python/1.8.0-rc4/presubmit.yml
@@ -0,0 +1,33 @@
+# Copyright 2023 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+bcr_test_module:
+ module_path: "examples/bzlmod"
+ matrix:
+ platform: ["debian11", "macos", "ubuntu2204", "windows"]
+ bazel: [7.*, 8.*, 9.*]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_flags:
+ # Minimum bazel supported C++
+ - "--keep_going"
+ - '--cxxopt=-std=c++17'
+ - '--host_cxxopt=-std=c++17'
+ build_targets:
+ - "//..."
+ test_targets:
+ - "//..."
diff --git a/modules/rules_python/1.8.0-rc4/source.json b/modules/rules_python/1.8.0-rc4/source.json
new file mode 100644
index 00000000000..b9d7bfa5e25
--- /dev/null
+++ b/modules/rules_python/1.8.0-rc4/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-/ZMX37YYqCK2XtNI5w1P3HkqClF9g+Sxh6bkQRTwB2Q=",
+ "strip_prefix": "rules_python-1.8.0-rc4",
+ "url": "https://github.com/bazel-contrib/rules_python/releases/download/1.8.0-rc4/rules_python-1.8.0-rc4.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-F/P9G6FFWxHYEWETEYUW0SjIK8NQgL5p02WYnOYsbAE="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_python/metadata.json b/modules/rules_python/metadata.json
index f5f84e492dc..92e143d503b 100644
--- a/modules/rules_python/metadata.json
+++ b/modules/rules_python/metadata.json
@@ -101,7 +101,8 @@
"1.8.0-rc0",
"1.8.0-rc1",
"1.8.0-rc2",
- "1.8.0-rc3"
+ "1.8.0-rc3",
+ "1.8.0-rc4"
],
"yanked_versions": {
"0.14.0": "rules_python 0.14.0 is broken due to https://github.com/bazelbuild/bazel-central-registry/issues/287, please upgrade to version >= 0.15.0"
diff --git a/modules/rules_python_gazelle_plugin/1.8.0-rc4/MODULE.bazel b/modules/rules_python_gazelle_plugin/1.8.0-rc4/MODULE.bazel
new file mode 100644
index 00000000000..2522fb5b0e1
--- /dev/null
+++ b/modules/rules_python_gazelle_plugin/1.8.0-rc4/MODULE.bazel
@@ -0,0 +1,47 @@
+module(
+ name = "rules_python_gazelle_plugin",
+ version = "1.8.0-rc4",
+ compatibility_level = 1,
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "rules_python", version = "0.18.0")
+bazel_dep(name = "rules_go", version = "0.59.0", repo_name = "io_bazel_rules_go")
+bazel_dep(name = "gazelle", version = "0.47.0", repo_name = "bazel_gazelle")
+bazel_dep(name = "rules_cc", version = "0.0.16")
+
+local_path_override(
+ module_name = "rules_python",
+ path = "..",
+)
+
+go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
+go_deps.from_file(go_mod = "//:go.mod")
+use_repo(
+ go_deps,
+ "com_github_bazelbuild_buildtools",
+ "com_github_bmatcuk_doublestar_v4",
+ "com_github_emirpasic_gods",
+ "com_github_ghodss_yaml",
+ "com_github_smacker_go_tree_sitter",
+ "com_github_stretchr_testify",
+ "in_gopkg_yaml_v2",
+ "org_golang_x_sync",
+)
+
+python_stdlib_list = use_extension("//python:extensions.bzl", "python_stdlib_list")
+use_repo(
+ python_stdlib_list,
+ "python_stdlib_list",
+)
+
+internal_dev_deps = use_extension(
+ "//:internal_dev_deps.bzl",
+ "internal_dev_deps_extension",
+ dev_dependency = True,
+)
+use_repo(
+ internal_dev_deps,
+ "django-types",
+ "pytest",
+)
diff --git a/modules/rules_python_gazelle_plugin/1.8.0-rc4/patches/module_dot_bazel_version.patch b/modules/rules_python_gazelle_plugin/1.8.0-rc4/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..5ad0e0fc3ad
--- /dev/null
+++ b/modules/rules_python_gazelle_plugin/1.8.0-rc4/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "rules_python_gazelle_plugin",
+- version = "0.0.0",
++ version = "1.8.0-rc4",
+ compatibility_level = 1,
+ )
+
+ bazel_dep(name = "bazel_skylib", version = "1.8.2")
diff --git a/modules/rules_python_gazelle_plugin/1.8.0-rc4/presubmit.yml b/modules/rules_python_gazelle_plugin/1.8.0-rc4/presubmit.yml
new file mode 100644
index 00000000000..99647cac6ff
--- /dev/null
+++ b/modules/rules_python_gazelle_plugin/1.8.0-rc4/presubmit.yml
@@ -0,0 +1,41 @@
+# Copyright 2023 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+bcr_test_module:
+ module_path: "examples/bzlmod_build_file_generation"
+ matrix:
+ platform: [
+ "debian11",
+ "macos",
+ "ubuntu2204",
+ ]
+ bazel: [7.*, 8.*, 9.*]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ shell_commands:
+ - "echo 'common --override_module=rules_python=' >> .bazelrc"
+ - "bazel run //:gazelle_python_manifest.update"
+ - "bazel run //:gazelle -- update"
+ batch_commands:
+ - "echo common --override_module=rules_python= >> .bazelrc"
+ - "bazel run //:gazelle_python_manifest.update"
+ - "bazel run //:gazelle -- update"
+ build_targets:
+ - "//..."
+ - ":modules_map"
+ test_targets:
+ - "//..."
diff --git a/modules/rules_python_gazelle_plugin/1.8.0-rc4/source.json b/modules/rules_python_gazelle_plugin/1.8.0-rc4/source.json
new file mode 100644
index 00000000000..c9112d358d9
--- /dev/null
+++ b/modules/rules_python_gazelle_plugin/1.8.0-rc4/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-/ZMX37YYqCK2XtNI5w1P3HkqClF9g+Sxh6bkQRTwB2Q=",
+ "strip_prefix": "rules_python-1.8.0-rc4/gazelle",
+ "url": "https://github.com/bazel-contrib/rules_python/releases/download/1.8.0-rc4/rules_python-1.8.0-rc4.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-DVKtL+tOUIFRSA3jVFtEU3UR/S5cQlYCDIfXs6nDJ5A="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_python_gazelle_plugin/metadata.json b/modules/rules_python_gazelle_plugin/metadata.json
index 70ff37f18ab..5c7e0402943 100644
--- a/modules/rules_python_gazelle_plugin/metadata.json
+++ b/modules/rules_python_gazelle_plugin/metadata.json
@@ -82,7 +82,8 @@
"1.8.0-rc0",
"1.8.0-rc1",
"1.8.0-rc2",
- "1.8.0-rc3"
+ "1.8.0-rc3",
+ "1.8.0-rc4"
],
"yanked_versions": {}
}
From 06be060d2f0872d299dc09c33e2a131b6095b815 Mon Sep 17 00:00:00 2001
From: "Marvin, the Aspect bot"
Date: Thu, 15 Jan 2026 01:14:56 -0800
Subject: [PATCH 004/367] aspect_rules_py@1.8.3 (#7155)
Release: https://github.com/aspect-build/rules_py/releases/tag/v1.8.3
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
---------
Co-authored-by: alexeagle <47395+alexeagle@users.noreply.github.com>
Co-authored-by: Alex Eagle
---
modules/aspect_rules_py/1.8.3/MODULE.bazel | 257 ++++++++++++++++++
.../aspect_rules_py/1.8.3/attestations.json | 17 ++
.../patches/module_dot_bazel_version.patch | 13 +
.../1.8.3/patches/remove_dev_deps.patch | 5 +
modules/aspect_rules_py/1.8.3/presubmit.yml | 13 +
modules/aspect_rules_py/1.8.3/source.json | 11 +
modules/aspect_rules_py/metadata.json | 3 +-
7 files changed, 318 insertions(+), 1 deletion(-)
create mode 100644 modules/aspect_rules_py/1.8.3/MODULE.bazel
create mode 100644 modules/aspect_rules_py/1.8.3/attestations.json
create mode 100644 modules/aspect_rules_py/1.8.3/patches/module_dot_bazel_version.patch
create mode 100644 modules/aspect_rules_py/1.8.3/patches/remove_dev_deps.patch
create mode 100644 modules/aspect_rules_py/1.8.3/presubmit.yml
create mode 100644 modules/aspect_rules_py/1.8.3/source.json
diff --git a/modules/aspect_rules_py/1.8.3/MODULE.bazel b/modules/aspect_rules_py/1.8.3/MODULE.bazel
new file mode 100644
index 00000000000..71d1cf1b401
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.3/MODULE.bazel
@@ -0,0 +1,257 @@
+"aspect-build/rules_py"
+
+module(
+ name = "aspect_rules_py",
+ compatibility_level = 1,
+ version = "1.8.3",
+)
+
+# NOTE: when publishing to BCR, we patch this to True, as we publish pre-built binaries along with our releases.
+IS_RELEASE = True
+
+bazel_dep(name = "bazel_features", version = "1.38.0")
+bazel_dep(name = "bazel_lib", version = "3.0.0")
+bazel_dep(name = "bazel_skylib", version = "1.4.2")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_python", version = "1.0.0")
+bazel_dep(name = "with_cfg.bzl", version = "0.14.1")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "tar.bzl", version = "0.5.5")
+
+bazel_lib_toolchains = use_extension("@tar.bzl//tar:extensions.bzl", "toolchains")
+use_repo(bazel_lib_toolchains, "bsd_tar_toolchains")
+
+tools = use_extension("//py:extensions.bzl", "py_tools")
+tools.rules_py_tools()
+use_repo(tools, "rules_py_tools")
+use_repo(tools, "rules_py_pex_2_3_1")
+
+register_toolchains(
+ "@rules_py_tools//:all",
+ "@aspect_rules_py//py/private/toolchain/venv/...",
+ "@aspect_rules_py//py/private/toolchain/unpack/...",
+ "@aspect_rules_py//py/private/toolchain/shim/...",
+)
+
+toml = use_extension("//uv/private/tomltool:extension.bzl", "tomltool")
+use_repo(
+ toml,
+ "toml2json_aarch64_linux_gnu",
+ "toml2json_aarch64_osx_libsystem",
+ "toml2json_x86_64_linux_gnu",
+ "toml2json_x86_64_osx_libsystem",
+)
+
+host = use_extension("//uv/private/host:extension.bzl", "host_platform")
+use_repo(host, "aspect_rules_py_uv_host")
+
+bazel_dep(name = "aspect_tools_telemetry", version = "0.3.3")
+
+tel = use_extension("@aspect_tools_telemetry//:extension.bzl", "telemetry")
+use_repo(tel, "aspect_tools_telemetry_report")
+
+################################################################################
+# Dev deps are the remainder of the file
+
+# LLVM configuration
+bazel_dep(name = "toolchains_llvm_bootstrapped", version = "0.2.5", dev_dependency = IS_RELEASE)
+archive_override(
+ module_name = "toolchains_llvm_bootstrapped",
+ integrity = "sha256-+nddimV34BYO8YExiKLYG2kMoA2Sv+5ZoMRPQLJxNfE=",
+ patch_strip = 1,
+ patches = [
+ "//bazel/patches:llvm_darwin_sysroot.patch",
+ ],
+ strip_prefix = "toolchains_llvm_bootstrapped-121c8419394e76b5652c161369743c564799b2e3",
+ urls = ["https://github.com/cerisier/toolchains_llvm_bootstrapped/archive/121c8419394e76b5652c161369743c564799b2e3/master.tar.gz"],
+)
+
+register_toolchains(
+ "@toolchains_llvm_bootstrapped//toolchain:all",
+ dev_dependency = IS_RELEASE,
+)
+
+# Rust configuration
+bazel_dep(name = "rules_rust", version = "0.68.1", dev_dependency = IS_RELEASE)
+
+rust = use_extension(
+ "@rules_rust//rust:extensions.bzl",
+ "rust",
+ dev_dependency = IS_RELEASE,
+)
+rust.toolchain(
+ edition = "2024",
+ extra_target_triples = [
+ "aarch64-apple-darwin",
+ "x86_64-apple-darwin",
+ "aarch64-unknown-linux-musl",
+ "x86_64-unknown-linux-musl",
+ ],
+ versions = ["1.88.0"],
+)
+use_repo(rust, "rust_toolchains")
+
+register_toolchains(
+ "@rust_toolchains//:all",
+ dev_dependency = IS_RELEASE,
+)
+
+bazel_dep(name = "bazelrc-preset.bzl", version = "1.4.0", dev_dependency = IS_RELEASE)
+bazel_dep(name = "bazel_env.bzl", version = "0.5.0", dev_dependency = IS_RELEASE)
+bazel_dep(name = "bzip2", version = "1.0.8.bcr.3", dev_dependency = IS_RELEASE)
+bazel_dep(name = "gazelle", version = "0.45.0", dev_dependency = IS_RELEASE)
+bazel_dep(name = "rules_pkg", version = "1.1.0", dev_dependency = IS_RELEASE)
+bazel_dep(name = "rules_rs", version = "0.0.26", dev_dependency = IS_RELEASE)
+bazel_dep(name = "xz", version = "5.4.5.bcr.7", dev_dependency = IS_RELEASE)
+bazel_dep(name = "zstd", version = "1.5.7", dev_dependency = IS_RELEASE)
+bazel_dep(name = "rules_multitool", version = "1.9.0", dev_dependency = IS_RELEASE)
+
+multitool = use_extension("@rules_multitool//multitool:extension.bzl", "multitool", dev_dependency = IS_RELEASE)
+multitool.hub(lockfile = "//tools:tools.lock.json")
+use_repo(multitool, "multitool")
+
+crate = use_extension(
+ "@rules_rs//rs:extensions.bzl",
+ "crate",
+ dev_dependency = IS_RELEASE,
+)
+crate.from_cargo(
+ name = "crates",
+ cargo_lock = "//:Cargo.lock",
+ cargo_toml = "//:Cargo.toml",
+ platform_triples = [
+ "aarch64-apple-darwin",
+ "aarch64-unknown-linux-musl",
+ "x86_64-apple-darwin",
+ "x86_64-unknown-linux-musl",
+ ],
+)
+crate.annotation(
+ crate = "backtrace",
+ # This just compiles code on Android, we don't need it.
+ gen_build_script = "off",
+ repositories = ["crates"],
+)
+crate.annotation(
+ crate = "zstd-sys",
+ # This build script is naughty and tries to depend on system zstd or build it from source.
+ gen_build_script = "off",
+ repositories = ["crates"],
+ deps = ["@@zstd+//:zstd"],
+)
+crate.annotation(
+ crate = "bzip2-sys",
+ gen_build_script = "off",
+ repositories = ["crates"],
+ deps = ["@@bzip2+//:bz2"],
+)
+crate.annotation(
+ crate = "lzma-sys",
+ gen_build_script = "off",
+ repositories = ["crates"],
+ deps = ["@@xz+//:lzma"],
+)
+use_repo(crate, "crates")
+
+# TODO: Replace with bazel_features?
+# cf. https://github.com/bazel-contrib/bazelrc-preset.bzl/blob/main/MODULE.bazel#L8C1-L10C70
+bazel_dep(name = "rules_shell", version = "0.6.1", dev_dependency = IS_RELEASE)
+
+version = use_extension("@bazel_features//private:extensions.bzl", "version_extension", dev_dependency = IS_RELEASE)
+use_repo(version, "bazel_features_globals", "bazel_features_version")
+
+# rules_oci and friends
+bazel_dep(name = "rules_oci", version = "2.2.6", dev_dependency = IS_RELEASE)
+
+oci = use_extension("@rules_oci//oci:extensions.bzl", "oci", dev_dependency = IS_RELEASE)
+oci.pull(
+ name = "ubuntu",
+ digest = "sha256:c35e29c9450151419d9448b0fd75374fec4fff364a27f176fb458d472dfc9e54",
+ image = "public.ecr.aws/docker/library/ubuntu",
+ platforms = [
+ "linux/arm64/v8",
+ "linux/amd64",
+ ],
+ tag = "latest",
+)
+use_repo(oci, "ubuntu", "ubuntu_linux_amd64", "ubuntu_linux_arm64_v8")
+
+# For building test images with py_image_layer
+bazel_dep(name = "container_structure_test", version = "1.19.1", dev_dependency = IS_RELEASE)
+git_override(
+ module_name = "container_structure_test",
+ commit = "63ee63e15fae64f00b1c1ace1eb5cc99251b9e02",
+ remote = "https://github.com/GoogleContainerTools/container-structure-test.git",
+)
+
+# rules_python and friends
+bazel_dep(name = "rules_python_gazelle_plugin", version = "1.0.0", dev_dependency = IS_RELEASE)
+
+python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = IS_RELEASE)
+python.toolchain(
+ is_default = True,
+ python_version = "3.9",
+)
+python.toolchain(
+ is_default = False,
+ python_version = "3.12",
+)
+
+# We still use pip for testing the virtual deps machinery
+pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = IS_RELEASE)
+pip.parse(
+ hub_name = "django",
+ python_version = "3.9",
+ requirements_lock = "//py/tests/virtual/django:requirements.txt",
+)
+use_repo(pip, "django")
+
+# For everything else, we use our own uv machinery
+uv = use_extension("//uv/unstable:extension.bzl", "uv", dev_dependency = IS_RELEASE)
+uv.declare_hub(
+ hub_name = "pypi",
+)
+uv.declare_venv(
+ hub_name = "pypi",
+ venv_name = "default",
+)
+uv.lockfile(
+ src = "//:uv.lock",
+ hub_name = "pypi",
+ venv_name = "default",
+)
+uv.unstable_annotate_requirements(
+ src = "//:annotations.toml",
+ hub_name = "pypi",
+ venv_name = "default",
+)
+use_repo(uv, "pypi")
+
+http_file = use_repo_rule(
+ "@bazel_tools//tools/build_defs/repo:http.bzl",
+ "http_file",
+)
+
+http_file(
+ name = "django_4_2_4",
+ dev_dependency = IS_RELEASE,
+ downloaded_file_path = "Django-4.2.4-py3-none-any.whl",
+ sha256 = "860ae6a138a238fc4f22c99b52f3ead982bb4b1aad8c0122bcd8c8a3a02e409d",
+ urls = ["https://files.pythonhosted.org/packages/7f/9e/fc6bab255ae10bc57fa2f65646eace3d5405fbb7f5678b90140052d1db0f/Django-4.2.4-py3-none-any.whl"],
+)
+
+http_file(
+ name = "django_4_1_10",
+ dev_dependency = IS_RELEASE,
+ downloaded_file_path = "Django-4.1.10-py3-none-any.whl",
+ sha256 = "26d0260c2fb8121009e62ffc548b2398dea2522b6454208a852fb0ef264c206c",
+ urls = ["https://files.pythonhosted.org/packages/34/25/8a218de57fc9853297a1a8e4927688eff8107d5bc6dcf6c964c59801f036/Django-4.1.10-py3-none-any.whl"],
+)
+
+http_file(
+ name = "sqlparse_0_4_0",
+ dev_dependency = IS_RELEASE,
+ downloaded_file_path = "sqlparse-0.4.0-py3-none-any.whl",
+ sha256 = "0523026398aea9c8b5f7a4a6d5c0829c285b4fbd960c17b5967a369342e21e01",
+ urls = ["https://files.pythonhosted.org/packages/10/96/36c136013c4a6ecb8c6aa3eed66e6dcea838f85fd80e1446499f1dabfac7/sqlparse-0.4.0-py3-none-any.whl"],
+)
diff --git a/modules/aspect_rules_py/1.8.3/attestations.json b/modules/aspect_rules_py/1.8.3/attestations.json
new file mode 100644
index 00000000000..97d0ecb473a
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.3/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/aspect-build/rules_py/releases/download/v1.8.3/source.json.intoto.jsonl",
+ "integrity": "sha256-z6T+wmkNZ3TuDRtpUmMvNurhEDZJE14QdUauMwAuOws="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/aspect-build/rules_py/releases/download/v1.8.3/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-M9D8O3ts9yCzTd8WApzfje4oK++J2RPI8mVW3/Oz/r8="
+ },
+ "rules_py-v1.8.3.tar.gz": {
+ "url": "https://github.com/aspect-build/rules_py/releases/download/v1.8.3/rules_py-v1.8.3.tar.gz.intoto.jsonl",
+ "integrity": "sha256-92xc2XcnXe+C4TqoFNOnQ71w0GMLGmJU3RRakGS6c9g="
+ }
+ }
+}
diff --git a/modules/aspect_rules_py/1.8.3/patches/module_dot_bazel_version.patch b/modules/aspect_rules_py/1.8.3/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..73a981a43a9
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.3/patches/module_dot_bazel_version.patch
@@ -0,0 +1,13 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -2,8 +2,9 @@
+
+ module(
+ name = "aspect_rules_py",
+ compatibility_level = 1,
++ version = "1.8.3",
+ )
+
+ # NOTE: when publishing to BCR, we patch this to True, as we publish pre-built binaries along with our releases.
+ IS_RELEASE = True
diff --git a/modules/aspect_rules_py/1.8.3/patches/remove_dev_deps.patch b/modules/aspect_rules_py/1.8.3/patches/remove_dev_deps.patch
new file mode 100644
index 00000000000..fa9e409cd86
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.3/patches/remove_dev_deps.patch
@@ -0,0 +1,5 @@
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -9,1 +9,1 @@
+-IS_RELEASE = False
++IS_RELEASE = True
diff --git a/modules/aspect_rules_py/1.8.3/presubmit.yml b/modules/aspect_rules_py/1.8.3/presubmit.yml
new file mode 100644
index 00000000000..d19dbc8e7c2
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.3/presubmit.yml
@@ -0,0 +1,13 @@
+matrix:
+ platform:
+ - debian11
+ - ubuntu2404
+ - macos
+ bazel: [8.x, 9.*]
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@aspect_rules_py//py:all'
diff --git a/modules/aspect_rules_py/1.8.3/source.json b/modules/aspect_rules_py/1.8.3/source.json
new file mode 100644
index 00000000000..917d2ad7e04
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.3/source.json
@@ -0,0 +1,11 @@
+{
+ "integrity": "sha256-35Hi4wv7HFLTPzLVeBZwm57fbA2Hs7EoYtCDomOS8tI=",
+ "strip_prefix": "rules_py-1.8.3",
+ "docs_url": "https://github.com/aspect-build/rules_py/releases/download/v1.8.3/rules_py-v1.8.3.docs.tar.gz",
+ "url": "https://github.com/aspect-build/rules_py/releases/download/v1.8.3/rules_py-v1.8.3.tar.gz",
+ "patches": {
+ "remove_dev_deps.patch": "sha256-AFv2do7wclZPkLPFLjsMDkG4eP0PGR6vrRYeDkW+IkU=",
+ "module_dot_bazel_version.patch": "sha256-aUDIP899b+RWhdDcfwzoFtgm9QxqhLNGtnGnQGH9CcA="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/aspect_rules_py/metadata.json b/modules/aspect_rules_py/metadata.json
index 32eed2c29c4..e0e2e75005e 100644
--- a/modules/aspect_rules_py/metadata.json
+++ b/modules/aspect_rules_py/metadata.json
@@ -59,7 +59,8 @@
"1.6.4-rc2",
"1.6.4",
"1.6.5",
- "1.6.6"
+ "1.6.6",
+ "1.8.3"
],
"yanked_versions": {
"1.5.0": "Regression in prebuilt artifacts leads to missing rules_rust dep"
From 046b0d36efadc795163515062b69e0c905e88d3c Mon Sep 17 00:00:00 2001
From: "Marvin, the Aspect bot"
Date: Thu, 15 Jan 2026 01:15:03 -0800
Subject: [PATCH 005/367] Publish toolchains_protoc@0.6.1 (#7153)
Release:
https://github.com/aspect-build/toolchains_protoc/releases/tag/v0.6.1
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: alexeagle <47395+alexeagle@users.noreply.github.com>
---
modules/toolchains_protoc/0.6.1/MODULE.bazel | 24 +++++++++++++++++++
.../toolchains_protoc/0.6.1/attestations.json | 17 +++++++++++++
.../patches/module_dot_bazel_version.patch | 13 ++++++++++
modules/toolchains_protoc/0.6.1/presubmit.yml | 12 ++++++++++
modules/toolchains_protoc/0.6.1/source.json | 9 +++++++
modules/toolchains_protoc/metadata.json | 3 ++-
6 files changed, 77 insertions(+), 1 deletion(-)
create mode 100644 modules/toolchains_protoc/0.6.1/MODULE.bazel
create mode 100644 modules/toolchains_protoc/0.6.1/attestations.json
create mode 100644 modules/toolchains_protoc/0.6.1/patches/module_dot_bazel_version.patch
create mode 100644 modules/toolchains_protoc/0.6.1/presubmit.yml
create mode 100644 modules/toolchains_protoc/0.6.1/source.json
diff --git a/modules/toolchains_protoc/0.6.1/MODULE.bazel b/modules/toolchains_protoc/0.6.1/MODULE.bazel
new file mode 100644
index 00000000000..fc20694d2f1
--- /dev/null
+++ b/modules/toolchains_protoc/0.6.1/MODULE.bazel
@@ -0,0 +1,24 @@
+"Bazel dependencies"
+
+module(
+ name = "toolchains_protoc",
+ compatibility_level = 1,
+ version = "0.6.1",
+)
+
+bazel_dep(name = "bazel_features", version = "1.9.0")
+bazel_dep(name = "bazel_skylib", version = "1.4.1")
+bazel_dep(name = "rules_proto", version = "7.1.0")
+bazel_dep(name = "platforms", version = "0.0.10")
+
+bazel_dep(name = "aspect_bazel_lib", version = "2.8.1", dev_dependency = True)
+bazel_dep(name = "buildifier_prebuilt", version = "6.1.2", dev_dependency = True)
+bazel_dep(name = "bazelrc-preset.bzl", version = "1.2.0", dev_dependency = True)
+
+protoc = use_extension("@toolchains_protoc//protoc:extensions.bzl", "protoc")
+protoc.toolchain(
+ version = "v27.3",
+)
+use_repo(protoc, "toolchains_protoc_hub")
+
+register_toolchains("@toolchains_protoc_hub//:all")
diff --git a/modules/toolchains_protoc/0.6.1/attestations.json b/modules/toolchains_protoc/0.6.1/attestations.json
new file mode 100644
index 00000000000..4e959b2d917
--- /dev/null
+++ b/modules/toolchains_protoc/0.6.1/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/aspect-build/toolchains_protoc/releases/download/v0.6.1/source.json.intoto.jsonl",
+ "integrity": "sha256-sD5o5Xkg0ZAdA7oMdTJT3HNigS1M/UikW3LgHEH4bHI="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/aspect-build/toolchains_protoc/releases/download/v0.6.1/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-sgHOazTcMoYbayjWvh+6d7Lvpie+rEoN4qPkzn60Wx0="
+ },
+ "toolchains_protoc-v0.6.1.tar.gz": {
+ "url": "https://github.com/aspect-build/toolchains_protoc/releases/download/v0.6.1/toolchains_protoc-v0.6.1.tar.gz.intoto.jsonl",
+ "integrity": "sha256-KRi2osS71jg5woCdF/Hhxk72Z4dSDwTx54rYXZgFWZI="
+ }
+ }
+}
diff --git a/modules/toolchains_protoc/0.6.1/patches/module_dot_bazel_version.patch b/modules/toolchains_protoc/0.6.1/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..2850f07aa5a
--- /dev/null
+++ b/modules/toolchains_protoc/0.6.1/patches/module_dot_bazel_version.patch
@@ -0,0 +1,13 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -2,8 +2,9 @@
+
+ module(
+ name = "toolchains_protoc",
+ compatibility_level = 1,
++ version = "0.6.1",
+ )
+
+ bazel_dep(name = "bazel_features", version = "1.9.0")
+ bazel_dep(name = "bazel_skylib", version = "1.4.1")
diff --git a/modules/toolchains_protoc/0.6.1/presubmit.yml b/modules/toolchains_protoc/0.6.1/presubmit.yml
new file mode 100644
index 00000000000..2dcdc32acd7
--- /dev/null
+++ b/modules/toolchains_protoc/0.6.1/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: "e2e/smoke"
+ matrix:
+ platform: ["debian10", "macos", "ubuntu2004", "windows"]
+ bazel: ["7.x", "8.x"]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//..."
diff --git a/modules/toolchains_protoc/0.6.1/source.json b/modules/toolchains_protoc/0.6.1/source.json
new file mode 100644
index 00000000000..fb186e72f49
--- /dev/null
+++ b/modules/toolchains_protoc/0.6.1/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-01gaiLIT72ZjWZT/al70IoacL8/HrKTjpjiNOp/qHdI=",
+ "strip_prefix": "toolchains_protoc-0.6.1",
+ "url": "https://github.com/aspect-build/toolchains_protoc/releases/download/v0.6.1/toolchains_protoc-v0.6.1.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-kFFYCsR9j8mZuS2NMNdP+D3iDe2j+u23fObPxe6m4BE="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/toolchains_protoc/metadata.json b/modules/toolchains_protoc/metadata.json
index 1957e567f5b..322ad18cbd3 100644
--- a/modules/toolchains_protoc/metadata.json
+++ b/modules/toolchains_protoc/metadata.json
@@ -29,7 +29,8 @@
"0.4.2",
"0.4.3",
"0.5.0",
- "0.6.0"
+ "0.6.0",
+ "0.6.1"
],
"yanked_versions": {}
}
From b2ffda688946ea34b6074914b6150ff7d8ccd4f9 Mon Sep 17 00:00:00 2001
From: "Marvin, the Aspect bot"
Date: Thu, 15 Jan 2026 01:45:08 -0800
Subject: [PATCH 006/367] aspect_rules_py@1.8.4 (#7156)
Release: https://github.com/aspect-build/rules_py/releases/tag/v1.8.4
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
---------
Co-authored-by: alexeagle <47395+alexeagle@users.noreply.github.com>
Co-authored-by: Alex Eagle
---
modules/aspect_rules_py/1.8.4/MODULE.bazel | 257 ++++++++++++++++++
.../aspect_rules_py/1.8.4/attestations.json | 17 ++
.../patches/module_dot_bazel_version.patch | 13 +
.../1.8.4/patches/remove_dev_deps.patch | 5 +
modules/aspect_rules_py/1.8.4/presubmit.yml | 13 +
modules/aspect_rules_py/1.8.4/source.json | 11 +
modules/aspect_rules_py/metadata.json | 3 +-
7 files changed, 318 insertions(+), 1 deletion(-)
create mode 100644 modules/aspect_rules_py/1.8.4/MODULE.bazel
create mode 100644 modules/aspect_rules_py/1.8.4/attestations.json
create mode 100644 modules/aspect_rules_py/1.8.4/patches/module_dot_bazel_version.patch
create mode 100644 modules/aspect_rules_py/1.8.4/patches/remove_dev_deps.patch
create mode 100644 modules/aspect_rules_py/1.8.4/presubmit.yml
create mode 100644 modules/aspect_rules_py/1.8.4/source.json
diff --git a/modules/aspect_rules_py/1.8.4/MODULE.bazel b/modules/aspect_rules_py/1.8.4/MODULE.bazel
new file mode 100644
index 00000000000..9514c42cdac
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.4/MODULE.bazel
@@ -0,0 +1,257 @@
+"aspect-build/rules_py"
+
+module(
+ name = "aspect_rules_py",
+ compatibility_level = 1,
+ version = "1.8.4",
+)
+
+# NOTE: when publishing to BCR, we patch this to True, as we publish pre-built binaries along with our releases.
+IS_RELEASE = True
+
+bazel_dep(name = "bazel_features", version = "1.38.0")
+bazel_dep(name = "bazel_lib", version = "3.0.0")
+bazel_dep(name = "bazel_skylib", version = "1.4.2")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_python", version = "1.0.0")
+bazel_dep(name = "with_cfg.bzl", version = "0.14.1")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "tar.bzl", version = "0.5.5")
+
+bazel_lib_toolchains = use_extension("@tar.bzl//tar:extensions.bzl", "toolchains")
+use_repo(bazel_lib_toolchains, "bsd_tar_toolchains")
+
+tools = use_extension("//py:extensions.bzl", "py_tools")
+tools.rules_py_tools()
+use_repo(tools, "rules_py_tools")
+use_repo(tools, "rules_py_pex_2_3_1")
+
+register_toolchains(
+ "@rules_py_tools//:all",
+ "@aspect_rules_py//py/private/toolchain/venv/...",
+ "@aspect_rules_py//py/private/toolchain/unpack/...",
+ "@aspect_rules_py//py/private/toolchain/shim/...",
+)
+
+toml = use_extension("//uv/private/tomltool:extension.bzl", "tomltool")
+use_repo(
+ toml,
+ "toml2json_aarch64_linux_gnu",
+ "toml2json_aarch64_osx_libsystem",
+ "toml2json_x86_64_linux_gnu",
+ "toml2json_x86_64_osx_libsystem",
+)
+
+host = use_extension("//uv/private/host:extension.bzl", "host_platform")
+use_repo(host, "aspect_rules_py_uv_host")
+
+bazel_dep(name = "aspect_tools_telemetry", version = "0.3.3")
+
+tel = use_extension("@aspect_tools_telemetry//:extension.bzl", "telemetry")
+use_repo(tel, "aspect_tools_telemetry_report")
+
+################################################################################
+# Dev deps are the remainder of the file
+
+# LLVM configuration
+bazel_dep(name = "toolchains_llvm_bootstrapped", version = "0.2.5", dev_dependency = IS_RELEASE)
+archive_override(
+ module_name = "toolchains_llvm_bootstrapped",
+ integrity = "sha256-+nddimV34BYO8YExiKLYG2kMoA2Sv+5ZoMRPQLJxNfE=",
+ patch_strip = 1,
+ patches = [
+ "//bazel/patches:llvm_darwin_sysroot.patch",
+ ],
+ strip_prefix = "toolchains_llvm_bootstrapped-121c8419394e76b5652c161369743c564799b2e3",
+ urls = ["https://github.com/cerisier/toolchains_llvm_bootstrapped/archive/121c8419394e76b5652c161369743c564799b2e3/master.tar.gz"],
+)
+
+register_toolchains(
+ "@toolchains_llvm_bootstrapped//toolchain:all",
+ dev_dependency = IS_RELEASE,
+)
+
+# Rust configuration
+bazel_dep(name = "rules_rust", version = "0.68.1", dev_dependency = IS_RELEASE)
+
+rust = use_extension(
+ "@rules_rust//rust:extensions.bzl",
+ "rust",
+ dev_dependency = IS_RELEASE,
+)
+rust.toolchain(
+ edition = "2024",
+ extra_target_triples = [
+ "aarch64-apple-darwin",
+ "x86_64-apple-darwin",
+ "aarch64-unknown-linux-musl",
+ "x86_64-unknown-linux-musl",
+ ],
+ versions = ["1.88.0"],
+)
+use_repo(rust, "rust_toolchains")
+
+register_toolchains(
+ "@rust_toolchains//:all",
+ dev_dependency = IS_RELEASE,
+)
+
+bazel_dep(name = "bazelrc-preset.bzl", version = "1.4.0", dev_dependency = IS_RELEASE)
+bazel_dep(name = "bazel_env.bzl", version = "0.5.0", dev_dependency = IS_RELEASE)
+bazel_dep(name = "bzip2", version = "1.0.8.bcr.3", dev_dependency = IS_RELEASE)
+bazel_dep(name = "gazelle", version = "0.45.0", dev_dependency = IS_RELEASE)
+bazel_dep(name = "rules_pkg", version = "1.1.0", dev_dependency = IS_RELEASE)
+bazel_dep(name = "rules_rs", version = "0.0.26", dev_dependency = IS_RELEASE)
+bazel_dep(name = "xz", version = "5.4.5.bcr.7", dev_dependency = IS_RELEASE)
+bazel_dep(name = "zstd", version = "1.5.7", dev_dependency = IS_RELEASE)
+bazel_dep(name = "rules_multitool", version = "1.9.0", dev_dependency = IS_RELEASE)
+
+multitool = use_extension("@rules_multitool//multitool:extension.bzl", "multitool", dev_dependency = IS_RELEASE)
+multitool.hub(lockfile = "//tools:tools.lock.json")
+use_repo(multitool, "multitool")
+
+crate = use_extension(
+ "@rules_rs//rs:extensions.bzl",
+ "crate",
+ dev_dependency = IS_RELEASE,
+)
+crate.from_cargo(
+ name = "crates",
+ cargo_lock = "//:Cargo.lock",
+ cargo_toml = "//:Cargo.toml",
+ platform_triples = [
+ "aarch64-apple-darwin",
+ "aarch64-unknown-linux-musl",
+ "x86_64-apple-darwin",
+ "x86_64-unknown-linux-musl",
+ ],
+)
+crate.annotation(
+ crate = "backtrace",
+ # This just compiles code on Android, we don't need it.
+ gen_build_script = "off",
+ repositories = ["crates"],
+)
+crate.annotation(
+ crate = "zstd-sys",
+ # This build script is naughty and tries to depend on system zstd or build it from source.
+ gen_build_script = "off",
+ repositories = ["crates"],
+ deps = ["@@zstd+//:zstd"],
+)
+crate.annotation(
+ crate = "bzip2-sys",
+ gen_build_script = "off",
+ repositories = ["crates"],
+ deps = ["@@bzip2+//:bz2"],
+)
+crate.annotation(
+ crate = "lzma-sys",
+ gen_build_script = "off",
+ repositories = ["crates"],
+ deps = ["@@xz+//:lzma"],
+)
+use_repo(crate, "crates")
+
+# TODO: Replace with bazel_features?
+# cf. https://github.com/bazel-contrib/bazelrc-preset.bzl/blob/main/MODULE.bazel#L8C1-L10C70
+bazel_dep(name = "rules_shell", version = "0.6.1", dev_dependency = IS_RELEASE)
+
+version = use_extension("@bazel_features//private:extensions.bzl", "version_extension", dev_dependency = IS_RELEASE)
+use_repo(version, "bazel_features_globals", "bazel_features_version")
+
+# rules_oci and friends
+bazel_dep(name = "rules_oci", version = "2.2.6", dev_dependency = IS_RELEASE)
+
+oci = use_extension("@rules_oci//oci:extensions.bzl", "oci", dev_dependency = IS_RELEASE)
+oci.pull(
+ name = "ubuntu",
+ digest = "sha256:c35e29c9450151419d9448b0fd75374fec4fff364a27f176fb458d472dfc9e54",
+ image = "public.ecr.aws/docker/library/ubuntu",
+ platforms = [
+ "linux/arm64/v8",
+ "linux/amd64",
+ ],
+ tag = "latest",
+)
+use_repo(oci, "ubuntu", "ubuntu_linux_amd64", "ubuntu_linux_arm64_v8")
+
+# For building test images with py_image_layer
+bazel_dep(name = "container_structure_test", version = "1.19.1", dev_dependency = IS_RELEASE)
+git_override(
+ module_name = "container_structure_test",
+ commit = "63ee63e15fae64f00b1c1ace1eb5cc99251b9e02",
+ remote = "https://github.com/GoogleContainerTools/container-structure-test.git",
+)
+
+# rules_python and friends
+bazel_dep(name = "rules_python_gazelle_plugin", version = "1.0.0", dev_dependency = IS_RELEASE)
+
+python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = IS_RELEASE)
+python.toolchain(
+ is_default = True,
+ python_version = "3.9",
+)
+python.toolchain(
+ is_default = False,
+ python_version = "3.12",
+)
+
+# We still use pip for testing the virtual deps machinery
+pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = IS_RELEASE)
+pip.parse(
+ hub_name = "django",
+ python_version = "3.9",
+ requirements_lock = "//py/tests/virtual/django:requirements.txt",
+)
+use_repo(pip, "django")
+
+# For everything else, we use our own uv machinery
+uv = use_extension("//uv/unstable:extension.bzl", "uv", dev_dependency = IS_RELEASE)
+uv.declare_hub(
+ hub_name = "pypi",
+)
+uv.declare_venv(
+ hub_name = "pypi",
+ venv_name = "default",
+)
+uv.lockfile(
+ src = "//:uv.lock",
+ hub_name = "pypi",
+ venv_name = "default",
+)
+uv.unstable_annotate_requirements(
+ src = "//:annotations.toml",
+ hub_name = "pypi",
+ venv_name = "default",
+)
+use_repo(uv, "pypi")
+
+http_file = use_repo_rule(
+ "@bazel_tools//tools/build_defs/repo:http.bzl",
+ "http_file",
+)
+
+http_file(
+ name = "django_4_2_4",
+ dev_dependency = IS_RELEASE,
+ downloaded_file_path = "Django-4.2.4-py3-none-any.whl",
+ sha256 = "860ae6a138a238fc4f22c99b52f3ead982bb4b1aad8c0122bcd8c8a3a02e409d",
+ urls = ["https://files.pythonhosted.org/packages/7f/9e/fc6bab255ae10bc57fa2f65646eace3d5405fbb7f5678b90140052d1db0f/Django-4.2.4-py3-none-any.whl"],
+)
+
+http_file(
+ name = "django_4_1_10",
+ dev_dependency = IS_RELEASE,
+ downloaded_file_path = "Django-4.1.10-py3-none-any.whl",
+ sha256 = "26d0260c2fb8121009e62ffc548b2398dea2522b6454208a852fb0ef264c206c",
+ urls = ["https://files.pythonhosted.org/packages/34/25/8a218de57fc9853297a1a8e4927688eff8107d5bc6dcf6c964c59801f036/Django-4.1.10-py3-none-any.whl"],
+)
+
+http_file(
+ name = "sqlparse_0_4_0",
+ dev_dependency = IS_RELEASE,
+ downloaded_file_path = "sqlparse-0.4.0-py3-none-any.whl",
+ sha256 = "0523026398aea9c8b5f7a4a6d5c0829c285b4fbd960c17b5967a369342e21e01",
+ urls = ["https://files.pythonhosted.org/packages/10/96/36c136013c4a6ecb8c6aa3eed66e6dcea838f85fd80e1446499f1dabfac7/sqlparse-0.4.0-py3-none-any.whl"],
+)
diff --git a/modules/aspect_rules_py/1.8.4/attestations.json b/modules/aspect_rules_py/1.8.4/attestations.json
new file mode 100644
index 00000000000..ac0b37cc160
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.4/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/aspect-build/rules_py/releases/download/v1.8.4/source.json.intoto.jsonl",
+ "integrity": "sha256-yJ7S3DGhnaUmXjBBoxYSdkNeQLhOYXSHPsIlLnG1ONQ="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/aspect-build/rules_py/releases/download/v1.8.4/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-dAkk3QhgbjeuwQa1W0sn0JQGvEWO9D6MBN11U+WC1Ao="
+ },
+ "rules_py-v1.8.4.tar.gz": {
+ "url": "https://github.com/aspect-build/rules_py/releases/download/v1.8.4/rules_py-v1.8.4.tar.gz.intoto.jsonl",
+ "integrity": "sha256-BdaEO8k3DF3daaaIgGo9cZKbSKFclD4J1ockq+y8jWA="
+ }
+ }
+}
diff --git a/modules/aspect_rules_py/1.8.4/patches/module_dot_bazel_version.patch b/modules/aspect_rules_py/1.8.4/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..ef509e71a66
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.4/patches/module_dot_bazel_version.patch
@@ -0,0 +1,13 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -2,8 +2,9 @@
+
+ module(
+ name = "aspect_rules_py",
+ compatibility_level = 1,
++ version = "1.8.4",
+ )
+
+ # NOTE: when publishing to BCR, we patch this to True, as we publish pre-built binaries along with our releases.
+ IS_RELEASE = True
diff --git a/modules/aspect_rules_py/1.8.4/patches/remove_dev_deps.patch b/modules/aspect_rules_py/1.8.4/patches/remove_dev_deps.patch
new file mode 100644
index 00000000000..fa9e409cd86
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.4/patches/remove_dev_deps.patch
@@ -0,0 +1,5 @@
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -9,1 +9,1 @@
+-IS_RELEASE = False
++IS_RELEASE = True
diff --git a/modules/aspect_rules_py/1.8.4/presubmit.yml b/modules/aspect_rules_py/1.8.4/presubmit.yml
new file mode 100644
index 00000000000..d19dbc8e7c2
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.4/presubmit.yml
@@ -0,0 +1,13 @@
+matrix:
+ platform:
+ - debian11
+ - ubuntu2404
+ - macos
+ bazel: [8.x, 9.*]
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@aspect_rules_py//py:all'
diff --git a/modules/aspect_rules_py/1.8.4/source.json b/modules/aspect_rules_py/1.8.4/source.json
new file mode 100644
index 00000000000..4c37493d7b2
--- /dev/null
+++ b/modules/aspect_rules_py/1.8.4/source.json
@@ -0,0 +1,11 @@
+{
+ "integrity": "sha256-0CuzGDNhmK+ygq4jgM3SPcPwalCb0uY2AO+mVukdj7Q=",
+ "strip_prefix": "rules_py-1.8.4",
+ "docs_url": "https://github.com/aspect-build/rules_py/releases/download/v1.8.4/rules_py-v1.8.4.docs.tar.gz",
+ "url": "https://github.com/aspect-build/rules_py/releases/download/v1.8.4/rules_py-v1.8.4.tar.gz",
+ "patches": {
+ "remove_dev_deps.patch": "sha256-AFv2do7wclZPkLPFLjsMDkG4eP0PGR6vrRYeDkW+IkU=",
+ "module_dot_bazel_version.patch": "sha256-IdXzpCHFo+et2CqUZkx10njojh2fjDekuN20ysQ1cmQ="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/aspect_rules_py/metadata.json b/modules/aspect_rules_py/metadata.json
index e0e2e75005e..c0f88f53b17 100644
--- a/modules/aspect_rules_py/metadata.json
+++ b/modules/aspect_rules_py/metadata.json
@@ -60,7 +60,8 @@
"1.6.4",
"1.6.5",
"1.6.6",
- "1.8.3"
+ "1.8.3",
+ "1.8.4"
],
"yanked_versions": {
"1.5.0": "Regression in prebuilt artifacts leads to missing rules_rust dep"
From 644edcc1bc14c596c6effb4df140145f936b567f Mon Sep 17 00:00:00 2001
From: Kevin Greene
Date: Thu, 15 Jan 2026 09:39:29 -0800
Subject: [PATCH 007/367] Add fizz@2025.02.10.00.bcr.2 (#7145)
This version updates boost to 1.89.0.bcr.2 and all other deps are
updated as well.
---
modules/fizz/2025.02.10.00.bcr.2/MODULE.bazel | 19 ++
.../2025.02.10.00.bcr.2/overlay/BUILD.bazel | 273 ++++++++++++++++++
.../fizz/2025.02.10.00.bcr.2/presubmit.yml | 40 +++
modules/fizz/2025.02.10.00.bcr.2/source.json | 7 +
modules/fizz/metadata.json | 7 +-
5 files changed, 343 insertions(+), 3 deletions(-)
create mode 100644 modules/fizz/2025.02.10.00.bcr.2/MODULE.bazel
create mode 100644 modules/fizz/2025.02.10.00.bcr.2/overlay/BUILD.bazel
create mode 100644 modules/fizz/2025.02.10.00.bcr.2/presubmit.yml
create mode 100644 modules/fizz/2025.02.10.00.bcr.2/source.json
diff --git a/modules/fizz/2025.02.10.00.bcr.2/MODULE.bazel b/modules/fizz/2025.02.10.00.bcr.2/MODULE.bazel
new file mode 100644
index 00000000000..d59642dc487
--- /dev/null
+++ b/modules/fizz/2025.02.10.00.bcr.2/MODULE.bazel
@@ -0,0 +1,19 @@
+module(
+ name = "fizz",
+ version = "2025.02.10.00.bcr.2",
+ bazel_compatibility = [">=7.6.0"],
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.9.0")
+bazel_dep(name = "boost.variant", version = "1.89.0.bcr.2")
+bazel_dep(name = "brotli", version = "1.2.0")
+bazel_dep(name = "fmt", version = "12.1.0")
+bazel_dep(name = "folly", version = "2025.01.13.00.bcr.5")
+bazel_dep(name = "glog", version = "0.7.1")
+bazel_dep(name = "libsodium", version = "1.0.19")
+bazel_dep(name = "openssl", version = "3.3.1.bcr.9")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "zlib", version = "1.3.1.bcr.8")
+bazel_dep(name = "zstd", version = "1.5.7")
diff --git a/modules/fizz/2025.02.10.00.bcr.2/overlay/BUILD.bazel b/modules/fizz/2025.02.10.00.bcr.2/overlay/BUILD.bazel
new file mode 100644
index 00000000000..d9c98fdaa76
--- /dev/null
+++ b/modules/fizz/2025.02.10.00.bcr.2/overlay/BUILD.bazel
@@ -0,0 +1,273 @@
+load("@bazel_skylib//rules:expand_template.bzl", "expand_template")
+load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
+load("@rules_license//rules:license.bzl", "license")
+
+package(default_applicable_licenses = [":license"])
+
+license(
+ name = "license",
+ license_kinds = ["@rules_license//licenses/spdx:BSD-3-Clause"],
+ license_text = "LICENSE",
+ visibility = ["//visibility:public"],
+)
+
+cc_library(
+ name = "fizz",
+ srcs = glob(
+ ["fizz/**/*.cpp"],
+ exclude = [
+ "fizz/**/test/*",
+ "fizz/extensions/javacrypto/*",
+ "fizz/tool/**/*",
+ ],
+ ),
+ hdrs = glob(
+ ["fizz/**/*.h"],
+ exclude = [
+ "fizz/**/test/*",
+ "fizz/**/*-inl.h",
+ "fizz/extensions/javacrypto/*",
+ "fizz/tool/**/*",
+ ],
+ ) + [":fizz_config_h"],
+ copts = select({
+ "@platforms//cpu:x86_64": ["-maes"],
+ "//conditions:default": [],
+ }),
+ includes = ["."],
+ textual_hdrs = glob(["fizz/**/*-inl.h"]),
+ visibility = ["//visibility:public"],
+ deps = [
+ "@boost.variant",
+ "@brotli//:brotlidec",
+ "@brotli//:brotlienc",
+ "@fmt",
+ "@folly//folly:base64",
+ "@folly//folly:c_portability",
+ "@folly//folly:conv",
+ "@folly//folly:exception_wrapper",
+ "@folly//folly:executor",
+ "@folly//folly:expected",
+ "@folly//folly:file",
+ "@folly//folly:file_util",
+ "@folly//folly:function",
+ "@folly//folly:memory",
+ "@folly//folly:optional",
+ "@folly//folly:overload",
+ "@folly//folly:range",
+ "@folly//folly:small_vector",
+ "@folly//folly:string",
+ "@folly//folly:synchronized",
+ "@folly//folly/container:evicting_cache_map",
+ "@folly//folly/container:f14_hash",
+ "@folly//folly/futures:core",
+ "@folly//folly/futures:shared_promise",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_socket",
+ "@folly//folly/io/async:async_transport",
+ "@folly//folly/io/async:decorated_async_transport_wrapper",
+ "@folly//folly/io/async:delayed_destruction",
+ "@folly//folly/io/async:password_in_file",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/io/async:write_flags",
+ "@folly//folly/io/async/ssl:openssl_transport_certificate",
+ "@folly//folly/lang:assume",
+ "@folly//folly/lang:bits",
+ "@folly//folly/lang:checked_math",
+ "@folly//folly/net:network_socket",
+ "@folly//folly/portability:openssl",
+ "@folly//folly/portability:sockets",
+ "@folly//folly/portability:unistd",
+ "@folly//folly/ssl:openssl_cert_utils",
+ "@folly//folly/ssl:openssl_hash",
+ "@folly//folly/ssl:openssl_ptr_types",
+ "@folly//folly/tracing:static_tracepoint",
+ "@glog",
+ "@libsodium",
+ "@openssl//:ssl",
+ "@zlib",
+ "@zstd",
+ ],
+)
+
+# Example CLI app source.
+cc_binary(
+ name = "tool",
+ srcs = glob(
+ [
+ "fizz/tool/*.cpp",
+ "fizz/tool/*.h",
+ ],
+ exclude = ["fizz/tool/FizzCommandCommon.*"],
+ ),
+ defines = [
+ "FIZZ_TOOL_ENABLE_BROTLI",
+ "FIZZ_TOOL_ENABLE_ZSTD",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":fizz",
+ ":fizz_protocol_cert_util",
+ ":tool_common_lib",
+ "@folly//folly:base64",
+ "@folly//folly:conv",
+ "@folly//folly:file_util",
+ "@folly//folly:format",
+ "@folly//folly:string",
+ "@folly//folly/executors:io_thread_pool_executor",
+ "@folly//folly/futures:core",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/io/async:server_socket",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/io/async/ssl:openssl_transport_certificate",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/ssl:openssl_cert_utils",
+ "@folly//folly/stats:histogram",
+ "@glog",
+ ],
+)
+
+cc_library(
+ name = "tool_common_lib",
+ srcs = ["fizz/tool/FizzCommandCommon.cpp"],
+ hdrs = ["fizz/tool/FizzCommandCommon.h"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":fizz",
+ "@folly//folly:file_util",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/json:dynamic",
+ ],
+)
+
+expand_template(
+ name = "fizz_config_h",
+ out = "fizz/fizz-config.h",
+ substitutions = {
+ # TODO(kgk): Consider enabling if/when libaegis is added to the BCR.
+ "#cmakedefine01 FIZZ_HAVE_LIBAEGIS": "/* #undef FIZZ_HAVE_LIBAEGIS */",
+ "#cmakedefine01 FIZZ_CERTIFICATE_USE_OPENSSL_CERT": "#define FIZZ_CERTIFICATE_USE_OPENSSL_CERT 1",
+ # TODO(kgk): Consider enabling if/when oqs is added to the BCR.
+ "#cmakedefine01 FIZZ_HAVE_OQS": "/* #undef FIZZ_HAVE_OQS */",
+ # "FIZZ_HAVE_OQS",
+ },
+ template = "fizz/fizz-config.h.in",
+)
+
+cc_library(
+ name = "fizz_protocol_cert_util",
+ hdrs = ["fizz/protocol/test/CertUtil.h"],
+ includes = ["."],
+ visibility = ["//visibility:public"],
+ deps = [":fizz"],
+)
+
+# ==================================================================================================
+# Tests
+# ==================================================================================================
+EXCLUDED_TEST_SRCS = [
+ # Disabled because we don't yet support OQS.
+ "fizz/backend/liboqs/test/OQSKeyExchangeTest.cpp",
+ # This appears to be some sort of helper binary, not a test or test lib file.
+ "fizz/test/BogoShim.cpp",
+ # Disabling because this test reliably fails.
+ "fizz/experimental/ktls/test/AsyncFizzBaseKTLSTest.cpp",
+]
+
+# These files end in Test.cpp but are not tests.
+TEST_LIB_SRCS_WITH_TEST_SUFFIX = [
+ "fizz/crypto/test/HashTest.cpp",
+ "fizz/crypto/test/HmacTest.cpp",
+]
+
+# These files are tests, but don't end in Test.cpp.
+TEST_SRCS_WITHOUT_TEST_SUFFIX = [
+ "fizz/backend/openssl/crypto/signature/test/PeerCertVerify.cpp",
+ "fizz/backend/openssl/crypto/test/Hmac.cpp",
+ "fizz/record/test/EncryptedRecordBench.cpp",
+]
+
+TEST_SRCS = glob(
+ ["**/test/*Test.cpp"],
+ exclude = EXCLUDED_TEST_SRCS + TEST_LIB_SRCS_WITH_TEST_SUFFIX,
+) + TEST_SRCS_WITHOUT_TEST_SUFFIX
+
+TEST_LIB_SRCS = glob(
+ ["**/test/*.cpp"],
+ exclude = [
+ "**/test/*Test.cpp",
+ "fizz/test/CMakeTestMain.cpp",
+ ] + EXCLUDED_TEST_SRCS + TEST_SRCS_WITHOUT_TEST_SUFFIX,
+) + TEST_LIB_SRCS_WITH_TEST_SUFFIX
+
+[cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ deps = [
+ ":fizz",
+ ":fizz_test_lib",
+ ":fizz_test_main",
+ ],
+) for test_file in TEST_SRCS]
+
+# Defines the main function for all unit tests. Use this instead of @googletest//:gtest.
+cc_library(
+ name = "fizz_test_main",
+ srcs = ["fizz/test/CMakeTestMain.cpp"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "@folly//folly/init",
+ "@folly//folly/portability:gtest",
+ ],
+)
+
+# Glob all the sources which are not tests into a single library that all the tests can just use.
+cc_library(
+ name = "fizz_test_lib",
+ srcs = TEST_LIB_SRCS,
+ hdrs = glob(["fizz/**/test/*.h"]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":fizz",
+ ":tool_common_lib",
+ "@boost.variant",
+ "@folly//folly:base64",
+ "@folly//folly:benchmark",
+ "@folly//folly:exception_wrapper",
+ "@folly//folly:file_util",
+ "@folly//folly:fixed_string",
+ "@folly//folly:format",
+ "@folly//folly:function",
+ "@folly//folly:memory",
+ "@folly//folly:random",
+ "@folly//folly:range",
+ "@folly//folly:string",
+ "@folly//folly/container:array",
+ "@folly//folly/executors:manual_executor",
+ "@folly//folly/futures:core",
+ "@folly//folly/init",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_socket",
+ "@folly//folly/io/async:async_socket_exception",
+ "@folly//folly/io/async:scoped_event_base_thread",
+ "@folly//folly/io/async:server_socket",
+ "@folly//folly/io/async/test:async_socket_test_lib",
+ "@folly//folly/io/async/test:mocks",
+ "@folly//folly/json:dynamic",
+ "@folly//folly/lang:bits",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/ssl:openssl_cert_utils",
+ "@folly//folly/ssl:openssl_ptr_types",
+ "@folly//folly/test:test_utils",
+ "@folly//folly/testing:test_util",
+ ],
+)
diff --git a/modules/fizz/2025.02.10.00.bcr.2/presubmit.yml b/modules/fizz/2025.02.10.00.bcr.2/presubmit.yml
new file mode 100644
index 00000000000..e5be7e9fa73
--- /dev/null
+++ b/modules/fizz/2025.02.10.00.bcr.2/presubmit.yml
@@ -0,0 +1,40 @@
+matrix:
+ platform:
+ # Disable platforms that do not support c++20 or have a new enough gcc (>11)
+ # - debian10
+ # - debian11
+ # - ubuntu2004
+ # - ubuntu2004_arm64
+ # MacOS is not yet supported.
+ # - macos
+ # - macos_arm64
+ # Windows is not yet supported.
+ # - windows
+ - ubuntu2204
+ - ubuntu2204_arm64
+ - ubuntu2404
+ bazel:
+ - 7.x
+ - 8.x
+ # Disabled for now because glog does not use rules_cc for cc_* targets.
+ # - rolling
+tasks:
+ verify_targets:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - '--cxxopt=-std=c++20'
+ - '--host_cxxopt=-std=c++20'
+ # Disable spammy warnings in external dependencies to make build output readable.
+ - '--per_file_copt=external/.*@-w'
+ - '--host_per_file_copt=external/.*@-w'
+ test_flags:
+ - '--cxxopt=-std=c++20'
+ - '--host_cxxopt=-std=c++20'
+ # Disable spammy warnings in external dependencies to make build output readable.
+ - '--per_file_copt=external/.*@-w'
+ - '--host_per_file_copt=external/.*@-w'
+ build_targets:
+ - '@fizz//...'
+ test_targets:
+ - '@fizz//...'
diff --git a/modules/fizz/2025.02.10.00.bcr.2/source.json b/modules/fizz/2025.02.10.00.bcr.2/source.json
new file mode 100644
index 00000000000..be7c4bb1be3
--- /dev/null
+++ b/modules/fizz/2025.02.10.00.bcr.2/source.json
@@ -0,0 +1,7 @@
+{
+ "url": "https://github.com/facebookincubator/fizz/releases/download/v2025.02.10.00/fizz-v2025.02.10.00.tar.gz",
+ "integrity": "sha256-h3PnB6T7IZCGs8nyZgDW75OqCLLdqg6lGFD0UEjX+E0=",
+ "overlay": {
+ "BUILD.bazel": "sha256-pBDy5rwetJEuwgDtHT3MoeXpJ/816OsZdlY9rRV+NgU="
+ }
+}
diff --git a/modules/fizz/metadata.json b/modules/fizz/metadata.json
index d7e7ca526a3..5747e172dd1 100644
--- a/modules/fizz/metadata.json
+++ b/modules/fizz/metadata.json
@@ -4,8 +4,8 @@
{
"email": "kgreenek@gmail.com",
"github": "kgreenek",
- "name": "Kevin Greene",
- "github_user_id": 1295700
+ "github_user_id": 1295700,
+ "name": "Kevin Greene"
}
],
"repository": [
@@ -13,7 +13,8 @@
],
"versions": [
"2025.02.10.00",
- "2025.02.10.00.bcr.1"
+ "2025.02.10.00.bcr.1",
+ "2025.02.10.00.bcr.2"
],
"yanked_versions": {}
}
From e4745e3c715b7f5359fc13860521e1d9c41e96ea Mon Sep 17 00:00:00 2001
From: Kevin Greene
Date: Thu, 15 Jan 2026 10:53:25 -0800
Subject: [PATCH 008/367] Add mvfst@2025.01.20.00.bcr.1 (#7163)
Updates all dependencies to remove compatibility_level from boost
---
.../mvfst/2025.01.20.00.bcr.1/MODULE.bazel | 15 ++
.../2025.01.20.00.bcr.1/overlay/BUILD.bazel | 237 ++++++++++++++++++
.../mvfst/2025.01.20.00.bcr.1/presubmit.yml | 35 +++
modules/mvfst/2025.01.20.00.bcr.1/source.json | 8 +
modules/mvfst/metadata.json | 7 +-
5 files changed, 299 insertions(+), 3 deletions(-)
create mode 100644 modules/mvfst/2025.01.20.00.bcr.1/MODULE.bazel
create mode 100644 modules/mvfst/2025.01.20.00.bcr.1/overlay/BUILD.bazel
create mode 100644 modules/mvfst/2025.01.20.00.bcr.1/presubmit.yml
create mode 100644 modules/mvfst/2025.01.20.00.bcr.1/source.json
diff --git a/modules/mvfst/2025.01.20.00.bcr.1/MODULE.bazel b/modules/mvfst/2025.01.20.00.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..0cdbb2c0122
--- /dev/null
+++ b/modules/mvfst/2025.01.20.00.bcr.1/MODULE.bazel
@@ -0,0 +1,15 @@
+module(
+ name = "mvfst",
+ version = "2025.01.20.00.bcr.1",
+ bazel_compatibility = [">=7.6.0"],
+)
+
+bazel_dep(name = "boost.iterator", version = "1.89.0.bcr.2")
+bazel_dep(name = "fizz", version = "2025.02.10.00.bcr.2")
+bazel_dep(name = "fmt", version = "12.1.0")
+bazel_dep(name = "folly", version = "2025.01.13.00.bcr.5")
+bazel_dep(name = "glog", version = "0.7.1")
+bazel_dep(name = "libsodium", version = "1.0.19")
+bazel_dep(name = "mbedtls", version = "3.6.0.bcr.1")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "rules_license", version = "1.0.0")
diff --git a/modules/mvfst/2025.01.20.00.bcr.1/overlay/BUILD.bazel b/modules/mvfst/2025.01.20.00.bcr.1/overlay/BUILD.bazel
new file mode 100644
index 00000000000..d5d26bc4229
--- /dev/null
+++ b/modules/mvfst/2025.01.20.00.bcr.1/overlay/BUILD.bazel
@@ -0,0 +1,237 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
+load("@rules_license//rules:license.bzl", "license")
+
+package(default_applicable_licenses = [":license"])
+
+license(
+ name = "license",
+ license_kinds = ["@rules_license//licenses/spdx:MIT"],
+ license_text = "LICENSE",
+ visibility = ["//visibility:public"],
+)
+
+alias(
+ name = "mvfst",
+ actual = ":quic",
+ visibility = ["//visibility:public"],
+)
+
+# NOTE: This is one big library because some of the headers have complex circular dependencies.
+cc_library(
+ name = "quic",
+ srcs = glob(
+ ["quic/**/*.cpp"],
+ exclude = [
+ # NOTE: Use quic/server/QuicServerBackend.cpp for now instead of the io_uring version
+ # because the following folly lib currently triggers linker errors:
+ # @folly//folly/io/async:io_uring_backend
+ # TODO(kgk): Investigate this bug and switch to the io_uring version when on linux.
+ "quic/server/QuicServerBackendIoUring.cpp",
+ # Disabled because it fails to compile and doesn't appear to be used.
+ "quic/api/QuicBatchWriterFactoryMobile.cpp",
+ # TODO(kgk): Enable once libev is added to the BCR.
+ "quic/common/events/LibevQuicEventBase.cpp",
+ # TODO(kgk): Enable once libev is added to the BCR.
+ "quic/common/udpsocket/LibevQuicAsyncUDPSocket.cpp",
+ "quic/samples/**",
+ "quic/tools/**",
+ "quic/**/test/**",
+ ],
+ ),
+ hdrs = glob(
+ ["quic/**/*.h"],
+ exclude = [
+ # TODO(kgk): Enable once libev is added to the BCR.
+ "quic/common/events/LibevQuicEventBase.h",
+ # TODO(kgk): Enable once libev is added to the BCR.
+ "quic/common/udpsocket/LibevQuicAsyncUDPSocket.h",
+ "quic/common/testutil/**",
+ "quic/samples/**",
+ "quic/tools/**",
+ "quic/**/test/**",
+ "quic/**/*-inl.h",
+ ],
+ ),
+ includes = ["."],
+ textual_hdrs = glob(
+ ["quic/**/*-inl.h"],
+ exclude = ["quic/**/test/**"],
+ ),
+ visibility = ["//visibility:public"],
+ deps = [
+ "@boost.iterator",
+ "@fizz",
+ "@fmt",
+ "@folly//folly:benchmark",
+ "@folly//folly:chrono",
+ "@folly//folly:conv",
+ "@folly//folly:exception_wrapper",
+ "@folly//folly:expected",
+ "@folly//folly:function",
+ "@folly//folly:glog",
+ "@folly//folly:intrusive_list",
+ "@folly//folly:likely",
+ "@folly//folly:map_util",
+ "@folly//folly:maybe_managed_ptr",
+ "@folly//folly:network_address",
+ "@folly//folly:observer_container",
+ "@folly//folly:overload",
+ "@folly//folly:portability",
+ "@folly//folly:random",
+ "@folly//folly:range",
+ "@folly//folly:scope_guard",
+ "@folly//folly:small_vector",
+ "@folly//folly:string",
+ "@folly//folly:thread_local",
+ "@folly//folly:token_bucket",
+ "@folly//folly:traits",
+ "@folly//folly/chrono:clock",
+ "@folly//folly/chrono:conv",
+ "@folly//folly/compression",
+ "@folly//folly/container:evicting_cache_map",
+ "@folly//folly/container:f14_hash",
+ "@folly//folly/container:heap_vector_types",
+ "@folly//folly/functional:invoke",
+ "@folly//folly/hash",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_socket_exception",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/io/async:async_transport",
+ "@folly//folly/io/async:async_transport_certificate",
+ "@folly//folly/io/async:async_udp_socket",
+ "@folly//folly/io/async:delayed_destruction",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/io/async:scoped_event_base_thread",
+ "@folly//folly/io/async:timerfd",
+ "@folly//folly/json:dynamic",
+ "@folly//folly/lang:assume",
+ "@folly//folly/lang:bits",
+ "@folly//folly/logging",
+ "@folly//folly/memory:malloc",
+ "@folly//folly/net:net_ops",
+ "@folly//folly/net:network_socket",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:sockets",
+ "@folly//folly/ssl:openssl_ptr_types",
+ "@folly//folly/system:thread_id",
+ "@folly//folly/tracing:static_tracepoint",
+ "@glog",
+ ],
+)
+
+cc_binary(
+ name = "tperf",
+ srcs = ["quic/tools/tperf/tperf.cpp"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":quic_test_lib",
+ "@folly//folly/init",
+ "@folly//folly/portability:gflags",
+ "@glog",
+ ],
+)
+
+cc_library(
+ name = "quic_test_lib",
+ srcs = glob(
+ [
+ "quic/tools/tperf/*.cpp",
+ "quic/**/test/*.cpp",
+ ],
+ exclude = [
+ "quic/common/test/CircularDequeBench.cpp",
+ "quic/common/test/TestMain.cpp",
+ "quic/tools/tperf/tperf.cpp",
+ "quic/**/test/*Benchmark.cpp",
+ "quic/**/test/*Test.cpp",
+ ],
+ ),
+ hdrs = glob([
+ "quic/**/test/*.h",
+ "quic/**/testutil/*.h",
+ "quic/samples/echo/*.h",
+ "quic/tools/tperf/*.h",
+ ]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":quic",
+ "@fizz",
+ "@fizz//:fizz_test_lib",
+ "@folly//folly:file_util",
+ "@folly//folly:network_address",
+ "@folly//folly:string",
+ "@folly//folly:synchronized",
+ "@folly//folly/fibers:core",
+ "@folly//folly/init",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_udp_socket",
+ "@folly//folly/io/async:scoped_event_base_thread",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/ssl:openssl_cert_utils",
+ "@folly//folly/stats:histogram",
+ "@glog",
+ "@libsodium",
+ ],
+)
+
+cc_library(
+ name = "quic_test_main",
+ srcs = ["quic/common/test/TestMain.cpp"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "@folly//folly:portability",
+ "@folly//folly/init",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:gtest",
+ ],
+)
+
+[cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ deps = [
+ ":quic",
+ ":quic_test_lib",
+ ":quic_test_main",
+ "@fizz",
+ "@fizz//:fizz_test_lib",
+ "@folly//folly:expected",
+ "@folly//folly:fbstring",
+ "@folly//folly:file_util",
+ "@folly//folly:format",
+ "@folly//folly:move_wrapper",
+ "@folly//folly:network_address",
+ "@folly//folly:random",
+ "@folly//folly:range",
+ "@folly//folly:string",
+ "@folly//folly/container:array",
+ "@folly//folly/container:f14_hash",
+ "@folly//folly/futures:core",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_transport",
+ "@folly//folly/io/async:scoped_event_base_thread",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/io/async/test:mocks",
+ "@folly//folly/json:dynamic",
+ "@folly//folly/portability:filesystem",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ ],
+) for test_file in glob(
+ ["quic/**/test/*Test.cpp"],
+ exclude = [
+ # TODO(kgk): Enable once libev is added to the BCR.
+ "quic/common/events/test/LibevQuicEventBaseTest.cpp",
+ # TODO(kgk): Enable once libev is added to the BCR.
+ "quic/common/udpsocket/test/LibevQuicAsyncUDPSocketTest.cpp",
+ # This test doesn't compile and seems to be intentionally disabled.
+ "quic/congestion_control/test/Copa2Test.cpp",
+ ],
+)]
diff --git a/modules/mvfst/2025.01.20.00.bcr.1/presubmit.yml b/modules/mvfst/2025.01.20.00.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..ada9bb67505
--- /dev/null
+++ b/modules/mvfst/2025.01.20.00.bcr.1/presubmit.yml
@@ -0,0 +1,35 @@
+matrix:
+ platform:
+ # Disable platforms that do not support c++20 or have a new enough gcc (>11)
+ # - debian10
+ # - debian11
+ # - ubuntu2004
+ # - ubuntu2004_arm64
+ # MacOS is not yet supported.
+ # - macos
+ # - macos_arm64
+ # Windows is not yet supported.
+ # - windows
+ - ubuntu2204
+ - ubuntu2204_arm64
+ - ubuntu2404
+ bazel:
+ - 7.x
+ - 8.x
+ # Disabled for now because glog does not use rules_cc for cc_* targets.
+ # - rolling
+tasks:
+ verify_targets:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags: &cxx_flags
+ - '--cxxopt=-std=c++20'
+ - '--host_cxxopt=-std=c++20'
+ # Disable spammy warnings in external dependencies to make build output readable.
+ - '--per_file_copt=external/.*@-w'
+ - '--host_per_file_copt=external/.*@-w'
+ test_flags: *cxx_flags
+ build_targets:
+ - '@mvfst//...'
+ test_targets:
+ - '@mvfst//...'
diff --git a/modules/mvfst/2025.01.20.00.bcr.1/source.json b/modules/mvfst/2025.01.20.00.bcr.1/source.json
new file mode 100644
index 00000000000..da2e5c61236
--- /dev/null
+++ b/modules/mvfst/2025.01.20.00.bcr.1/source.json
@@ -0,0 +1,8 @@
+{
+ "url": "https://github.com/facebook/mvfst/archive/refs/tags/v2025.01.20.00.tar.gz",
+ "integrity": "sha256-4iZcx309zHURfnOUnQkgn4ne7dGFMMrBr5P2yrctE7k=",
+ "strip_prefix": "mvfst-2025.01.20.00",
+ "overlay": {
+ "BUILD.bazel": "sha256-91NPqQz518TAuPlH9W+So3dEQ50neASpMzfZmYsVeuQ="
+ }
+}
diff --git a/modules/mvfst/metadata.json b/modules/mvfst/metadata.json
index 38d84698144..183dd461ae6 100644
--- a/modules/mvfst/metadata.json
+++ b/modules/mvfst/metadata.json
@@ -4,15 +4,16 @@
{
"email": "kgreenek@gmail.com",
"github": "kgreenek",
- "name": "Kevin Greene",
- "github_user_id": 1295700
+ "github_user_id": 1295700,
+ "name": "Kevin Greene"
}
],
"repository": [
"github:facebook/mvfst"
],
"versions": [
- "2025.01.20.00"
+ "2025.01.20.00",
+ "2025.01.20.00.bcr.1"
],
"yanked_versions": {}
}
From 9b528c549dfe646ed7a8bc725171ee80d0ef345e Mon Sep 17 00:00:00 2001
From: Ted
Date: Thu, 15 Jan 2026 14:30:53 -0500
Subject: [PATCH 009/367] rules_android v0.7.1 (#7165)
---
modules/rules_android/0.7.1/MODULE.bazel | 202 ++++++++++++++++++++++
modules/rules_android/0.7.1/presubmit.yml | 12 ++
modules/rules_android/0.7.1/source.json | 5 +
modules/rules_android/metadata.json | 3 +-
4 files changed, 221 insertions(+), 1 deletion(-)
create mode 100644 modules/rules_android/0.7.1/MODULE.bazel
create mode 100644 modules/rules_android/0.7.1/presubmit.yml
create mode 100644 modules/rules_android/0.7.1/source.json
diff --git a/modules/rules_android/0.7.1/MODULE.bazel b/modules/rules_android/0.7.1/MODULE.bazel
new file mode 100644
index 00000000000..959f32a03a8
--- /dev/null
+++ b/modules/rules_android/0.7.1/MODULE.bazel
@@ -0,0 +1,202 @@
+module(
+ name = "rules_android",
+ version = "0.7.1",
+ compatibility_level = 1,
+)
+
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "rules_java", version = "9.3.0")
+bazel_dep(name = "rules_cc", version = "0.2.14")
+bazel_dep(name = "rules_shell", version = "0.6.1")
+
+bazel_dep(name = "stardoc", version = "0.8.0", dev_dependency = True)
+
+rules_java_toolchains = use_extension("@rules_java//java:extensions.bzl", "toolchains")
+use_repo(rules_java_toolchains, "remote_java_tools")
+
+bazel_dep(name = "protobuf", version = "33.4", repo_name = "com_google_protobuf")
+bazel_dep(name = "rules_jvm_external", version = "6.9")
+bazel_dep(name = "bazel_skylib", version = "1.8.1")
+bazel_dep(name = "rules_robolectric", version = "4.14.1.2", repo_name = "robolectric")
+
+register_toolchains("//toolchains/android:all")
+
+register_toolchains("//toolchains/android_sdk:all")
+
+# go-related dependency setup
+bazel_dep(name = "rules_go", version = "0.59.0", repo_name = "io_bazel_rules_go")
+bazel_dep(name = "gazelle", version = "0.47.0", repo_name = "bazel_gazelle")
+bazel_dep(name = "abseil-py", version = "2.1.0", repo_name = "py_absl")
+bazel_dep(name = "bazel_worker_api", version = "0.0.8")
+bazel_dep(name = "bazel_worker_java", version = "0.0.8")
+
+go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk")
+go_sdk.download(version = "1.22.4")
+
+go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
+go_deps.from_file(go_mod = "//:go.mod")
+use_repo(
+ go_deps,
+ "com_github_golang_glog",
+ "com_github_google_go_cmp",
+ "org_bitbucket_creachadair_stringset",
+ "org_golang_google_protobuf",
+ "org_golang_x_sync",
+)
+
+# python-related dependency setup
+bazel_dep(name = "rules_python", version = "1.6.0", repo_name = "rules_python")
+
+python = use_extension("@rules_python//python/extensions:python.bzl", "python")
+python.toolchain(
+ is_default = True,
+ python_version = "3.11",
+)
+
+# proto-related dependency setup
+bazel_dep(name = "rules_proto", version = "7.1.0", repo_name = "rules_proto")
+
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+# Maven for android_ide_common need to be separated into their own separate maven_install for now
+# due to compatibility issues with newer versions.
+maven.install(
+ name = "android_ide_common_30_1_3",
+ aar_import_bzl_label = "@rules_android//rules:rules.bzl",
+ artifacts = [
+ "com.android.tools.layoutlib:layoutlib-api:30.1.3",
+ "com.android.tools.build:manifest-merger:30.1.3",
+ "com.android.tools:common:30.1.3",
+ "com.android.tools:repository:30.1.3",
+ "com.android.tools.analytics-library:protos:30.1.3",
+ "com.android.tools.analytics-library:shared:30.1.3",
+ "com.android.tools.analytics-library:tracker:30.1.3",
+ "com.android.tools:annotations:30.1.3",
+ "com.android.tools:sdk-common:30.1.3",
+ "com.android.tools.build:builder:7.1.3",
+ "com.android.tools.build:builder-model:7.1.3",
+ # These technically aren't needed, but the protobuf version pulled
+ # in by these older deps has compatibility issues with the newer
+ # protobuf runtimes.
+ "com.google.protobuf:protobuf-java:4.33.4",
+ "com.google.protobuf:protobuf-java-util:4.33.4",
+ ],
+ repositories = [
+ "https://maven.google.com",
+ "https://repo1.maven.org/maven2",
+ ],
+ use_starlark_android_rules = True,
+)
+use_repo(maven, "android_ide_common_30_1_3")
+
+maven.install(
+ name = "rules_android_maven",
+ aar_import_bzl_label = "@rules_android//rules:rules.bzl",
+ artifacts = [
+ "androidx.privacysandbox.tools:tools:1.0.0-alpha06",
+ "androidx.privacysandbox.tools:tools-apigenerator:1.0.0-alpha06",
+ "androidx.privacysandbox.tools:tools-apipackager:1.0.0-alpha06",
+ "androidx.test:core:1.6.0-alpha01",
+ "androidx.test.ext:junit:1.2.0-alpha01",
+ "com.android.tools.apkdeployer:apkdeployer:8.11.0-alpha10",
+ "com.android.tools.build:bundletool:1.18.2",
+ "com.android.tools:desugar_jdk_libs_minimal:2.1.5",
+ "com.android.tools:desugar_jdk_libs_configuration_minimal:2.1.5",
+ "com.android.tools:desugar_jdk_libs_nio:2.1.5",
+ "com.android.tools:desugar_jdk_libs_configuration_nio:2.1.5",
+ "com.android.tools:desugar_jdk_libs_configuration:2.1.5",
+ "com.android.tools:r8:8.9.35",
+ "org.bouncycastle:bcprov-jdk18on:1.77",
+ "org.hamcrest:hamcrest-core:2.2",
+ "org.robolectric:robolectric:4.14.1",
+ "com.google.flogger:flogger:0.8",
+ "com.google.flogger:flogger-system-backend:0.8",
+ "com.google.guava:guava:32.1.2-jre",
+ "com.google.guava:failureaccess:1.0.1",
+ "info.picocli:picocli:4.7.4",
+ "jakarta.inject:jakarta.inject-api:2.0.1",
+ "junit:junit:4.13.2",
+ "com.beust:jcommander:1.82",
+ "com.google.protobuf:protobuf-java:4.33.4",
+ "com.google.protobuf:protobuf-java-util:4.33.4",
+ "com.google.code.findbugs:jsr305:3.0.2",
+ "androidx.databinding:databinding-compiler:8.7.0",
+ "org.ow2.asm:asm:9.6",
+ "org.ow2.asm:asm-commons:9.6",
+ "org.ow2.asm:asm-tree:9.6",
+ "org.ow2.asm:asm-util:9.6",
+ "com.android:zipflinger:8.7.0",
+ "com.android.tools.build:gradle:8.7.0",
+ "com.android:signflinger:8.7.0",
+ "com.android.tools.build:aapt2-proto:8.6.1-11315950",
+ "com.android.tools.build:apksig:8.7.0",
+ "com.android.tools.build:apkzlib:8.7.0",
+ "com.google.auto.value:auto-value:1.11.0",
+ "com.google.auto.value:auto-value-annotations:1.11.0",
+ "com.google.auto:auto-common:1.2.2",
+ "com.google.auto.service:auto-service:1.1.1",
+ "com.google.auto.service:auto-service-annotations:1.1.1",
+ "com.google.errorprone:error_prone_annotations:2.33.0",
+ "com.google.errorprone:error_prone_type_annotations:2.33.0",
+ "com.google.errorprone:error_prone_check_api:2.33.0",
+ "com.google.errorprone:error_prone_core:2.33.0",
+ # Test deps
+ "com.google.guava:guava-testlib:33.2.1-jre",
+ "com.google.jimfs:jimfs:1.2",
+ "com.google.testing.compile:compile-testing:0.18",
+ "com.google.testparameterinjector:test-parameter-injector:1.16",
+ "com.google.truth:truth:1.4.0",
+ "com.google.truth.extensions:truth-java8-extension:1.4.0",
+ "com.google.truth.extensions:truth-liteproto-extension:1.4.0",
+ "com.google.truth.extensions:truth-proto-extension:1.4.0",
+ "org.mockito:mockito-core:5.4.0",
+ ],
+ repositories = [
+ "https://maven.google.com",
+ "https://repo1.maven.org/maven2",
+ ],
+ # To generate, run:
+ # REPIN=1 bazelisk run --enable_bzlmod @rules_android_maven//:pin
+ # lock_file = "//:rules_android_maven_install.json",
+ use_starlark_android_rules = True,
+)
+use_repo(
+ maven,
+ "rules_android_maven",
+)
+
+remote_android_extensions = use_extension("//bzlmod_extensions:android_extensions.bzl", "remote_android_tools_extensions")
+use_repo(remote_android_extensions, "android_tools")
+
+# integration test setup
+bazel_dep(
+ name = "rules_bazel_integration_test",
+ version = "0.27.0",
+ dev_dependency = True,
+)
+bazel_dep(
+ name = "cgrindel_bazel_starlib",
+ version = "0.18.0",
+ dev_dependency = True,
+)
+
+bazel_binaries = use_extension(
+ "@rules_bazel_integration_test//:extensions.bzl",
+ "bazel_binaries",
+ dev_dependency = True,
+)
+bazel_binaries.download(version = "last_green")
+use_repo(bazel_binaries, "bazel_binaries", "bazel_binaries_bazelisk", "build_bazel_bazel_last_green")
+
+# extension for apksignerextensions
+apksig_extension = use_extension("//bzlmod_extensions:apksig.bzl", "apksig_extension")
+use_repo(apksig_extension, "apksig")
+
+# extension for the legacy com_android_dex library
+com_android_dex_extension = use_extension("//bzlmod_extensions:com_android_dex.bzl", "com_android_dex_extension")
+use_repo(com_android_dex_extension, "com_android_dex")
+
+android_sdk_repository_extension = use_extension("//rules/android_sdk_repository:rule.bzl", "android_sdk_repository_extension")
+use_repo(android_sdk_repository_extension, "androidsdk")
+
+register_toolchains("@androidsdk//:sdk-toolchain", "@androidsdk//:all")
diff --git a/modules/rules_android/0.7.1/presubmit.yml b/modules/rules_android/0.7.1/presubmit.yml
new file mode 100644
index 00000000000..a49ccf5fe62
--- /dev/null
+++ b/modules/rules_android/0.7.1/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: examples/basicapp
+ matrix:
+ platform: ["ubuntu2404", "macos_arm64", "windows"]
+ bazel: ["7.7.1", "8.4.2", "rolling"]
+ tasks:
+ run_test_module:
+ name: "Verify build targets with bzlmod"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - "//java/com/basicapp:basic_app"
diff --git a/modules/rules_android/0.7.1/source.json b/modules/rules_android/0.7.1/source.json
new file mode 100644
index 00000000000..bcadfd75410
--- /dev/null
+++ b/modules/rules_android/0.7.1/source.json
@@ -0,0 +1,5 @@
+{
+ "integrity": "sha256-fEW2qqg3+28vI60ROHY4ywD6n4OaBOxWTKrHClQ6nNU=",
+ "strip_prefix": "rules_android-0.7.1",
+ "url": "https://github.com/bazelbuild/rules_android/releases/download/v0.7.1/rules_android-v0.7.1.tar.gz"
+}
diff --git a/modules/rules_android/metadata.json b/modules/rules_android/metadata.json
index c4e763e1b3d..8b18f76055d 100644
--- a/modules/rules_android/metadata.json
+++ b/modules/rules_android/metadata.json
@@ -29,7 +29,8 @@
"0.6.4",
"0.6.5",
"0.6.6",
- "0.7.0"
+ "0.7.0",
+ "0.7.1"
],
"yanked_versions": {
"0.5.0": "Bug in compatibility_level made v0.5.0 incompatible with rules_jvm_external.",
From c44443643be686bfffe4a68dcec267dacc4e81b0 Mon Sep 17 00:00:00 2001
From: Kevin Greene
Date: Thu, 15 Jan 2026 11:31:01 -0800
Subject: [PATCH 010/367] Add wangle@2025.02.10.00.bcr.2 (#7164)
Update all deps to remove compatibility_level from boost
---
.../wangle/2025.02.10.00.bcr.2/MODULE.bazel | 14 +
.../2025.02.10.00.bcr.2/overlay/BUILD.bazel | 630 ++++++++++++++++++
.../wangle/2025.02.10.00.bcr.2/presubmit.yml | 36 +
.../wangle/2025.02.10.00.bcr.2/source.json | 7 +
modules/wangle/metadata.json | 3 +-
5 files changed, 689 insertions(+), 1 deletion(-)
create mode 100644 modules/wangle/2025.02.10.00.bcr.2/MODULE.bazel
create mode 100644 modules/wangle/2025.02.10.00.bcr.2/overlay/BUILD.bazel
create mode 100644 modules/wangle/2025.02.10.00.bcr.2/presubmit.yml
create mode 100644 modules/wangle/2025.02.10.00.bcr.2/source.json
diff --git a/modules/wangle/2025.02.10.00.bcr.2/MODULE.bazel b/modules/wangle/2025.02.10.00.bcr.2/MODULE.bazel
new file mode 100644
index 00000000000..fb54404899c
--- /dev/null
+++ b/modules/wangle/2025.02.10.00.bcr.2/MODULE.bazel
@@ -0,0 +1,14 @@
+module(
+ name = "wangle",
+ version = "2025.02.10.00.bcr.2",
+ bazel_compatibility = [">=7.6.0"],
+)
+
+bazel_dep(name = "boost.thread", version = "1.89.0.bcr.2")
+bazel_dep(name = "fizz", version = "2025.02.10.00.bcr.2")
+bazel_dep(name = "fmt", version = "12.1.0")
+bazel_dep(name = "folly", version = "2025.01.13.00.bcr.5")
+bazel_dep(name = "glog", version = "0.7.1")
+bazel_dep(name = "openssl", version = "3.5.4.bcr.0")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "rules_license", version = "1.0.0")
diff --git a/modules/wangle/2025.02.10.00.bcr.2/overlay/BUILD.bazel b/modules/wangle/2025.02.10.00.bcr.2/overlay/BUILD.bazel
new file mode 100644
index 00000000000..e5982f5dc30
--- /dev/null
+++ b/modules/wangle/2025.02.10.00.bcr.2/overlay/BUILD.bazel
@@ -0,0 +1,630 @@
+load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
+load("@rules_license//rules:license.bzl", "license")
+
+package(default_applicable_licenses = [":license"])
+
+license(
+ name = "license",
+ license_kinds = ["@rules_license//licenses/spdx:Apache-2.0"],
+ license_text = "LICENSE",
+)
+
+cc_library(
+ name = "acceptor",
+ srcs = glob(["wangle/acceptor/*.cpp"]),
+ hdrs = glob(["wangle/acceptor/*.h"]),
+ includes = ["."],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":ssl",
+ "@fizz",
+ "@fmt",
+ "@folly//folly:constexpr_math",
+ "@folly//folly:conv",
+ "@folly//folly:exception_wrapper",
+ "@folly//folly:format",
+ "@folly//folly:glog",
+ "@folly//folly:intrusive_list",
+ "@folly//folly:memory",
+ "@folly//folly:network_address",
+ "@folly//folly:optional",
+ "@folly//folly:random",
+ "@folly//folly:range",
+ "@folly//folly:string",
+ "@folly//folly/experimental/io:async_io_uring_socket",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_socket",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/io/async:async_transport",
+ "@folly//folly/io/async:async_udp_server_socket",
+ "@folly//folly/io/async:delayed_destruction",
+ "@folly//folly/io/async:server_socket",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/io/async/fdsock:async_fd_socket",
+ "@folly//folly/portability:openssl",
+ "@folly//folly/portability:sockets",
+ "@folly//folly/portability:unistd",
+ "@glog",
+ ],
+)
+
+cc_library(
+ name = "bootstrap",
+ srcs = glob(["wangle/bootstrap/*.cpp"]),
+ hdrs = glob(
+ ["wangle/bootstrap/*.h"],
+ exclude = ["wangle/bootstrap/*-inl.h"],
+ ),
+ includes = ["."],
+ textual_hdrs = glob(["wangle/bootstrap/*-inl.h"]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":acceptor",
+ ":channel",
+ ":ssl",
+ "@folly//folly:exception_wrapper",
+ "@folly//folly:network_address",
+ "@folly//folly:shared_mutex",
+ "@folly//folly/executors:io_thread_pool_executor",
+ "@folly//folly/executors/thread_factory",
+ "@folly//folly/futures:core",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_socket",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/io/async:async_transport",
+ "@folly//folly/io/async:async_udp_server_socket",
+ "@folly//folly/io/async:destructor_check",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/io/async:server_socket",
+ "@folly//folly/ssl:ssl_session",
+ "@folly//folly/synchronization:baton",
+ ],
+)
+
+cc_library(
+ name = "channel",
+ srcs = glob(["wangle/channel/*.cpp"]),
+ hdrs = glob(
+ ["wangle/channel/*.h"],
+ exclude = ["wangle/channel/*-inl.h"],
+ ),
+ includes = ["."],
+ textual_hdrs = glob(["wangle/channel/*-inl.h"]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":acceptor",
+ "@folly//folly:exception_wrapper",
+ "@folly//folly:format",
+ "@folly//folly:memory",
+ "@folly//folly:optional",
+ "@folly//folly:singleton",
+ "@folly//folly:unit",
+ "@folly//folly/executors:io_thread_pool_executor",
+ "@folly//folly/futures:core",
+ "@folly//folly/futures:shared_promise",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_socket",
+ "@folly//folly/io/async:async_transport",
+ "@folly//folly/io/async:async_udp_server_socket",
+ "@folly//folly/io/async:delayed_destruction",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/io/async:request_context",
+ "@glog",
+ ],
+)
+
+cc_library(
+ name = "channel_broadcast",
+ hdrs = glob(
+ ["wangle/channel/broadcast/*.h"],
+ exclude = ["wangle/channel/broadcast/*-inl.h"],
+ ),
+ includes = ["."],
+ textual_hdrs = glob(["wangle/channel/broadcast/*-inl.h"]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":bootstrap",
+ ":channel",
+ "@folly//folly:exception_wrapper",
+ "@folly//folly:thread_local",
+ "@folly//folly/futures:shared_promise",
+ "@folly//folly/io/async:delayed_destruction",
+ ],
+)
+
+cc_library(
+ name = "client_persistence",
+ srcs = glob(["wangle/client/persistence/*.cpp"]),
+ hdrs = glob(
+ ["wangle/client/persistence/*.h"],
+ exclude = ["wangle/client/persistence/*-inl.h"],
+ ),
+ includes = ["."],
+ textual_hdrs = glob(["wangle/client/persistence/*-inl.h"]),
+ visibility = ["//visibility:public"],
+ deps = [
+ "@folly//folly:executor",
+ "@folly//folly:file_util",
+ "@folly//folly:likely",
+ "@folly//folly:memory",
+ "@folly//folly:optional",
+ "@folly//folly:scope_guard",
+ "@folly//folly/container:evicting_cache_map",
+ "@folly//folly/json:dynamic",
+ "@folly//folly/portability:sys_time",
+ "@folly//folly/portability:unistd",
+ "@folly//folly/synchronization:lock",
+ "@folly//folly/synchronization:saturating_semaphore",
+ "@folly//folly/system:thread_name",
+ ],
+)
+
+cc_library(
+ name = "client_ssl",
+ srcs = glob(["wangle/client/ssl/*.cpp"]),
+ hdrs = glob(
+ ["wangle/client/ssl/*.h"],
+ exclude = ["wangle/client/ssl/*-inl.h"],
+ ),
+ includes = ["."],
+ textual_hdrs = glob(["wangle/client/ssl/*-inl.h"]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":client_persistence",
+ ":ssl",
+ "@folly//folly:executor",
+ "@folly//folly:fbstring",
+ "@folly//folly:memory",
+ "@folly//folly:optional",
+ "@folly//folly:shared_mutex",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/json:dynamic",
+ "@folly//folly/portability:openssl",
+ "@folly//folly/ssl:openssl_ptr_types",
+ "@openssl//:ssl",
+ ],
+)
+
+cc_library(
+ name = "codec",
+ srcs = glob(["wangle/codec/*.cpp"]),
+ hdrs = glob(["wangle/codec/*.h"]),
+ includes = ["."],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":channel",
+ "@folly//folly/io:iobuf",
+ ],
+)
+
+cc_library(
+ name = "service",
+ hdrs = glob(["wangle/service/*.h"]),
+ includes = ["."],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":bootstrap",
+ ":channel",
+ "@folly//folly:memory",
+ "@folly//folly/futures:core",
+ ],
+)
+
+cc_library(
+ name = "ssl",
+ srcs = glob(["wangle/ssl/*.cpp"]),
+ # NOTE: Add the SSLContextSelectionMisc.h header here directly here to avoid circular deps.
+ hdrs = glob(["wangle/ssl/*.h"]) + ["wangle/acceptor/SSLContextSelectionMisc.h"],
+ includes = ["."],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":util",
+ "@folly//folly:conv",
+ "@folly//folly:file_util",
+ "@folly//folly:format",
+ "@folly//folly:glog",
+ "@folly//folly:memory",
+ "@folly//folly:optional",
+ "@folly//folly:random",
+ "@folly//folly:scope_guard",
+ "@folly//folly:shared_mutex",
+ "@folly//folly:string",
+ "@folly//folly:synchronized",
+ "@folly//folly/container:evicting_cache_map",
+ "@folly//folly/executors:function_scheduler",
+ "@folly//folly/fibers:core_manager",
+ "@folly//folly/futures:core",
+ "@folly//folly/hash",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/io/async:password_in_file",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/io/async:ssl_options",
+ "@folly//folly/json:dynamic",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:openssl",
+ "@folly//folly/ssl:openssl_cert_utils",
+ "@folly//folly/ssl:openssl_ptr_types",
+ "@folly//folly/ssl:openssl_ticket_handler",
+ "@folly//folly/ssl:password_collector",
+ "@glog",
+ "@openssl//:ssl",
+ ],
+)
+
+cc_library(
+ name = "util",
+ srcs = glob(["wangle/util/*.cpp"]),
+ hdrs = glob(["wangle/util/*.h"]),
+ includes = ["."],
+ visibility = ["//visibility:public"],
+ deps = [
+ "@folly//folly:conv",
+ "@folly//folly:file_util",
+ "@folly//folly:function",
+ "@folly//folly:memory",
+ "@folly//folly:shared_mutex",
+ "@folly//folly:singleton",
+ "@folly//folly:string",
+ "@folly//folly:thread_local",
+ "@folly//folly/executors:function_scheduler",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:scoped_event_base_thread",
+ ],
+)
+
+# ==================================================================================================
+# Tests
+# ==================================================================================================
+cc_library(
+ name = "test_main",
+ srcs = ["wangle/test/TestMain.cpp"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "@folly//folly/init",
+ "@folly//folly/portability:gtest",
+ ],
+)
+
+cc_library(
+ name = "acceptor_test_lib",
+ hdrs = ["wangle/acceptor/test/AcceptorHelperMocks.h"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":acceptor",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ ],
+)
+
+[cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ deps = [
+ ":acceptor",
+ ":acceptor_test_lib",
+ ":test_main",
+ "@folly//folly:file_util",
+ "@folly//folly:network_address",
+ "@folly//folly/futures:barrier",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:scoped_event_base_thread",
+ "@folly//folly/io/async/test:async_ssl_socket_test_lib",
+ "@folly//folly/io/async/test:mocks",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/portability:unistd",
+ "@folly//folly/synchronization:baton",
+ "@folly//folly/testing:test_util",
+ ],
+) for test_file in glob(["wangle/acceptor/test/*Test.cpp"])]
+
+# This test is flaky.
+BOOTSTRAP_DISABLED_TESTS = [
+ "wangle/bootstrap/test/AcceptRoutingHandlerTest.cpp",
+]
+
+cc_library(
+ name = "bootstrap_test_lib",
+ hdrs = ["wangle/bootstrap/test/Mocks.h"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":bootstrap",
+ ":channel",
+ ":channel_test_lib",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ ],
+)
+
+[
+ cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ deps = [
+ ":bootstrap",
+ ":bootstrap_test_lib",
+ ":channel",
+ ":test_main",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/synchronization:latch",
+ "@folly//folly/testing:test_util",
+ "@glog",
+ ],
+ )
+ for test_file in glob(["wangle/bootstrap/test/*Test.cpp"])
+ if test_file not in BOOTSTRAP_DISABLED_TESTS
+]
+
+cc_library(
+ name = "channel_test_lib",
+ hdrs = [
+ "wangle/channel/test/MockHandler.h",
+ "wangle/channel/test/MockPipeline.h",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":channel",
+ "@folly//folly:move_wrapper",
+ "@folly//folly/portability:gmock",
+ ],
+)
+
+[cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ deps = [
+ ":channel",
+ ":channel_test_lib",
+ ":test_main",
+ "@boost.thread",
+ "@folly//folly/io/async:async_socket",
+ "@folly//folly/io/async/test:async_socket_test_lib",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ ],
+) for test_file in glob(["wangle/channel/test/*Test.cpp"])]
+
+cc_library(
+ name = "channel_broadcast_test_lib",
+ hdrs = ["wangle/channel/broadcast/test/Mocks.h"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":channel_broadcast",
+ ":codec",
+ "@folly//folly:move_wrapper",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ ],
+)
+
+[cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ deps = [
+ ":bootstrap",
+ ":channel",
+ ":channel_broadcast",
+ ":channel_broadcast_test_lib",
+ ":channel_test_lib",
+ ":codec",
+ ":test_main",
+ "@folly//folly/portability:gtest",
+ "@glog",
+ ],
+) for test_file in glob(["wangle/channel/broadcast/test/*Test.cpp"])]
+
+cc_library(
+ name = "client_persistence_test_lib",
+ srcs = ["wangle/client/persistence/test/TestUtil.cpp"],
+ hdrs = [
+ "wangle/client/persistence/test/Mocks.h",
+ "wangle/client/persistence/test/TestUtil.h",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":client_persistence",
+ "@folly//folly:memory",
+ "@folly//folly:optional",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/portability:unistd",
+ "@folly//folly/testing:test_util",
+ ],
+)
+
+# This test fails on some platforms.
+CLIENT_PERSISTENCE_DISABLED_TESTS = [
+ "wangle/client/persistence/test/LRUPersistentCacheTest.cpp",
+]
+
+[
+ cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ deps = [
+ ":client_persistence",
+ ":client_persistence_test_lib",
+ ":test_main",
+ "@folly//folly:memory",
+ "@folly//folly/executors:manual_executor",
+ "@folly//folly/futures:barrier",
+ "@folly//folly/futures:core",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/portability:unistd",
+ "@folly//folly/synchronization:baton",
+ ],
+ )
+ for test_file in glob(["wangle/client/persistence/test/*Test.cpp"])
+ if test_file not in CLIENT_PERSISTENCE_DISABLED_TESTS
+]
+
+cc_library(
+ name = "client_ssl_test_lib",
+ srcs = ["wangle/client/ssl/test/TestUtil.cpp"],
+ hdrs = [
+ "wangle/client/ssl/test/Mocks.h",
+ "wangle/client/ssl/test/TestUtil.h",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":client_ssl",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/ssl:openssl_ptr_types",
+ "@glog",
+ ],
+)
+
+# These tests fail because openssl i2d_SSL_SESSION() seems to be returning different data
+# from the data that is hard-coded / expected in the tests. Disable for now.
+CLIENT_SSL_DISABLED_TESTS = [
+ "wangle/client/ssl/test/SSLSessionCacheDataTest.cpp",
+ "wangle/client/ssl/test/SSLSessionPersistentCacheTest.cpp",
+ "wangle/client/ssl/test/ThreadSafeSSLSessionCacheTest.cpp",
+]
+
+[
+ cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ deps = [
+ ":client_persistence",
+ ":client_persistence_test_lib",
+ ":client_ssl",
+ ":client_ssl_test_lib",
+ ":ssl",
+ ":test_main",
+ "@folly//folly:conv",
+ "@folly//folly:format",
+ "@folly//folly:memory",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/json:dynamic",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/ssl:openssl_ptr_types",
+ ],
+ )
+ for test_file in glob(["wangle/client/ssl/test/*Test.cpp"])
+ if test_file not in CLIENT_SSL_DISABLED_TESTS
+]
+
+cc_test(
+ name = "wangle_codec_test_CodecTest",
+ size = "small",
+ srcs = [
+ "wangle/codec/test/CodecTest.cpp",
+ "wangle/codec/test/CodecTestUtils.h",
+ ],
+ deps = [
+ ":channel",
+ ":codec",
+ ":test_main",
+ "@folly//folly:function",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/portability:gtest",
+ ],
+)
+
+cc_test(
+ name = "wangle_service_test_ServiceTest",
+ size = "small",
+ srcs = ["wangle/service/test/ServiceTest.cpp"],
+ deps = [
+ ":codec",
+ ":service",
+ ":test_main",
+ "@folly//folly/portability:gtest",
+ ],
+)
+
+cc_library(
+ name = "ssl_test_lib",
+ hdrs = [
+ "wangle/ssl/test/MockSSLStats.h",
+ "wangle/ssl/test/TicketUtil.h",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":ssl",
+ "@folly//folly:range",
+ "@folly//folly/container:array",
+ "@folly//folly/portability:gmock",
+ ],
+)
+
+SSL_MEDIUM_SIZE_TESTS = [
+ "wangle/ssl/test/TLSCredProcessorTest.cpp",
+]
+
+[cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "medium" if test_file in SSL_MEDIUM_SIZE_TESTS else "small",
+ srcs = [test_file],
+ data = [
+ "@folly//folly/io/async/test/certs:ca-cert.pem",
+ "@folly//folly/io/async/test/certs:tests-cert.pem",
+ "@folly//folly/io/async/test/certs:tests-key.pem",
+ ],
+ defines = ["WANGLE_USE_FOLLY_TESTUTIL"],
+ deps = [
+ ":acceptor",
+ ":ssl",
+ ":ssl_test_lib",
+ ":test_main",
+ "@folly//folly:file",
+ "@folly//folly:file_util",
+ "@folly//folly:random",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_socket",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/io/async/test:async_ssl_socket_test_lib",
+ "@folly//folly/io/async/test:test_ssl_server",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/portability:stdlib",
+ "@folly//folly/portability:unistd",
+ "@folly//folly/ssl:ssl_session",
+ "@folly//folly/synchronization:baton",
+ "@folly//folly/testing:test_util",
+ "@glog",
+ ],
+) for test_file in glob(
+ ["wangle/ssl/test/*Test.cpp"],
+ # This is an integration test binary not meant to be run as a unit test.
+ exclude = ["wangle/ssl/test/SSLCacheTest.cpp"],
+)]
+
+[cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ deps = [
+ ":test_main",
+ ":util",
+ "@folly//folly:file",
+ "@folly//folly:file_util",
+ "@folly//folly:map_util",
+ "@folly//folly:singleton",
+ "@folly//folly:string",
+ "@folly//folly/futures:core",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/portability:sys_stat",
+ "@folly//folly/synchronization:baton",
+ "@folly//folly/synchronization:saturating_semaphore",
+ "@folly//folly/testing:test_util",
+ "@glog",
+ ],
+) for test_file in glob(["wangle/util/test/*Test.cpp"])]
diff --git a/modules/wangle/2025.02.10.00.bcr.2/presubmit.yml b/modules/wangle/2025.02.10.00.bcr.2/presubmit.yml
new file mode 100644
index 00000000000..8dab0ae7b0e
--- /dev/null
+++ b/modules/wangle/2025.02.10.00.bcr.2/presubmit.yml
@@ -0,0 +1,36 @@
+matrix:
+ platform:
+ # Disable platforms that do not support c++20 or have a new enough gcc (>11)
+ # - debian10
+ # - debian11
+ # - ubuntu2004
+ # - ubuntu2004_arm64
+ # MacOS is not yet supported.
+ # - macos
+ # - macos_arm64
+ # Windows is not yet supported.
+ # - windows
+ - ubuntu2204
+ - ubuntu2204_arm64
+ - ubuntu2404
+ - ubuntu2404_arm64
+ bazel:
+ - 7.x
+ - 8.x
+ # Disabled for now because glog does not use rules_cc for cc_* targets.
+ # - rolling
+tasks:
+ verify_targets:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags: &cxx_flags
+ - '--cxxopt=-std=c++20'
+ - '--host_cxxopt=-std=c++20'
+ # Disable spammy warnings in external dependencies to make build output readable.
+ - '--per_file_copt=external/.*@-w'
+ - '--host_per_file_copt=external/.*@-w'
+ test_flags: *cxx_flags
+ build_targets:
+ - '@wangle//...'
+ test_targets:
+ - '@wangle//...'
diff --git a/modules/wangle/2025.02.10.00.bcr.2/source.json b/modules/wangle/2025.02.10.00.bcr.2/source.json
new file mode 100644
index 00000000000..67e178efd2c
--- /dev/null
+++ b/modules/wangle/2025.02.10.00.bcr.2/source.json
@@ -0,0 +1,7 @@
+{
+ "url": "https://github.com/facebook/wangle/releases/download/v2025.02.10.00/wangle-v2025.02.10.00.tar.gz",
+ "integrity": "sha256-LuUsaUY6BB0lIa/+vHXwrFpTiK//ic+PLZ9hTFGa9UI=",
+ "overlay": {
+ "BUILD.bazel": "sha256-K+AoJn44TukCwNQgVZyObTEigIM6f+w5sQldzL+ac68="
+ }
+}
diff --git a/modules/wangle/metadata.json b/modules/wangle/metadata.json
index 741a6e44668..2eaa06751ec 100644
--- a/modules/wangle/metadata.json
+++ b/modules/wangle/metadata.json
@@ -13,7 +13,8 @@
],
"versions": [
"2025.02.10.00",
- "2025.02.10.00.bcr.1"
+ "2025.02.10.00.bcr.1",
+ "2025.02.10.00.bcr.2"
],
"yanked_versions": {}
}
From 13655afcde4837803b8c9bac35f1a229a09f4257 Mon Sep 17 00:00:00 2001
From: Jeremy Kun
Date: Thu, 15 Jan 2026 12:23:51 -0800
Subject: [PATCH 011/367] Add module openfhe 1.4.2 (#6871)
@bazel-io skip_check unstable_url
---------
Co-authored-by: Jeremy Kun
---
modules/openfhe/1.4.2/MODULE.bazel | 14 ++
modules/openfhe/1.4.2/overlay/BUILD | 191 ++++++++++++++++++
modules/openfhe/1.4.2/overlay/MODULE.bazel | 14 ++
.../openfhe/1.4.2/overlay/openfhe_config.bzl | 81 ++++++++
modules/openfhe/1.4.2/presubmit.yml | 22 ++
modules/openfhe/1.4.2/source.json | 10 +
modules/openfhe/metadata.json | 18 ++
7 files changed, 350 insertions(+)
create mode 100644 modules/openfhe/1.4.2/MODULE.bazel
create mode 100644 modules/openfhe/1.4.2/overlay/BUILD
create mode 100644 modules/openfhe/1.4.2/overlay/MODULE.bazel
create mode 100644 modules/openfhe/1.4.2/overlay/openfhe_config.bzl
create mode 100644 modules/openfhe/1.4.2/presubmit.yml
create mode 100644 modules/openfhe/1.4.2/source.json
create mode 100644 modules/openfhe/metadata.json
diff --git a/modules/openfhe/1.4.2/MODULE.bazel b/modules/openfhe/1.4.2/MODULE.bazel
new file mode 100644
index 00000000000..e2906851430
--- /dev/null
+++ b/modules/openfhe/1.4.2/MODULE.bazel
@@ -0,0 +1,14 @@
+module(
+ name = "openfhe",
+ version = "1.4.2",
+ compatibility_level = 1,
+ bazel_compatibility = [">=7.2.1"],
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.9.0")
+bazel_dep(name = "cereal", version = "1.3.2.bcr.1")
+bazel_dep(name = "rapidjson", version = "1.1.0.bcr.20250205")
+bazel_dep(name = "rules_cc", version = "0.2.13")
+
+openfhe_ext = use_extension("//:openfhe_config.bzl", "openfhe_config")
+use_repo(openfhe_ext, "openfhe_config")
diff --git a/modules/openfhe/1.4.2/overlay/BUILD b/modules/openfhe/1.4.2/overlay/BUILD
new file mode 100644
index 00000000000..2cfc5cd3fcc
--- /dev/null
+++ b/modules/openfhe/1.4.2/overlay/BUILD
@@ -0,0 +1,191 @@
+load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
+load("@openfhe_config//:config.bzl", "HAS_INT128", "MATHBACKEND")
+load("@rules_cc//cc:defs.bzl", "cc_library", "cc_shared_library")
+
+package(
+ default_visibility = ["//visibility:public"],
+ features = [
+ "-layering_check", # Incompatible with `#include "gtest/gtest.h"`
+ "-use_header_modules", # Incompatible with -fexceptions.
+ ],
+)
+
+bool_flag(
+ name = "enable_openmp",
+ build_setting_default = True,
+)
+
+config_setting(
+ name = "config_enable_openmp",
+ flag_values = {":enable_openmp": "True"},
+)
+
+config_setting(
+ name = "config_disable_openmp",
+ flag_values = {":enable_openmp": "False"},
+)
+
+OPENFHE_VERSION = "1.4.2"
+
+OPENFHE_DEFINES = [
+ "MATHBACKEND=" + str(MATHBACKEND),
+ "OPENFHE_VERSION=" + OPENFHE_VERSION,
+] + select({
+ "//:config_enable_openmp": ["PARALLEL"],
+ "//conditions:default": [],
+})
+
+OPENFHE_COPTS = [
+ "-Wno-non-virtual-dtor",
+ "-Wno-shift-op-parentheses",
+ "-Wno-unused-private-field",
+ "-fexceptions",
+ "-std=c++17",
+]
+
+config_setting(
+ name = "clang_openmp",
+ flag_values = {
+ "@rules_cc//cc/compiler:compiler": "clang",
+ "//:enable_openmp": "True",
+ },
+)
+
+config_setting(
+ name = "gcc_openmp",
+ flag_values = {
+ "@rules_cc//cc/compiler:compiler": "gcc",
+ "//:enable_openmp": "True",
+ },
+)
+
+_OPENMP_CLANG_LINKOPTS = [
+ "-fopenmp",
+ "-lomp",
+]
+
+_OPENMP_GCC_LINKOPTS = [
+ "-fopenmp",
+ "-lgomp",
+]
+
+OPENMP_LINKOPTS = select({
+ "//:clang_openmp": _OPENMP_CLANG_LINKOPTS,
+ "//:gcc_openmp": _OPENMP_GCC_LINKOPTS,
+ "//conditions:default": [],
+})
+
+OPENMP_COPTS = select({
+ "//:config_enable_openmp": [
+ "-fopenmp",
+ "-Xpreprocessor",
+ "-Wno-unused-command-line-argument",
+ ],
+ "//conditions:default": [],
+})
+
+genrule(
+ name = "generate_config_core_h",
+ outs = ["src/core/include/config_core.h"],
+ cmd = "$(location @openfhe_config//:generate_header.sh) $@",
+ tools = ["@openfhe_config//:generate_header.sh"],
+)
+
+filegroup(
+ name = "headers",
+ srcs = [":generate_config_core_h"] + glob([
+ "src/binfhe/include/*.h",
+ "src/core/include/**/*.h",
+ "src/pke/include/**/*.h",
+ ]),
+)
+
+cc_library(
+ name = "core",
+ srcs = [":generate_config_core_h"] + glob([
+ "src/core/lib/**/*.c",
+ "src/core/lib/**/*.cpp",
+ ]),
+ copts = OPENFHE_COPTS + OPENMP_COPTS + [
+ # /utils/blockAllocator/blockAllocator.cpp has misaligned-pointer-use
+ "-fno-sanitize=alignment",
+ ],
+ defines = OPENFHE_DEFINES,
+ includes = [
+ "src/core/include",
+ "src/core/lib",
+ ],
+ linkopts = OPENMP_LINKOPTS,
+ linkstatic = True,
+ textual_hdrs = [":generate_config_core_h"] + glob([
+ "src/core/include/**/*.h",
+ "src/core/lib/**/*.cpp",
+ ]),
+ deps = [
+ ":generate_config_core_h",
+ "@cereal",
+ ],
+)
+
+cc_library(
+ name = "binfhe",
+ srcs = [":generate_config_core_h"] + glob([
+ "src/binfhe/lib/**/*.cpp",
+ ]),
+ copts = OPENFHE_COPTS + OPENMP_COPTS,
+ defines = OPENFHE_DEFINES,
+ includes = [
+ "src/binfhe/include",
+ "src/binfhe/lib",
+ ],
+ linkopts = OPENMP_LINKOPTS,
+ linkstatic = True,
+ textual_hdrs = [":generate_config_core_h"] + glob(["src/binfhe/include/**/*.h"]),
+ deps = [
+ ":core",
+ ":generate_config_core_h",
+ ],
+)
+
+cc_library(
+ name = "pke",
+ srcs = [":generate_config_core_h"] + glob([
+ "src/pke/lib/**/*.cpp",
+ ]),
+ copts = OPENFHE_COPTS + OPENMP_COPTS + [
+ "-Wno-vla-extension",
+ ],
+ defines = OPENFHE_DEFINES,
+ includes = [
+ "src/pke/include",
+ "src/pke/lib",
+ ],
+ linkopts = OPENMP_LINKOPTS,
+ linkstatic = True,
+ textual_hdrs = [":generate_config_core_h"] + glob([
+ "src/pke/include/**/*.h",
+ "src/pke/lib/**/*.cpp",
+ ]),
+ deps = [
+ ":binfhe",
+ ":core",
+ ":generate_config_core_h",
+ "@cereal",
+ ],
+)
+
+# Generates a shared library that can be shipped with the python frontend.
+cc_shared_library(
+ name = "libopenfhe",
+ shared_lib_name = "libopenfhe.so",
+ deps = [
+ ":binfhe",
+ ":core",
+ ":pke",
+ ],
+)
+
+alias(
+ name = "openfhe",
+ actual = ":pke",
+)
diff --git a/modules/openfhe/1.4.2/overlay/MODULE.bazel b/modules/openfhe/1.4.2/overlay/MODULE.bazel
new file mode 100644
index 00000000000..e2906851430
--- /dev/null
+++ b/modules/openfhe/1.4.2/overlay/MODULE.bazel
@@ -0,0 +1,14 @@
+module(
+ name = "openfhe",
+ version = "1.4.2",
+ compatibility_level = 1,
+ bazel_compatibility = [">=7.2.1"],
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.9.0")
+bazel_dep(name = "cereal", version = "1.3.2.bcr.1")
+bazel_dep(name = "rapidjson", version = "1.1.0.bcr.20250205")
+bazel_dep(name = "rules_cc", version = "0.2.13")
+
+openfhe_ext = use_extension("//:openfhe_config.bzl", "openfhe_config")
+use_repo(openfhe_ext, "openfhe_config")
diff --git a/modules/openfhe/1.4.2/overlay/openfhe_config.bzl b/modules/openfhe/1.4.2/overlay/openfhe_config.bzl
new file mode 100644
index 00000000000..8f843ac84e0
--- /dev/null
+++ b/modules/openfhe/1.4.2/overlay/openfhe_config.bzl
@@ -0,0 +1,81 @@
+"""OpenFHE module configuration extension."""
+
+_CONFIG_ATTRS = {
+ "has_int128": attr.bool(default = True, doc = "Enable 128-bit integer support"),
+ "mathbackend": attr.int(default = 4, doc = "Math backend (options are 1, 2, 4)"),
+}
+
+def _config_repo_impl(rctx):
+ """Repository rule that creates the config files."""
+ # Convert string dict back to usable types
+ has_int128 = rctx.attr.has_int128
+ mathbackend = rctx.attr.mathbackend
+
+ rctx.file("BUILD.bazel", 'exports_files(["config.bzl", "generate_header.sh"])')
+
+ # Store config values in .bzl for BUILD files to use
+ rctx.file("config.bzl", """
+HAS_INT128 = {has_int128}
+MATHBACKEND = {mathbackend}
+HAS_INT128_STR = "{has_int128_str}"
+""".format(
+ has_int128 = has_int128,
+ mathbackend = mathbackend,
+ has_int128_str = "TRUE" if has_int128 else "FALSE",
+ ))
+
+ # Create shell script that generates the header
+ rctx.file("generate_header.sh", """#!/bin/bash
+cat > "$1" << 'HEADER_EOF'
+// This file is normally generated by CMake; we generate it for bazel builds.
+
+#ifndef __CMAKE_GENERATED_CONFIG_CORE_H__
+#define __CMAKE_GENERATED_CONFIG_CORE_H__
+
+#define WITH_BE{mathbackend}
+#define WITH_OPENMP
+#define CKKS_M_FACTOR 1
+#define HAVE_INT128 {has_int128_str}
+#define HAVE_INT64 TRUE
+#define MATHBACKEND {mathbackend}
+#define NATIVEINT 64
+
+#endif // __CMAKE_GENERATED_CONFIG_CORE_H__
+HEADER_EOF
+""".format(
+ mathbackend = mathbackend,
+ has_int128_str = "TRUE" if has_int128 else "FALSE",
+ ), executable = True)
+
+# Define the repository rule
+_config_repo = repository_rule(
+ implementation = _config_repo_impl,
+ attrs = _CONFIG_ATTRS,
+)
+
+def _openfhe_config_impl(ctx):
+ """Generate configuration based on module settings."""
+
+ config = None
+ for mod in ctx.modules:
+ for cfg in mod.tags.configure:
+ config = cfg
+ break
+ if config:
+ break
+
+ if not config:
+ config = struct(has_int128 = True, mathbackend = 2)
+
+ _config_repo(
+ name = "openfhe_config",
+ has_int128 = config.has_int128,
+ mathbackend = config.mathbackend,
+ )
+
+
+_configure_tag = tag_class(attrs = _CONFIG_ATTRS)
+openfhe_config = module_extension(
+ implementation = _openfhe_config_impl,
+ tag_classes = {"configure": _configure_tag},
+)
diff --git a/modules/openfhe/1.4.2/presubmit.yml b/modules/openfhe/1.4.2/presubmit.yml
new file mode 100644
index 00000000000..194c02c0557
--- /dev/null
+++ b/modules/openfhe/1.4.2/presubmit.yml
@@ -0,0 +1,22 @@
+matrix:
+ linux_platform: ["debian11", "ubuntu2204"]
+ # Blocked due to lack of openmp support on MacOS in the BCR CI; however, this
+ # module will compile on macos platforms that have openmp configured properly
+ # with the system compiler.
+ # osx_platform: ["macos", "macos_arm64"]
+ bazel: [7.x, 8.x]
+
+tasks:
+ verify_linux_targets:
+ name: Verify linux build and test targets
+ platform: ${{ linux_platform }}
+ shell_commands:
+ - sudo apt-get update
+ - sudo apt-get install libomp5 -y
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@openfhe//:core'
+ - '@openfhe//:pke'
+ - '@openfhe//:binfhe'
+ - '@openfhe//:headers'
+ - '@openfhe//:libopenfhe'
diff --git a/modules/openfhe/1.4.2/source.json b/modules/openfhe/1.4.2/source.json
new file mode 100644
index 00000000000..dbd182d95df
--- /dev/null
+++ b/modules/openfhe/1.4.2/source.json
@@ -0,0 +1,10 @@
+{
+ "url": "https://github.com/openfheorg/openfhe-development/archive/refs/tags/v1.4.2.zip",
+ "integrity": "sha256-0jUZvaVu9XWDqiRWVPaSw6bR+PAHxdK3b+w7FJRi0q0=",
+ "strip_prefix": "openfhe-development-1.4.2",
+ "overlay": {
+ "BUILD": "sha256-6WUFxlxofJGrt4i9NP2ePArWQrhfTJjIjm2WmeY1Yck=",
+ "MODULE.bazel": "sha256-+ezyJjKePESIf10Z7EsckcfLP3oBqqGqZqrfJ0cjAN4=",
+ "openfhe_config.bzl": "sha256-2UjwErnjUw6ANajlfu6RgTNWT8vRO+NGf+JDnaF+amk="
+ }
+}
diff --git a/modules/openfhe/metadata.json b/modules/openfhe/metadata.json
new file mode 100644
index 00000000000..512e06a2e13
--- /dev/null
+++ b/modules/openfhe/metadata.json
@@ -0,0 +1,18 @@
+{
+ "homepage": "https://openfhe.org",
+ "maintainers": [
+ {
+ "email": "jkun@google.com",
+ "github": "j2kun",
+ "github_user_id": 2467754,
+ "name": "Jeremy Kun"
+ }
+ ],
+ "repository": [
+ "github:openfheorg/openfhe-development"
+ ],
+ "versions": [
+ "1.4.2"
+ ],
+ "yanked_versions": {}
+}
From 50ed802af0eb092c02ec209ae4302d8020431c07 Mon Sep 17 00:00:00 2001
From: "publish-to-bcr-bot[bot]"
<112732530+publish-to-bcr-bot[bot]@users.noreply.github.com>
Date: Thu, 15 Jan 2026 21:34:15 +0100
Subject: [PATCH 012/367] swiftlint@0.63.1 (#7168)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
:warning: The Publish to BCR GitHub app will be discontinued after June
30, 2026. Please migrate to the GitHub Actions [reusable
workflow](https://github.com/bazel-contrib/publish-to-bcr?tab=readme-ov-file#setup)
before then.
Release: https://github.com/realm/SwiftLint/releases/tag/0.63.1
_Automated by [Publish to BCR](https://github.com/apps/publish-to-bcr)_
Co-authored-by: Danny Mösch
---
modules/swiftlint/0.63.1/MODULE.bazel | 38 +++++++++++++++++++
.../patches/no-warnings-as-errors.patch | 12 ++++++
modules/swiftlint/0.63.1/presubmit.yml | 26 +++++++++++++
modules/swiftlint/0.63.1/source.json | 9 +++++
modules/swiftlint/metadata.json | 3 +-
5 files changed, 87 insertions(+), 1 deletion(-)
create mode 100644 modules/swiftlint/0.63.1/MODULE.bazel
create mode 100644 modules/swiftlint/0.63.1/patches/no-warnings-as-errors.patch
create mode 100644 modules/swiftlint/0.63.1/presubmit.yml
create mode 100644 modules/swiftlint/0.63.1/source.json
diff --git a/modules/swiftlint/0.63.1/MODULE.bazel b/modules/swiftlint/0.63.1/MODULE.bazel
new file mode 100644
index 00000000000..2d46595763c
--- /dev/null
+++ b/modules/swiftlint/0.63.1/MODULE.bazel
@@ -0,0 +1,38 @@
+module(
+ name = "swiftlint",
+ version = "0.63.1",
+ compatibility_level = 1,
+ repo_name = "SwiftLint",
+)
+
+bazel_dep(name = "apple_support", version = "2.1.0", repo_name = "build_bazel_apple_support")
+bazel_dep(name = "bazel_skylib", version = "1.9.0")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_apple", version = "4.3.3", repo_name = "build_bazel_rules_apple")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "rules_shell", version = "0.6.1", repo_name = "build_bazel_rules_shell")
+bazel_dep(name = "rules_swift", version = "3.4.1", max_compatibility_level = 3, repo_name = "build_bazel_rules_swift")
+
+bazel_dep(name = "sourcekitten", version = "0.37.2", repo_name = "SourceKittenFramework")
+bazel_dep(name = "swift_argument_parser", version = "1.7.0", repo_name = "SwiftArgumentParser")
+bazel_dep(name = "swift-filename-matcher", version = "2.0.1", repo_name = "FilenameMatcher")
+bazel_dep(name = "yams", version = "6.2.0", repo_name = "Yams")
+
+swiftlint_repos = use_extension("//bazel:repos.bzl", "swiftlint_repos_bzlmod")
+use_repo(
+ swiftlint_repos,
+ "CollectionConcurrencyKit",
+ "CryptoSwift",
+ "SwiftSyntax",
+ "SwiftyTextTable",
+)
+
+extra_rules = use_extension("//bazel:extensions.bzl", "extra_rules")
+use_repo(extra_rules, "swiftlint_extra_rules")
+
+apple_cc_configure = use_extension("@build_bazel_apple_support//crosstool:setup.bzl", "apple_cc_configure_extension")
+use_repo(apple_cc_configure, "local_config_apple_cc")
+
+# Dev Dependencies
+
+bazel_dep(name = "rules_xcodeproj", version = "3.5.1", dev_dependency = True)
diff --git a/modules/swiftlint/0.63.1/patches/no-warnings-as-errors.patch b/modules/swiftlint/0.63.1/patches/no-warnings-as-errors.patch
new file mode 100644
index 00000000000..03236a73119
--- /dev/null
+++ b/modules/swiftlint/0.63.1/patches/no-warnings-as-errors.patch
@@ -0,0 +1,12 @@
+diff --git a/bazel/copts.bzl b/bazel/copts.bzl
+index 31552d693..8ba63b0c0 100644
+--- a/bazel/copts.bzl
++++ b/bazel/copts.bzl
+@@ -2,7 +2,6 @@
+
+ # Shared compiler options
+ COPTS = [
+- "-warnings-as-errors",
+ "-enable-upcoming-feature",
+ "ConciseMagicFile",
+ "-enable-upcoming-feature",
diff --git a/modules/swiftlint/0.63.1/presubmit.yml b/modules/swiftlint/0.63.1/presubmit.yml
new file mode 100644
index 00000000000..8186218f3d3
--- /dev/null
+++ b/modules/swiftlint/0.63.1/presubmit.yml
@@ -0,0 +1,26 @@
+tasks:
+ verify_targets_linux:
+ name: Verify Targets (Linux)
+ platform: ubuntu2004
+ bazel: 7.x
+ environment:
+ CC: "clang"
+ SWIFT_VERSION: "6.0.3"
+ SWIFT_HOME: "$HOME/swift-$SWIFT_VERSION"
+ PATH: "$PATH:$SWIFT_HOME/usr/bin"
+ shell_commands:
+ - "echo --- Downloading and extracting Swift $SWIFT_VERSION to $SWIFT_HOME"
+ - "mkdir $SWIFT_HOME"
+ - "curl https://download.swift.org/swift-${SWIFT_VERSION}-release/ubuntu2004/swift-${SWIFT_VERSION}-RELEASE/swift-${SWIFT_VERSION}-RELEASE-ubuntu20.04.tar.gz | tar xvz --strip-components=1 -C $SWIFT_HOME"
+ build_flags:
+ - "--action_env=PATH"
+ build_targets:
+ - '@swiftlint//:swiftlint'
+ verify_targets_macos:
+ name: Verify Targets (macOS)
+ platform: macos
+ bazel: 7.x
+ build_targets:
+ - '@swiftlint//:swiftlint'
+ build_flags:
+ - "--repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1"
diff --git a/modules/swiftlint/0.63.1/source.json b/modules/swiftlint/0.63.1/source.json
new file mode 100644
index 00000000000..489f36cd714
--- /dev/null
+++ b/modules/swiftlint/0.63.1/source.json
@@ -0,0 +1,9 @@
+{
+ "url": "https://github.com/realm/SwiftLint/releases/download/0.63.1/bazel.tar.gz",
+ "integrity": "sha256-u93iACRyKviBOvMX0q8FH9S0MLYTMgcrvM96tTgluyo=",
+ "strip_prefix": "",
+ "patch_strip": 1,
+ "patches": {
+ "no-warnings-as-errors.patch": "sha256-yoqGkx2rQI0yASloa5NHVphZbQ1fgRoKY0U1k944V+Q="
+ }
+}
diff --git a/modules/swiftlint/metadata.json b/modules/swiftlint/metadata.json
index 68635fc3461..f8cc8034c3f 100644
--- a/modules/swiftlint/metadata.json
+++ b/modules/swiftlint/metadata.json
@@ -37,7 +37,8 @@
"0.61.0",
"0.62.1",
"0.62.2",
- "0.63.0"
+ "0.63.0",
+ "0.63.1"
],
"yanked_versions": {}
}
From c3427f0d413f0e6bebee26322b0cc72a4093fcb5 Mon Sep 17 00:00:00 2001
From: Kevin Greene
Date: Thu, 15 Jan 2026 12:34:22 -0800
Subject: [PATCH 013/367] Add proxygen@2025.02.10.00.bcr.1 (#7167)
Updates all dependencies to remove compatibility_level from boost.
---
.../proxygen/2025.02.10.00.bcr.1/MODULE.bazel | 34 +
.../2025.02.10.00.bcr.1/overlay/BUILD.bazel | 740 ++++++++++++++++++
.../bazel_runfiles_paths_for_tests.patch | 26 +
.../patches/fix_worker_thread_gflags.patch | 12 +
.../push_sample_use_bazel_runfiles.patch | 29 +
.../2025.02.10.00.bcr.1/presubmit.yml | 36 +
.../proxygen/2025.02.10.00.bcr.1/source.json | 13 +
modules/proxygen/metadata.json | 7 +-
8 files changed, 894 insertions(+), 3 deletions(-)
create mode 100644 modules/proxygen/2025.02.10.00.bcr.1/MODULE.bazel
create mode 100644 modules/proxygen/2025.02.10.00.bcr.1/overlay/BUILD.bazel
create mode 100644 modules/proxygen/2025.02.10.00.bcr.1/patches/bazel_runfiles_paths_for_tests.patch
create mode 100644 modules/proxygen/2025.02.10.00.bcr.1/patches/fix_worker_thread_gflags.patch
create mode 100644 modules/proxygen/2025.02.10.00.bcr.1/patches/push_sample_use_bazel_runfiles.patch
create mode 100644 modules/proxygen/2025.02.10.00.bcr.1/presubmit.yml
create mode 100644 modules/proxygen/2025.02.10.00.bcr.1/source.json
diff --git a/modules/proxygen/2025.02.10.00.bcr.1/MODULE.bazel b/modules/proxygen/2025.02.10.00.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..60b57649b50
--- /dev/null
+++ b/modules/proxygen/2025.02.10.00.bcr.1/MODULE.bazel
@@ -0,0 +1,34 @@
+module(
+ name = "proxygen",
+ version = "2025.02.10.00.bcr.1",
+ bazel_compatibility = [">=7.6.0"],
+)
+
+bazel_dep(name = "boost.algorithm", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.bind", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.container", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.conversion", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.filesystem", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.iostreams", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.lexical_cast", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.optional", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.thread", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.variant", version = "1.89.0.bcr.2")
+bazel_dep(name = "c-ares", version = "1.19.1.bcr.1")
+bazel_dep(name = "fizz", version = "2025.02.10.00.bcr.2")
+bazel_dep(name = "fmt", version = "12.1.0")
+bazel_dep(name = "folly", version = "2025.01.13.00.bcr.5")
+bazel_dep(name = "gflags", version = "2.2.2.bcr.1")
+bazel_dep(name = "glog", version = "0.7.1")
+bazel_dep(name = "gperf", version = "3.1")
+bazel_dep(name = "mvfst", version = "2025.01.20.00.bcr.1")
+bazel_dep(name = "openssl", version = "3.5.4.bcr.0")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "rules_python", version = "1.0.0")
+bazel_dep(name = "wangle", version = "2025.02.10.00.bcr.2")
+bazel_dep(name = "zlib", version = "1.3.1.bcr.5")
+bazel_dep(name = "zstd", version = "1.5.6")
+
+python = use_extension("@rules_python//python/extensions:python.bzl", "python")
+python.toolchain(python_version = "3.12")
diff --git a/modules/proxygen/2025.02.10.00.bcr.1/overlay/BUILD.bazel b/modules/proxygen/2025.02.10.00.bcr.1/overlay/BUILD.bazel
new file mode 100644
index 00000000000..680a3ae2fb0
--- /dev/null
+++ b/modules/proxygen/2025.02.10.00.bcr.1/overlay/BUILD.bazel
@@ -0,0 +1,740 @@
+load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
+load("@rules_license//rules:license.bzl", "license")
+load("@rules_python//python:defs.bzl", "py_binary")
+
+package(default_applicable_licenses = [":license"])
+
+license(
+ name = "license",
+ license_kinds = ["@rules_license//licenses/spdx:BSD-3-Clause"],
+ license_text = "LICENSE",
+ visibility = ["//visibility:public"],
+)
+
+# NOTE: This is one big library because some of the headers have complex circular dependencies.
+cc_library(
+ name = "proxygen",
+ srcs = glob(
+ ["proxygen/lib/**/*.cpp"],
+ exclude = [
+ # This library doesn't compile and is not included in the CMakeLists.txt.
+ "proxygen/lib/dns/**",
+ # This is a binary tool, not part of the lib.
+ "proxygen/lib/http/codec/compress/experimental/interop/**",
+ # This is a binary tool, not part of the lib.
+ "proxygen/lib/http/codec/compress/experimental/simulator/**",
+ # The stats lib depends on fb303 which is heavy-weight and not yet in the BCR.
+ "proxygen/lib/stats/**",
+ # Disabled because it depends on the stats lib.
+ "proxygen/lib/http/stats/**",
+ # Disabled because it depends on the stats lib.
+ "proxygen/lib/ssl/ThreadLocalSSLStats.cpp",
+ "proxygen/lib/**/test/**",
+ ],
+ ) + [
+ # Generated by :gen_http_common_headers_srcs
+ "proxygen/lib/http/HTTPCommonHeaders.cpp",
+ # Generated by :gen_trace_event_constants_srcs
+ "proxygen/lib/utils/TraceEventType.cpp",
+ # Generated by :gen_trace_event_constants_srcs
+ "proxygen/lib/utils/TraceFieldType.cpp",
+ ],
+ hdrs = glob(
+ ["proxygen/lib/**/*.h"],
+ exclude = [
+ # This library doesn't compile and is not included in the CMakeLists.txt.
+ "proxygen/lib/dns/**",
+ "proxygen/lib/utils/perfect_hash_table_template.h",
+ # The stats lib depends on fb303 which is heavy-weight and not yet in the BCR.
+ "proxygen/lib/stats/**",
+ # Disabled because it depends on the stats lib.
+ "proxygen/lib/http/stats/**",
+ # Disabled because it depends on the stats lib.
+ "proxygen/lib/ssl/ThreadLocalSSLStats.h",
+ "proxygen/lib/**/test/**",
+ ],
+ ) + [
+ # Generated by :gen_http_common_headers_srcs:
+ "proxygen/lib/http/HTTPCommonHeaders.h",
+ # Generated by :gen_trace_event_constants_srcs
+ "proxygen/lib/utils/TraceEventType.h",
+ # Generated by :gen_trace_event_constants_srcs
+ "proxygen/lib/utils/TraceFieldType.h",
+ ],
+ includes = ["."],
+ # Silence #pragma warnings about deprecated boost bind usage.
+ local_defines = ["BOOST_BIND_GLOBAL_PLACEHOLDERS"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":external_http_parser",
+ ":gen_http_common_headers_srcs",
+ ":gen_trace_event_constants_srcs",
+ "@boost.algorithm",
+ "@boost.bind",
+ "@boost.filesystem",
+ "@boost.iostreams",
+ "@boost.lexical_cast",
+ "@boost.thread",
+ "@boost.variant",
+ "@fizz",
+ "@fmt",
+ "@folly//folly:base64",
+ "@folly//folly:cancellation_token",
+ "@folly//folly:conv",
+ "@folly//folly:cpp_attributes",
+ "@folly//folly:exception_wrapper",
+ "@folly//folly:expected",
+ "@folly//folly:fbstring",
+ "@folly//folly:file_util",
+ "@folly//folly:format",
+ "@folly//folly:function",
+ "@folly//folly:indestructible",
+ "@folly//folly:intrusive_list",
+ "@folly//folly:memory",
+ "@folly//folly:network_address",
+ "@folly//folly:observer_container",
+ "@folly//folly:optional",
+ "@folly//folly:overload",
+ "@folly//folly:portability",
+ "@folly//folly:random",
+ "@folly//folly:range",
+ "@folly//folly:scope_guard",
+ "@folly//folly:singleton",
+ "@folly//folly:singleton_thread_local",
+ "@folly//folly:small_vector",
+ "@folly//folly:string",
+ "@folly//folly:synchronized",
+ "@folly//folly:thread_local",
+ "@folly//folly:try",
+ "@folly//folly:utility",
+ "@folly//folly/compression",
+ "@folly//folly/container:evicting_cache_map",
+ "@folly//folly/container:f14_hash",
+ "@folly//folly/container:foreach",
+ "@folly//folly/container:reserve",
+ "@folly//folly/experimental/io:io_uring_backend",
+ "@folly//folly/experimental/symbolizer",
+ "@folly//folly/futures:core",
+ "@folly//folly/hash",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_socket",
+ "@folly//folly/io/async:async_socket_exception",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/io/async:async_transport",
+ "@folly//folly/io/async:async_udp_socket",
+ "@folly//folly/io/async:delayed_destruction",
+ "@folly//folly/io/async:destructor_check",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/io/async:server_socket",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/json:dynamic",
+ "@folly//folly/lang:assume",
+ "@folly//folly/lang:bits",
+ "@folly//folly/lang:exception",
+ "@folly//folly/logging",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:openssl",
+ "@folly//folly/portability:sockets",
+ "@folly//folly/portability:stdlib",
+ "@folly//folly/portability:sys_resource",
+ "@folly//folly/portability:time",
+ "@folly//folly/portability:unistd",
+ "@folly//folly/portability:windows",
+ "@folly//folly/ssl:openssl_hash",
+ "@folly//folly/ssl:ssl_session",
+ "@folly//folly/synchronization:rcu",
+ "@folly//folly/tracing:scoped_trace_section",
+ "@gflags",
+ "@glog",
+ "@mvfst//:quic",
+ "@openssl//:ssl",
+ "@wangle//:acceptor",
+ "@wangle//:client_persistence",
+ "@wangle//:ssl",
+ "@zlib",
+ "@zstd",
+ ],
+)
+
+cc_library(
+ name = "httpserver",
+ srcs = glob(
+ ["proxygen/httpserver/**/*.cpp"],
+ exclude = [
+ "proxygen/httpserver/samples/**",
+ "proxygen/httpserver/**/tests/**",
+ ],
+ ),
+ hdrs = glob(
+ ["proxygen/httpserver/**/*.h"],
+ exclude = [
+ "proxygen/httpserver/samples/**",
+ "proxygen/httpserver/Mocks.h",
+ ],
+ ),
+ includes = ["."],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":proxygen",
+ "@boost.thread",
+ "@folly//folly:exception_string",
+ "@folly//folly:expected",
+ "@folly//folly:function",
+ "@folly//folly:network_address",
+ "@folly//folly:range",
+ "@folly//folly:scope_guard",
+ "@folly//folly/executors:io_thread_pool_executor",
+ "@folly//folly/executors/thread_factory:named_thread_factory",
+ "@folly//folly/io/async:async_signal_handler",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/io/async:server_socket",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/system:thread_name",
+ "@wangle//:bootstrap",
+ "@wangle//:ssl",
+ ],
+)
+
+cc_library(
+ name = "external_http_parser",
+ srcs = ["proxygen/external/http_parser/http_parser_cpp.cpp"],
+ hdrs = ["proxygen/external/http_parser/http_parser.h"],
+ visibility = ["//visibility:public"],
+)
+
+genrule(
+ name = "gen_http_common_headers_srcs",
+ srcs = [
+ "proxygen/lib/http/gen_HTTPCommonHeaders.sh",
+ "proxygen/lib/utils/gen_perfect_hash_table.sh",
+ "proxygen/lib/utils/perfect_hash_table_template.h",
+ "proxygen/lib/utils/perfect_hash_table_template.cpp.gperf",
+ "proxygen/lib/http/HTTPCommonHeaders.txt",
+ "LICENSE",
+ ],
+ outs = [
+ "proxygen/lib/http/HTTPCommonHeaders.h",
+ "proxygen/lib/http/HTTPCommonHeaders.cpp",
+ ],
+ cmd = "mkdir -p $(RULEDIR)/proxygen/lib/http && " +
+ "HEADERS_LIST=$(execpath proxygen/lib/http/HTTPCommonHeaders.txt) " +
+ "INSTALL_DIR=$(RULEDIR)/proxygen/lib/http " +
+ "FBCODE_DIR=$$(dirname $(execpath //:LICENSE)) " +
+ "OUTPUT_DIR=$(RULEDIR)/proxygen/lib/http " +
+ "GPERF=$(execpath @gperf) " +
+ "$(execpath proxygen/lib/http/gen_HTTPCommonHeaders.sh) " +
+ "$(execpath proxygen/lib/http/HTTPCommonHeaders.txt)",
+ tools = ["@gperf"],
+)
+
+py_binary(
+ name = "gen_trace_event_constants",
+ srcs = ["proxygen/lib/utils/gen_trace_event_constants.py"],
+ visibility = ["//visibility:public"],
+)
+
+genrule(
+ name = "gen_trace_event_constants_srcs",
+ srcs = [
+ "proxygen/lib/utils/samples/TraceEventType.txt",
+ "proxygen/lib/utils/samples/TraceFieldType.txt",
+ ],
+ outs = [
+ "proxygen/lib/utils/TraceEventType.h",
+ "proxygen/lib/utils/TraceEventType.cpp",
+ "proxygen/lib/utils/TraceFieldType.h",
+ "proxygen/lib/utils/TraceFieldType.cpp",
+ ],
+ cmd = "mkdir -p $(RULEDIR)/proxygen/lib/utils && " +
+ "$(execpath :gen_trace_event_constants) " +
+ "--output_type=cpp " +
+ "--input_files=$(execpath proxygen/lib/utils/samples/TraceEventType.txt)," +
+ "$(execpath proxygen/lib/utils/samples/TraceFieldType.txt) " +
+ "--output_scope=proxygen " +
+ "--header_path=proxygen/lib/utils " +
+ "--fbcode_dir=UNUSED " +
+ "--install_dir=$(RULEDIR)/proxygen/lib/utils",
+ tools = [":gen_trace_event_constants"],
+)
+
+###################################################################################################
+# Samples
+###################################################################################################
+
+cc_library(
+ name = "httpclient_samples_curl_lib",
+ srcs = ["proxygen/httpclient/samples/curl/CurlClient.cpp"],
+ hdrs = ["proxygen/httpclient/samples/curl/CurlClient.h"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":proxygen",
+ "@folly//folly:file_util",
+ "@folly//folly:string",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/io/async:ssl_options",
+ "@folly//folly/portability:gflags",
+ ],
+)
+
+cc_binary(
+ name = "httpclient_samples_curl",
+ srcs = ["proxygen/httpclient/samples/curl/CurlClientMain.cpp"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpclient_samples_curl_lib",
+ ":proxygen",
+ "@folly//folly:network_address",
+ "@folly//folly/init",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:ssl_context",
+ ],
+)
+
+cc_library(
+ name = "httpclient_samples_h3_datagram",
+ srcs = ["proxygen/httpclient/samples/H3Datagram/H3DatagramClient.cpp"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpserver_samples_hq_lib",
+ ":proxygen",
+ "@folly//folly:network_address",
+ "@folly//folly/init",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/portability:gflags",
+ ],
+)
+
+cc_binary(
+ name = "httpclient_samples_httperf2",
+ srcs = glob([
+ "proxygen/httpclient/samples/httperf2/*.cpp",
+ "proxygen/httpclient/samples/httperf2/*.h",
+ ]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpserver_samples_hq_lib",
+ ":proxygen",
+ "@boost.conversion",
+ "@fizz",
+ "@folly//folly:file_util",
+ "@folly//folly:network_address",
+ "@folly//folly:random",
+ "@folly//folly:string",
+ "@folly//folly/init",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/json:dynamic",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:openssl",
+ "@folly//folly/ssl:ssl_session",
+ "@mvfst//:quic",
+ "@openssl//:ssl",
+ ],
+)
+
+cc_binary(
+ name = "httpclient_samples_pricli",
+ srcs = ["proxygen/httpclient/samples/pricli/PriCli.cpp"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":proxygen",
+ "@folly//folly:network_address",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:ssl_context",
+ "@folly//folly/io/async:ssl_options",
+ "@folly//folly/portability:gflags",
+ ],
+)
+
+cc_binary(
+ name = "httpclient_samples_websocket",
+ srcs = glob([
+ "proxygen/httpclient/samples/websocket/*.cpp",
+ "proxygen/httpclient/samples/websocket/*.h",
+ ]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":proxygen",
+ "@folly//folly:network_address",
+ "@folly//folly/init",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ ],
+)
+
+cc_library(
+ name = "httpserver_samples_echo",
+ srcs = glob(
+ ["proxygen/httpserver/samples/echo/**/*.cpp"],
+ exclude = ["proxygen/httpserver/samples/echo/test/**"],
+ ),
+ hdrs = glob(["proxygen/httpserver/samples/echo/**/*.h"]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpserver",
+ "@folly//folly:memory",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:unistd",
+ ],
+)
+
+# Disabled because this test takes a very long time to run.
+# cc_test(
+# name = "proxygen_httpserver_samples_echo_test_EchoHandlerTest",
+# size = "enormous",
+# srcs = ["proxygen/httpserver/samples/echo/test/EchoHandlerTest.cpp"],
+# deps = [
+# ":httpserver_samples_echo",
+# ":httpserver_test_lib",
+# "@folly//folly/portability:gmock",
+# "@folly//folly/portability:gtest",
+# ],
+# )
+
+cc_library(
+ name = "httpserver_samples_hq_lib",
+ srcs = glob(
+ ["proxygen/httpserver/samples/hq/**/*.cpp"],
+ exclude = [
+ "proxygen/httpserver/samples/hq/**/test/**",
+ "proxygen/httpserver/samples/hq/main.cpp",
+ ],
+ ),
+ hdrs = glob(["proxygen/httpserver/samples/hq/**/*.h"]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpclient_samples_curl_lib",
+ ":httpserver",
+ ":proxygen",
+ "@boost.algorithm",
+ "@boost.variant",
+ "@fizz",
+ "@folly//folly:conv",
+ "@folly//folly:file",
+ "@folly//folly:file_util",
+ "@folly//folly:format",
+ "@folly//folly:memory",
+ "@folly//folly:network_address",
+ "@folly//folly:optional",
+ "@folly//folly:random",
+ "@folly//folly:string",
+ "@folly//folly:synchronized",
+ "@folly//folly:thread_local",
+ "@folly//folly/executors:global_executor",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_socket_exception",
+ "@folly//folly/io/async:async_transport",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/io/async:scoped_event_base_thread",
+ "@folly//folly/net:network_socket",
+ "@gflags",
+ "@glog",
+ "@mvfst//:quic",
+ "@wangle//:ssl",
+ ],
+)
+
+cc_binary(
+ name = "httpserver_samples_hq",
+ srcs = ["proxygen/httpserver/samples/hq/main.cpp"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpserver_samples_hq_lib",
+ ":proxygen",
+ "@folly//folly/init",
+ "@folly//folly/portability:gflags",
+ ],
+)
+
+cc_binary(
+ name = "httpserver_samples_proxy",
+ srcs = glob([
+ "proxygen/httpserver/samples/proxy/*.cpp",
+ "proxygen/httpserver/samples/proxy/*.h",
+ ]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpserver",
+ ":proxygen",
+ "@folly//folly:memory",
+ "@folly//folly/io:socket_option_map",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:delayed_destruction",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/portability:gflags",
+ ],
+)
+
+cc_binary(
+ name = "httpserver_samples_push",
+ srcs = glob([
+ "proxygen/httpserver/samples/push/*.cpp",
+ "proxygen/httpserver/samples/push/*.h",
+ ]),
+ data = ["proxygen/httpserver/samples/push/pusheen.txt"],
+ # NOTE: the binary is run from a sub-directory called "_main". Hence the "../".
+ env = {"PUSH_FILE_NAME": "../$(rlocationpath proxygen/httpserver/samples/push/pusheen.txt)"},
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpserver",
+ "@folly//folly:file_util",
+ "@folly//folly:memory",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:unistd",
+ ],
+)
+
+cc_binary(
+ name = "httpserver_samples_static",
+ srcs = glob([
+ "proxygen/httpserver/samples/static/*.cpp",
+ "proxygen/httpserver/samples/static/*.h",
+ ]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpserver",
+ ":proxygen",
+ "@folly//folly:file",
+ "@folly//folly:file_util",
+ "@folly//folly:memory",
+ "@folly//folly/executors:cpu_thread_pool_executor",
+ "@folly//folly/executors:global_executor",
+ "@folly//folly/init",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:unistd",
+ ],
+)
+
+cc_binary(
+ name = "httpserver_samples_websocket",
+ srcs = glob([
+ "proxygen/httpserver/samples/websocket/*.cpp",
+ "proxygen/httpserver/samples/websocket/*.h",
+ ]),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpserver",
+ "@folly//folly:expected",
+ "@folly//folly/executors:cpu_thread_pool_executor",
+ "@folly//folly/executors:global_executor",
+ "@folly//folly/init",
+ "@folly//folly/io/async:event_base_manager",
+ ],
+)
+
+###################################################################################################
+# Tests
+###################################################################################################
+
+cc_library(
+ name = "proxygen_test_main",
+ srcs = ["proxygen/lib/test/TestMain.cpp"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:gtest",
+ "@glog",
+ ],
+)
+
+cc_library(
+ name = "proxygen_test_lib",
+ srcs = glob(
+ ["proxygen/lib/**/test/*.cpp"],
+ exclude = [
+ "proxygen/lib/dns/**",
+ "proxygen/lib/stats/**",
+ "proxygen/lib/test/TestMain.cpp",
+ "proxygen/lib/**/test/*Bench.cpp",
+ "proxygen/lib/**/test/*Benchmark.cpp",
+ "proxygen/lib/**/test/*Test.cpp",
+ "proxygen/lib/**/test/*Tests.cpp",
+ ],
+ ),
+ hdrs = glob(
+ ["proxygen/lib/**/test/*.h"],
+ exclude = [
+ "proxygen/lib/dns/**",
+ "proxygen/lib/stats/**",
+ ],
+ ),
+ visibility = ["//visibility:public"],
+ deps = [
+ ":proxygen",
+ "@boost.optional",
+ "@folly//folly:exception_wrapper",
+ "@folly//folly:expected",
+ "@folly//folly:format",
+ "@folly//folly:function",
+ "@folly//folly:memory",
+ "@folly//folly:network_address",
+ "@folly//folly:optional",
+ "@folly//folly:random",
+ "@folly//folly:string",
+ "@folly//folly/futures:core",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_socket_exception",
+ "@folly//folly/io/async:async_transport",
+ "@folly//folly/io/async:async_transport_certificate",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/io/async/ssl:openssl_transport_certificate",
+ "@folly//folly/io/async/test:mocks",
+ "@folly//folly/json:dynamic",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ "@glog",
+ "@mvfst//:quic",
+ "@mvfst//:quic_test_lib",
+ "@wangle//:acceptor",
+ ],
+)
+
+[cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ data = [
+ # NOTE: These are used by proxygen/lib/http/session/test/HTTPSessionAcceptorTest.cpp, which
+ # is disabled for now because I could not figure out how to make it find the runfiles.
+ "proxygen/lib/http/session/test/test_cert1.key",
+ "proxygen/lib/http/session/test/test_cert1.pem",
+ ],
+ local_defines = [
+ # NOTE: the test is run from a sub-directory called "_main". Hence the "../".
+ # The test looks at the parent dir of the given file.
+ "BAZEL_TEST_RPATH='\"../$(rlocationpath proxygen/lib/http/session/test/test_cert1.pem)\"'",
+ ],
+ deps = [
+ ":proxygen",
+ ":proxygen_test_lib",
+ ":proxygen_test_main",
+ "@boost.algorithm",
+ "@boost.container",
+ "@boost.optional",
+ "@fizz",
+ "@folly//folly:base64",
+ "@folly//folly:conv",
+ "@folly//folly:expected",
+ "@folly//folly:file_util",
+ "@folly//folly:format",
+ "@folly//folly:random",
+ "@folly//folly:range",
+ "@folly//folly:scope_guard",
+ "@folly//folly:singleton",
+ "@folly//folly:string",
+ "@folly//folly/container:foreach",
+ "@folly//folly/executors:io_thread_pool_executor",
+ "@folly//folly/futures:core",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/io/async:async_base",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/io/async:event_base_manager",
+ "@folly//folly/io/async:server_socket",
+ "@folly//folly/io/async/test:mock_server_socket",
+ "@folly//folly/io/async/test:mocks",
+ "@folly//folly/io/async/test:util",
+ "@folly//folly/logging",
+ "@folly//folly/portability:gflags",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/synchronization:baton",
+ "@glog",
+ "@mvfst//:quic",
+ "@wangle//:acceptor",
+ "@wangle//:client_persistence_test_lib",
+ ],
+) for test_file in glob(
+ [
+ "proxygen/lib/**/test/*Test.cpp",
+ "proxygen/lib/**/test/*Tests.cpp",
+ ],
+ exclude = [
+ "proxygen/lib/dns/**",
+ "proxygen/lib/stats/**",
+ # This does not compile. It seems like an internal facebook file that escaped.
+ "proxygen/lib/http/sink/test/HTTPConnectSinkTest.cpp",
+ # This test is ignored by the CMakeLists.txt.
+ "proxygen/lib/utils/test/URLTest.cpp",
+ # The following 2 tests have their own separate cc_test below because they have to be linked
+ # together in order to work.
+ "proxygen/lib/http/codec/test/HTTP2CodecTest.cpp",
+ "proxygen/lib/http/codec/test/HTTP2FramerTest.cpp",
+ # TODO(kgk): Fix below tests.
+ "proxygen/lib/utils/test/ParseURLTest.cpp",
+ ],
+)]
+
+# These two tests have to be linked together in order to work.
+cc_test(
+ name = "proxygen_lib_http_test_HTTP2CodecTest_HTTP2FramerTest",
+ size = "small",
+ srcs = [
+ "proxygen/lib/http/codec/test/HTTP2CodecTest.cpp",
+ "proxygen/lib/http/codec/test/HTTP2FramerTest.cpp",
+ ],
+ deps = [
+ ":proxygen",
+ ":proxygen_test_lib",
+ ":proxygen_test_main",
+ "@folly//folly:random",
+ "@folly//folly/io:iobuf",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ ],
+)
+
+cc_library(
+ name = "httpserver_test_lib",
+ hdrs = ["proxygen/httpserver/Mocks.h"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":httpserver",
+ "@folly//folly/portability:gmock",
+ ],
+)
+
+[cc_test(
+ name = test_file.removesuffix(".cpp").replace("/", "_"),
+ size = "small",
+ srcs = [test_file],
+ data = glob(
+ ["proxygen/httpserver/tests/certs/*.pem"],
+ ) + [
+ "proxygen/httpserver/tests/CMakeLists.txt",
+ ],
+ # NOTE: the test is run from a sub-directory called "_main". Hence the "../".
+ # The test looks at the parent dir of the given file.
+ local_defines = [
+ "BAZEL_TEST_RPATH='\"../$(rlocationpath proxygen/httpserver/tests/CMakeLists.txt)\"'",
+ ],
+ deps = [
+ ":httpclient_samples_curl_lib",
+ ":httpserver",
+ ":httpserver_test_lib",
+ ":proxygen",
+ ":proxygen_test_lib",
+ ":proxygen_test_main",
+ "@boost.thread",
+ "@folly//folly:file_util",
+ "@folly//folly/executors:io_thread_pool_executor",
+ "@folly//folly/io/async:async_ssl_socket",
+ "@folly//folly/io/async:server_socket",
+ "@folly//folly/logging",
+ "@folly//folly/portability:gmock",
+ "@folly//folly/portability:gtest",
+ "@folly//folly/ssl:openssl_cert_utils",
+ "@folly//folly/ssl:openssl_ptr_types",
+ "@wangle//:acceptor",
+ "@wangle//:client_ssl",
+ ],
+) for test_file in glob(["proxygen/httpserver/**/tests/*Test.cpp"])]
diff --git a/modules/proxygen/2025.02.10.00.bcr.1/patches/bazel_runfiles_paths_for_tests.patch b/modules/proxygen/2025.02.10.00.bcr.1/patches/bazel_runfiles_paths_for_tests.patch
new file mode 100644
index 00000000000..fc1fe8af896
--- /dev/null
+++ b/modules/proxygen/2025.02.10.00.bcr.1/patches/bazel_runfiles_paths_for_tests.patch
@@ -0,0 +1,26 @@
+diff --git a/proxygen/httpserver/tests/HTTPServerTest.cpp b/proxygen/httpserver/tests/HTTPServerTest.cpp
+index 65fc9c7db..b68b1a3f7 100644
+--- a/proxygen/httpserver/tests/HTTPServerTest.cpp
++++ b/proxygen/httpserver/tests/HTTPServerTest.cpp
+@@ -37,7 +37,7 @@ using namespace CurlService;
+
+ namespace {
+
+-const std::string kTestDir = getContainingDirectory(XLOG_FILENAME).str();
++const std::string kTestDir = getContainingDirectory(BAZEL_TEST_RPATH).str();
+
+ }
+
+diff --git a/proxygen/lib/http/session/test/HTTPSessionAcceptorTest.cpp b/proxygen/lib/http/session/test/HTTPSessionAcceptorTest.cpp
+index 4d54db6b0..d225bb261 100644
+--- a/proxygen/lib/http/session/test/HTTPSessionAcceptorTest.cpp
++++ b/proxygen/lib/http/session/test/HTTPSessionAcceptorTest.cpp
+@@ -27,7 +27,7 @@ using folly::test::MockAsyncSocket;
+
+ namespace {
+
+-const std::string kTestDir = getContainingDirectory(XLOG_FILENAME).str();
++const std::string kTestDir = getContainingDirectory(BAZEL_TEST_RPATH).str();
+
+ }
+
diff --git a/modules/proxygen/2025.02.10.00.bcr.1/patches/fix_worker_thread_gflags.patch b/modules/proxygen/2025.02.10.00.bcr.1/patches/fix_worker_thread_gflags.patch
new file mode 100644
index 00000000000..84fb57b08cb
--- /dev/null
+++ b/modules/proxygen/2025.02.10.00.bcr.1/patches/fix_worker_thread_gflags.patch
@@ -0,0 +1,12 @@
+diff --git a/proxygen/lib/services/WorkerThread.cpp b/proxygen/lib/services/WorkerThread.cpp
+index 3c422db04..a0ac27346 100644
+--- a/proxygen/lib/services/WorkerThread.cpp
++++ b/proxygen/lib/services/WorkerThread.cpp
+@@ -14,6 +14,7 @@
+ #include
+ #include
+ #include
++#include
+ #include
+ #include
+
diff --git a/modules/proxygen/2025.02.10.00.bcr.1/patches/push_sample_use_bazel_runfiles.patch b/modules/proxygen/2025.02.10.00.bcr.1/patches/push_sample_use_bazel_runfiles.patch
new file mode 100644
index 00000000000..8982e34ab39
--- /dev/null
+++ b/modules/proxygen/2025.02.10.00.bcr.1/patches/push_sample_use_bazel_runfiles.patch
@@ -0,0 +1,29 @@
+diff --git a/proxygen/httpserver/samples/push/PushRequestHandler.cpp b/proxygen/httpserver/samples/push/PushRequestHandler.cpp
+index dd46b308c..77698c1d7 100644
+--- a/proxygen/httpserver/samples/push/PushRequestHandler.cpp
++++ b/proxygen/httpserver/samples/push/PushRequestHandler.cpp
+@@ -8,6 +8,8 @@
+
+ #include "PushRequestHandler.h"
+
++#include
++
+ #include "proxygen/httpserver/samples/push/PushStats.h"
+ #include
+ #include
+@@ -32,8 +34,13 @@ std::string createLargeBody() {
+
+ PushRequestHandler::PushRequestHandler(PushStats* stats) : stats_(stats) {
+ if (gPushBody.empty()) {
+- CHECK(folly::readFile(kPushFileName.c_str(), gPushBody))
+- << "Failed to read push file=" << kPushFileName;
++ std::string push_file_name = kPushFileName;
++ const char* push_file_name_env_var_value = std::getenv("PUSH_FILE_NAME");
++ if (push_file_name_env_var_value != nullptr) {
++ push_file_name = push_file_name_env_var_value;
++ }
++ CHECK(folly::readFile(push_file_name.c_str(), gPushBody))
++ << "Failed to read push file=" << push_file_name;
+ }
+ }
+
diff --git a/modules/proxygen/2025.02.10.00.bcr.1/presubmit.yml b/modules/proxygen/2025.02.10.00.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..f9d89c61794
--- /dev/null
+++ b/modules/proxygen/2025.02.10.00.bcr.1/presubmit.yml
@@ -0,0 +1,36 @@
+matrix:
+ platform:
+ # Disable platforms that do not support c++20 or have a new enough gcc (>11)
+ # - debian10
+ # - debian11
+ # - ubuntu2004
+ # - ubuntu2004_arm64
+ # MacOS is not yet supported.
+ # - macos
+ # - macos_arm64
+ # Windows is not yet supported.
+ # - windows
+ - ubuntu2204
+ - ubuntu2204_arm64
+ - ubuntu2404
+ - ubuntu2404_arm64
+ bazel:
+ - 7.x
+ - 8.x
+ # Disabled for now because glog does not use rules_cc for cc_* targets.
+ # - rolling
+tasks:
+ verify_targets:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags: &cxx_flags
+ - '--cxxopt=-std=c++20'
+ - '--host_cxxopt=-std=c++20'
+ # Disable spammy warnings in external dependencies to make build output readable.
+ - '--per_file_copt=external/.*@-w'
+ - '--host_per_file_copt=external/.*@-w'
+ test_flags: *cxx_flags
+ build_targets:
+ - '@proxygen//...'
+ test_targets:
+ - '@proxygen//...'
diff --git a/modules/proxygen/2025.02.10.00.bcr.1/source.json b/modules/proxygen/2025.02.10.00.bcr.1/source.json
new file mode 100644
index 00000000000..ce8139df038
--- /dev/null
+++ b/modules/proxygen/2025.02.10.00.bcr.1/source.json
@@ -0,0 +1,13 @@
+{
+ "url": "https://github.com/facebook/proxygen/releases/download/v2025.02.10.00/proxygen-v2025.02.10.00.tar.gz",
+ "integrity": "sha256-lXrhwmOowqkD7q1hQYKnUDsaH9eEVDrH4GWmXVTTHYw=",
+ "overlay": {
+ "BUILD.bazel": "sha256-P9KX2LI4US0JfdTOeKFMdS9nQOMzF7UIqbwH3uG2y88="
+ },
+ "patches": {
+ "fix_worker_thread_gflags.patch": "sha256-kttYen9h5IbCmTiH6NreY/zDGO5ZqArQksEEc1p94Jc=",
+ "bazel_runfiles_paths_for_tests.patch": "sha256-WLMQ+bBQZ90bqE4fg69A54OozT8L5T6l3OOvXAbCFT8=",
+ "push_sample_use_bazel_runfiles.patch": "sha256-X2DnYKYEaTX4IgTIiU71v+kcp6X6ul5MCQbvK+NOkmE="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/proxygen/metadata.json b/modules/proxygen/metadata.json
index 7b3812e6938..89aa5983d9c 100644
--- a/modules/proxygen/metadata.json
+++ b/modules/proxygen/metadata.json
@@ -4,15 +4,16 @@
{
"email": "kgreenek@gmail.com",
"github": "kgreenek",
- "name": "Kevin Greene",
- "github_user_id": 1295700
+ "github_user_id": 1295700,
+ "name": "Kevin Greene"
}
],
"repository": [
"github:facebook/proxygen"
],
"versions": [
- "2025.02.10.00"
+ "2025.02.10.00",
+ "2025.02.10.00.bcr.1"
],
"yanked_versions": {}
}
From ff0a3d3a44cbb6212afd1e584a93ed9f11f54b0a Mon Sep 17 00:00:00 2001
From: "EngFlow Inc."
Date: Thu, 15 Jan 2026 18:25:45 -0800
Subject: [PATCH 014/367] gazelle_cc@0.5.0 (#7170)
Release: https://github.com/EngFlow/gazelle_cc/releases/tag/v0.5.0
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
---
modules/gazelle_cc/0.5.0/MODULE.bazel | 26 +++++++++++++++++++
modules/gazelle_cc/0.5.0/attestations.json | 17 ++++++++++++
.../patches/module_dot_bazel_version.patch | 14 ++++++++++
modules/gazelle_cc/0.5.0/presubmit.yml | 17 ++++++++++++
modules/gazelle_cc/0.5.0/source.json | 9 +++++++
modules/gazelle_cc/metadata.json | 3 ++-
6 files changed, 85 insertions(+), 1 deletion(-)
create mode 100644 modules/gazelle_cc/0.5.0/MODULE.bazel
create mode 100644 modules/gazelle_cc/0.5.0/attestations.json
create mode 100644 modules/gazelle_cc/0.5.0/patches/module_dot_bazel_version.patch
create mode 100644 modules/gazelle_cc/0.5.0/presubmit.yml
create mode 100644 modules/gazelle_cc/0.5.0/source.json
diff --git a/modules/gazelle_cc/0.5.0/MODULE.bazel b/modules/gazelle_cc/0.5.0/MODULE.bazel
new file mode 100644
index 00000000000..fa011802dd5
--- /dev/null
+++ b/modules/gazelle_cc/0.5.0/MODULE.bazel
@@ -0,0 +1,26 @@
+"""Bazel Gazelle extension for rules_cc"""
+
+module(name = "gazelle_cc",
+ version = "0.5.0",
+)
+
+bazel_dep(name = "gazelle", version = "0.46.0")
+bazel_dep(name = "rules_go", version = "0.59.0")
+bazel_dep(name = "rules_proto", version = "7.1.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.1")
+bazel_dep(name = "package_metadata", version = "0.0.5")
+
+go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
+go_sdk.download(version = "1.24.0")
+
+go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
+go_deps.from_file(go_mod = "//:go.mod")
+use_repo(
+ go_deps,
+ "com_github_bazelbuild_buildtools",
+ "com_github_bmatcuk_doublestar_v4",
+ "com_github_stretchr_testify",
+ "com_github_ulikunitz_xz",
+ "org_golang_google_protobuf",
+ "org_golang_x_sync",
+)
diff --git a/modules/gazelle_cc/0.5.0/attestations.json b/modules/gazelle_cc/0.5.0/attestations.json
new file mode 100644
index 00000000000..2659b2c538a
--- /dev/null
+++ b/modules/gazelle_cc/0.5.0/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/EngFlow/gazelle_cc/releases/download/v0.5.0/source.json.intoto.jsonl",
+ "integrity": "sha256-ppOqftgzgcSUGbiehDbp1tttbdVpa1nmejOq/4JKgj8="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/EngFlow/gazelle_cc/releases/download/v0.5.0/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-TgL5eOfktTtZ4gxJk4sn7FVKTDeZcdJ3fJMEDZI6jvE="
+ },
+ "gazelle_cc-v0.5.0.tar.gz": {
+ "url": "https://github.com/EngFlow/gazelle_cc/releases/download/v0.5.0/gazelle_cc-v0.5.0.tar.gz.intoto.jsonl",
+ "integrity": "sha256-AYVDK1eRRl6Lf7SnO6z2GAMiTqkX8A4lXd8CPDDaesc="
+ }
+ }
+}
diff --git a/modules/gazelle_cc/0.5.0/patches/module_dot_bazel_version.patch b/modules/gazelle_cc/0.5.0/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..0fefbbad4ae
--- /dev/null
+++ b/modules/gazelle_cc/0.5.0/patches/module_dot_bazel_version.patch
@@ -0,0 +1,14 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,9 @@
+ """Bazel Gazelle extension for rules_cc"""
+
+-module(name = "gazelle_cc")
++module(name = "gazelle_cc",
++ version = "0.5.0",
++)
+
+ bazel_dep(name = "gazelle", version = "0.46.0")
+ bazel_dep(name = "rules_go", version = "0.59.0")
+ bazel_dep(name = "rules_proto", version = "7.1.0")
diff --git a/modules/gazelle_cc/0.5.0/presubmit.yml b/modules/gazelle_cc/0.5.0/presubmit.yml
new file mode 100644
index 00000000000..e3cb97fb9ae
--- /dev/null
+++ b/modules/gazelle_cc/0.5.0/presubmit.yml
@@ -0,0 +1,17 @@
+bcr_test_module:
+ module_path: "example/bzlmod"
+ matrix:
+ platform: ["macos", "ubuntu2004"]
+ bazel: ["7.*", "8.*", "9.*"]
+ tasks:
+ run_tests:
+ name: "Build and test the example module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ shell_commands:
+ # Generate the BUILD files for the test module using Gazelle
+ - bazel run //:gazelle
+ build_targets:
+ - //...
+ test_targets:
+ - //...
diff --git a/modules/gazelle_cc/0.5.0/source.json b/modules/gazelle_cc/0.5.0/source.json
new file mode 100644
index 00000000000..ebd460bfb93
--- /dev/null
+++ b/modules/gazelle_cc/0.5.0/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-11Ief1GnfoM9SuER2n2nJgN7I2QNdVDD4vbUoNfhv7M=",
+ "strip_prefix": "gazelle_cc-0.5.0",
+ "url": "https://github.com/EngFlow/gazelle_cc/releases/download/v0.5.0/gazelle_cc-v0.5.0.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-lwWaxKkH+AH+5TU94Yex/4S4NiMva7G/mppBqsVOF1M="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/gazelle_cc/metadata.json b/modules/gazelle_cc/metadata.json
index e69741962c4..4123544a32d 100644
--- a/modules/gazelle_cc/metadata.json
+++ b/modules/gazelle_cc/metadata.json
@@ -20,7 +20,8 @@
"versions": [
"0.1.0",
"0.4.0-rc.3",
- "0.4.0"
+ "0.4.0",
+ "0.5.0"
],
"yanked_versions": {}
}
From 53a65ebb73f590086c1515a61ebc15ac49680765 Mon Sep 17 00:00:00 2001
From: Filip Filmar
Date: Fri, 16 Jan 2026 10:03:00 +0000
Subject: [PATCH 015/367] Publish vhdl_ls_gen@0.0.2 (#7171)
Release: https://github.com/filmil/bazel_vhdl_ls_gen/releases/tag/v0.0.2
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
---
modules/vhdl_ls_gen/0.0.2/MODULE.bazel | 8 ++++++++
.../patches/module_dot_bazel_version.patch | 12 ++++++++++++
modules/vhdl_ls_gen/0.0.2/presubmit.yml | 12 ++++++++++++
modules/vhdl_ls_gen/0.0.2/source.json | 9 +++++++++
modules/vhdl_ls_gen/metadata.json | 18 ++++++++++++++++++
5 files changed, 59 insertions(+)
create mode 100644 modules/vhdl_ls_gen/0.0.2/MODULE.bazel
create mode 100644 modules/vhdl_ls_gen/0.0.2/patches/module_dot_bazel_version.patch
create mode 100644 modules/vhdl_ls_gen/0.0.2/presubmit.yml
create mode 100644 modules/vhdl_ls_gen/0.0.2/source.json
create mode 100644 modules/vhdl_ls_gen/metadata.json
diff --git a/modules/vhdl_ls_gen/0.0.2/MODULE.bazel b/modules/vhdl_ls_gen/0.0.2/MODULE.bazel
new file mode 100644
index 00000000000..1d59f52537b
--- /dev/null
+++ b/modules/vhdl_ls_gen/0.0.2/MODULE.bazel
@@ -0,0 +1,8 @@
+module(
+ name = "vhdl_ls_gen",
+ version = "0.0.2",
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.8.1")
+bazel_dep(name = "bazel_lib", version = "3.1.0")
+bazel_dep(name = "rules_shell", version = "0.6.1")
diff --git a/modules/vhdl_ls_gen/0.0.2/patches/module_dot_bazel_version.patch b/modules/vhdl_ls_gen/0.0.2/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..55cc1ec4044
--- /dev/null
+++ b/modules/vhdl_ls_gen/0.0.2/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "vhdl_ls_gen",
+- version = "0.0.1",
++ version = "0.0.2",
+ )
+
+ bazel_dep(name = "bazel_skylib", version = "1.8.1")
+ bazel_dep(name = "bazel_lib", version = "3.1.0")
diff --git a/modules/vhdl_ls_gen/0.0.2/presubmit.yml b/modules/vhdl_ls_gen/0.0.2/presubmit.yml
new file mode 100644
index 00000000000..c5f729ad9bf
--- /dev/null
+++ b/modules/vhdl_ls_gen/0.0.2/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: "integration"
+ matrix:
+ platform: ["ubuntu2204"]
+ bazel: [8.x]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//..."
diff --git a/modules/vhdl_ls_gen/0.0.2/source.json b/modules/vhdl_ls_gen/0.0.2/source.json
new file mode 100644
index 00000000000..ea6d4995680
--- /dev/null
+++ b/modules/vhdl_ls_gen/0.0.2/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-UbC7YFUutxgVzTiJHaXSqbu+rGkxuSHaoGxuQTtf3KU=",
+ "strip_prefix": "",
+ "url": "https://github.com/filmil/bazel_vhdl_ls_gen/releases/download/v0.0.2/bazel_vhdl_ls_gen-v0.0.2.zip",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-VNWNLFvGY6PWXPx5r7aH44QSG6VWtdFS+5d8aL9wAxk="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/vhdl_ls_gen/metadata.json b/modules/vhdl_ls_gen/metadata.json
new file mode 100644
index 00000000000..ea55e22dce2
--- /dev/null
+++ b/modules/vhdl_ls_gen/metadata.json
@@ -0,0 +1,18 @@
+{
+ "homepage": "https://github.com/filmil/bazel_vhdl_ls_gen",
+ "maintainers": [
+ {
+ "name": "Filip Filmar",
+ "email": "246576+filmil@users.noreply.github.com",
+ "github": "filmil",
+ "github_user_id": 246576
+ }
+ ],
+ "repository": [
+ "github:filmil/bazel_vhdl_ls_gen"
+ ],
+ "versions": [
+ "0.0.2"
+ ],
+ "yanked_versions": {}
+}
From 1217f01f9ea9b084db2747b036f651828d2a609d Mon Sep 17 00:00:00 2001
From: Yuchen Wu
Date: Fri, 16 Jan 2026 02:08:28 -0800
Subject: [PATCH 016/367] open-inference-protocol@0.0.0-20250512-d49cc23.bcr.1
(#7159)
Add Go bindings and generate GRPC APIs.
---
.../0.0.0-20250512-d49cc23.bcr.1/MODULE.bazel | 10 +++++
.../overlay/BUILD.bazel | 37 +++++++++++++++++++
.../overlay/MODULE.bazel | 10 +++++
.../presubmit.yml | 16 ++++++++
.../0.0.0-20250512-d49cc23.bcr.1/source.json | 9 +++++
modules/open-inference-protocol/metadata.json | 3 +-
6 files changed, 84 insertions(+), 1 deletion(-)
create mode 100644 modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/MODULE.bazel
create mode 100644 modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/overlay/BUILD.bazel
create mode 100644 modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/overlay/MODULE.bazel
create mode 100644 modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/presubmit.yml
create mode 100644 modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/source.json
diff --git a/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/MODULE.bazel b/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..d4ef02894e2
--- /dev/null
+++ b/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/MODULE.bazel
@@ -0,0 +1,10 @@
+module(
+ name = "open-inference-protocol",
+ version = "0.0.0-20250512-d49cc23.bcr.1",
+ bazel_compatibility = [">=7.2.1"],
+ compatibility_level = 1,
+)
+bazel_dep(name = "grpc", version = "1.74.1")
+bazel_dep(name = "protobuf", version = "32.1")
+bazel_dep(name = "rules_cc", version = "0.2.11")
+bazel_dep(name = "rules_go", version = "0.50.1", repo_name = "io_bazel_rules_go")
diff --git a/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/overlay/BUILD.bazel b/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/overlay/BUILD.bazel
new file mode 100644
index 00000000000..04748ad8642
--- /dev/null
+++ b/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/overlay/BUILD.bazel
@@ -0,0 +1,37 @@
+load("@grpc//bazel:python_rules.bzl", "py_grpc_library")
+load("@io_bazel_rules_go//proto:def.bzl", "go_grpc_library", "go_proto_library")
+load("@protobuf//bazel:proto_library.bzl", "proto_library")
+load("@protobuf//bazel:py_proto_library.bzl", "py_proto_library")
+
+package(default_visibility = ["//visibility:public"])
+
+proto_library(
+ name = "open_inference_grpc_proto",
+ srcs = ["specification/protocol/open_inference_grpc.proto"],
+)
+
+py_proto_library(
+ name = "open_inference_grpc_py_pb2",
+ deps = [":open_inference_grpc_proto"],
+)
+
+py_grpc_library(
+ name = "open_inference_grpc_py_pb2_grpc",
+ srcs = [":open_inference_grpc_proto"],
+ deps = [":open_inference_grpc_py_pb2"],
+)
+
+go_proto_library(
+ name = "open_inference_go_proto",
+ importpath = "github.com/kserve/open-inference-protocol/specification/protocol",
+ proto = ":open_inference_grpc_proto",
+ visibility = ["//visibility:public"],
+)
+
+go_grpc_library(
+ name = "open_inference_go_grpc",
+ importpath = "github.com/kserve/open-inference-protocol/specification/protocol",
+ proto = ":open_inference_grpc_proto",
+ deps = [":open_inference_go_proto"],
+ visibility = ["//visibility:public"],
+)
diff --git a/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/overlay/MODULE.bazel b/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/overlay/MODULE.bazel
new file mode 100644
index 00000000000..d4ef02894e2
--- /dev/null
+++ b/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/overlay/MODULE.bazel
@@ -0,0 +1,10 @@
+module(
+ name = "open-inference-protocol",
+ version = "0.0.0-20250512-d49cc23.bcr.1",
+ bazel_compatibility = [">=7.2.1"],
+ compatibility_level = 1,
+)
+bazel_dep(name = "grpc", version = "1.74.1")
+bazel_dep(name = "protobuf", version = "32.1")
+bazel_dep(name = "rules_cc", version = "0.2.11")
+bazel_dep(name = "rules_go", version = "0.50.1", repo_name = "io_bazel_rules_go")
diff --git a/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/presubmit.yml b/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..8e5c4ca1a1b
--- /dev/null
+++ b/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/presubmit.yml
@@ -0,0 +1,16 @@
+matrix:
+ platform:
+ - "debian11"
+ - "ubuntu2204"
+ bazel:
+ - "7.x"
+ - "8.x"
+tasks:
+ verify_targets:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - '--cxxopt=-std=c++17'
+ - '--host_cxxopt=-std=c++17'
+ build_targets:
+ - '@open-inference-protocol//...'
diff --git a/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/source.json b/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/source.json
new file mode 100644
index 00000000000..537de93b66e
--- /dev/null
+++ b/modules/open-inference-protocol/0.0.0-20250512-d49cc23.bcr.1/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-rse//p2j4lfu1w8eJXy4C3mUGYOdsip11V1mKBVxVwM=",
+ "strip_prefix": "open-inference-protocol-d49cc23f89d709d87b210ef9449e273ae243984e",
+ "url": "https://github.com/kserve/open-inference-protocol/archive/d49cc23f89d709d87b210ef9449e273ae243984e.tar.gz",
+ "overlay": {
+ "BUILD.bazel": "sha256-qMQllagZHgheZ2MsEwni3EDItRUAbf+c8IY6fP8LMRs=",
+ "MODULE.bazel": "sha256-QIky/gJdYqpbhCQcrMmhi8cqH9gWrm/Hb9uW/jTh+VE="
+ }
+}
diff --git a/modules/open-inference-protocol/metadata.json b/modules/open-inference-protocol/metadata.json
index 3165dbbe64e..dfa7e15f695 100644
--- a/modules/open-inference-protocol/metadata.json
+++ b/modules/open-inference-protocol/metadata.json
@@ -10,7 +10,8 @@
"github:kserve/open-inference-protocol"
],
"versions": [
- "0.0.0-20250512-d49cc23"
+ "0.0.0-20250512-d49cc23",
+ "0.0.0-20250512-d49cc23.bcr.1"
],
"yanked_versions": {}
}
From 38f1c50fcd9d8d5fef0d6ce1ee17d903d473bfcb Mon Sep 17 00:00:00 2001
From: phlax
Date: Fri, 16 Jan 2026 10:09:03 +0000
Subject: [PATCH 017/367] su-exec@0.3 (#7169)
Signed-off-by: Ryan Northey
---
modules/su-exec/0.3/MODULE.bazel | 5 +++++
.../su-exec/0.3/patches/add_build_file.patch | 10 ++++++++++
modules/su-exec/0.3/presubmit.yml | 17 +++++++++++++++++
modules/su-exec/0.3/source.json | 9 +++++++++
modules/su-exec/metadata.json | 3 ++-
5 files changed, 43 insertions(+), 1 deletion(-)
create mode 100644 modules/su-exec/0.3/MODULE.bazel
create mode 100644 modules/su-exec/0.3/patches/add_build_file.patch
create mode 100644 modules/su-exec/0.3/presubmit.yml
create mode 100644 modules/su-exec/0.3/source.json
diff --git a/modules/su-exec/0.3/MODULE.bazel b/modules/su-exec/0.3/MODULE.bazel
new file mode 100644
index 00000000000..e657ab87f51
--- /dev/null
+++ b/modules/su-exec/0.3/MODULE.bazel
@@ -0,0 +1,5 @@
+module(
+ name = "su-exec",
+ version = "0.3",
+ compatibility_level = 1,
+)
diff --git a/modules/su-exec/0.3/patches/add_build_file.patch b/modules/su-exec/0.3/patches/add_build_file.patch
new file mode 100644
index 00000000000..6179d6a0331
--- /dev/null
+++ b/modules/su-exec/0.3/patches/add_build_file.patch
@@ -0,0 +1,10 @@
+--- /dev/null
++++ BUILD.bazel
+@@ -0,0 +1,7 @@
++licenses(["notice"]) # Apache 2
++
++cc_binary(
++ name = "su-exec",
++ srcs = ["su-exec.c"],
++ visibility = ["//visibility:public"],
++)
diff --git a/modules/su-exec/0.3/presubmit.yml b/modules/su-exec/0.3/presubmit.yml
new file mode 100644
index 00000000000..5cec67031c7
--- /dev/null
+++ b/modules/su-exec/0.3/presubmit.yml
@@ -0,0 +1,17 @@
+matrix:
+ platform:
+ - debian10
+ - ubuntu2004
+ - macos
+ - macos_arm64
+ bazel:
+ - 6.x
+ - 7.x
+ - 8.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@su-exec//...'
diff --git a/modules/su-exec/0.3/source.json b/modules/su-exec/0.3/source.json
new file mode 100644
index 00000000000..ed13606a389
--- /dev/null
+++ b/modules/su-exec/0.3/source.json
@@ -0,0 +1,9 @@
+{
+ "url": "https://github.com/ncopa/su-exec/archive/refs/tags/v0.3.tar.gz",
+ "integrity": "sha256-HedHmFeHm20UdyeSN1KQqH6smjewUk05c5pKBzkDliA=",
+ "strip_prefix": "su-exec-0.3",
+ "patches": {
+ "add_build_file.patch": "sha256-81R3v1+KDkSuBS2YZfVoYaqq72UrHp8yfMdKr89vBaA="
+ },
+ "patch_strip": 0
+}
diff --git a/modules/su-exec/metadata.json b/modules/su-exec/metadata.json
index 4a0ea49e942..aebfcd352a3 100644
--- a/modules/su-exec/metadata.json
+++ b/modules/su-exec/metadata.json
@@ -10,7 +10,8 @@
"github:ncopa/su-exec"
],
"versions": [
- "0.0.0-20221219-4c3bb42"
+ "0.0.0-20221219-4c3bb42",
+ "0.3"
],
"yanked_versions": {}
}
From 2969fe54c2aa02574775f0c7fc36eea2394ca20b Mon Sep 17 00:00:00 2001
From: phlax
Date: Fri, 16 Jan 2026 10:20:17 +0000
Subject: [PATCH 018/367] libprotobuf-mutator@1.5 (#7148)
Signed-off-by: Ryan Northey
---
modules/libprotobuf-mutator/1.5/MODULE.bazel | 11 ++++++++
.../1.5/patches/add_build_file.patch | 28 +++++++++++++++++++
.../1.5/patches/module_dot_bazel.patch | 14 ++++++++++
modules/libprotobuf-mutator/1.5/presubmit.yml | 20 +++++++++++++
modules/libprotobuf-mutator/1.5/source.json | 10 +++++++
modules/libprotobuf-mutator/metadata.json | 3 +-
6 files changed, 85 insertions(+), 1 deletion(-)
create mode 100644 modules/libprotobuf-mutator/1.5/MODULE.bazel
create mode 100644 modules/libprotobuf-mutator/1.5/patches/add_build_file.patch
create mode 100644 modules/libprotobuf-mutator/1.5/patches/module_dot_bazel.patch
create mode 100644 modules/libprotobuf-mutator/1.5/presubmit.yml
create mode 100644 modules/libprotobuf-mutator/1.5/source.json
diff --git a/modules/libprotobuf-mutator/1.5/MODULE.bazel b/modules/libprotobuf-mutator/1.5/MODULE.bazel
new file mode 100644
index 00000000000..78aac4664e8
--- /dev/null
+++ b/modules/libprotobuf-mutator/1.5/MODULE.bazel
@@ -0,0 +1,11 @@
+module(
+ name = "libprotobuf-mutator",
+ version = "1.5",
+ compatibility_level = 1,
+)
+
+bazel_dep(
+ name = "protobuf",
+ version = "26.0.bcr.1",
+ repo_name = "com_google_protobuf",
+)
diff --git a/modules/libprotobuf-mutator/1.5/patches/add_build_file.patch b/modules/libprotobuf-mutator/1.5/patches/add_build_file.patch
new file mode 100644
index 00000000000..156c2be9d9d
--- /dev/null
+++ b/modules/libprotobuf-mutator/1.5/patches/add_build_file.patch
@@ -0,0 +1,28 @@
+--- /dev/null
++++ BUILD.bazel
+@@ -0,0 +1,25 @@
++licenses(["notice"]) # Apache 2
++
++cc_library(
++ name = "protobuf-mutator",
++ srcs = glob(
++ [
++ "src/**/*.cc",
++ ],
++ exclude = ["**/*_test.cc"],
++ ),
++ hdrs = glob(["src/**/*.h"]) + ["port/protobuf.h"],
++ include_prefix = "libprotobuf_mutator",
++ includes = [
++ "port",
++ "src",
++ ],
++ visibility = ["//visibility:public"],
++ deps = ["@com_google_protobuf//:protobuf"],
++)
++
++alias(
++ name = "libprotobuf-mutator",
++ actual = ":protobuf-mutator",
++ visibility = ["//visibility:public"],
++)
diff --git a/modules/libprotobuf-mutator/1.5/patches/module_dot_bazel.patch b/modules/libprotobuf-mutator/1.5/patches/module_dot_bazel.patch
new file mode 100644
index 00000000000..4d0655e7c7c
--- /dev/null
+++ b/modules/libprotobuf-mutator/1.5/patches/module_dot_bazel.patch
@@ -0,0 +1,14 @@
+--- MODULE.bazel
++++ MODULE.bazel
+@@ -0,0 +1,11 @@
++module(
++ name = "libprotobuf-mutator",
++ version = "1.5",
++ compatibility_level = 1,
++)
++
++bazel_dep(
++ name = "protobuf",
++ version = "26.0.bcr.1",
++ repo_name = "com_google_protobuf",
++)
diff --git a/modules/libprotobuf-mutator/1.5/presubmit.yml b/modules/libprotobuf-mutator/1.5/presubmit.yml
new file mode 100644
index 00000000000..9c4b8ad650d
--- /dev/null
+++ b/modules/libprotobuf-mutator/1.5/presubmit.yml
@@ -0,0 +1,20 @@
+matrix:
+ platform:
+ - debian10
+ - ubuntu2004
+ - macos
+ - macos_arm64
+ - windows
+ bazel:
+ - 7.x
+ - 8.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - '--cxxopt=-std=c++14'
+ - '--host_cxxopt=-std=c++14'
+ build_targets:
+ - '@libprotobuf-mutator//...'
diff --git a/modules/libprotobuf-mutator/1.5/source.json b/modules/libprotobuf-mutator/1.5/source.json
new file mode 100644
index 00000000000..179cfc74917
--- /dev/null
+++ b/modules/libprotobuf-mutator/1.5/source.json
@@ -0,0 +1,10 @@
+{
+ "url": "https://github.com/google/libprotobuf-mutator/archive/refs/tags/v1.5.tar.gz",
+ "integrity": "sha256-iVlYiBtJk99wtPZSwtgsW9l9IvgByk9DDWVGgJ3yk9U=",
+ "strip_prefix": "libprotobuf-mutator-1.5",
+ "patches": {
+ "add_build_file.patch": "sha256-7lF7YQ2W3QaP3OmoMAe1NI8gENw6AQa1iEoogDbJQrU=",
+ "module_dot_bazel.patch": "sha256-E7Id7Qw5SZY/RyaaP5ol8Ogg8xD+qDyu7b02pFnCcnA="
+ },
+ "patch_strip": 0
+}
diff --git a/modules/libprotobuf-mutator/metadata.json b/modules/libprotobuf-mutator/metadata.json
index 6894d5c3fc0..257bb387d15 100644
--- a/modules/libprotobuf-mutator/metadata.json
+++ b/modules/libprotobuf-mutator/metadata.json
@@ -10,7 +10,8 @@
"github:google/libprotobuf-mutator"
],
"versions": [
- "1.3"
+ "1.3",
+ "1.5"
],
"yanked_versions": {}
}
From 7466bd08c67ab62f8e09bcac3795f890914f2469 Mon Sep 17 00:00:00 2001
From: phlax
Date: Fri, 16 Jan 2026 11:02:47 +0000
Subject: [PATCH 019/367] libmaxminddb@1.12.2 (#7143)
Signed-off-by: Ryan Northey
---
modules/libmaxminddb/1.12.2/MODULE.bazel | 7 +++
.../1.12.2/patches/add_build_file.patch | 44 +++++++++++++++++++
.../1.12.2/patches/module_dot_bazel.patch | 13 ++++++
modules/libmaxminddb/1.12.2/presubmit.yml | 18 ++++++++
modules/libmaxminddb/1.12.2/source.json | 10 +++++
modules/libmaxminddb/metadata.json | 7 +--
6 files changed, 96 insertions(+), 3 deletions(-)
create mode 100644 modules/libmaxminddb/1.12.2/MODULE.bazel
create mode 100644 modules/libmaxminddb/1.12.2/patches/add_build_file.patch
create mode 100644 modules/libmaxminddb/1.12.2/patches/module_dot_bazel.patch
create mode 100644 modules/libmaxminddb/1.12.2/presubmit.yml
create mode 100644 modules/libmaxminddb/1.12.2/source.json
diff --git a/modules/libmaxminddb/1.12.2/MODULE.bazel b/modules/libmaxminddb/1.12.2/MODULE.bazel
new file mode 100644
index 00000000000..2a6fa8a43bc
--- /dev/null
+++ b/modules/libmaxminddb/1.12.2/MODULE.bazel
@@ -0,0 +1,7 @@
+module(
+ name = "libmaxminddb",
+ version = "1.12.2",
+ compatibility_level = 1,
+)
+bazel_dep(name = "cmake_configure_file", version = "0.1.4")
+bazel_dep(name = "rules_cc", version = "0.0.17")
diff --git a/modules/libmaxminddb/1.12.2/patches/add_build_file.patch b/modules/libmaxminddb/1.12.2/patches/add_build_file.patch
new file mode 100644
index 00000000000..2cc6d817655
--- /dev/null
+++ b/modules/libmaxminddb/1.12.2/patches/add_build_file.patch
@@ -0,0 +1,44 @@
+--- /dev/null
++++ BUILD.bazel
+@@ -0,0 +1,41 @@
++""" Builds libmaxminddb.
++"""
++
++load("@rules_cc//cc:defs.bzl", "cc_library")
++load(
++ "@cmake_configure_file//:cmake_configure_file.bzl",
++ "cmake_configure_file",
++)
++
++cmake_configure_file(
++ name = "generate_config_h",
++ src = "include/maxminddb_config.h.cmake.in",
++ out = "include/maxminddb_config.h",
++ cmakelists = ["CMakeLists.txt"],
++ defines = [
++ "MMDB_UINT128_USING_MODE=0",
++ "MMDB_UINT128_IS_BYTE_ARRAY=1",
++ ],
++ visibility = ["//visibility:private"],
++)
++
++cc_library(
++ name = "libmaxminddb",
++ srcs = [
++ "src/maxminddb.c",
++ "src/data-pool.c",
++ "src/data-pool.h",
++ "src/maxminddb-compat-util.h",
++ ],
++ hdrs = [
++ "include/maxminddb.h",
++ "include/maxminddb_config.h",
++ ],
++ copts = ["-w"],
++ includes = ["include"],
++ local_defines = [
++ "MMDB_LITTLE_ENDIAN=1",
++ 'PACKAGE_VERSION=\\"1.12.2\\"',
++ ],
++ visibility = ["//visibility:public"],
++)
diff --git a/modules/libmaxminddb/1.12.2/patches/module_dot_bazel.patch b/modules/libmaxminddb/1.12.2/patches/module_dot_bazel.patch
new file mode 100644
index 00000000000..6aa6079b6fc
--- /dev/null
+++ b/modules/libmaxminddb/1.12.2/patches/module_dot_bazel.patch
@@ -0,0 +1,13 @@
+--- MODULE.bazel
++++ MODULE.bazel
+@@ -0,0 +1,7 @@
++module(
++ name = "libmaxminddb",
++ version = "1.12.2",
++ compatibility_level = 1,
++)
++bazel_dep(name = "cmake_configure_file", version = "0.1.4")
++bazel_dep(name = "rules_cc", version = "0.0.17")
+
+
+
diff --git a/modules/libmaxminddb/1.12.2/presubmit.yml b/modules/libmaxminddb/1.12.2/presubmit.yml
new file mode 100644
index 00000000000..150644ea1ee
--- /dev/null
+++ b/modules/libmaxminddb/1.12.2/presubmit.yml
@@ -0,0 +1,18 @@
+matrix:
+ platform:
+ - debian10
+ - ubuntu2004
+ - macos
+ - macos_arm64
+ - windows
+ bazel:
+ - 7.x
+ - 8.x
+ - 9.*
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@libmaxminddb//:libmaxminddb'
diff --git a/modules/libmaxminddb/1.12.2/source.json b/modules/libmaxminddb/1.12.2/source.json
new file mode 100644
index 00000000000..55d925b5079
--- /dev/null
+++ b/modules/libmaxminddb/1.12.2/source.json
@@ -0,0 +1,10 @@
+{
+ "url": "https://github.com/maxmind/libmaxminddb/releases/download/1.12.2/libmaxminddb-1.12.2.tar.gz",
+ "integrity": "sha256-G/v477o+1kYuBOIlkGrVzl/pWKo9YmoSNbKiJT1gB0M=",
+ "strip_prefix": "libmaxminddb-1.12.2",
+ "patches": {
+ "add_build_file.patch": "sha256-JXRLhY511Jln8wzEqOZ5AlHKYsCAREjwaSZzx4JUwb8=",
+ "module_dot_bazel.patch": "sha256-UfKU66kbl9H4rESQ041EkuKqIZHz9I8KEqcxtH1Hg9w="
+ },
+ "patch_strip": 0
+}
diff --git a/modules/libmaxminddb/metadata.json b/modules/libmaxminddb/metadata.json
index b648cdd2cdd..50485794d2e 100644
--- a/modules/libmaxminddb/metadata.json
+++ b/modules/libmaxminddb/metadata.json
@@ -2,15 +2,16 @@
"homepage": "https://github.com/maxmind/libmaxminddb",
"maintainers": [
{
- "email": "bcr-maintainers@bazel.build",
- "name": "No Maintainer Specified"
+ "github": "nezdolik",
+ "github_user_id": 14430883
}
],
"repository": [
"github:maxmind/libmaxminddb"
],
"versions": [
- "1.10.0"
+ "1.10.0",
+ "1.12.2"
],
"yanked_versions": {}
}
From 808e521817d4ee5c9d78e2273e71c2cb67a53eb2 Mon Sep 17 00:00:00 2001
From: phlax
Date: Fri, 16 Jan 2026 11:03:36 +0000
Subject: [PATCH 020/367] libprotobuf-mutator: Add @phlax as maintainer (#7172)
Signed-off-by: Ryan Northey
---
modules/libprotobuf-mutator/metadata.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules/libprotobuf-mutator/metadata.json b/modules/libprotobuf-mutator/metadata.json
index 257bb387d15..3bc3c3ca4f3 100644
--- a/modules/libprotobuf-mutator/metadata.json
+++ b/modules/libprotobuf-mutator/metadata.json
@@ -2,8 +2,8 @@
"homepage": "https://github.com/google/libprotobuf-mutator",
"maintainers": [
{
- "email": "bcr-maintainers@bazel.build",
- "name": "No Maintainer Specified"
+ "github": "phlax",
+ "github_user_id": 454682
}
],
"repository": [
From dfc99fe1795739a867d12a7aee3d861b4ea0c447 Mon Sep 17 00:00:00 2001
From: phlax
Date: Fri, 16 Jan 2026 13:03:31 +0000
Subject: [PATCH 021/367] libprotobuf-mutator@1.5.bcr.1 (#7173)
Signed-off-by: Ryan Northey
---
.../1.5.bcr.1/MODULE.bazel | 12 ++++++++
.../1.5.bcr.1/patches/add_build_file.patch | 30 +++++++++++++++++++
.../1.5.bcr.1/presubmit.yml | 20 +++++++++++++
.../libprotobuf-mutator/1.5.bcr.1/source.json | 9 ++++++
modules/libprotobuf-mutator/metadata.json | 3 +-
5 files changed, 73 insertions(+), 1 deletion(-)
create mode 100644 modules/libprotobuf-mutator/1.5.bcr.1/MODULE.bazel
create mode 100644 modules/libprotobuf-mutator/1.5.bcr.1/patches/add_build_file.patch
create mode 100644 modules/libprotobuf-mutator/1.5.bcr.1/presubmit.yml
create mode 100644 modules/libprotobuf-mutator/1.5.bcr.1/source.json
diff --git a/modules/libprotobuf-mutator/1.5.bcr.1/MODULE.bazel b/modules/libprotobuf-mutator/1.5.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..5b6a2b58a8f
--- /dev/null
+++ b/modules/libprotobuf-mutator/1.5.bcr.1/MODULE.bazel
@@ -0,0 +1,12 @@
+module(
+ name = "libprotobuf-mutator",
+ version = "1.5.bcr.1",
+ compatibility_level = 1,
+)
+
+bazel_dep(
+ name = "protobuf",
+ version = "26.0.bcr.1",
+ repo_name = "com_google_protobuf",
+)
+bazel_dep(name = "rules_cc", version = "0.1.5")
diff --git a/modules/libprotobuf-mutator/1.5.bcr.1/patches/add_build_file.patch b/modules/libprotobuf-mutator/1.5.bcr.1/patches/add_build_file.patch
new file mode 100644
index 00000000000..aa06ba295a9
--- /dev/null
+++ b/modules/libprotobuf-mutator/1.5.bcr.1/patches/add_build_file.patch
@@ -0,0 +1,30 @@
+--- /dev/null
++++ BUILD.bazel
+@@ -0,0 +1,27 @@
++load("@rules_cc//cc:defs.bzl", "cc_library")
++
++licenses(["notice"]) # Apache 2
++
++cc_library(
++ name = "protobuf-mutator",
++ srcs = glob(
++ [
++ "src/**/*.cc",
++ ],
++ exclude = ["**/*_test.cc"],
++ ),
++ hdrs = glob(["src/**/*.h"]) + ["port/protobuf.h"],
++ include_prefix = "libprotobuf_mutator",
++ includes = [
++ "port",
++ "src",
++ ],
++ visibility = ["//visibility:public"],
++ deps = ["@com_google_protobuf//:protobuf"],
++)
++
++alias(
++ name = "libprotobuf-mutator",
++ actual = ":protobuf-mutator",
++ visibility = ["//visibility:public"],
++)
diff --git a/modules/libprotobuf-mutator/1.5.bcr.1/presubmit.yml b/modules/libprotobuf-mutator/1.5.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..0295f9e4d06
--- /dev/null
+++ b/modules/libprotobuf-mutator/1.5.bcr.1/presubmit.yml
@@ -0,0 +1,20 @@
+matrix:
+ platform:
+ - debian10
+ - ubuntu2004
+ - macos
+ - macos_arm64
+ - windows
+ bazel:
+ - 7.x
+ - 8.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - '--cxxopt=-std=c++14'
+ - '--host_cxxopt=-std=c++14'
+ build_targets:
+ - '@libprotobuf-mutator//...'
diff --git a/modules/libprotobuf-mutator/1.5.bcr.1/source.json b/modules/libprotobuf-mutator/1.5.bcr.1/source.json
new file mode 100644
index 00000000000..50f62db328a
--- /dev/null
+++ b/modules/libprotobuf-mutator/1.5.bcr.1/source.json
@@ -0,0 +1,9 @@
+{
+ "url": "https://github.com/google/libprotobuf-mutator/archive/refs/tags/v1.5.tar.gz",
+ "integrity": "sha256-iVlYiBtJk99wtPZSwtgsW9l9IvgByk9DDWVGgJ3yk9U=",
+ "strip_prefix": "libprotobuf-mutator-1.5",
+ "patches": {
+ "add_build_file.patch": "sha256-W40ztXPjyLnT8CFRkzXUwPtE4ppoXqE+T4l39qLM7Mg="
+ },
+ "patch_strip": 0
+}
diff --git a/modules/libprotobuf-mutator/metadata.json b/modules/libprotobuf-mutator/metadata.json
index 3bc3c3ca4f3..ad832fef814 100644
--- a/modules/libprotobuf-mutator/metadata.json
+++ b/modules/libprotobuf-mutator/metadata.json
@@ -11,7 +11,8 @@
],
"versions": [
"1.3",
- "1.5"
+ "1.5",
+ "1.5.bcr.1"
],
"yanked_versions": {}
}
From 36c2e1552b0f07d188e614138ae7ffb34bf83abb Mon Sep 17 00:00:00 2001
From: Laurent Perron
Date: Fri, 16 Jan 2026 17:30:51 +0100
Subject: [PATCH 022/367] Add papilo 3.0.0 with split patches, metadata and
presubmit (#7142)
Add the v3.0.0 of the Papilo module that is used by Soplex and SCIP
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---
modules/papilo/3.0.0/MODULE.bazel | 19 +
modules/papilo/3.0.0/overlay/BUILD.bazel | 489 ++++++++++++++++++
modules/papilo/3.0.0/patches/fmt_hpp.patch | 15 +
.../papilo/3.0.0/patches/message_hpp.patch | 13 +
.../3.0.0/patches/multiprecision_hpp.patch | 20 +
.../3.0.0/patches/problem_update_hpp.patch | 13 +
modules/papilo/3.0.0/presubmit.yml | 16 +
modules/papilo/3.0.0/source.json | 15 +
modules/papilo/metadata.json | 18 +
9 files changed, 618 insertions(+)
create mode 100644 modules/papilo/3.0.0/MODULE.bazel
create mode 100644 modules/papilo/3.0.0/overlay/BUILD.bazel
create mode 100644 modules/papilo/3.0.0/patches/fmt_hpp.patch
create mode 100644 modules/papilo/3.0.0/patches/message_hpp.patch
create mode 100644 modules/papilo/3.0.0/patches/multiprecision_hpp.patch
create mode 100644 modules/papilo/3.0.0/patches/problem_update_hpp.patch
create mode 100644 modules/papilo/3.0.0/presubmit.yml
create mode 100644 modules/papilo/3.0.0/source.json
create mode 100644 modules/papilo/metadata.json
diff --git a/modules/papilo/3.0.0/MODULE.bazel b/modules/papilo/3.0.0/MODULE.bazel
new file mode 100644
index 00000000000..316488634c4
--- /dev/null
+++ b/modules/papilo/3.0.0/MODULE.bazel
@@ -0,0 +1,19 @@
+module(
+ name = "papilo",
+ version = "3.0.0",
+ compatibility_level = 1,
+ bazel_compatibility = [">=7.2.1"],
+)
+
+bazel_dep(name = "boost.graph", version = "1.83.0.bcr.1")
+bazel_dep(name = "boost.heap", version = "1.83.0")
+bazel_dep(name = "boost.iostreams", version = "1.83.0.bcr.2")
+bazel_dep(name = "boost.multiprecision", version = "1.83.0.bcr.1")
+bazel_dep(name = "boost.program_options", version = "1.83.0.bcr.2")
+bazel_dep(name = "boost.serialization", version = "1.83.0.bcr.1")
+bazel_dep(name = "fmt", version = "12.1.0")
+bazel_dep(name = "onetbb", version = "2022.2.0")
+bazel_dep(name = "platforms", version = "0.0.11")
+bazel_dep(name = "rules_cc", version = "0.1.1")
+bazel_dep(name = "zlib", version = "1.3.1.bcr.7")
+bazel_dep(name = "zstr", version = "1.0.7")
diff --git a/modules/papilo/3.0.0/overlay/BUILD.bazel b/modules/papilo/3.0.0/overlay/BUILD.bazel
new file mode 100644
index 00000000000..71a7f6104e2
--- /dev/null
+++ b/modules/papilo/3.0.0/overlay/BUILD.bazel
@@ -0,0 +1,489 @@
+# Description:
+# Papilo is a Parallel Presolver, a tool used in Mathematical Programming.
+
+load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("@rules_cc//cc:cc_test.bzl", "cc_test")
+
+cc_library(
+ name = "papilo",
+ srcs = glob(
+ [
+ "src/papilo/core/*.cpp",
+ "src/papilo/core/postsolve/*.cpp",
+ "src/papilo/presolvers/*.cpp",
+ ],
+ ),
+ hdrs = glob(
+ [
+ "src/papilo/*hpp",
+ "src/papilo/external/pdqsort/*.h",
+ "src/papilo/external/ska/*.hpp",
+ "src/papilo/core/*.hpp",
+ "src/papilo/core/postsolve/*.hpp",
+ "src/papilo/interfaces/*.hpp",
+ "src/papilo/io/*.hpp",
+ "src/papilo/misc/*.hpp",
+ "src/papilo/presolvers/*.hpp",
+ "src/papilo/verification/*.hpp",
+ ],
+ ),
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ includes = [
+ "src",
+ ],
+ defines = [
+ "BOOST_FOUND",
+ "PAPILO_NO_CMAKE_CONFIG",
+ "PAPILO_TBB",
+ "PAPILO_USE_BOOST_IOSTREAMS_WITH_ZLIB",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ "@boost.graph",
+ "@boost.heap",
+ "@boost.multiprecision",
+ "@boost.iostreams",
+ "@boost.program_options",
+ "@boost.serialization",
+ "@fmt",
+ "@onetbb//:tbb",
+ "@zstr",
+ ],
+)
+
+cc_binary(
+ name = "papilo_bin",
+ srcs = ["src/papilo.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":papilo",
+ "@boost.multiprecision",
+ "@zlib",
+ ],
+)
+
+# Not exported, only used in tests.
+cc_library(
+ name = "catch_main",
+ srcs = ["test/TestMain.cpp"],
+ hdrs = [
+ "src/papilo/external/catch/catch_amalgamated.hpp",
+ "src/papilo/external/catch/catch_amalgamated.cpp",
+ ],
+ includes = ["src"],
+ testonly = True,
+)
+
+genrule(
+ name = "copy_dual_fix_mps",
+ srcs = ["test/instances/dual_fix_neg_inf.mps"],
+ outs = ["resources/dual_fix_neg_inf.mps"],
+ cmd = "mkdir -p resources && cp $< $@",
+)
+
+cc_test(
+ name = "MatrixBufferTest",
+ srcs = ["test/papilo/core/MatrixBufferTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "PresolveTest",
+ srcs = ["test/papilo/core/PresolveTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "ProblemUpdateTest",
+ srcs = ["test/papilo/core/ProblemUpdateTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "SparseStorageTest",
+ srcs = ["test/papilo/core/SparseStorageTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "MpsParserTest",
+ srcs = ["test/papilo/io/MpsParserTest.cpp"],
+ data = [":copy_dual_fix_mps"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "VectorUtilsTest",
+ srcs = ["test/papilo/misc/VectorUtilsTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "CliqueMergingTest",
+ srcs = ["test/papilo/presolve/CliqueMergingTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "CoefficientStrengtheningTest",
+ srcs = ["test/papilo/presolve/CoefficientStrengtheningTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "ConstraintPropagationTest",
+ srcs = ["test/papilo/presolve/ConstraintPropagationTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "DominatedColsTest",
+ srcs = ["test/papilo/presolve/DominatedColsTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "DualFixTest",
+ srcs = ["test/papilo/presolve/DualFixTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "FixContinuousTest",
+ srcs = ["test/papilo/presolve/FixContinuousTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "FreeVarSubstitutionTest",
+ srcs = ["test/papilo/presolve/FreeVarSubstitutionTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "ImplIntDetectionTest",
+ srcs = ["test/papilo/presolve/ImplIntDetectionTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "ParallelColDetectionTest",
+ srcs = ["test/papilo/presolve/ParallelColDetectionTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "ParallelRowDetectionTest",
+ srcs = ["test/papilo/presolve/ParallelRowDetectionTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "ProbingTest",
+ srcs = ["test/papilo/presolve/ProbingTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "SimpleProbingTest",
+ srcs = ["test/papilo/presolve/SimpleProbingTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "SimpleSubstitutionTest",
+ srcs = ["test/papilo/presolve/SimpleSubstitutionTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "SimplifyInequalitiesTest",
+ srcs = ["test/papilo/presolve/SimplifyInequalitiesTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "SingletonColsTest",
+ srcs = ["test/papilo/presolve/SingletonColsTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "SingletonStuffingTest",
+ srcs = ["test/papilo/presolve/SingletonStuffingTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
+
+cc_test(
+ name = "SparsifyTest",
+ srcs = ["test/papilo/presolve/SparsifyTest.cpp"],
+ copts = select({
+ "@platforms//os:windows": ["/utf-8"],
+ "@platforms//os:osx": [
+ "-mmacosx-version-min=10.13",
+ "-fno-aligned-allocation",
+ ],
+ "//conditions:default": [],
+ }),
+ deps = [
+ ":catch_main",
+ ":papilo",
+ ],
+)
diff --git a/modules/papilo/3.0.0/patches/fmt_hpp.patch b/modules/papilo/3.0.0/patches/fmt_hpp.patch
new file mode 100644
index 00000000000..f0209d3d634
--- /dev/null
+++ b/modules/papilo/3.0.0/patches/fmt_hpp.patch
@@ -0,0 +1,15 @@
+diff --git a/src/papilo/misc/fmt.hpp b/src/papilo/misc/fmt.hpp
+index a6e56fe6..4c1f6fe7 100644
+--- a/src/papilo/misc/fmt.hpp
++++ b/src/papilo/misc/fmt.hpp
+@@ -47,8 +47,8 @@
+ #define PAPILO_DEFINED_NOGDI
+ #endif
+
+-#include "papilo/external/fmt/format.h"
+-#include "papilo/external/fmt/ostream.h"
++#include
++#include
+
+ #ifdef PAPILO_DEFINED_NOGDI
+ #undef NOGDI
diff --git a/modules/papilo/3.0.0/patches/message_hpp.patch b/modules/papilo/3.0.0/patches/message_hpp.patch
new file mode 100644
index 00000000000..cf8137767f2
--- /dev/null
+++ b/modules/papilo/3.0.0/patches/message_hpp.patch
@@ -0,0 +1,13 @@
+diff --git a/src/papilo/io/Message.hpp b/src/papilo/io/Message.hpp
+index 0693b929..487f97a4 100644
+--- a/src/papilo/io/Message.hpp
++++ b/src/papilo/io/Message.hpp
+@@ -77,7 +77,7 @@ class Message
+ #else
+ buf,
+ #endif
+- format_str, { fmt::make_format_args( std::forward( args )... ) } );
++ format_str, { fmt::make_format_args( args... ) } );
+ std::size_t size = buf.size();
+
+ if( write != nullptr )
diff --git a/modules/papilo/3.0.0/patches/multiprecision_hpp.patch b/modules/papilo/3.0.0/patches/multiprecision_hpp.patch
new file mode 100644
index 00000000000..9f00d5deb69
--- /dev/null
+++ b/modules/papilo/3.0.0/patches/multiprecision_hpp.patch
@@ -0,0 +1,20 @@
+diff --git a/src/papilo/misc/MultiPrecision.hpp b/src/papilo/misc/MultiPrecision.hpp
+index cd14de9b..16fea7d0 100644
+--- a/src/papilo/misc/MultiPrecision.hpp
++++ b/src/papilo/misc/MultiPrecision.hpp
+@@ -26,6 +26,7 @@
+ #define _PAPILO_MISC_MULTIPRECISION_HPP_
+
+ #include "papilo/Config.hpp"
++#include "papilo/misc/fmt.hpp"
+
+ // work around build failure with boost on Fedora 37
+ #include
+@@ -158,4 +159,7 @@ using Float1000 =
+ } // namespace papilo
+ #endif
+
++template
++struct fmt::formatter> : fmt::ostream_formatter {};
++
+ #endif
diff --git a/modules/papilo/3.0.0/patches/problem_update_hpp.patch b/modules/papilo/3.0.0/patches/problem_update_hpp.patch
new file mode 100644
index 00000000000..3762b1c0b0a
--- /dev/null
+++ b/modules/papilo/3.0.0/patches/problem_update_hpp.patch
@@ -0,0 +1,13 @@
+diff --git a/src/papilo/core/ProblemUpdate.hpp b/src/papilo/core/ProblemUpdate.hpp
+index 615a5421..68085ad6 100644
+--- a/src/papilo/core/ProblemUpdate.hpp
++++ b/src/papilo/core/ProblemUpdate.hpp
+@@ -2434,7 +2434,7 @@ ProblemUpdate::applyTransaction( const Reduction* first,
+ const int length = rowvec.getLength();
+ const int* indices = rowvec.getIndices();
+
+- msg.detailed( "modified columns: ", ColReduction::SUBSTITUTE, col,
++ msg.detailed( "modified columns: ", static_cast(ColReduction::SUBSTITUTE), col,
+ equalityrow );
+ for( int j = 0; j != length; ++j )
+ {
diff --git a/modules/papilo/3.0.0/presubmit.yml b/modules/papilo/3.0.0/presubmit.yml
new file mode 100644
index 00000000000..28614e3c874
--- /dev/null
+++ b/modules/papilo/3.0.0/presubmit.yml
@@ -0,0 +1,16 @@
+matrix:
+ platform:
+ - debian11
+ - ubuntu2404
+ - macos
+ - macos_arm64
+ - windows
+ bazel:
+ - 8.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - "@papilo//..."
diff --git a/modules/papilo/3.0.0/source.json b/modules/papilo/3.0.0/source.json
new file mode 100644
index 00000000000..2b71ca37d3d
--- /dev/null
+++ b/modules/papilo/3.0.0/source.json
@@ -0,0 +1,15 @@
+{
+ "integrity": "sha256-BOJDfEFAR4L6Mc10qIG0dddabmkuTIiiS/SM9dJjqT0=",
+ "strip_prefix": "papilo-3.0.0",
+ "url": "https://github.com/scipopt/papilo/archive/refs/tags/v3.0.0.tar.gz",
+ "patch_strip": 1,
+ "patches": {
+ "fmt_hpp.patch": "sha256-ayy7jSqAa6uQie32FE0GAwU000pofnOwlE5igwdJnLc=",
+ "message_hpp.patch": "sha256-+VTYT5zUmmaFT4pBmmcuyfVZiLbjPkXhAmNpattCZtA=",
+ "multiprecision_hpp.patch": "sha256-ziy+Wq1VJPlFT3rWolTSU/X6OHxBv7yX9H8ripX2Nbk=",
+ "problem_update_hpp.patch": "sha256-hVP+4DI+0edexydNsGdG20Ub0MK2t3fNXQBiNENhEcI="
+ },
+ "overlay": {
+ "BUILD.bazel": "sha256-L8g53OPdZtg/pugGDiUnG+xLMRlHmvUAW2FD7ufzKWg="
+ }
+}
diff --git a/modules/papilo/metadata.json b/modules/papilo/metadata.json
new file mode 100644
index 00000000000..a77a9931403
--- /dev/null
+++ b/modules/papilo/metadata.json
@@ -0,0 +1,18 @@
+{
+ "homepage": "https://github.com/scipopt/papilo",
+ "maintainers": [
+ {
+ "email": "lperron@google.com",
+ "github": "lperron",
+ "github_user_id": 11073005,
+ "name": "Laurent Perron"
+ }
+ ],
+ "repository": [
+ "github:scipopt/papilo"
+ ],
+ "versions": [
+ "3.0.0"
+ ],
+ "yanked_versions": {}
+}
From 5f86b8573b2612ed13e69da32170371753d7911a Mon Sep 17 00:00:00 2001
From: Machine account for bazel-contrib
Date: Fri, 16 Jan 2026 11:58:02 -0800
Subject: [PATCH 023/367] {rules_python,rules_python_gazelle_plugin}@1.8.0
(#7175)
Release:
https://github.com/bazel-contrib/rules_python/releases/tag/1.8.0
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: rickeylev <34175098+rickeylev@users.noreply.github.com>
---
modules/rules_python/1.8.0/MODULE.bazel | 460 ++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 +
modules/rules_python/1.8.0/presubmit.yml | 33 ++
modules/rules_python/1.8.0/source.json | 9 +
modules/rules_python/metadata.json | 3 +-
.../1.8.0/MODULE.bazel | 47 ++
.../patches/module_dot_bazel_version.patch | 12 +
.../1.8.0/presubmit.yml | 41 ++
.../1.8.0/source.json | 9 +
.../rules_python_gazelle_plugin/metadata.json | 3 +-
10 files changed, 627 insertions(+), 2 deletions(-)
create mode 100644 modules/rules_python/1.8.0/MODULE.bazel
create mode 100644 modules/rules_python/1.8.0/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_python/1.8.0/presubmit.yml
create mode 100644 modules/rules_python/1.8.0/source.json
create mode 100644 modules/rules_python_gazelle_plugin/1.8.0/MODULE.bazel
create mode 100644 modules/rules_python_gazelle_plugin/1.8.0/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_python_gazelle_plugin/1.8.0/presubmit.yml
create mode 100644 modules/rules_python_gazelle_plugin/1.8.0/source.json
diff --git a/modules/rules_python/1.8.0/MODULE.bazel b/modules/rules_python/1.8.0/MODULE.bazel
new file mode 100644
index 00000000000..8414676ecae
--- /dev/null
+++ b/modules/rules_python/1.8.0/MODULE.bazel
@@ -0,0 +1,460 @@
+module(
+ name = "rules_python",
+ version = "1.8.0",
+ compatibility_level = 1,
+)
+
+bazel_dep(name = "bazel_features", version = "1.21.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "rules_cc", version = "0.1.5")
+bazel_dep(name = "platforms", version = "0.0.11")
+
+# Those are loaded only when using py_proto_library
+# Use py_proto_library directly from protobuf repository
+bazel_dep(name = "protobuf", version = "29.0-rc2", repo_name = "com_google_protobuf")
+
+rules_python_config = use_extension("//python/extensions:config.bzl", "config")
+use_repo(
+ rules_python_config,
+ "pypi__build",
+ "pypi__click",
+ "pypi__colorama",
+ "pypi__importlib_metadata",
+ "pypi__installer",
+ "pypi__more_itertools",
+ "pypi__packaging",
+ "pypi__pep517",
+ "pypi__pip",
+ "pypi__pip_tools",
+ "pypi__pyproject_hooks",
+ "pypi__setuptools",
+ "pypi__tomli",
+ "pypi__wheel",
+ "pypi__zipp",
+ "rules_python_internal",
+)
+
+# We need to do another use_extension call to expose the "pythons_hub"
+# repo.
+python = use_extension("//python/extensions:python.bzl", "python")
+
+# The default toolchain to use if nobody configures a toolchain.
+# NOTE: This is not a stable version. It is provided for convenience, but will
+# change frequently to track the most recent Python version.
+# NOTE: The root module can override this.
+# NOTE: There must be a corresponding `python.toolchain()` call for the version
+# specified here.
+python.defaults(
+ python_version = "3.11",
+)
+python.toolchain(
+ python_version = "3.11",
+)
+use_repo(
+ python,
+ "python_3_11",
+ "pythons_hub",
+ python = "python_versions",
+)
+
+# This call registers the Python toolchains.
+register_toolchains("@pythons_hub//:all")
+
+#####################
+# Install twine for our own runfiles wheel publishing and allow bzlmod users to use it.
+
+pip = use_extension("//python/extensions:pip.bzl", "pip")
+
+# NOTE @aignas 2025-07-06: we define these platforms to keep backwards compatibility with the
+# current `experimental_index_url` implementation. Whilst we stabilize the API this list may be
+# updated with a mention in the CHANGELOG.
+[
+ pip.default(
+ arch_name = cpu,
+ config_settings = [
+ "@platforms//cpu:{}".format(cpu),
+ "@platforms//os:linux",
+ "//python/config_settings:_is_py_freethreaded_{}".format(
+ "yes" if freethreaded else "no",
+ ),
+ ],
+ env = {"platform_version": "0"},
+ marker = "python_version >= '3.13'" if freethreaded else "",
+ os_name = "linux",
+ platform = "linux_{}{}".format(cpu, freethreaded),
+ whl_abi_tags = ["cp{major}{minor}t"] if freethreaded else [
+ "abi3",
+ "cp{major}{minor}",
+ ],
+ whl_platform_tags = [
+ "linux_{}".format(cpu),
+ "manylinux_*_{}".format(cpu),
+ ],
+ )
+ for cpu in [
+ "x86_64",
+ "aarch64",
+ ]
+ for freethreaded in [
+ "",
+ "_freethreaded",
+ ]
+]
+
+[
+ pip.default(
+ arch_name = cpu,
+ config_settings = [
+ "@platforms//cpu:{}".format(cpu),
+ "@platforms//os:osx",
+ "//python/config_settings:_is_py_freethreaded_{}".format(
+ "yes" if freethreaded else "no",
+ ),
+ ],
+ # We choose the oldest non-EOL version at the time when we release `rules_python`.
+ # See https://endoflife.date/macos
+ env = {"platform_version": "14.0"},
+ marker = "python_version >= '3.13'" if freethreaded else "",
+ os_name = "osx",
+ platform = "osx_{}{}".format(cpu, freethreaded),
+ whl_abi_tags = ["cp{major}{minor}t"] if freethreaded else [
+ "abi3",
+ "cp{major}{minor}",
+ ],
+ whl_platform_tags = [
+ "macosx_*_{}".format(suffix)
+ for suffix in platform_tag_cpus
+ ],
+ )
+ for cpu, platform_tag_cpus in {
+ "aarch64": [
+ "universal2",
+ "arm64",
+ ],
+ "x86_64": [
+ "universal2",
+ "x86_64",
+ ],
+ }.items()
+ for freethreaded in [
+ "",
+ "_freethreaded",
+ ]
+]
+
+[
+ pip.default(
+ arch_name = cpu,
+ config_settings = [
+ "@platforms//cpu:{}".format(cpu),
+ "@platforms//os:windows",
+ "//python/config_settings:_is_py_freethreaded_{}".format(
+ "yes" if freethreaded else "no",
+ ),
+ ],
+ env = {"platform_version": "0"},
+ marker = "python_version >= '3.13'" if freethreaded else "",
+ os_name = "windows",
+ platform = "windows_{}{}".format(cpu, freethreaded),
+ whl_abi_tags = ["cp{major}{minor}t"] if freethreaded else [
+ "abi3",
+ "cp{major}{minor}",
+ ],
+ whl_platform_tags = whl_platform_tags,
+ )
+ for cpu, whl_platform_tags in {
+ "x86_64": ["win_amd64"],
+ }.items()
+ for freethreaded in [
+ "",
+ "_freethreaded",
+ ]
+]
+
+[
+ pip.default(
+ arch_name = cpu,
+ config_settings = [
+ "@platforms//cpu:{}".format(cpu),
+ "@platforms//os:windows",
+ "//python/config_settings:_is_py_freethreaded_{}".format(
+ "yes" if freethreaded else "no",
+ ),
+ ],
+ env = {"platform_version": "0"},
+ marker = "python_version >= '3.13'" if freethreaded else "python_version >= '3.11'",
+ os_name = "windows",
+ platform = "windows_{}{}".format(cpu, freethreaded),
+ whl_abi_tags = ["cp{major}{minor}t"] if freethreaded else [
+ "abi3",
+ "cp{major}{minor}",
+ ],
+ whl_platform_tags = whl_platform_tags,
+ )
+ for cpu, whl_platform_tags in {
+ "aarch64": ["win_arm64"],
+ }.items()
+ for freethreaded in [
+ "",
+ "_freethreaded",
+ ]
+]
+
+pip.parse(
+ hub_name = "rules_python_publish_deps",
+ python_version = "3.11",
+ requirements_by_platform = {
+ "//tools/publish:requirements_darwin.txt": "osx_*",
+ "//tools/publish:requirements_linux.txt": "linux_*",
+ "//tools/publish:requirements_windows.txt": "windows_*",
+ },
+)
+use_repo(pip, "rules_python_publish_deps")
+
+# Not a dev dependency to allow usage of //sphinxdocs code, which refers to stardoc repos.
+bazel_dep(name = "stardoc", version = "0.7.2", repo_name = "io_bazel_stardoc")
+
+# ===== DEV ONLY DEPS AND SETUP BELOW HERE =====
+bazel_dep(name = "rules_bazel_integration_test", version = "0.27.0", dev_dependency = True)
+bazel_dep(name = "rules_testing", version = "0.6.0", dev_dependency = True)
+bazel_dep(name = "rules_shell", version = "0.3.0", dev_dependency = True)
+bazel_dep(name = "rules_multirun", version = "0.9.0", dev_dependency = True)
+bazel_dep(name = "bazel_ci_rules", version = "1.0.0", dev_dependency = True)
+bazel_dep(name = "rules_pkg", version = "1.0.1", dev_dependency = True)
+bazel_dep(name = "other", version = "0", dev_dependency = True)
+bazel_dep(name = "another_module", version = "0", dev_dependency = True)
+
+# Extra gazelle plugin deps so that WORKSPACE.bzlmod can continue including it for e2e tests.
+# We use `WORKSPACE.bzlmod` because it is impossible to have dev-only local overrides.
+bazel_dep(name = "rules_go", version = "0.41.0", dev_dependency = True, repo_name = "io_bazel_rules_go")
+
+internal_dev_deps = use_extension(
+ "//python/private:internal_dev_deps.bzl",
+ "internal_dev_deps",
+ dev_dependency = True,
+)
+use_repo(
+ internal_dev_deps,
+ "buildkite_config",
+ "implicit_namespace_ns_sub1",
+ "implicit_namespace_ns_sub2",
+ "pkgutil_nspkg1",
+ "pkgutil_nspkg2",
+ "rules_python_runtime_env_tc_info",
+ "somepkg_with_build_files",
+ "whl_with_build_files",
+)
+
+dev_rules_python_config = use_extension(
+ "//python/extensions:config.bzl",
+ "config",
+ dev_dependency = True,
+)
+dev_rules_python_config.add_transition_setting(
+ # Intentionally add a setting already present for testing
+ setting = "//python/config_settings:python_version",
+)
+dev_rules_python_config.add_transition_setting(
+ setting = "//tests/multi_pypi:external_deps_name",
+)
+
+local_path_override(
+ module_name = "other",
+ path = "tests/modules/other",
+)
+
+local_path_override(
+ module_name = "another_module",
+ path = "tests/modules/another_module",
+)
+
+dev_python = use_extension(
+ "//python/extensions:python.bzl",
+ "python",
+ dev_dependency = True,
+)
+dev_python.override(
+ register_all_versions = True,
+)
+
+# For testing an arbitrary runtime triggered by a custom flag.
+# See //tests/toolchains:custom_platform_toolchain_test
+dev_python.single_version_platform_override(
+ platform = "linux-x86-install-only-stripped",
+ python_version = "3.13.1",
+ sha256 = "56817aa976e4886bec1677699c136cb01c1cdfe0495104c0d8ef546541864bbb",
+ target_compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
+ ],
+ target_settings = [
+ "@@//tests/support:is_custom_runtime_linux-x86-install-only-stripped",
+ ],
+ urls = ["https://github.com/astral-sh/python-build-standalone/releases/download/20250115/cpython-3.13.1+20250115-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz"],
+)
+
+dev_pip = use_extension(
+ "//python/extensions:pip.bzl",
+ "pip",
+ dev_dependency = True,
+)
+
+[
+ dev_pip.parse(
+ download_only = True,
+ experimental_index_url = "https://pypi.org/simple",
+ hub_name = "dev_pip",
+ parallel_download = False,
+ python_version = python_version,
+ requirements_lock = "//docs:requirements.txt",
+ # Ensure that we are setting up the following platforms
+ target_platforms = [
+ "{os}_{arch}",
+ "{os}_{arch}_freethreaded",
+ ],
+ )
+ for python_version in [
+ "3.9",
+ "3.10",
+ "3.11",
+ "3.12",
+ "3.13",
+ "3.14",
+ ]
+]
+
+dev_pip.parse(
+ download_only = True,
+ experimental_index_url = "https://pypi.org/simple",
+ hub_name = "pypiserver",
+ python_version = "3.11",
+ requirements_lock = "//examples/wheel:requirements_server.txt",
+)
+dev_pip.parse(
+ hub_name = "pypi_alpha",
+ python_version = "3.11",
+ requirements_lock = "//tests/multi_pypi/alpha:requirements.txt",
+)
+dev_pip.parse(
+ hub_name = "pypi_beta",
+ python_version = "3.11",
+ requirements_lock = "//tests/multi_pypi/beta:requirements.txt",
+)
+use_repo(dev_pip, "dev_pip", "pypi_alpha", "pypi_beta", "pypiserver")
+
+# Bazel integration test setup below
+
+bazel_binaries = use_extension(
+ "@rules_bazel_integration_test//:extensions.bzl",
+ "bazel_binaries",
+ dev_dependency = True,
+)
+
+# Keep in sync with //:version.bzl
+bazel_binaries.local(
+ name = "self",
+ path = "tests/integration/bazel_from_env",
+)
+bazel_binaries.download(version = "7.4.1")
+bazel_binaries.download(version = "8.0.0")
+bazel_binaries.download(version = "9.0.0rc1")
+use_repo(
+ bazel_binaries,
+ "bazel_binaries",
+ # These don't appear necessary, but are reported as direct dependencies
+ # that should be use_repo()'d, so we add them as requested
+ "bazel_binaries_bazelisk",
+ "build_bazel_bazel_7_4_1",
+ "build_bazel_bazel_8_0_0",
+ "build_bazel_bazel_9_0_0rc1",
+ # "build_bazel_bazel_rolling",
+ "build_bazel_bazel_self",
+)
+
+# TODO @aignas 2025-01-27: should this be moved to `//python/extensions:uv.bzl` or should
+# it stay as it is? I think I may prefer to move it.
+uv = use_extension("//python/uv:uv.bzl", "uv")
+
+# Here is how we can define platforms for the `uv` binaries - this will affect
+# all of the downstream callers because we are using the extension without
+# `dev_dependency = True`.
+uv.default(
+ base_url = "https://github.com/astral-sh/uv/releases/download",
+ manifest_filename = "dist-manifest.json",
+ version = "0.6.3",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:macos",
+ "@platforms//cpu:aarch64",
+ ],
+ platform = "aarch64-apple-darwin",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:aarch64",
+ ],
+ platform = "aarch64-unknown-linux-gnu",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:ppc",
+ ],
+ platform = "powerpc64-unknown-linux-gnu",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:ppc64le",
+ ],
+ platform = "powerpc64le-unknown-linux-gnu",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:s390x",
+ ],
+ platform = "s390x-unknown-linux-gnu",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:riscv64",
+ ],
+ platform = "riscv64-unknown-linux-gnu",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:macos",
+ "@platforms//cpu:x86_64",
+ ],
+ platform = "x86_64-apple-darwin",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:windows",
+ "@platforms//cpu:x86_64",
+ ],
+ platform = "x86_64-pc-windows-msvc",
+)
+uv.default(
+ compatible_with = [
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
+ ],
+ platform = "x86_64-unknown-linux-gnu",
+)
+use_repo(uv, "uv")
+
+register_toolchains("@uv//:all")
+
+uv_dev = use_extension(
+ "//python/uv:uv.bzl",
+ "uv",
+ dev_dependency = True,
+)
+uv_dev.configure(
+ version = "0.6.2",
+)
diff --git a/modules/rules_python/1.8.0/patches/module_dot_bazel_version.patch b/modules/rules_python/1.8.0/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..46641bc5e27
--- /dev/null
+++ b/modules/rules_python/1.8.0/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "rules_python",
+- version = "0.0.0",
++ version = "1.8.0",
+ compatibility_level = 1,
+ )
+
+ bazel_dep(name = "bazel_features", version = "1.21.0")
diff --git a/modules/rules_python/1.8.0/presubmit.yml b/modules/rules_python/1.8.0/presubmit.yml
new file mode 100644
index 00000000000..1ad61c7f5a3
--- /dev/null
+++ b/modules/rules_python/1.8.0/presubmit.yml
@@ -0,0 +1,33 @@
+# Copyright 2023 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+bcr_test_module:
+ module_path: "examples/bzlmod"
+ matrix:
+ platform: ["debian11", "macos", "ubuntu2204", "windows"]
+ bazel: [7.*, 8.*, 9.*]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_flags:
+ # Minimum bazel supported C++
+ - "--keep_going"
+ - '--cxxopt=-std=c++17'
+ - '--host_cxxopt=-std=c++17'
+ build_targets:
+ - "//..."
+ test_targets:
+ - "//..."
diff --git a/modules/rules_python/1.8.0/source.json b/modules/rules_python/1.8.0/source.json
new file mode 100644
index 00000000000..f94c54fad0c
--- /dev/null
+++ b/modules/rules_python/1.8.0/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-BVgCGrvSRPPitREgp+xL3tN8bLAsNyqqGI2pujdVYNg=",
+ "strip_prefix": "rules_python-1.8.0",
+ "url": "https://github.com/bazel-contrib/rules_python/releases/download/1.8.0/rules_python-1.8.0.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-jEwX4xJZQzd66skw1kDa1opyKpC/iwzxqNjCIwWnDsE="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_python/metadata.json b/modules/rules_python/metadata.json
index 92e143d503b..5f0343ffaaa 100644
--- a/modules/rules_python/metadata.json
+++ b/modules/rules_python/metadata.json
@@ -102,7 +102,8 @@
"1.8.0-rc1",
"1.8.0-rc2",
"1.8.0-rc3",
- "1.8.0-rc4"
+ "1.8.0-rc4",
+ "1.8.0"
],
"yanked_versions": {
"0.14.0": "rules_python 0.14.0 is broken due to https://github.com/bazelbuild/bazel-central-registry/issues/287, please upgrade to version >= 0.15.0"
diff --git a/modules/rules_python_gazelle_plugin/1.8.0/MODULE.bazel b/modules/rules_python_gazelle_plugin/1.8.0/MODULE.bazel
new file mode 100644
index 00000000000..c2f48143d8e
--- /dev/null
+++ b/modules/rules_python_gazelle_plugin/1.8.0/MODULE.bazel
@@ -0,0 +1,47 @@
+module(
+ name = "rules_python_gazelle_plugin",
+ version = "1.8.0",
+ compatibility_level = 1,
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "rules_python", version = "0.18.0")
+bazel_dep(name = "rules_go", version = "0.59.0", repo_name = "io_bazel_rules_go")
+bazel_dep(name = "gazelle", version = "0.47.0", repo_name = "bazel_gazelle")
+bazel_dep(name = "rules_cc", version = "0.0.16")
+
+local_path_override(
+ module_name = "rules_python",
+ path = "..",
+)
+
+go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
+go_deps.from_file(go_mod = "//:go.mod")
+use_repo(
+ go_deps,
+ "com_github_bazelbuild_buildtools",
+ "com_github_bmatcuk_doublestar_v4",
+ "com_github_emirpasic_gods",
+ "com_github_ghodss_yaml",
+ "com_github_smacker_go_tree_sitter",
+ "com_github_stretchr_testify",
+ "in_gopkg_yaml_v2",
+ "org_golang_x_sync",
+)
+
+python_stdlib_list = use_extension("//python:extensions.bzl", "python_stdlib_list")
+use_repo(
+ python_stdlib_list,
+ "python_stdlib_list",
+)
+
+internal_dev_deps = use_extension(
+ "//:internal_dev_deps.bzl",
+ "internal_dev_deps_extension",
+ dev_dependency = True,
+)
+use_repo(
+ internal_dev_deps,
+ "django-types",
+ "pytest",
+)
diff --git a/modules/rules_python_gazelle_plugin/1.8.0/patches/module_dot_bazel_version.patch b/modules/rules_python_gazelle_plugin/1.8.0/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..74238693bde
--- /dev/null
+++ b/modules/rules_python_gazelle_plugin/1.8.0/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "rules_python_gazelle_plugin",
+- version = "0.0.0",
++ version = "1.8.0",
+ compatibility_level = 1,
+ )
+
+ bazel_dep(name = "bazel_skylib", version = "1.8.2")
diff --git a/modules/rules_python_gazelle_plugin/1.8.0/presubmit.yml b/modules/rules_python_gazelle_plugin/1.8.0/presubmit.yml
new file mode 100644
index 00000000000..99647cac6ff
--- /dev/null
+++ b/modules/rules_python_gazelle_plugin/1.8.0/presubmit.yml
@@ -0,0 +1,41 @@
+# Copyright 2023 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+bcr_test_module:
+ module_path: "examples/bzlmod_build_file_generation"
+ matrix:
+ platform: [
+ "debian11",
+ "macos",
+ "ubuntu2204",
+ ]
+ bazel: [7.*, 8.*, 9.*]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ shell_commands:
+ - "echo 'common --override_module=rules_python=' >> .bazelrc"
+ - "bazel run //:gazelle_python_manifest.update"
+ - "bazel run //:gazelle -- update"
+ batch_commands:
+ - "echo common --override_module=rules_python= >> .bazelrc"
+ - "bazel run //:gazelle_python_manifest.update"
+ - "bazel run //:gazelle -- update"
+ build_targets:
+ - "//..."
+ - ":modules_map"
+ test_targets:
+ - "//..."
diff --git a/modules/rules_python_gazelle_plugin/1.8.0/source.json b/modules/rules_python_gazelle_plugin/1.8.0/source.json
new file mode 100644
index 00000000000..4b82d9ce910
--- /dev/null
+++ b/modules/rules_python_gazelle_plugin/1.8.0/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-BVgCGrvSRPPitREgp+xL3tN8bLAsNyqqGI2pujdVYNg=",
+ "strip_prefix": "rules_python-1.8.0/gazelle",
+ "url": "https://github.com/bazel-contrib/rules_python/releases/download/1.8.0/rules_python-1.8.0.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-NQ4m8ilUQqxHlEnry/pw3fJZ4XznGYUOlUwEeZSZ7wA="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_python_gazelle_plugin/metadata.json b/modules/rules_python_gazelle_plugin/metadata.json
index 5c7e0402943..7a40bb725d8 100644
--- a/modules/rules_python_gazelle_plugin/metadata.json
+++ b/modules/rules_python_gazelle_plugin/metadata.json
@@ -83,7 +83,8 @@
"1.8.0-rc1",
"1.8.0-rc2",
"1.8.0-rc3",
- "1.8.0-rc4"
+ "1.8.0-rc4",
+ "1.8.0"
],
"yanked_versions": {}
}
From df9cb6837ca6ef0ffd34fdf41cd3fd51f7dbd0f0 Mon Sep 17 00:00:00 2001
From: Noah Watkins
Date: Fri, 16 Jan 2026 20:20:30 -0800
Subject: [PATCH 024/367] Add seastar@25.12.0.bcr.1 (#7179)
This adds the Seastar testing library, but does not require any changes
to upstream.
Signed-off-by: Noah Watkins
---
.../MODULE.bazel | 25 +
.../README.md | 3 +
.../overlay/BUILD.bazel | 663 ++++++++++++++++++
.../presubmit.yml | 20 +
.../source.json | 8 +
modules/seastar/metadata.json | 3 +-
6 files changed, 721 insertions(+), 1 deletion(-)
create mode 100644 modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/MODULE.bazel
create mode 100644 modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/README.md
create mode 100644 modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/overlay/BUILD.bazel
create mode 100644 modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/presubmit.yml
create mode 100644 modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/source.json
diff --git a/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/MODULE.bazel b/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..dd3a1036ce4
--- /dev/null
+++ b/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/MODULE.bazel
@@ -0,0 +1,25 @@
+module(
+ name = "seastar",
+ version = "25.20.0-20251218145026-53615b6e541a.bcr.1",
+ bazel_compatibility = [">=7.2.1"],
+ compatibility_level = 0,
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.9.0")
+bazel_dep(name = "protobuf", version = "33.1")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "rules_proto", version = "7.1.0")
+bazel_dep(name = "rules_python", version = "1.7.0")
+bazel_dep(name = "boost.algorithm", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.asio", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.endian", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.intrusive", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.lockfree", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.program_options", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.range", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.test", version = "1.89.0.bcr.2")
+bazel_dep(name = "c-ares", version = "1.34.5.bcr.3")
+bazel_dep(name = "fmt", version = "11.2.0.bcr.1")
+bazel_dep(name = "liburing", version = "2.10")
+bazel_dep(name = "lz4", version = "1.10.0.bcr.1")
+bazel_dep(name = "yaml-cpp", version = "0.8.0")
diff --git a/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/README.md b/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/README.md
new file mode 100644
index 00000000000..2118c3e42ba
--- /dev/null
+++ b/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/README.md
@@ -0,0 +1,3 @@
+The BUILD overlay is created primarily from the latest version of the Seastar
+Bazel build in https://github.com/redpanda-data/redpanda.git. Minor changes are
+introduced to work with upstream Seastar.
diff --git a/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/overlay/BUILD.bazel b/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/overlay/BUILD.bazel
new file mode 100644
index 00000000000..bdbea0c627d
--- /dev/null
+++ b/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/overlay/BUILD.bazel
@@ -0,0 +1,663 @@
+load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "int_flag")
+load("@protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
+load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("@rules_proto//proto:defs.bzl", "proto_library")
+load("@rules_python//python:defs.bzl", "py_binary")
+
+bool_flag(
+ name = "stack_guards",
+ build_setting_default = False,
+)
+
+bool_flag(
+ name = "task_backtrace",
+ build_setting_default = False,
+)
+
+bool_flag(
+ name = "heap_profiling",
+ build_setting_default = True,
+)
+
+bool_flag(
+ name = "logger_compile_time_fmt",
+ build_setting_default = True,
+)
+
+bool_flag(
+ name = "debug_allocations",
+ build_setting_default = False,
+)
+
+bool_flag(
+ name = "sstring",
+ build_setting_default = True,
+)
+
+bool_flag(
+ name = "io_uring",
+ build_setting_default = True,
+)
+
+bool_flag(
+ name = "system_allocator",
+ build_setting_default = False,
+)
+
+bool_flag(
+ name = "debug",
+ build_setting_default = False,
+)
+
+bool_flag(
+ name = "shuffle_task_queue",
+ build_setting_default = False,
+)
+
+int_flag(
+ name = "api_level",
+ build_setting_default = 9,
+ make_variable = "API_LEVEL",
+)
+
+int_flag(
+ name = "scheduling_groups",
+ build_setting_default = 16,
+ make_variable = "SCHEDULING_GROUPS",
+)
+
+config_setting(
+ name = "use_stack_guards",
+ flag_values = {
+ ":stack_guards": "true",
+ },
+)
+
+config_setting(
+ name = "use_sstring",
+ flag_values = {
+ ":sstring": "true",
+ },
+)
+
+config_setting(
+ name = "use_logger_compile_time_fmt",
+ flag_values = {
+ ":logger_compile_time_fmt": "true",
+ },
+)
+
+config_setting(
+ name = "use_task_backtrace",
+ flag_values = {
+ ":task_backtrace": "true",
+ },
+)
+
+config_setting(
+ name = "use_debug_allocations",
+ flag_values = {
+ ":debug_allocations": "true",
+ },
+)
+
+config_setting(
+ name = "use_io_uring",
+ flag_values = {
+ ":io_uring": "true",
+ },
+)
+
+config_setting(
+ name = "use_heap_profiling",
+ flag_values = {
+ ":heap_profiling": "true",
+ },
+)
+
+config_setting(
+ name = "use_system_allocator",
+ flag_values = {
+ ":system_allocator": "true",
+ },
+)
+
+config_setting(
+ name = "with_debug",
+ flag_values = {
+ ":debug": "true",
+ },
+)
+
+config_setting(
+ name = "with_shuffle_task_queue",
+ flag_values = {
+ ":shuffle_task_queue": "true",
+ },
+)
+
+py_binary(
+ name = "seastar-json2code",
+ srcs = ["scripts/seastar-json2code.py"],
+ visibility = ["//visibility:public"],
+)
+
+genrule(
+ name = "http_request_parser",
+ srcs = ["src/http/request_parser.rl"],
+ outs = ["include/seastar/http/request_parser.hh"],
+ cmd = "ragel -G2 -o $@ $(SRCS)",
+)
+
+genrule(
+ name = "http_response_parser",
+ srcs = ["src/http/response_parser.rl"],
+ outs = ["include/seastar/http/response_parser.hh"],
+ cmd = "ragel -G2 -o $@ $(SRCS)",
+)
+
+genrule(
+ name = "http_chunk_parsers",
+ srcs = ["src/http/chunk_parsers.rl"],
+ outs = ["include/seastar/http/chunk_parsers.hh"],
+ cmd = "ragel -G2 -o $@ $(SRCS)",
+)
+
+proto_library(
+ name = "metrics_proto",
+ srcs = ["src/proto/metrics2.proto"],
+ deps = ["@protobuf//:timestamp_proto"],
+)
+
+cc_proto_library(
+ name = "metrics_cc_proto",
+ deps = [":metrics_proto"],
+)
+
+cc_library(
+ name = "seastar",
+ srcs = [
+ "src/core/alien.cc",
+ "src/core/app-template.cc",
+ "src/core/cgroup.hh",
+ "src/core/condition-variable.cc",
+ "src/core/disk_params.cc",
+ "src/core/dpdk_rte.cc",
+ "src/core/exception_hacks.cc",
+ "src/core/execution_stage.cc",
+ "src/core/fair_queue.cc",
+ "src/core/file.cc",
+ "src/core/file-impl.hh",
+ "src/core/fsnotify.cc",
+ "src/core/fsqual.cc",
+ "src/core/fstream.cc",
+ "src/core/future.cc",
+ "src/core/future-util.cc",
+ "src/core/io_queue.cc",
+ "src/core/linux-aio.cc",
+ "src/core/memory.cc",
+ "src/core/metrics.cc",
+ "src/core/on_internal_error.cc",
+ "src/core/posix.cc",
+ "src/core/prefault.hh",
+ "src/core/program_options.cc",
+ "src/core/program_options.hh",
+ "src/core/prometheus.cc",
+ "src/core/prometheus-impl.hh",
+ "src/core/reactor.cc",
+ "src/core/reactor_backend.cc",
+ "src/core/reactor_backend.hh",
+ "src/core/resource.cc",
+ "src/core/scollectd.cc",
+ "src/core/scollectd-impl.hh",
+ "src/core/semaphore.cc",
+ "src/core/sharded.cc",
+ "src/core/signal.cc",
+ "src/core/smp.cc",
+ "src/core/sstring.cc",
+ "src/core/syscall_result.hh",
+ "src/core/syscall_work_queue.hh",
+ "src/core/systemwide_memory_barrier.cc",
+ "src/core/thread.cc",
+ "src/core/thread_pool.cc",
+ "src/core/thread_pool.hh",
+ "src/core/uname.cc",
+ "src/core/vla.hh",
+ "src/http/api_docs.cc",
+ "src/http/client.cc",
+ "src/http/common.cc",
+ "src/http/file_handler.cc",
+ "src/http/httpd.cc",
+ "src/http/json_path.cc",
+ "src/http/matcher.cc",
+ "src/http/mime_types.cc",
+ "src/http/reply.cc",
+ "src/http/request.cc",
+ "src/http/retry_strategy.cc",
+ "src/http/routes.cc",
+ "src/http/transformers.cc",
+ "src/http/url.cc",
+ "src/json/formatter.cc",
+ "src/json/json_elements.cc",
+ "src/net/arp.cc",
+ "src/net/config.cc",
+ "src/net/dhcp.cc",
+ "src/net/dns.cc",
+ "src/net/dpdk.cc",
+ "src/net/ethernet.cc",
+ "src/net/inet_address.cc",
+ "src/net/ip.cc",
+ "src/net/ip_checksum.cc",
+ "src/net/native-stack.cc",
+ "src/net/native-stack-impl.hh",
+ "src/net/net.cc",
+ "src/net/packet.cc",
+ "src/net/posix-stack.cc",
+ "src/net/proxy.cc",
+ "src/net/socket_address.cc",
+ "src/net/stack.cc",
+ "src/net/tcp.cc",
+ "src/net/tls.cc",
+ "src/net/udp.cc",
+ "src/net/unix_address.cc",
+ "src/net/virtio.cc",
+ "src/rpc/lz4_compressor.cc",
+ "src/rpc/lz4_fragmented_compressor.cc",
+ "src/rpc/rpc.cc",
+ "src/util/alloc_failure_injector.cc",
+ "src/util/backtrace.cc",
+ "src/util/conversions.cc",
+ "src/util/exceptions.cc",
+ "src/util/file.cc",
+ "src/util/log.cc",
+ "src/util/process.cc",
+ "src/util/program-options.cc",
+ "src/util/read_first_line.cc",
+ "src/util/short_streams.cc",
+ "src/util/tmp_file.cc",
+ "src/websocket/common.cc",
+ "src/websocket/parser.cc",
+ "src/websocket/server.cc",
+ ],
+ hdrs = [
+ "include/seastar/core/abort_on_ebadf.hh",
+ "include/seastar/core/abort_on_expiry.hh",
+ "include/seastar/core/abort_source.hh",
+ "include/seastar/core/abortable_fifo.hh",
+ "include/seastar/core/alien.hh",
+ "include/seastar/core/align.hh",
+ "include/seastar/core/aligned_buffer.hh",
+ "include/seastar/core/app-template.hh",
+ "include/seastar/core/bitops.hh",
+ "include/seastar/core/bitset-iter.hh",
+ "include/seastar/core/byteorder.hh",
+ "include/seastar/core/cacheline.hh",
+ "include/seastar/core/checked_ptr.hh",
+ "include/seastar/core/chunked_fifo.hh",
+ "include/seastar/core/circular_buffer.hh",
+ "include/seastar/core/circular_buffer_fixed_capacity.hh",
+ "include/seastar/core/condition-variable.hh",
+ "include/seastar/core/coroutine.hh",
+ "include/seastar/core/deleter.hh",
+ "include/seastar/core/disk_params.hh",
+ "include/seastar/core/distributed.hh",
+ "include/seastar/core/do_with.hh",
+ "include/seastar/core/dpdk_rte.hh",
+ "include/seastar/core/enum.hh",
+ "include/seastar/core/exception_hacks.hh",
+ "include/seastar/core/execution_stage.hh",
+ "include/seastar/core/expiring_fifo.hh",
+ "include/seastar/core/fair_queue.hh",
+ "include/seastar/core/file.hh",
+ "include/seastar/core/file-types.hh",
+ "include/seastar/core/format.hh",
+ "include/seastar/core/fsnotify.hh",
+ "include/seastar/core/fsqual.hh",
+ "include/seastar/core/fstream.hh",
+ "include/seastar/core/function_traits.hh",
+ "include/seastar/core/future.hh",
+ "include/seastar/core/future-util.hh",
+ "include/seastar/core/gate.hh",
+ "include/seastar/core/idle_cpu_handler.hh",
+ "include/seastar/core/internal/api-level.hh",
+ "include/seastar/core/internal/buffer_allocator.hh",
+ "include/seastar/core/internal/current_task.hh",
+ "include/seastar/core/internal/estimated_histogram.hh",
+ "include/seastar/core/internal/io_desc.hh",
+ "include/seastar/core/internal/io_intent.hh",
+ "include/seastar/core/internal/io_request.hh",
+ "include/seastar/core/internal/io_sink.hh",
+ "include/seastar/core/internal/linux-aio.hh",
+ "include/seastar/core/internal/poll.hh",
+ "include/seastar/core/internal/pollable_fd.hh",
+ "include/seastar/core/internal/run_in_background.hh",
+ "include/seastar/core/internal/stall_detector.hh",
+ "include/seastar/core/internal/systemwide_memory_barrier.hh",
+ "include/seastar/core/internal/uname.hh",
+ "include/seastar/core/io_intent.hh",
+ "include/seastar/core/io_priority_class.hh",
+ "include/seastar/core/io_queue.hh",
+ "include/seastar/core/iostream.hh",
+ "include/seastar/core/iostream-impl.hh",
+ "include/seastar/core/layered_file.hh",
+ "include/seastar/core/loop.hh",
+ "include/seastar/core/lowres_clock.hh",
+ "include/seastar/core/make_task.hh",
+ "include/seastar/core/manual_clock.hh",
+ "include/seastar/core/map_reduce.hh",
+ "include/seastar/core/memory.hh",
+ "include/seastar/core/metrics.hh",
+ "include/seastar/core/metrics_api.hh",
+ "include/seastar/core/metrics_registration.hh",
+ "include/seastar/core/metrics_types.hh",
+ "include/seastar/core/on_internal_error.hh",
+ "include/seastar/core/pipe.hh",
+ "include/seastar/core/polymorphic_temporary_buffer.hh",
+ "include/seastar/core/posix.hh",
+ "include/seastar/core/preempt.hh",
+ "include/seastar/core/prefetch.hh",
+ "include/seastar/core/print.hh",
+ "include/seastar/core/prometheus.hh",
+ "include/seastar/core/queue.hh",
+ "include/seastar/core/ragel.hh",
+ "include/seastar/core/reactor.hh",
+ "include/seastar/core/reactor_config.hh",
+ "include/seastar/core/relabel_config.hh",
+ "include/seastar/core/report_exception.hh",
+ "include/seastar/core/resource.hh",
+ "include/seastar/core/rwlock.hh",
+ "include/seastar/core/scattered_message.hh",
+ "include/seastar/core/scheduling.hh",
+ "include/seastar/core/scheduling_specific.hh",
+ "include/seastar/core/scollectd.hh",
+ "include/seastar/core/scollectd_api.hh",
+ "include/seastar/core/seastar.hh",
+ "include/seastar/core/semaphore.hh",
+ "include/seastar/core/shard_id.hh",
+ "include/seastar/core/sharded.hh",
+ "include/seastar/core/shared_future.hh",
+ "include/seastar/core/shared_mutex.hh",
+ "include/seastar/core/shared_ptr.hh",
+ "include/seastar/core/shared_ptr_debug_helper.hh",
+ "include/seastar/core/shared_ptr_incomplete.hh",
+ "include/seastar/core/signal.hh",
+ "include/seastar/core/simple-stream.hh",
+ "include/seastar/core/slab.hh",
+ "include/seastar/core/sleep.hh",
+ "include/seastar/core/smp.hh",
+ "include/seastar/core/smp_options.hh",
+ "include/seastar/core/sstring.hh",
+ "include/seastar/core/stall_sampler.hh",
+ "include/seastar/core/stream.hh",
+ "include/seastar/core/task.hh",
+ "include/seastar/core/temporary_buffer.hh",
+ "include/seastar/core/thread.hh",
+ "include/seastar/core/thread_cputime_clock.hh",
+ "include/seastar/core/thread_impl.hh",
+ "include/seastar/core/timed_out_error.hh",
+ "include/seastar/core/timer.hh",
+ "include/seastar/core/timer-set.hh",
+ "include/seastar/core/transfer.hh",
+ "include/seastar/core/unaligned.hh",
+ "include/seastar/core/units.hh",
+ "include/seastar/core/vector-data-sink.hh",
+ "include/seastar/core/weak_ptr.hh",
+ "include/seastar/core/when_all.hh",
+ "include/seastar/core/when_any.hh",
+ "include/seastar/core/with_scheduling_group.hh",
+ "include/seastar/core/with_timeout.hh",
+ "include/seastar/coroutine/all.hh",
+ "include/seastar/coroutine/as_future.hh",
+ "include/seastar/coroutine/exception.hh",
+ "include/seastar/coroutine/generator.hh",
+ "include/seastar/coroutine/maybe_yield.hh",
+ "include/seastar/coroutine/parallel_for_each.hh",
+ "include/seastar/coroutine/switch_to.hh",
+ "include/seastar/http/api_docs.hh",
+ "include/seastar/http/chunk_parsers.hh",
+ "include/seastar/http/client.hh",
+ "include/seastar/http/common.hh",
+ "include/seastar/http/connection_factory.hh",
+ "include/seastar/http/exception.hh",
+ "include/seastar/http/file_handler.hh",
+ "include/seastar/http/function_handlers.hh",
+ "include/seastar/http/handlers.hh",
+ "include/seastar/http/httpd.hh",
+ "include/seastar/http/internal/content_source.hh",
+ "include/seastar/http/json_path.hh",
+ "include/seastar/http/matcher.hh",
+ "include/seastar/http/matchrules.hh",
+ "include/seastar/http/mime_types.hh",
+ "include/seastar/http/reply.hh",
+ "include/seastar/http/request.hh",
+ "include/seastar/http/request_parser.hh",
+ "include/seastar/http/response_parser.hh",
+ "include/seastar/http/retry_strategy.hh",
+ "include/seastar/http/routes.hh",
+ "include/seastar/http/short_streams.hh",
+ "include/seastar/http/transformers.hh",
+ "include/seastar/http/types.hh",
+ "include/seastar/http/url.hh",
+ "include/seastar/json/formatter.hh",
+ "include/seastar/json/json_elements.hh",
+ "include/seastar/net/api.hh",
+ "include/seastar/net/arp.hh",
+ "include/seastar/net/byteorder.hh",
+ "include/seastar/net/config.hh",
+ "include/seastar/net/const.hh",
+ "include/seastar/net/dhcp.hh",
+ "include/seastar/net/dns.hh",
+ "include/seastar/net/dpdk.hh",
+ "include/seastar/net/ethernet.hh",
+ "include/seastar/net/inet_address.hh",
+ "include/seastar/net/ip.hh",
+ "include/seastar/net/ip_checksum.hh",
+ "include/seastar/net/ipv4_address.hh",
+ "include/seastar/net/ipv6_address.hh",
+ "include/seastar/net/native-stack.hh",
+ "include/seastar/net/net.hh",
+ "include/seastar/net/packet.hh",
+ "include/seastar/net/packet-data-source.hh",
+ "include/seastar/net/packet-util.hh",
+ "include/seastar/net/posix-stack.hh",
+ "include/seastar/net/proxy.hh",
+ "include/seastar/net/socket_defs.hh",
+ "include/seastar/net/stack.hh",
+ "include/seastar/net/tcp.hh",
+ "include/seastar/net/tcp-stack.hh",
+ "include/seastar/net/tls.hh",
+ "include/seastar/net/toeplitz.hh",
+ "include/seastar/net/udp.hh",
+ "include/seastar/net/unix_address.hh",
+ "include/seastar/net/virtio.hh",
+ "include/seastar/net/virtio-interface.hh",
+ "include/seastar/rpc/lz4_compressor.hh",
+ "include/seastar/rpc/lz4_fragmented_compressor.hh",
+ "include/seastar/rpc/multi_algo_compressor_factory.hh",
+ "include/seastar/rpc/rpc.hh",
+ "include/seastar/rpc/rpc_impl.hh",
+ "include/seastar/rpc/rpc_types.hh",
+ "include/seastar/util/alloc_failure_injector.hh",
+ "include/seastar/util/assert.hh",
+ "include/seastar/util/backtrace.hh",
+ "include/seastar/util/bool_class.hh",
+ "include/seastar/util/closeable.hh",
+ "include/seastar/util/conversions.hh",
+ "include/seastar/util/critical_alloc_section.hh",
+ "include/seastar/util/defer.hh",
+ "include/seastar/util/eclipse.hh",
+ "include/seastar/util/exceptions.hh",
+ "include/seastar/util/file.hh",
+ "include/seastar/util/function_input_iterator.hh",
+ "include/seastar/util/indirect.hh",
+ "include/seastar/util/internal/array_map.hh",
+ "include/seastar/util/internal/iovec_utils.hh",
+ "include/seastar/util/internal/magic.hh",
+ "include/seastar/util/iostream.hh",
+ "include/seastar/util/is_smart_ptr.hh",
+ "include/seastar/util/later.hh",
+ "include/seastar/util/lazy.hh",
+ "include/seastar/util/log.hh",
+ "include/seastar/util/log-cli.hh",
+ "include/seastar/util/log-impl.hh",
+ "include/seastar/util/log-level.hh",
+ "include/seastar/util/memory-data-source.hh",
+ "include/seastar/util/memory_diagnostics.hh",
+ "include/seastar/util/noncopyable_function.hh",
+ "include/seastar/util/optimized_optional.hh",
+ "include/seastar/util/print_safe.hh",
+ "include/seastar/util/process.hh",
+ "include/seastar/util/program-options.hh",
+ "include/seastar/util/read_first_line.hh",
+ "include/seastar/util/reference_wrapper.hh",
+ "include/seastar/util/sampler.hh",
+ "include/seastar/util/shared_token_bucket.hh",
+ "include/seastar/util/short_streams.hh",
+ "include/seastar/util/spinlock.hh",
+ "include/seastar/util/std-compat.hh",
+ "include/seastar/util/string_utils.hh",
+ "include/seastar/util/tmp_file.hh",
+ "include/seastar/util/transform_iterator.hh",
+ "include/seastar/util/tuple_utils.hh",
+ "include/seastar/util/used_size.hh",
+ "include/seastar/util/variant_utils.hh",
+ "include/seastar/websocket/common.hh",
+ "include/seastar/websocket/parser.hh",
+ "include/seastar/websocket/server.hh",
+ ],
+ copts = [
+ "-Wno-unused-variable",
+ "-Wno-unused-result",
+ "-Wno-unused-but-set-variable",
+ ] + select({
+ ":use_stack_guards": ["-fstack-clash-protection"],
+ "//conditions:default": [],
+ }),
+ defines = [
+ "BOOST_TEST_DYN_LINK",
+ "BOOST_TEST_NO_LIB",
+ "SEASTAR_API_LEVEL=$(API_LEVEL)",
+ "SEASTAR_HAS_MEMBARRIER",
+ "SEASTAR_SCHEDULING_GROUPS_COUNT=$(SCHEDULING_GROUPS)",
+ "SEASTAR_DEPRECATED_OSTREAM_FORMATTERS",
+ ] + select({
+ ":use_task_backtrace": ["SEASTAR_TASK_BACKTRACE"],
+ "//conditions:default": [],
+ }) + select({
+ ":use_sstring": ["SEASTAR_SSTRING"],
+ "//conditions:default": [],
+ }) + select({
+ ":use_logger_compile_time_fmt": ["SEASTAR_LOGGER_COMPILE_TIME_FMT"],
+ "//conditions:default": [],
+ }) + select({
+ ":use_system_allocator": ["SEASTAR_DEFAULT_ALLOCATOR"],
+ "//conditions:default": [],
+ }) + select({
+ ":with_debug": [
+ "SEASTAR_DEBUG",
+ "SEASTAR_DEBUG_PROMISE",
+ "SEASTAR_DEBUG_SHARED_PTR",
+ "SEASTAR_TYPE_ERASE_MORE",
+ ],
+ "//conditions:default": [],
+ }),
+ includes = [
+ "include",
+ "src",
+ ],
+ linkopts = [
+ "-lhwloc",
+ "-lgnutls",
+ ],
+ local_defines = [
+ "SEASTAR_HAVE_HWLOC",
+ "SEASTAR_DEFERRED_ACTION_REQUIRE_NOEXCEPT",
+ "SEASTAR_HAVE_ASAN_FIBER_SUPPORT",
+ ] + select({
+ ":use_debug_allocations": ["SEASTAR_DEBUG_ALLOCATIONS"],
+ "//conditions:default": [],
+ }) + select({
+ ":use_io_uring": ["SEASTAR_HAVE_URING"],
+ "//conditions:default": [],
+ }) + select({
+ ":use_heap_profiling": ["SEASTAR_HEAPPROF"],
+ "//conditions:default": [],
+ }) + select({
+ ":with_shuffle_task_queue": ["SEASTAR_SHUFFLE_TASK_QUEUE"],
+ "//conditions:default": [],
+ }) + select({
+ ":use_stack_guards": ["SEASTAR_THREAD_STACK_GUARDS"],
+ "//conditions:default": [],
+ }),
+ toolchains = [
+ ":api_level",
+ ":scheduling_groups",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+ deps = [
+ ":metrics_cc_proto",
+ "@boost.algorithm",
+ "@boost.asio",
+ "@boost.endian",
+ "@boost.intrusive",
+ "@boost.lockfree",
+ "@boost.program_options",
+ "@c-ares//:ares",
+ "@fmt",
+ "@lz4",
+ "@protobuf",
+ "@yaml-cpp",
+ ] + select({
+ ":use_io_uring": ["@liburing"],
+ "//conditions:default": [],
+ }),
+)
+
+cc_binary(
+ name = "iotune",
+ srcs = [
+ "apps/iotune/iotune.cc",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":seastar",
+ "@boost.program_options",
+ "@boost.range",
+ "@fmt",
+ "@yaml-cpp",
+ ],
+)
+
+cc_library(
+ name = "testing",
+ testonly = True,
+ srcs = [
+ "src/testing/random.cc",
+ "src/testing/seastar_test.cc",
+ "src/testing/test_runner.cc",
+ ],
+ hdrs = [
+ "include/seastar/testing/entry_point.hh",
+ "include/seastar/testing/exchanger.hh",
+ "include/seastar/testing/random.hh",
+ "include/seastar/testing/seastar_test.hh",
+ "include/seastar/testing/test_case.hh",
+ "include/seastar/testing/test_fixture.hh",
+ "include/seastar/testing/test_runner.hh",
+ "include/seastar/testing/thread_test_case.hh",
+ "include/seastar/testing/on_internal_error.hh",
+ ],
+ includes = [
+ "include",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+ deps = [
+ ":seastar",
+ "@boost.test"
+ ],
+)
diff --git a/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/presubmit.yml b/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..8322cee915c
--- /dev/null
+++ b/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/presubmit.yml
@@ -0,0 +1,20 @@
+matrix:
+ platform:
+ - ubuntu2404
+ bazel:
+ - 8.x
+
+tasks:
+ verify_targets:
+ name: Verify targets
+ platform: ${{ platform }}
+ shell_commands:
+ # there are many, but not all, dependencies are in the bcr
+ - sudo apt-get update
+ - sudo apt-get install -y libhwloc-dev ragel make xfslibs-dev valgrind libgnutls28-dev libsctp-dev
+ bazel: ${{ bazel }}
+ build_flags:
+ - '--cxxopt=-std=c++23'
+ - '--host_cxxopt=-std=c++23'
+ build_targets:
+ - '@seastar//...'
diff --git a/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/source.json b/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/source.json
new file mode 100644
index 00000000000..03262abf3e1
--- /dev/null
+++ b/modules/seastar/25.20.0-20251218145026-53615b6e541a.bcr.1/source.json
@@ -0,0 +1,8 @@
+{
+ "url": "https://github.com/scylladb/seastar/archive/53615b6e541a05101d819b2a52146aa453e473e3.tar.gz",
+ "integrity": "sha256-oqXHvDL2tBBL0jGwC1PYdr0E3iTkNhDPT16wPfz3aRQ=",
+ "strip_prefix": "seastar-53615b6e541a05101d819b2a52146aa453e473e3",
+ "overlay": {
+ "BUILD.bazel": "sha256-H/dXVJWfyWiy/wUhVCxefy0H1dW8W7sHxrPCF8OcHnU="
+ }
+}
diff --git a/modules/seastar/metadata.json b/modules/seastar/metadata.json
index cab2ba71653..332f11caeb1 100644
--- a/modules/seastar/metadata.json
+++ b/modules/seastar/metadata.json
@@ -14,7 +14,8 @@
"versions": [
"25.08.0-20250807194611-1520326e6032",
"25.08.0-20250807194611-1520326e6032.bcr.1",
- "25.20.0-20251218145026-53615b6e541a"
+ "25.20.0-20251218145026-53615b6e541a",
+ "25.20.0-20251218145026-53615b6e541a.bcr.1"
],
"yanked_versions": {}
}
From 9698de2f191ddf67a0a8493dd8bfd22b6aa7b7aa Mon Sep 17 00:00:00 2001
From: "Marvin, the Aspect bot"
Date: Sat, 17 Jan 2026 10:37:01 -0800
Subject: [PATCH 025/367] bazel_lib@3.1.1 (#7181)
Release: https://github.com/bazel-contrib/bazel-lib/releases/tag/v3.1.1
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: alexeagle <47395+alexeagle@users.noreply.github.com>
---
modules/bazel_lib/3.1.1/MODULE.bazel | 84 +++++++++++++++++++
modules/bazel_lib/3.1.1/attestations.json | 17 ++++
.../bazel_lib/3.1.1/patches/go_dev_dep.patch | 13 +++
.../patches/module_dot_bazel_version.patch | 13 +++
modules/bazel_lib/3.1.1/presubmit.yml | 15 ++++
modules/bazel_lib/3.1.1/source.json | 11 +++
modules/bazel_lib/metadata.json | 3 +-
7 files changed, 155 insertions(+), 1 deletion(-)
create mode 100644 modules/bazel_lib/3.1.1/MODULE.bazel
create mode 100644 modules/bazel_lib/3.1.1/attestations.json
create mode 100644 modules/bazel_lib/3.1.1/patches/go_dev_dep.patch
create mode 100644 modules/bazel_lib/3.1.1/patches/module_dot_bazel_version.patch
create mode 100644 modules/bazel_lib/3.1.1/presubmit.yml
create mode 100644 modules/bazel_lib/3.1.1/source.json
diff --git a/modules/bazel_lib/3.1.1/MODULE.bazel b/modules/bazel_lib/3.1.1/MODULE.bazel
new file mode 100644
index 00000000000..3c88b8ca306
--- /dev/null
+++ b/modules/bazel_lib/3.1.1/MODULE.bazel
@@ -0,0 +1,84 @@
+module(
+ name = "bazel_lib",
+ bazel_compatibility = [">=6.0.0"],
+ compatibility_level = 1,
+ version = "3.1.1",
+)
+
+# Lower-bounds (minimum) versions for direct runtime dependencies
+bazel_dep(name = "bazel_features", version = "1.9.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.1")
+bazel_dep(name = "platforms", version = "0.0.10")
+bazel_dep(name = "rules_shell", version = "0.4.1")
+
+bazel_lib_toolchains = use_extension("@bazel_lib//lib:extensions.bzl", "toolchains")
+bazel_lib_toolchains.copy_directory()
+bazel_lib_toolchains.copy_to_directory()
+bazel_lib_toolchains.coreutils()
+bazel_lib_toolchains.zstd()
+bazel_lib_toolchains.expand_template()
+bazel_lib_toolchains.bats()
+use_repo(bazel_lib_toolchains, "bats_toolchains", "copy_directory_toolchains", "copy_to_directory_toolchains", "coreutils_toolchains", "expand_template_toolchains", "zstd_toolchains")
+
+register_toolchains(
+ "@copy_directory_toolchains//:all",
+ "@copy_to_directory_toolchains//:all",
+ "@coreutils_toolchains//:all",
+ "@expand_template_toolchains//:all",
+ "@bats_toolchains//:all",
+ "@zstd_toolchains//:all",
+)
+
+####### Dev dependencies ########
+
+# To allow /tools to be built from source
+# NOTE: when publishing to BCR, we patch this to be dev_dependency, as we publish pre-built binaries
+# along with our releases.
+IS_RELEASE = True
+
+bazel_dep(
+ name = "gazelle",
+ version = "0.40.0",
+ dev_dependency = IS_RELEASE,
+)
+bazel_dep(
+ name = "rules_go",
+ version = "0.59.0",
+ dev_dependency = IS_RELEASE,
+ repo_name = "io_bazel_rules_go",
+)
+
+go_sdk = use_extension(
+ "@io_bazel_rules_go//go:extensions.bzl",
+ "go_sdk",
+ dev_dependency = IS_RELEASE,
+)
+go_sdk.from_file(go_mod = "//:go.mod")
+
+go_deps = use_extension(
+ "@gazelle//:extensions.bzl",
+ "go_deps",
+ dev_dependency = IS_RELEASE,
+)
+go_deps.from_file(go_mod = "//:go.mod")
+use_repo(
+ go_deps,
+ "com_github_bmatcuk_doublestar_v4",
+ "org_golang_x_exp",
+ "org_golang_x_sys",
+)
+
+host = use_extension("@bazel_lib//lib:extensions.bzl", "host", dev_dependency = True)
+host.host()
+use_repo(host, "bazel_lib_host")
+
+host_platform = use_extension("@platforms//host:extension.bzl", "host_platform")
+use_repo(host_platform, "host_platform")
+
+bazel_dep(name = "bazel_skylib_gazelle_plugin", version = "1.8.2", dev_dependency = True)
+bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True)
+bazel_dep(name = "external_test_repo", dev_dependency = True)
+local_path_override(
+ module_name = "external_test_repo",
+ path = "./lib/tests/external_test_repo",
+)
diff --git a/modules/bazel_lib/3.1.1/attestations.json b/modules/bazel_lib/3.1.1/attestations.json
new file mode 100644
index 00000000000..cb48cc2c7d0
--- /dev/null
+++ b/modules/bazel_lib/3.1.1/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.1.1/source.json.intoto.jsonl",
+ "integrity": "sha256-DfNnbgcBCP4HYLbQ4d3kYhgrwt7wgAnvQJsOpoxfOBE="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.1.1/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-bjXdFVDDqQdovoqTmLAjr2feyQEmUy4oSJWIFBIOg7o="
+ },
+ "bazel-lib-v3.1.1.tar.gz": {
+ "url": "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.1.1/bazel-lib-v3.1.1.tar.gz.intoto.jsonl",
+ "integrity": "sha256-Cc1LBiaiEl3C2bFRFBAvJsB3Sv14UNTF1ePBM+rAOKA="
+ }
+ }
+}
diff --git a/modules/bazel_lib/3.1.1/patches/go_dev_dep.patch b/modules/bazel_lib/3.1.1/patches/go_dev_dep.patch
new file mode 100644
index 00000000000..6e2a7104129
--- /dev/null
+++ b/modules/bazel_lib/3.1.1/patches/go_dev_dep.patch
@@ -0,0 +1,13 @@
+diff --git a/MODULE.bazel b/MODULE.bazel
+index eec026a..4854935 100644
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -33,7 +33,7 @@ register_toolchains(
+ # To allow /tools to be built from source
+ # NOTE: when publishing to BCR, we patch this to be dev_dependency, as we publish pre-built binaries
+ # along with our releases.
+-IS_RELEASE = False
++IS_RELEASE = True
+
+ bazel_dep(
+ name = "gazelle",
diff --git a/modules/bazel_lib/3.1.1/patches/module_dot_bazel_version.patch b/modules/bazel_lib/3.1.1/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..6f5a13e73d9
--- /dev/null
+++ b/modules/bazel_lib/3.1.1/patches/module_dot_bazel_version.patch
@@ -0,0 +1,13 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,8 +1,9 @@
+ module(
+ name = "bazel_lib",
+ bazel_compatibility = [">=6.0.0"],
+ compatibility_level = 1,
++ version = "3.1.1",
+ )
+
+ # Lower-bounds (minimum) versions for direct runtime dependencies
+ bazel_dep(name = "bazel_features", version = "1.9.0")
diff --git a/modules/bazel_lib/3.1.1/presubmit.yml b/modules/bazel_lib/3.1.1/presubmit.yml
new file mode 100644
index 00000000000..d33012d9142
--- /dev/null
+++ b/modules/bazel_lib/3.1.1/presubmit.yml
@@ -0,0 +1,15 @@
+bcr_test_module:
+ module_path: "e2e/smoke"
+ matrix:
+ platform: ["debian11", "macos", "ubuntu2204", "windows"]
+ bazel:
+ - 7.x
+ - 8.x
+ - rolling
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//..."
diff --git a/modules/bazel_lib/3.1.1/source.json b/modules/bazel_lib/3.1.1/source.json
new file mode 100644
index 00000000000..b5c59016932
--- /dev/null
+++ b/modules/bazel_lib/3.1.1/source.json
@@ -0,0 +1,11 @@
+{
+ "integrity": "sha256-BsvNW5ivP1MNILUFqJ+2dh8JlQt4DN13Jt9C7oS0nQQ=",
+ "strip_prefix": "bazel-lib-3.1.1",
+ "docs_url": "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.1.1/bazel-lib-v3.1.1.docs.tar.gz",
+ "url": "https://github.com/bazel-contrib/bazel-lib/releases/download/v3.1.1/bazel-lib-v3.1.1.tar.gz",
+ "patches": {
+ "go_dev_dep.patch": "sha256-boWp7svEiLDFXEIg6hq70JcTom4rYFNzvwfpCPrusDw=",
+ "module_dot_bazel_version.patch": "sha256-hMbbt1iU68OX3J0rplTufH4sTzOTmXoBQx4kJk3Zk1w="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/bazel_lib/metadata.json b/modules/bazel_lib/metadata.json
index f01f9bd8cb7..bd49e7c85ca 100644
--- a/modules/bazel_lib/metadata.json
+++ b/modules/bazel_lib/metadata.json
@@ -28,7 +28,8 @@
"3.0.0-rc.0",
"3.0.0",
"3.0.1",
- "3.1.0"
+ "3.1.0",
+ "3.1.1"
],
"yanked_versions": {}
}
From 7c5b74bffa03b0611e08bfdf98a8d816989c085b Mon Sep 17 00:00:00 2001
From: "Marvin, the Aspect bot"
Date: Sun, 18 Jan 2026 00:58:50 -0800
Subject: [PATCH 026/367] aspect_rules_js@2.9.2 (#7185)
Release: https://github.com/aspect-build/rules_js/releases/tag/v2.9.2
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: jbedard <89246+jbedard@users.noreply.github.com>
---
modules/aspect_rules_js/2.9.2/MODULE.bazel | 319 ++++++++++++++++++
.../aspect_rules_js/2.9.2/attestations.json | 17 +
.../patches/module_dot_bazel_version.patch | 13 +
modules/aspect_rules_js/2.9.2/presubmit.yml | 12 +
modules/aspect_rules_js/2.9.2/source.json | 9 +
modules/aspect_rules_js/metadata.json | 1 +
6 files changed, 371 insertions(+)
create mode 100644 modules/aspect_rules_js/2.9.2/MODULE.bazel
create mode 100644 modules/aspect_rules_js/2.9.2/attestations.json
create mode 100644 modules/aspect_rules_js/2.9.2/patches/module_dot_bazel_version.patch
create mode 100644 modules/aspect_rules_js/2.9.2/presubmit.yml
create mode 100644 modules/aspect_rules_js/2.9.2/source.json
diff --git a/modules/aspect_rules_js/2.9.2/MODULE.bazel b/modules/aspect_rules_js/2.9.2/MODULE.bazel
new file mode 100644
index 00000000000..1b7018e51ab
--- /dev/null
+++ b/modules/aspect_rules_js/2.9.2/MODULE.bazel
@@ -0,0 +1,319 @@
+"aspect-build/rules_js"
+
+module(
+ name = "aspect_rules_js",
+ bazel_compatibility = [">=6.0.0"],
+ compatibility_level = 1,
+ version = "2.9.2",
+)
+
+# Lower-bounds (minimum) versions for direct runtime dependencies.
+# Do not bump these unless rules_js requires a newer version to function.
+bazel_dep(name = "aspect_bazel_lib", version = "2.19.2") # TODO(alexeagle): remove
+bazel_dep(name = "aspect_tools_telemetry", version = "0.3.3")
+bazel_dep(name = "bazel_features", version = "1.9.0")
+bazel_dep(name = "bazel_lib", version = "3.0.0")
+bazel_dep(name = "bazel_skylib", version = "1.5.0")
+bazel_dep(name = "platforms", version = "0.0.5")
+bazel_dep(name = "rules_nodejs", version = "6.3.3")
+bazel_dep(name = "yq.bzl", version = "0.3.2")
+
+tel = use_extension("@aspect_tools_telemetry//:extension.bzl", "telemetry")
+use_repo(tel, "aspect_tools_telemetry_report")
+
+node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
+use_repo(node, "nodejs_toolchains")
+use_repo(node, "nodejs_darwin_amd64")
+use_repo(node, "nodejs_darwin_arm64")
+use_repo(node, "nodejs_linux_amd64")
+use_repo(node, "nodejs_linux_arm64")
+use_repo(node, "nodejs_linux_ppc64le")
+use_repo(node, "nodejs_linux_s390x")
+use_repo(node, "nodejs_windows_amd64")
+
+# The default + public version of pnpm used by default.
+pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm")
+pnpm.pnpm(name = "pnpm")
+use_repo(pnpm, "pnpm", "pnpm__links")
+
+bazel_lib_toolchains = use_extension("@aspect_bazel_lib//lib:extensions.bzl", "toolchains")
+bazel_lib_toolchains.tar()
+use_repo(
+ bazel_lib_toolchains,
+ "bsd_tar_darwin_amd64",
+ "bsd_tar_darwin_arm64",
+ "bsd_tar_linux_amd64",
+ "bsd_tar_linux_arm64",
+ "bsd_tar_toolchains",
+ "bsd_tar_windows_amd64",
+ "bsd_tar_windows_arm64",
+ "coreutils_toolchains",
+)
+
+yq_toolchain = use_extension("@yq.bzl//yq:extensions.bzl", "yq")
+use_repo(
+ yq_toolchain,
+ "yq_darwin_amd64",
+ "yq_darwin_arm64",
+ "yq_linux_amd64",
+ "yq_linux_arm64",
+ "yq_linux_ppc64le",
+ "yq_linux_s390x",
+ "yq_windows_amd64",
+)
+
+####### Dev dependencies ########
+
+# Dev-only pnpm used for local testing
+pnpm10 = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm", dev_dependency = True)
+pnpm10.pnpm(
+ name = "pnpm10",
+ pnpm_version = "10.22.0",
+ pnpm_version_integrity = "sha512-vwSe/plbKPUn/StBrgR0zikYb37cs79UUIe9Yfu+uyv3U2LRMH/aCcLSiOHkmXh6wS1Py2F6l0cYpgUfLu50HA==",
+)
+use_repo(pnpm10, "pnpm10")
+
+bazel_dep(name = "bazelrc-preset.bzl", version = "1.3.0", dev_dependency = True)
+bazel_dep(name = "aspect_rules_lint", version = "1.1.0", dev_dependency = True)
+bazel_dep(name = "buildifier_prebuilt", version = "8.0.1", dev_dependency = True)
+bazel_dep(name = "rules_shell", version = "0.6.1", dev_dependency = True)
+
+# Overrides of non-dev deps for local testing using recent versions
+archive_override(
+ module_name = "rules_nodejs",
+ integrity = "sha256-OY23vNcf28WAxvjReCrpn1JQeRFypf/jHS+dgTjzOC4=",
+ strip_prefix = "rules_nodejs-7cbb1fb5378fb4739e4d9698a14abd9eada900f0",
+ urls = [
+ "https://github.com/bazel-contrib/rules_nodejs/archive/7cbb1fb5378fb4739e4d9698a14abd9eada900f0.tar.gz",
+ ],
+)
+
+host = use_extension(
+ "@aspect_bazel_lib//lib:extensions.bzl",
+ "host",
+ dev_dependency = True,
+)
+host.host()
+use_repo(host, "aspect_bazel_lib_host")
+
+node_dev = use_extension(
+ "@rules_nodejs//nodejs:extensions.bzl",
+ "node",
+ dev_dependency = True,
+)
+use_repo(node_dev, "node16_linux_amd64")
+use_repo(node_dev, "node16_darwin_arm64")
+use_repo(node_dev, "node16_darwin_amd64")
+use_repo(node_dev, "node16_linux_arm64")
+use_repo(node_dev, "node16_linux_s390x")
+use_repo(node_dev, "node16_linux_ppc64le")
+use_repo(node_dev, "node16_windows_amd64")
+use_repo(node_dev, "node18_linux_amd64")
+use_repo(node_dev, "node18_darwin_arm64")
+use_repo(node_dev, "node18_darwin_amd64")
+use_repo(node_dev, "node18_linux_arm64")
+use_repo(node_dev, "node18_linux_s390x")
+use_repo(node_dev, "node18_linux_ppc64le")
+use_repo(node_dev, "node18_windows_amd64")
+use_repo(node_dev, "node20_linux_amd64")
+use_repo(node_dev, "node20_darwin_arm64")
+use_repo(node_dev, "node20_darwin_amd64")
+use_repo(node_dev, "node20_linux_arm64")
+use_repo(node_dev, "node20_linux_s390x")
+use_repo(node_dev, "node20_linux_ppc64le")
+use_repo(node_dev, "node20_windows_amd64")
+use_repo(node_dev, "node22_linux_amd64")
+use_repo(node_dev, "node22_darwin_arm64")
+use_repo(node_dev, "node22_darwin_amd64")
+use_repo(node_dev, "node22_linux_arm64")
+use_repo(node_dev, "node22_linux_s390x")
+use_repo(node_dev, "node22_linux_ppc64le")
+use_repo(node_dev, "node22_windows_amd64")
+use_repo(node_dev, "node24_linux_amd64")
+use_repo(node_dev, "node24_darwin_arm64")
+use_repo(node_dev, "node24_darwin_amd64")
+use_repo(node_dev, "node24_linux_arm64")
+use_repo(node_dev, "node24_linux_s390x")
+use_repo(node_dev, "node24_linux_ppc64le")
+use_repo(node_dev, "node24_windows_amd64")
+node_dev.toolchain(node_version = "18.20.4")
+node_dev.toolchain(
+ name = "node16",
+ node_version = "16.20.0",
+)
+node_dev.toolchain(
+ name = "node18",
+ node_version = "18.20.4",
+)
+node_dev.toolchain(
+ name = "node20",
+ node_version = "20.17.0",
+)
+node_dev.toolchain(
+ name = "node22",
+ node_version = "22.20.0",
+)
+node_dev.toolchain(
+ name = "node24",
+ node_version = "24.9.0",
+)
+
+############################################
+# npm dependencies used by examples
+
+npm = use_extension(
+ "@aspect_rules_js//npm:extensions.bzl",
+ "npm",
+ dev_dependency = True,
+)
+npm.npm_translate_lock(
+ name = "npm",
+ bins = {
+ # derived from "bin" attribute in node_modules/typescript/package.json
+ "typescript": [
+ "tsc=./bin/tsc",
+ "tsserver=./bin/tsserver",
+ ],
+ },
+ custom_postinstalls = {
+ "@aspect-test/c": "echo moo > cow.txt",
+ "@aspect-test/c@2.0.2": "echo mooo >> cow.txt",
+ "pngjs": "chmod -R a+X *", # fixes malformed tarball content file permissions in this package after extraction (see https://github.com/aspect-build/rules_js/issues/1637 for more details)
+ },
+ data = [
+ "//:examples/npm_deps/patches/meaning-of-life@1.0.0-pnpm.patch",
+ "//:package.json",
+ "//:pnpm-workspace.yaml",
+ "//examples/js_binary:package.json",
+ "//examples/js_lib_pkg/a:package.json",
+ "//examples/js_lib_pkg/b:package.json",
+ "//examples/linked_consumer:package.json",
+ "//examples/linked_empty_node_modules:package.json",
+ "//examples/linked_lib:package.json",
+ "//examples/linked_pkg:package.json",
+ "//examples/macro:package.json",
+ "//examples/nextjs:package.json",
+ "//examples/npm_deps:package.json",
+ "//examples/npm_package/libs/lib_a:package.json",
+ "//examples/npm_package/packages/pkg_a:package.json",
+ "//examples/npm_package/packages/pkg_b:package.json",
+ "//examples/npm_package/packages/pkg_d:package.json",
+ "//examples/npm_package/packages/pkg_e:package.json",
+ "//examples/runfiles:package.json",
+ "//examples/stack_traces:package.json",
+ "//examples/vite3:package.json",
+ "//examples/vite6:package.json",
+ "//examples/webpack_cli:package.json",
+ "//js/private/coverage/bundle:package.json",
+ "//js/private/devserver/src:package.json",
+ "//js/private/test/image:package.json",
+ "//js/private/test/js_run_devserver:package.json",
+ "//js/private/test/node-patches:package.json",
+ "//js/private/worker/src:package.json",
+ "//npm/private/test:package.json",
+ "//npm/private/test:vendored/lodash-4.17.21.tgz",
+ "//npm/private/test/npm_package:package.json",
+ "//npm/private/test/npm_package_publish:package.json",
+ "//npm/private/test/vendored/is-odd:package.json",
+ "//npm/private/test/vendored/semver-max:package.json",
+ ],
+ generate_bzl_library_targets = True,
+ lifecycle_hooks = {
+ # We fetch @kubernetes/client-node from source and it has a `prepare` lifecycle hook that needs to be run
+ # which runs the `build` package.json script: https://github.com/kubernetes-client/javascript/blob/fc681991e61c6808dd26012a2331f83671a11218/package.json#L28.
+ # Here we run run build so we just run `tsc` instead of `npm run build` which ends up just running `tsc`.
+ "@kubernetes/client-node": ["build"],
+ # 'install' hook fails as it assumes the following path to `node-pre-gyp`: ./node_modules/.bin/node-pre-gyp
+ # https://github.com/stultuss/protoc-gen-grpc-ts/blob/53d52a9d0e1fe3cbe930dec5581eca89b3dde807/package.json#L28
+ "protoc-gen-grpc@2.0.3": [],
+ },
+ lifecycle_hooks_execution_requirements = {
+ "*": [
+ "no-sandbox",
+ ],
+ # If @kubernetes/client-node is not sandboxed, will fail with
+ # ```
+ # src/azure_auth.ts(97,43): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # src/azure_auth.ts(98,34): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # src/gcp_auth.ts(93,43): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # src/gcp_auth.ts(94,34): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # ```
+ # since a `jsonpath-plus@7.2.0` that is newer then the transitive dep `jsonpath-plus@0.19.0` is found outside of the sandbox that
+ # includes typings that don't match the 0.19.0 "any" usage.
+ "@kubernetes/client-node": [],
+ "@figma/nodegit": [
+ "no-sandbox",
+ "requires-network",
+ ],
+ "esbuild": [
+ "no-sandbox",
+ "requires-network",
+ ],
+ "segfault-handler": [
+ "no-sandbox",
+ "requires-network",
+ ],
+ "puppeteer": [
+ "no-remote",
+ "no-sandbox",
+ "requires-network",
+ ],
+ },
+ npmrc = "//:.npmrc",
+ package_visibility = {
+ "unused": ["//npm/private/test:__subpackages__"],
+ "@mycorp/pkg-a": [
+ "//examples:__subpackages__",
+ "//js/private/test/image:__subpackages__",
+ ],
+ "@mycorp/pkg-d": [
+ "//examples:__subpackages__",
+ "//js/private/test/image:__subpackages__",
+ ],
+ "@mycorp/pkg-e": ["//examples:__subpackages__"],
+ },
+ pnpm_lock = "//:pnpm-lock.yaml",
+ public_hoist_packages = {
+ # Instructs the linker to hoist the ms@2.1.3 npm package to `node_modules/ms` in the `examples/npm_deps` package.
+ # Similar to adding `public-hoist-pattern[]=ms` in .npmrc but with control over which version to hoist and where
+ # to hoist it. This hoisted package can be referenced by the label `//examples/npm_deps:node_modules/ms` same as
+ # other direct dependencies in the `examples/npm_deps/package.json`.
+ "ms@2.1.3": ["examples/npm_deps"],
+ },
+ update_pnpm_lock = True,
+ use_pnpm = "@pnpm10//:package/bin/pnpm.cjs",
+ verify_node_modules_ignored = "//:.bazelignore",
+ verify_patches = "//examples/npm_deps/patches:patches",
+)
+
+# Configure package exclusions using tag class
+npm.npm_exclude_package_contents(
+ package = "chalk",
+ patterns = ["**/README*"],
+)
+use_repo(
+ npm,
+ "npm",
+ "npm__fsevents__2.3.3__links",
+ "npm__rollup__2.70.2",
+ "npm__rollup__2.70.2__links",
+ "npm__unused__0.2.2__links",
+ "npm__webpack-bundle-analyzer__4.5.0_bufferutil_4.0.8",
+)
+
+# As an example, manually import a package using explicit coordinates.
+# Just a demonstration of the syntax de-sugaring.
+npm.npm_import(
+ name = "acorn__8.4.0",
+ bins = {"acorn": "./bin/acorn"},
+ integrity = "sha512-ULr0LDaEqQrMFGyQ3bhJkLsbtrQ8QibAseGZeaSUiT/6zb9IvIkomWHJIvgvwad+hinRAgsI51JcWk2yvwyL+w==",
+ package = "acorn",
+ # Root package where to link the package store
+ root_package = "",
+ version = "8.4.0",
+)
+use_repo(
+ npm,
+ "acorn__8.4.0",
+ "acorn__8.4.0__links",
+)
diff --git a/modules/aspect_rules_js/2.9.2/attestations.json b/modules/aspect_rules_js/2.9.2/attestations.json
new file mode 100644
index 00000000000..eaa0f8d910f
--- /dev/null
+++ b/modules/aspect_rules_js/2.9.2/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v2.9.2/source.json.intoto.jsonl",
+ "integrity": "sha256-MEi/bzdzrrvHuHHa5jPqQkr8EImLeAfRHU7Nq17r3EA="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v2.9.2/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-UZSh152eJXdP2a2btMXnDdS7mP+yroNwTDyLLrbD5Tg="
+ },
+ "rules_js-v2.9.2.tar.gz": {
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v2.9.2/rules_js-v2.9.2.tar.gz.intoto.jsonl",
+ "integrity": "sha256-N/Ct/dV7MAVDgoZY//qQ08P5aFmr5NhthpHPirekV5Y="
+ }
+ }
+}
diff --git a/modules/aspect_rules_js/2.9.2/patches/module_dot_bazel_version.patch b/modules/aspect_rules_js/2.9.2/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..18ab394c354
--- /dev/null
+++ b/modules/aspect_rules_js/2.9.2/patches/module_dot_bazel_version.patch
@@ -0,0 +1,13 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -3,8 +3,9 @@
+ module(
+ name = "aspect_rules_js",
+ bazel_compatibility = [">=6.0.0"],
+ compatibility_level = 1,
++ version = "2.9.2",
+ )
+
+ # Lower-bounds (minimum) versions for direct runtime dependencies.
+ # Do not bump these unless rules_js requires a newer version to function.
diff --git a/modules/aspect_rules_js/2.9.2/presubmit.yml b/modules/aspect_rules_js/2.9.2/presubmit.yml
new file mode 100644
index 00000000000..33b271c8641
--- /dev/null
+++ b/modules/aspect_rules_js/2.9.2/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: 'e2e/bzlmod'
+ matrix:
+ bazel: ['rolling', '8.x', '7.x', '6.x']
+ platform: ['debian10', 'macos', 'ubuntu2004', 'windows']
+ tasks:
+ run_tests:
+ name: 'Run test module'
+ bazel: ${{ bazel }}
+ platform: ${{ platform }}
+ test_targets:
+ - '//...'
diff --git a/modules/aspect_rules_js/2.9.2/source.json b/modules/aspect_rules_js/2.9.2/source.json
new file mode 100644
index 00000000000..025dd7f0dc2
--- /dev/null
+++ b/modules/aspect_rules_js/2.9.2/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-F3RwJVbh0Lg7f161jslWdq/mSBxiWWtT9blldbrMz3M=",
+ "strip_prefix": "rules_js-2.9.2",
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v2.9.2/rules_js-v2.9.2.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-xOCAu0F3eAMe/n2JfrLsTDSFv0U5Nq1GSm8H+2El3Gs="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/aspect_rules_js/metadata.json b/modules/aspect_rules_js/metadata.json
index ff53b510008..7cbc625bb0f 100644
--- a/modules/aspect_rules_js/metadata.json
+++ b/modules/aspect_rules_js/metadata.json
@@ -152,6 +152,7 @@
"2.8.2",
"2.8.3",
"2.9.1",
+ "2.9.2",
"3.0.0-alpha.2",
"3.0.0-alpha.3",
"3.0.0-alpha.4"
From cc541cfb78c25788a8853dc3f226e671fb813c1b Mon Sep 17 00:00:00 2001
From: Chuck Grindel
Date: Sun, 18 Jan 2026 15:48:12 -0700
Subject: [PATCH 027/367] cgrindel_bazel_starlib@0.29.3 (#7193)
Release: https://github.com/cgrindel/bazel-starlib/releases/tag/v0.29.3
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: Chuck Grindel
---
.../0.29.3/MODULE.bazel | 94 +++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 +++
.../0.29.3/patches/remove_last_green.patch | 14 +++
.../0.29.3/presubmit.yml | 12 +++
.../cgrindel_bazel_starlib/0.29.3/source.json | 10 ++
modules/cgrindel_bazel_starlib/metadata.json | 3 +-
6 files changed, 144 insertions(+), 1 deletion(-)
create mode 100644 modules/cgrindel_bazel_starlib/0.29.3/MODULE.bazel
create mode 100644 modules/cgrindel_bazel_starlib/0.29.3/patches/module_dot_bazel_version.patch
create mode 100644 modules/cgrindel_bazel_starlib/0.29.3/patches/remove_last_green.patch
create mode 100644 modules/cgrindel_bazel_starlib/0.29.3/presubmit.yml
create mode 100644 modules/cgrindel_bazel_starlib/0.29.3/source.json
diff --git a/modules/cgrindel_bazel_starlib/0.29.3/MODULE.bazel b/modules/cgrindel_bazel_starlib/0.29.3/MODULE.bazel
new file mode 100644
index 00000000000..78fffedc31f
--- /dev/null
+++ b/modules/cgrindel_bazel_starlib/0.29.3/MODULE.bazel
@@ -0,0 +1,94 @@
+module(
+ name = "cgrindel_bazel_starlib",
+ version = "0.29.3",
+ bazel_compatibility = [">=6.1.0"],
+)
+
+local_git_ext = use_extension("//tools/git:extensions.bzl", "local_git_ext")
+use_repo(local_git_ext, "bazel_starlib_git_toolchains")
+
+register_toolchains(
+ "@bazel_starlib_git_toolchains//:local_git_toolchain",
+)
+
+# MARK: - Runtime Dependencies
+
+bazel_dep(
+ name = "rules_go",
+ version = "0.59.0",
+ repo_name = "io_bazel_rules_go",
+)
+bazel_dep(
+ name = "gazelle",
+ version = "0.44.0",
+ repo_name = "bazel_gazelle",
+)
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(
+ name = "stardoc",
+ version = "0.8.0",
+ repo_name = "io_bazel_stardoc",
+)
+bazel_dep(
+ name = "buildifier_prebuilt",
+ version = "8.2.1.1",
+)
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_shell", version = "0.6.1")
+bazel_dep(name = "rules_multitool", version = "1.0.0")
+bazel_dep(name = "aspect_bazel_lib", version = "2.22.4")
+
+# Override transitive dependency on rules_python 1.0.0 to get
+# incompatible_no_implicit_file_export compatibility (PR #3471).
+bazel_dep(name = "rules_python", version = "1.8.0")
+
+multitool = use_extension(
+ "@rules_multitool//multitool:extension.bzl",
+ "multitool",
+)
+multitool.hub(lockfile = "//tools/gh:multitool.lock.json")
+use_repo(multitool, "multitool")
+
+go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk")
+go_sdk.download(version = "1.23.5")
+
+go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
+go_deps.from_file(go_mod = "//:go.mod")
+use_repo(
+ go_deps,
+ "com_github_creasty_defaults",
+ "com_github_gomarkdown_markdown",
+ "com_github_stretchr_testify",
+ "in_gopkg_yaml_v3",
+)
+
+# MARK: - Dev Dependencies
+
+bazel_dep(
+ name = "bazel_skylib_gazelle_plugin",
+ version = "1.7.1",
+ dev_dependency = True,
+)
+bazel_dep(
+ name = "rules_bazel_integration_test",
+ version = "0.32.0",
+ dev_dependency = True,
+)
+bazel_dep(
+ name = "aspect_rules_lint",
+ version = "2.0.0-beta.1",
+ dev_dependency = True,
+)
+
+bazel_binaries = use_extension(
+ "@rules_bazel_integration_test//:extensions.bzl",
+ "bazel_binaries",
+ dev_dependency = True,
+)
+bazel_binaries.download(version_file = "//:.bazelversion")
+use_repo(
+ bazel_binaries,
+ "bazel_binaries",
+ "bazel_binaries_bazelisk",
+ "build_bazel_bazel_.bazelversion",
+)
diff --git a/modules/cgrindel_bazel_starlib/0.29.3/patches/module_dot_bazel_version.patch b/modules/cgrindel_bazel_starlib/0.29.3/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..e95c0238729
--- /dev/null
+++ b/modules/cgrindel_bazel_starlib/0.29.3/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "cgrindel_bazel_starlib",
+- version = "0.0.0",
++ version = "0.29.3",
+ bazel_compatibility = [">=6.1.0"],
+ )
+
+ local_git_ext = use_extension("//tools/git:extensions.bzl", "local_git_ext")
diff --git a/modules/cgrindel_bazel_starlib/0.29.3/patches/remove_last_green.patch b/modules/cgrindel_bazel_starlib/0.29.3/patches/remove_last_green.patch
new file mode 100644
index 00000000000..738f617a8bf
--- /dev/null
+++ b/modules/cgrindel_bazel_starlib/0.29.3/patches/remove_last_green.patch
@@ -0,0 +1,14 @@
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -86,11 +86,9 @@
+ dev_dependency = True,
+ )
+ bazel_binaries.download(version_file = "//:.bazelversion")
+-bazel_binaries.download(version = "last_green")
+ use_repo(
+ bazel_binaries,
+ "bazel_binaries",
+ "bazel_binaries_bazelisk",
+ "build_bazel_bazel_.bazelversion",
+- "build_bazel_bazel_last_green",
+ )
diff --git a/modules/cgrindel_bazel_starlib/0.29.3/presubmit.yml b/modules/cgrindel_bazel_starlib/0.29.3/presubmit.yml
new file mode 100644
index 00000000000..964ae9e0a9f
--- /dev/null
+++ b/modules/cgrindel_bazel_starlib/0.29.3/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: "examples/bzlmod_e2e"
+ matrix:
+ platform: ["macos", "ubuntu2004"]
+ bazel: ["8.1.1"]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//..."
diff --git a/modules/cgrindel_bazel_starlib/0.29.3/source.json b/modules/cgrindel_bazel_starlib/0.29.3/source.json
new file mode 100644
index 00000000000..742f6a6e250
--- /dev/null
+++ b/modules/cgrindel_bazel_starlib/0.29.3/source.json
@@ -0,0 +1,10 @@
+{
+ "integrity": "sha256-O38xxtOMrmN9SpUbISEoIz4exk7HoYflML7HtFF2xuA=",
+ "strip_prefix": "",
+ "url": "https://github.com/cgrindel/bazel-starlib/releases/download/v0.29.3/bazel-starlib.v0.29.3.tar.gz",
+ "patches": {
+ "remove_last_green.patch": "sha256-w9VABu0G2Loi5vhZFQyntidzJ7rUur2f8a71ifFBjbw=",
+ "module_dot_bazel_version.patch": "sha256-CajCD91k0PAolDiHhglw0RCShltx4ElS3/c3dD+waIY="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/cgrindel_bazel_starlib/metadata.json b/modules/cgrindel_bazel_starlib/metadata.json
index 8cc0d3a8f26..c727ba83c32 100644
--- a/modules/cgrindel_bazel_starlib/metadata.json
+++ b/modules/cgrindel_bazel_starlib/metadata.json
@@ -32,7 +32,8 @@
"0.25.2",
"0.26.0",
"0.27.0",
- "0.28.0"
+ "0.28.0",
+ "0.29.3"
],
"yanked_versions": {}
}
From 15e8c3cf98e51f43b3043ad07a73063166063187 Mon Sep 17 00:00:00 2001
From: Chuck Grindel
Date: Sun, 18 Jan 2026 16:32:34 -0700
Subject: [PATCH 028/367] rules_swift_package_manager@1.11.3 (#7194)
Release:
https://github.com/cgrindel/rules_swift_package_manager/releases/tag/v1.11.3
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: Chuck Grindel
---
.../1.11.3/MODULE.bazel | 89 +++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 +++
.../1.11.3/presubmit.yml | 14 +++
.../1.11.3/source.json | 9 ++
.../rules_swift_package_manager/metadata.json | 3 +-
5 files changed, 126 insertions(+), 1 deletion(-)
create mode 100644 modules/rules_swift_package_manager/1.11.3/MODULE.bazel
create mode 100644 modules/rules_swift_package_manager/1.11.3/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_swift_package_manager/1.11.3/presubmit.yml
create mode 100644 modules/rules_swift_package_manager/1.11.3/source.json
diff --git a/modules/rules_swift_package_manager/1.11.3/MODULE.bazel b/modules/rules_swift_package_manager/1.11.3/MODULE.bazel
new file mode 100644
index 00000000000..98b4c204475
--- /dev/null
+++ b/modules/rules_swift_package_manager/1.11.3/MODULE.bazel
@@ -0,0 +1,89 @@
+module(
+ name = "rules_swift_package_manager",
+ version = "1.11.3",
+)
+
+# MARK: - Runtime Dependencies
+
+bazel_dep(name = "cgrindel_bazel_starlib", version = "0.27.0")
+bazel_dep(name = "bazel_skylib", version = "1.7.1")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(
+ name = "rules_go",
+ version = "0.58.2",
+ repo_name = "io_bazel_rules_go",
+)
+
+# The apple_support bazel_dep must come before the rules_cc.
+# https://github.com/bazelbuild/apple_support#incompatible-toolchain-resolution
+bazel_dep(name = "apple_support", version = "1.21.1")
+bazel_dep(name = "rules_cc", version = "0.0.17")
+bazel_dep(name = "platforms", version = "0.0.11")
+
+# With bzlmod enabled, any dependencies for repositories generated by
+# rules_swift_package_manager _must_ be a runtime dependency of rules_swift_package_manager.
+bazel_dep(
+ name = "rules_swift",
+ version = "2.4.0",
+ max_compatibility_level = 3,
+ repo_name = "build_bazel_rules_swift",
+)
+bazel_dep(
+ name = "rules_apple",
+ version = "4.0.1",
+ repo_name = "build_bazel_rules_apple",
+)
+bazel_dep(
+ name = "gazelle",
+ version = "0.42.0",
+ repo_name = "bazel_gazelle",
+)
+
+apple_cc_configure = use_extension(
+ "@apple_support//crosstool:setup.bzl",
+ "apple_cc_configure_extension",
+)
+use_repo(apple_cc_configure, "local_config_apple_cc")
+
+go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk")
+go_sdk.download(version = "1.24.0")
+
+go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
+go_deps.from_file(go_mod = "//:go.mod")
+use_repo(
+ go_deps,
+ "com_github_bazelbuild_buildtools",
+ "com_github_creasty_defaults",
+ "com_github_deckarep_golang_set_v2",
+ "com_github_spf13_cobra",
+ "com_github_stretchr_testify",
+ "in_gopkg_yaml_v3",
+ "org_golang_x_exp",
+ "org_golang_x_text",
+)
+
+# MARK: - Dev Dependencies
+
+bazel_dep(
+ name = "rules_bazel_integration_test",
+ version = "0.33.2",
+ dev_dependency = True,
+)
+bazel_dep(
+ name = "bazel_skylib_gazelle_plugin",
+ version = "1.4.1",
+ dev_dependency = True,
+)
+
+bazel_binaries = use_extension(
+ "@rules_bazel_integration_test//:extensions.bzl",
+ "bazel_binaries",
+ dev_dependency = True,
+)
+bazel_binaries.download(version_file = "//:.bazelversion")
+use_repo(
+ bazel_binaries,
+ "bazel_binaries",
+ "bazel_binaries_bazelisk",
+ "build_bazel_bazel_.bazelversion",
+)
diff --git a/modules/rules_swift_package_manager/1.11.3/patches/module_dot_bazel_version.patch b/modules/rules_swift_package_manager/1.11.3/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..8cd52dd7488
--- /dev/null
+++ b/modules/rules_swift_package_manager/1.11.3/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "rules_swift_package_manager",
+- version = "0.0.0",
++ version = "1.11.3",
+ )
+
+ # MARK: - Runtime Dependencies
+
diff --git a/modules/rules_swift_package_manager/1.11.3/presubmit.yml b/modules/rules_swift_package_manager/1.11.3/presubmit.yml
new file mode 100644
index 00000000000..4890f9a994d
--- /dev/null
+++ b/modules/rules_swift_package_manager/1.11.3/presubmit.yml
@@ -0,0 +1,14 @@
+bcr_test_module:
+ module_path: ""
+ matrix:
+ platform: ["macos"]
+ bazel:
+ # This needs to exactly match the value used in .bazelversion at the root.
+ - 7.5.0
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//bzlmod:e2e_test"
diff --git a/modules/rules_swift_package_manager/1.11.3/source.json b/modules/rules_swift_package_manager/1.11.3/source.json
new file mode 100644
index 00000000000..f4cf2169c14
--- /dev/null
+++ b/modules/rules_swift_package_manager/1.11.3/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-N24yWOKzuu1mGzrp8TMig74WK3TRGOZNFQKSMa9dVl0=",
+ "strip_prefix": "",
+ "url": "https://github.com/cgrindel/rules_swift_package_manager/releases/download/v1.11.3/rules_swift_package_manager.v1.11.3.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-1zd//+Ry3x2QvYzbWSle6ypc/b9UG0/vv03ghHVOvWY="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_swift_package_manager/metadata.json b/modules/rules_swift_package_manager/metadata.json
index a39ce9bd3cf..6d8316fad37 100644
--- a/modules/rules_swift_package_manager/metadata.json
+++ b/modules/rules_swift_package_manager/metadata.json
@@ -77,7 +77,8 @@
"1.9.0",
"1.10.0",
"1.11.0",
- "1.11.1"
+ "1.11.1",
+ "1.11.3"
],
"yanked_versions": {}
}
From 8d7517ced6640381437480c12ae2cb263c889022 Mon Sep 17 00:00:00 2001
From: Jesse Rosenstock
Date: Mon, 19 Jan 2026 07:22:11 +0100
Subject: [PATCH 029/367] .gemini/styleguide.md: Fix typo in structure (#7186)
Change overlays/ to overlay/.
"overlay/" is used in the MODULE.bazel section as well as the bazel
docs.
https://github.com/bazelbuild/bazel-central-registry/blob/7c5b74bffa03b0611e08bfdf98a8d816989c085b/.gemini/styleguide.md?plain=1#L68
https://bazel.build/external/registry#source-json
This appears to be the source of incorrect gemini-code-assist
suggestions:
https://github.com/bazelbuild/bazel-central-registry/pull/7182#discussion_r2701236362
> The BCR style guide specifies that overlay files should be placed in
> an overlays directory (plural), but this file is in an overlay
directory
> (singular).
---
.gemini/styleguide.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gemini/styleguide.md b/.gemini/styleguide.md
index 16dbc435eff..0bd6df0d676 100644
--- a/.gemini/styleguide.md
+++ b/.gemini/styleguide.md
@@ -38,7 +38,7 @@ modules/
presubmit.yml
# optional:
patches/*.patch
- overlays/**/*
+ overlay/**/*
README.md (e.g., document BUILD overlays)
```
From 65c66f038046616ad12903384783f1cd18912e7f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 19 Jan 2026 01:36:56 -0500
Subject: [PATCH 030/367] Bump bazel-contrib/setup-bazel from 0.16.0 to 0.18.0
(#7139)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps
[bazel-contrib/setup-bazel](https://github.com/bazel-contrib/setup-bazel)
from 0.16.0 to 0.18.0.
Release notes
Sourced from bazel-contrib/setup-bazel's
releases.
0.18.0
What's Changed
New Contributors
Full Changelog: https://github.com/bazel-contrib/setup-bazel/compare/0.17.0...0.18.0
0.17.0
What's Changed
New Contributors
Full Changelog: https://github.com/bazel-contrib/setup-bazel/compare/0.16.0...0.17.0
Commits
0831755
Release 0.18.0
b607b8f
Add post-if !cancelled() condition (#128)
be4ac32
allow saving cache to be optional (#131)
00e306f
Release 0.17.0
b26a6f0
Fix bazel version not working with disk cache (#119)
dbfe727
fix(deps): update dependency @actions/github to v7 (#129)
1dc7f48
fix(deps): update dependency @actions/tool-cache to v3 (#130)
82d28f5
fix: add logging when failing to restore cache (#127)
1bf8973
docs: add missing initial "npm install" to Development on
README (#126)
e820d6a
chore(deps): update dependency @actions/cache to v5.0.2
(#123)
- Additional commits viewable in compare
view
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/update_requirements.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/update_requirements.yml b/.github/workflows/update_requirements.yml
index 4f8cfea751b..201c82abc65 100644
--- a/.github/workflows/update_requirements.yml
+++ b/.github/workflows/update_requirements.yml
@@ -23,7 +23,7 @@ jobs:
token: ${{ secrets.BCR_PR_REVIEW_HELPER_TOKEN }}
- name: Setup Bazel
- uses: bazel-contrib/setup-bazel@0.16.0
+ uses: bazel-contrib/setup-bazel@0.18.0
with:
bazelisk-cache: true
repository-cache: true
From 3001281d555f4166e2035f2971b862b03575d1a2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 19 Jan 2026 01:38:07 -0500
Subject: [PATCH 031/367] Bump the all-pip group in /tools with 11 updates
(#7140)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps the all-pip group in /tools with 11 updates:
| Package | From | To |
| --- | --- | --- |
| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.4.4` | `4.4.5`
|
| [fastmcp](https://github.com/jlowin/fastmcp) | `2.14.2` | `2.14.3` |
| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.2` |
`6.1.0` |
| [numpy](https://github.com/numpy/numpy) | `2.4.0` | `2.4.1` |
| [prometheus-client](https://github.com/prometheus/client_python) |
`0.23.1` | `0.24.0` |
| [pydocket](https://github.com/chrisguidry/docket) | `0.16.3` |
`0.16.6` |
| [referencing](https://github.com/python-jsonschema/referencing) |
`0.36.2` | `0.37.0` |
| [scipy](https://github.com/scipy/scipy) | `1.16.3` | `1.17.0` |
| [starlette](https://github.com/Kludex/starlette) | `0.50.0` | `0.51.0`
|
| [websockets](https://github.com/python-websockets/websockets) |
`15.0.1` | `16.0` |
| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.3` | `2.0.1`
|
Updates `cyclopts` from 4.4.4 to 4.4.5
Release notes
Sourced from cyclopts's
releases.
v4.4.5
Bug Fixes
Full Changelog: https://github.com/BrianPugh/cyclopts/compare/v4.4.4...v4.4.5
Commits
Updates `fastmcp` from 2.14.2 to 2.14.3
Release notes
Sourced from fastmcp's
releases.
v2.14.3: Time After Timeout
This patch release fixes an HTTP transport timeout bug where
connections were defaulting to 5 seconds instead of respecting MCP's
30-second default, causing premature timeouts for slower operations.
Also includes OAuth token storage fixes, Redis key isolation for ACL
compliance, and improved ContextVar propagation for ASGI-mounted
servers. Plus, the CLI will now nudge you when updates are available
(you're welcome, future you).
What's Changed
Enhancements 🔧
Fixes 🐞
Full Changelog: https://github.com/jlowin/fastmcp/compare/v2.14.2...v2.14.3
Changelog
Sourced from fastmcp's
changelog.
title: "Changelog"
icon: "list-check"
rss: true
v2.14.3:
Time After Timeout
Sometimes five seconds just isn't enough. This release fixes an HTTP
transport bug that was cutting connections short, along with OAuth and
Redis fixes, better ASGI support, and CLI update notifications so you
never miss a beat.
What's Changed
Enhancements 🔧
Fixes 🐞
- Backport OAuth token storage TTL fix to release/2.x by
@jlowin in #2798
- Prefix Redis keys with docket name for ACL isolation (2.x backport)
by
@chrisguidry in
#2812
- Fix ContextVar propagation for ASGI-mounted servers with tasks by
@chrisguidry in
#2843
- Fix HTTP transport timeout defaulting to 5 seconds by
@jlowin in #2848
Full Changelog: v2.14.2...v2.14.3
v2.14.2:
Port Authority
FastMCP 2.14.2 brings a wave of community contributions safely into
the 2.x line. A variety of important fixes backported from 3.0 work
improve OpenAPI 3.1 compatibility, MCP spec compliance for output
schemas and elicitation, and correct a subtle base_url fallback issue.
The CLI now gently reminds you that FastMCP 3.0 is on the horizon.
What's Changed
Enhancements 🔧
Fixes 🐞
- Let FastMCPError propagate unchanged from managers by
@jlowin in #2697
- Fix test cleanup for uvicorn 0.39+ context isolation by
@jlowin in #2696
- Bump pydocket to 0.16.3 to fix worker cleanup race condition by
@chrisguidry in
#2700
- Fix Prefect website URL in docs footer by
@mgoldsborough
in #2705
- Fix: resolve root-level $ref in outputSchema for MCP spec compliance
by
@majiayu000
in #2727
- Fix OAuth Proxy resource parameter validation by
@jlowin in #2763
- Fix openapi_version check to include 3.1 by
@deeleeramone
in #2769
- Fix titled enum elicitation schema to comply with MCP spec by
@jlowin in #2774
- Fix base_url fallback when url is not set by
@bhbs in #2782
- Lazy import DiskStore to avoid sqlite3 dependency on import by
@jlowin in #2785
Docs 📚
... (truncated)
Commits
e600570
Fix HTTP transport timeout defaulting to 5 seconds (#2848)
9e86dbc
Merge pull request #2843
from jlowin/debug-task-lifecycle
964b23b
Merge branch 'release/2.x' into debug-task-lifecycle
c127dd9
Remove debug logging, keep minimal ContextVar fix
7b24bd5
Make all task handlers consistent with debug logging
687889c
Simplify ContextVar management - trust Context to set them at request
time
df5765c
Use pip instead of uv pip in upgrade instructions (#2841)
7628c43
Add CLI update notifications (#2839)
5cea6ba
Bump pydocket to >=0.16.6 for py-key-value Redis username
workaround
6824d56
Bump pydocket to >=0.16.5 for Redis ACL fix
- Additional commits viewable in compare
view
Updates `jaraco-context` from 6.0.2 to 6.1.0
Changelog
Sourced from jaraco-context's
changelog.
v6.1.0
Features
- In tarfile.context, ensure that the default filter honors the data
filter to avoid path traversal vulnerabilities.
Commits
675aaf5
Finalize
7b26a42
Merge pull request #18
from jaraco/security/extraction-safety
398390e
Suppress failure (missed expectation) on Python 3.12.
54a1bc6
Use the filter argument to tarfile.extract to avoid the deprecation
warning.
7eb62b1
Also extract the member, for completeness.
3b5ac92
Add another case, demonstrating legitimate use of parent dir.
3b16eec
In tarfile.context, ensure that the default filter honors the data
filter to ...
52602fa
Update implementation to have different expectations for different
cases.
e066131
Convert the repro to a parameterized unit test.
d4c5567
👹 Feed the hobgoblins (delint).
- Additional commits viewable in compare
view
Updates `numpy` from 2.4.0 to 2.4.1
Release notes
Sourced from numpy's
releases.
2.4.1 (Jan 10, 2026)
NumPy 2.4.1 Release Notes
The NumPy 2.4.1 is a patch release that fixes bugs discoved after the
2.4.0 release. In particular, the typo SeedlessSequence is
preserved to
enable wheels using the random Cython API and built against NumPy <
2.4.0
to run without errors.
This release supports Python versions 3.11-3.14
Contributors
A total of 9 people contributed to this release. People with a
"+" by their
names contributed a patch for the first time.
- Alexander Shadchin
- Bill Tompkins +
- Charles Harris
- Joren Hammudoglu
- Marten van Kerkwijk
- Nathan Goldbaum
- Raghuveer Devulapalli
- Ralf Gommers
- Sebastian Berg
Pull requests merged
A total of 15 pull requests were merged for this release.
- #30490:
MAINT: Prepare 2.4.x for further development
- #30503:
DOC:
numpy.select: fix default parameter
docstring...
- #30504:
REV: Revert part of #30164
(#30500)
- #30506:
TYP:
numpy.select: allow passing array-like
default...
- #30507:
MNT: use if constexpr for compile-time branch selection
- #30513:
BUG: Fix leak in flat assignment iterator
- #30516:
BUG: fix heap overflow in fixed-width string multiply (#30511)
- #30523:
BUG: Ensure summed weights returned by np.average always are...
- #30527:
TYP: Fix return type of histogram2d
- #30594:
MAINT: avoid passing ints to random functions that take double...
- #30595:
BLD: Avoiding conflict with pygit2 for static build
- #30596:
MAINT: Fix msvccompiler missing error on FreeBSD
- #30608:
BLD: update vendored Meson to 1.9.2
- #30620:
ENH: use more fine-grained critical sections in array coercion...
- #30623:
BUG: Undo result type change of quantile/percentile but keep...
Changelog
Sourced from numpy's
changelog.
This is a walkthrough of the NumPy 2.4.0 release on Linux, which will
be the
first feature release using the numpy/numpy-release
<https://github.com/numpy/numpy-release>__ repository.
The commands can be copied into the command line, but be sure to
replace 2.4.0
with the correct version. This should be read together with the
:ref:general release guide <prepare_release>.
Facility preparation
Before beginning to make a release, use the
requirements/*_requirements.txt files to
ensure that you have the needed software. Most software can be installed
with
pip, but some will require apt-get, dnf, or whatever your system uses
for
software. You will also need a GitHub personal access token (PAT) to
push the
documentation. There are a few ways to streamline things:
- Git can be set up to use a keyring to store your GitHub personal
access token.
Search online for the details.
- You can use the
keyring app to store the PyPI password
for twine. See the
online twine documentation for details.
Prior to release
Add/drop Python versions
When adding or dropping Python versions, multiple config and CI files
need to
be edited in addition to changing the minimum version in
pyproject.toml.
Make these changes in an ordinary PR against main and backport if
necessary.
We currently release wheels for new Python versions after the first
Python RC
once manylinux and cibuildwheel support that new Python version.
Backport pull requests
Changes that have been marked for this release must be backported to
the
maintenance/2.4.x branch.
Commits
d24bb7f
Merge pull request #30624
from charris/prepare-for-2.4.1
d3bfd6d
REL: Prepare for the NumPy 2.4.1 release
abe3d86
Merge pull request #30623
from charris/backport-30601
5d89078
TST: Add test showing that q promotes (for "interpolating
ones")
16890ce
BUG: Fix result type change and make weak q safe
bf7ef0b
Merge pull request #30620
from charris/backport-30514
3d3af25
ENH: use more fine-grained critical sections in array coercion internals
(#30...
8b7f197
Merge pull request #30608
from charris/update-vendored-meson
30999f6
BLD: update vendored Meson to 1.9.2
e6bea65
Merge pull request #30596
from charris/remove-msvccompiler-check
- Additional commits viewable in compare
view
Updates `prometheus-client` from 0.23.1 to 0.24.0
Release notes
Sourced from prometheus-client's
releases.
v0.24.0
What's Changed
Full Changelog: https://github.com/prometheus/client_python/compare/v0.23.1...v0.24.0
Commits
Updates `pydocket` from 0.16.3 to 0.16.6
Release notes
Sourced from pydocket's
releases.
0.16.6 - Splish Splash
What's Changed
Full Changelog: https://github.com/chrisguidry/docket/compare/0.16.5...0.16.6
0.16.5 - Tore my Redis ACL
What's Changed
Full Changelog: https://github.com/chrisguidry/docket/compare/0.16.4...0.16.5
0.16.4 - Keys to success
What's Changed
Full Changelog: https://github.com/chrisguidry/docket/compare/0.16.3...0.16.4
Commits
e8a30a4
Use separate connection pool for result storage (#276)
e7d855b
Fix Redis ACL failure: pass worker_group_name as ARGV instead of KEYS
(#275)
be0c1bf
Use docket.key() for remaining inline key constructions (#274)
f45793d
Add prefix property and key() method for consistent key construction (#270)
7146a8f
Add pragma no cover to redis connection retry in conftest (#264)
- See full diff in compare
view
Updates `referencing` from 0.36.2 to 0.37.0
Release notes
Sourced from referencing's
releases.
v0.37.0
What's Changed
New Contributors
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.36.2...v0.37.0
Changelog
Sourced from referencing's
changelog.
v0.37.0
- Declare support for Python 3.14.
- Drop support for Python 3.9 which is near EOL.
Commits
944ed5a
Style.
6382532
Prepare the CHANGELOG for v0.37.
91b4bf5
Drop support for 3.9, which is near EOL.
0c14d46
Update requirements.
2928df5
Add the 3.14 classifier.
3ce7f9a
Merge pull request #270
from cclauss/patch-1
b6fc425
ci: Add Python 3.14 and 3.14t to the testing
9d1efc5
Merge pull request #265
from python-jsonschema/pre-commit-ci-update-config
1513a51
Merge pull request #268
from python-jsonschema/dependabot/submodules/suite-79...
8ebb38f
Merge pull request #269
from python-jsonschema/dependabot/github_actions/astr...
- Additional commits viewable in compare
view
Updates `scipy` from 1.16.3 to 1.17.0
Release notes
Sourced from scipy's
releases.
SciPy 1.17.0 Release Notes
SciPy 1.17.0 is the culmination of 6 months of hard
work. It contains
many new features, numerous bug-fixes, improved test coverage and better
documentation. There have been a number of deprecations and API changes
in this release, which are documented below. All users are encouraged to
upgrade to this release, as there are a large number of bug-fixes and
optimizations. Before upgrading, we recommend that users check that
their own code does not use deprecated SciPy functionality (to do so,
run your code with python -Wd and check for
DeprecationWarning s).
Our development attention will now shift to bug-fix releases on the
1.17.x branch, and on adding new features on the main
branch.
This release requires Python 3.11-3.14 and
NumPy 1.26.4 or greater.
Highlights of this release
- Many SciPy functions have gained native support for batching of
N-dimensional
array input and additional support for the array API standard. An
overall
summary of the latter is now available in a set
of tables.
- In
scipy.sparse, coo_array now supports
indexing. This includes integers,
slices, arrays, np.newaxis, Ellipsis, in 1D,
2D and the relatively
new nD. In scipy.sparse.linalg, ARPACK and PROPACK rewrites
from Fortran77
to C now empower the use of external pseudorandom number generators,
e.g.
from numpy.
- In
scipy.spatial, transform.Rotation and
transform.RigidTransform
have been extended to support N-D arrays. geometric_slerp
now has support
for extrapolation.
scipy.stats has gained the matrix t and logistic
distributions and many
performance and accuracy improvements.
- Initial support for 64-bit integer (ILP64) BLAS and LAPACK libraries
has
been added, including for MKL and Apple Accelerate. Please report any
issues with
ILP64 you encounter.
New features
scipy.integrate improvements
- The integration routines
dopri5, dopri853,
LSODA, vode, and
zvode have been ported from Fortran77 to C.
scipy.integrate.quad now has a fast path for returning
0 when the integration
interval is empty.
- The
BDF, DOP853, RK23,
RK45, OdeSolver, DenseOutput,
ode, and complex_ode classes now support
subscription, making them
generic types, for compatibility with scipy-stubs.
... (truncated)
Commits
8c75ae7
REL: 1.17.0 "final" release commit [wheel build]
9d7f110
Merge pull request #24298
from tylerjereddy/treddy_prep_1.17.0_final
94373b6
MAINT: test wheels [wheel build]
723f4e2
DOC: update 1.17.0 relnotes
bf042f0
CI: ensure we use pinned scipy-openblas version also in ILP64 job
3e00a04
CI: fix issue with ILP64 job; point to fixed numpy/meson commit
39bceab
BUG: stats: fix va_args memory corruption bug
8f56387
DOC: update 1.17.0 release notes
c50e9c0
Merge pull request #24304
from ev-br/edit_relnotes_for_ILP64
b204495
DOC: clarify ILP64 support caveats in the release notes, remove mentions
of O...
- Additional commits viewable in compare
view
Updates `starlette` from 0.50.0 to 0.51.0
Release notes
Sourced from starlette's
releases.
Version 0.51.0
Added
- Add
allow_private_network in
CORSMiddleware #3065.
Changed
- Increase warning stacklevel on
DeprecationWarning for
wsgi module #3082.
New Contributors
Full Changelog: https://github.com/Kludex/starlette/compare/0.50.0...0.51.0
Changelog
Sourced from starlette's
changelog.
0.51.0 (January 10, 2026)
Added
- Add
allow_private_network in
CORSMiddleware #3065.
Changed
- Increase warning stacklevel on
DeprecationWarning for
wsgi module #3082.
Commits
Updates `websockets` from 15.0.1 to 16.0
Release notes
Sourced from websockets's
releases.
16.0
See https://websockets.readthedocs.io/en/stable/project/changelog.html
for details.
Commits
d4303a5
Release version 16.0.
851bcd7
Bump pypa/cibuildwheel from 3.3.0 to 3.3.1
740c8d3
Temporarily remove the trio implementation.
92ea055
Add missing changelog entry.
ba74244
Document bug fix.
9410483
Pin sphinx to avoid error in sphinxcontrib-trio.
8e4d408
Document asyncio's TLS read buffer.
cb3500b
Stop referring to the asyncio implementation as new.
6563a9c
The threading implementation supports max_queue.
9f17e92
Clarify that protocol_mutex protects pending_pings.
- Additional commits viewable in compare
view
Updates `wrapt` from 1.17.3 to 2.0.1
Release notes
Sourced from wrapt's
releases.
wrapt-2.0.1
See the project page on the Python Package Index at https://pypi.org/project/wrapt/2.0.1/
for more information.
wrapt-2.0.0
See the project page on the Python Package Index at https://pypi.org/project/wrapt/2.0.0/
for more information.
Changelog
Sourced from wrapt's
changelog.
Version 2.0.1
Bugs Fixed
-
The wrapt.lazy_import() function wasn't included in the
__all__ attribute of the wrapt module, meaning
that it wasn't
accessible when using from wrapt import * and type checkers
such as
mypy or pylance may not see it as part of the
public API.
-
When using wrapt.lazy_import() to lazily import a
function of a module,
the resulting proxy object wasn't marked as callable until something
triggered
the import of the module via the proxy. This meant a
callable() check
on the proxy would return False until the module was
actually imported.
Further, calling the proxy before the module was imported would raise
TypeError: 'LazyObjectProxy' object is not callable rather
than
importing the module and calling the function as expected. In order to
address this issue, an additional keyword argument
interface has been
added to wrapt.lazy_import() which can be used to specify
the expected
interface type of the wrapped object. This will default to
Callable
when an attribute name is supplied, and to ModuleType when
no attribute
name is supplied. If using wrapt.lazy_import() and
supplying an
attribute argument, and you expect the wrapped object to be
something
other than a callable, you should now also supply
interface=... with the
appropriate type from collections.abc to ensure the proxy
behaves correctly
prior to the module being imported. This should only be necessary where
the
wrapped object has special dunder methods on its type which need to
exist on
the proxy prior to the module being imported.
Version 2.0.0
There have been subtle changes in various corner cases of the
behaviour of the
ObjectProxy class, which although not expected to cause
problems, still has
the potential for causing issues if code was for some reason dependent
on prior
behaviour. All existing code related to Python 2.X has also been
removed.
Finally it has also been a while since the last significant release. For
all
these reasons a major version bump is being made.
New Features
-
Added __all__ attribute to wrapt module to
expose the public API.
-
The wrapt.PartialCallableObjectProxy class can now be
accessed via the
alias wrapt.partial, which is a convenience for users who
are used to using
functools.partial and want to use the wrapt
version of it.
-
Type hints have been added to the wrapt module. The type
hints are
available when using Python 3.10 or later, and can be used with static
type
checkers such as pylance or mypy. Note that
due to limitations in
... (truncated)
Commits
14387af
Merge branch 'release/2.0.1'
73db180
Prepare for 2.0.1 release.
1ec71e0
Fix lazy import for callable attributes of a module.
09cd9e6
Use RestructuredText readme file for PyPi.
d8803ad
Change version to a release candidate.
26e637f
Missing lazy_import in public API declaration.
d07059f
Merge branch 'release/2.0.0'
a3a3b30
Merge tag '2.0.0' into develop
bf2609e
Update Python version in GitHub runner.
0363b82
Update version to 2.0.0 for release.
- Additional commits viewable in compare
view
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: bazel.build machine account
---
tools/requirements_lock.txt | 438 ++++++++++++++++++------------------
1 file changed, 215 insertions(+), 223 deletions(-)
diff --git a/tools/requirements_lock.txt b/tools/requirements_lock.txt
index 627c6c289af..341da4958d6 100644
--- a/tools/requirements_lock.txt
+++ b/tools/requirements_lock.txt
@@ -322,9 +322,9 @@ cryptography==46.0.3 \
# authlib
# pyjwt
# secretstorage
-cyclopts==4.4.4 \
- --hash=sha256:316f798fe2f2a30cb70e7140cfde2a46617bfbb575d31bbfdc0b2410a447bd83 \
- --hash=sha256:f30c591c971d974ab4f223e099f881668daed72de713713c984ca41479d393dd
+cyclopts==4.4.5 \
+ --hash=sha256:02c2c9375c57bb7622a4aab3511cdeb9d762dd0579b13ab467535e34f6be3c54 \
+ --hash=sha256:d0f7584282c33796614bbb5fe7f5c86520802f028453a2180ead68c8630635f8
# via fastmcp
diskcache==5.6.3 \
--hash=sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc \
@@ -354,9 +354,9 @@ fakeredis[lua]==2.33.0 \
--hash=sha256:d7bc9a69d21df108a6451bbffee23b3eba432c21a654afc7ff2d295428ec5770 \
--hash=sha256:de535f3f9ccde1c56672ab2fdd6a8efbc4f2619fc2f1acc87b8737177d71c965
# via pydocket
-fastmcp==2.14.2 \
- --hash=sha256:bd23d1b808b6f446444f10114dac468b11bfb9153ed78628f5619763d0cf573e \
- --hash=sha256:e33cd622e1ebd5110af6a981804525b6cd41072e3c7d68268ed69ef3be651aca
+fastmcp==2.14.3 \
+ --hash=sha256:103c6b4c6e97a9acc251c81d303f110fe4f2bdba31353df515d66272bf1b9414 \
+ --hash=sha256:abc9113d5fcf79dfb4c060a1e1c55fccb0d4bce4a2e3eab15ca352341eec8dd6
# via -r tools/requirements.in
h11==0.16.0 \
--hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \
@@ -396,9 +396,9 @@ jaraco-classes==3.4.0 \
--hash=sha256:47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd \
--hash=sha256:f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790
# via keyring
-jaraco-context==6.0.2 \
- --hash=sha256:55fc21af4b4f9ca94aa643b6ee7fe13b1e4c01abf3aeb98ca4ad9c80b741c786 \
- --hash=sha256:953ae8dddb57b1d791bf72ea1009b32088840a7dd19b9ba16443f62be919ee57
+jaraco-context==6.1.0 \
+ --hash=sha256:129a341b0a85a7db7879e22acd66902fda67882db771754574338898b2d5d86f \
+ --hash=sha256:a43b5ed85815223d0d3cfdb6d7ca0d2bc8946f28f30b6f3216bda070f68badda
# via keyring
jaraco-functools==4.4.0 \
--hash=sha256:9eec1e36f45c818d9bf307c8948eb03b2b56cd44087b3cdc989abca1f20b9176 \
@@ -538,79 +538,79 @@ networkx==3.6.1 \
--hash=sha256:26b7c357accc0c8cde558ad486283728b65b6a95d85ee1cd66bafab4c8168509 \
--hash=sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762
# via -r tools/requirements.in
-numpy==2.4.0 \
- --hash=sha256:009bd0ea12d3c784b6639a8457537016ce5172109e585338e11334f6a7bb88ee \
- --hash=sha256:02a2038eb27f9443a8b266a66911e926566b5a6ffd1a689b588f7f35b81e7dc3 \
- --hash=sha256:0804a8e4ab070d1d35496e65ffd3cf8114c136a2b81f61dfab0de4b218aacfd5 \
- --hash=sha256:0feafc9e03128074689183031181fac0897ff169692d8492066e949041096548 \
- --hash=sha256:1889b3a3f47a7b5bee16bc25a2145bd7cb91897f815ce3499db64c7458b6d91d \
- --hash=sha256:1d8f9fde5f6dc1b6fc34df8162f3b3079365468703fee7f31d4e0cc8c63baed9 \
- --hash=sha256:1ee32359fb7543b7b7bd0b2f46294db27e29e7bbdf70541e81b190836cd83ded \
- --hash=sha256:20c115517513831860c573996e395707aa9fb691eb179200125c250e895fcd93 \
- --hash=sha256:21555da4ec4a0c942520ead42c3b0dc9477441e085c42b0fbdd6a084869a6f6b \
- --hash=sha256:23a3e9d1a6f360267e8fbb38ba5db355a6a7e9be71d7fce7ab3125e88bb646c8 \
- --hash=sha256:2a8b6bb8369abefb8bd1801b054ad50e02b3275c8614dc6e5b0373c305291037 \
- --hash=sha256:2e284ca13d5a8367e43734148622caf0b261b275673823593e3e3634a6490f83 \
- --hash=sha256:2f585f52b2baf07ff3356158d9268ea095e221371f1074fadea2f42544d58b4d \
- --hash=sha256:316b2f2584682318539f0bcaca5a496ce9ca78c88066579ebd11fd06f8e4741e \
- --hash=sha256:32ed06d0fe9cae27d8fb5f400c63ccee72370599c75e683a6358dd3a4fb50aaf \
- --hash=sha256:355354388cba60f2132df297e2d53053d4063f79077b67b481d21276d61fc4df \
- --hash=sha256:35ddc8f4914466e6fc954c76527aa91aa763682a4f6d73249ef20b418fe6effb \
- --hash=sha256:36667db4d6c1cea79c8930ab72fadfb4060feb4bfe724141cd4bd064d2e5f8ce \
- --hash=sha256:36cbfb13c152b1c7c184ddac43765db8ad672567e7bafff2cc755a09917ed2e6 \
- --hash=sha256:39699233bc72dd482da1415dcb06076e32f60eddc796a796c5fb6c5efce94667 \
- --hash=sha256:39b19251dec4de8ff8496cd0806cbe27bf0684f765abb1f4809554de93785f2d \
- --hash=sha256:3d857f55e7fdf7c38ab96c4558c95b97d1c685be6b05c249f5fdafcbd6f9899e \
- --hash=sha256:3de19cfecd1465d0dcf8a5b5ea8b3155b42ed0b639dba4b71e323d74f2a3be5e \
- --hash=sha256:3f3096405acc48887458bbf9f6814d43785ac7ba2a57ea6442b581dedbc60ce6 \
- --hash=sha256:40483b2f2d3ba7aad426443767ff5632ec3156ef09742b96913787d13c336471 \
- --hash=sha256:413aa561266a4be2d06cd2b9665e89d9f54c543f418773076a76adcf2af08bc7 \
- --hash=sha256:44aba2f0cafd287871a495fb3163408b0bd25bbce135c6f621534a07f4f7875c \
- --hash=sha256:49ff32b09f5aa0cd30a20c2b39db3e669c845589f2b7fc910365210887e39344 \
- --hash=sha256:4d1cfce39e511069b11e67cd0bd78ceff31443b7c9e5c04db73c7a19f572967c \
- --hash=sha256:57c540ed8fb1f05cb997c6761cd56db72395b0d6985e90571ff660452ade4f98 \
- --hash=sha256:5f48cb3e88fbc294dc90e215d86fbaf1c852c63dbdb6c3a3e63f45c4b57f7344 \
- --hash=sha256:5fe44e277225fd3dff6882d86d3d447205d43532c3627313d17e754fb3905a0e \
- --hash=sha256:60e8c196cd82cbbd4f130b5290007e13e6de3eca79f0d4d38014769d96a7c475 \
- --hash=sha256:65167da969cd1ec3a1df31cb221ca3a19a8aaa25370ecb17d428415e93c1935e \
- --hash=sha256:680060061adb2d74ce352628cb798cfdec399068aa7f07ba9fb818b2b3305f98 \
- --hash=sha256:6bbaebf0d11567fa8926215ae731e1d58e6ec28a8a25235b8a47405d301332db \
- --hash=sha256:6c05483c3136ac4c91b4e81903cb53a8707d316f488124d0398499a4f8e8ef51 \
- --hash=sha256:6dc8b7e2f4eb184b37655195f421836cfae6f58197b67e3ffc501f1333d993fa \
- --hash=sha256:6e504f7b16118198f138ef31ba24d985b124c2c469fe8467007cf30fd992f934 \
- --hash=sha256:74623f2ab5cc3f7c886add4f735d1031a1d2be4a4ae63c0546cfd74e7a31ddf6 \
- --hash=sha256:77f0d13fa87036d7553bf81f0e1fe3ce68d14c9976c9851744e4d3e91127e95f \
- --hash=sha256:85eef4cb5625c47ee6425c58a3502555e10f45ee973da878ac8248ad58c136f3 \
- --hash=sha256:882567b7ae57c1b1a0250208cc21a7976d8cbcc49d5a322e607e6f09c9e0bd53 \
- --hash=sha256:8b986403023c8f3bf8f487c2e6186afda156174d31c175f747d8934dfddf3479 \
- --hash=sha256:8cfa5f29a695cb7438965e6c3e8d06e0416060cf0d709c1b1c1653a939bf5c2a \
- --hash=sha256:8eafe7c36c8430b7794edeab3087dec7bf31d634d92f2af9949434b9d1964cba \
- --hash=sha256:9198f447e1dc5647d07c9a6bbe2063cc0132728cc7175b39dbc796da5b54920d \
- --hash=sha256:92190db305a6f48734d3982f2c60fa30d6b5ee9bff10f2887b930d7b40119f4c \
- --hash=sha256:927ccf5cd17c48f801f4ed43a7e5673a2724bd2171460be3e3894e6e332ef83a \
- --hash=sha256:98e81648e0b36e325ab67e46b5400a7a6d4a22b8a7c8e8bbfe20e7db7906bf95 \
- --hash=sha256:9a818668b674047fd88c4cddada7ab8f1c298812783e8328e956b78dc4807f9f \
- --hash=sha256:a152d86a3ae00ba5f47b3acf3b827509fd0b6cb7d3259665e63dafbad22a75ea \
- --hash=sha256:a2718c1de8504121714234b6f8241d0019450353276c88b9453c9c3d92e101db \
- --hash=sha256:a39fb973a726e63223287adc6dafe444ce75af952d711e400f3bf2b36ef55a7b \
- --hash=sha256:a899699294f28f7be8992853c0c60741f16ff199205e2e6cdca155762cbaa59d \
- --hash=sha256:a8fdfed3deaf1928fb7667d96e0567cdf58c2b370ea2ee7e586aa383ec2cb346 \
- --hash=sha256:aabb081ca0ec5d39591fc33018cd4b3f96e1a2dd6756282029986d00a785fba4 \
- --hash=sha256:b1f5b45829ac1848893f0ddf5cb326110604d6df96cdc255b0bf9edd154104d4 \
- --hash=sha256:b48e35f4ab6f6a7597c46e301126ceba4c44cd3280e3750f85db48b082624fa4 \
- --hash=sha256:b54c83f1c0c0f1d748dca0af516062b8829d53d1f0c402be24b4257a9c48ada6 \
- --hash=sha256:ba0cb30acd3ef11c94dc27fbfba68940652492bc107075e7ffe23057f9425681 \
- --hash=sha256:bb50ce5fb202a26fd5404620e7ef820ad1ab3558b444cb0b55beb7ef66cd2d63 \
- --hash=sha256:c95eb6db2884917d86cde0b4d4cf31adf485c8ec36bf8696dd66fa70de96f36b \
- --hash=sha256:d0ffd9e2e4441c96a9c91ec1783285d80bf835b677853fc2770a89d50c1e48ac \
- --hash=sha256:d57b5046c120561ba8fa8e4030fbb8b822f3063910fa901ffadf16e2b7128ad6 \
- --hash=sha256:d9e6a7664ddd9746e20b7325351fe1a8408d0a2bf9c63b5e898290ddc8f09544 \
- --hash=sha256:dc578891de1db95b2a35001b695451767b580bb45753717498213c5ff3c41d63 \
- --hash=sha256:e0434aa22c821f44eeb4c650b81c7fbdd8c0122c6c4b5a576a76d5a35625ecd9 \
- --hash=sha256:e06a922a469cae9a57100864caf4f8a97a1026513793969f8ba5b63137a35d25 \
- --hash=sha256:e493962256a38f58283de033d8af176c5c91c084ea30f15834f7545451c42059 \
- --hash=sha256:ecb0019d44f4cdb50b676c5d0cb4b1eae8e15d1ed3d3e6639f986fc92b2ec52c \
- --hash=sha256:f935c4493eda9069851058fa0d9e39dbf6286be690066509305e52912714dbb2
+numpy==2.4.1 \
+ --hash=sha256:0093e85df2960d7e4049664b26afc58b03236e967fb942354deef3208857a04c \
+ --hash=sha256:09aa8a87e45b55a1c2c205d42e2808849ece5c484b2aab11fecabec3841cafba \
+ --hash=sha256:0cce2a669e3c8ba02ee563c7835f92c153cf02edff1ae05e1823f1dde21b16a5 \
+ --hash=sha256:0e6e8f9d9ecf95399982019c01223dc130542960a12edfa8edd1122dfa66a8a8 \
+ --hash=sha256:0f118ce6b972080ba0758c6087c3617b5ba243d806268623dc34216d69099ba0 \
+ --hash=sha256:178de8f87948163d98a4c9ab5bee4ce6519ca918926ec8df195af582de28544d \
+ --hash=sha256:18e14c4d09d55eef39a6ab5b08406e84bc6869c1e34eef45564804f90b7e0574 \
+ --hash=sha256:2023ef86243690c2791fd6353e5b4848eedaa88ca8a2d129f462049f6d484696 \
+ --hash=sha256:20d4649c773f66cc2fc36f663e091f57c3b7655f936a4c681b4250855d1da8f5 \
+ --hash=sha256:2302dc0224c1cbc49bb94f7064f3f923a971bfae45c33870dcbff63a2a550505 \
+ --hash=sha256:26f0bcd9c79a00e339565b303badc74d3ea2bd6d52191eeca5f95936cad107d0 \
+ --hash=sha256:297c72b1b98100c2e8f873d5d35fb551fce7040ade83d67dd51d38c8d42a2162 \
+ --hash=sha256:2f44de05659b67d20499cbc96d49f2650769afcb398b79b324bb6e297bfe3844 \
+ --hash=sha256:2ffd257026eb1b34352e749d7cc1678b5eeec3e329ad8c9965a797e08ccba205 \
+ --hash=sha256:382ad67d99ef49024f11d1ce5dcb5ad8432446e4246a4b014418ba3a1175a1f4 \
+ --hash=sha256:3869ea1ee1a1edc16c29bbe3a2f2a4e515cc3a44d43903ad41e0cacdbaf733dc \
+ --hash=sha256:3d1a100e48cb266090a031397863ff8a30050ceefd798f686ff92c67a486753d \
+ --hash=sha256:423797bdab2eeefbe608d7c1ec7b2b4fd3c58d51460f1ee26c7500a1d9c9ee93 \
+ --hash=sha256:42d7dd5fa36d16d52a84f821eb96031836fd405ee6955dd732f2023724d0aa01 \
+ --hash=sha256:49e792ec351315e16da54b543db06ca8a86985ab682602d90c60ef4ff4db2a9c \
+ --hash=sha256:4e53170557d37ae404bf8d542ca5b7c629d6efa1117dac6a83e394142ea0a43f \
+ --hash=sha256:4f1b68ff47680c2925f8063402a693ede215f0257f02596b1318ecdfb1d79e33 \
+ --hash=sha256:4f9c360ecef085e5841c539a9a12b883dff005fbd7ce46722f5e9cef52634d82 \
+ --hash=sha256:529050522e983e00a6c1c6b67411083630de8b57f65e853d7b03d9281b8694d2 \
+ --hash=sha256:52b5f61bdb323b566b528899cc7db2ba5d1015bda7ea811a8bcf3c89c331fa42 \
+ --hash=sha256:538bf4ec353709c765ff75ae616c34d3c3dca1a68312727e8f2676ea644f8509 \
+ --hash=sha256:5adf01965456a664fc727ed69cc71848f28d063217c63e1a0e200a118d5eec9a \
+ --hash=sha256:5b55aa56165b17aaf15520beb9cbd33c9039810e0d9643dd4379e44294c7303e \
+ --hash=sha256:5d558123217a83b2d1ba316b986e9248a1ed1971ad495963d555ccd75dcb1556 \
+ --hash=sha256:5de60946f14ebe15e713a6f22850c2372fa72f4ff9a432ab44aa90edcadaa65a \
+ --hash=sha256:62fea415f83ad8fdb6c20840578e5fbaf5ddd65e0ec6c3c47eda0f69da172510 \
+ --hash=sha256:6436cffb4f2bf26c974344439439c95e152c9a527013f26b3577be6c2ca64295 \
+ --hash=sha256:6461de5113088b399d655d45c3897fa188766415d0f568f175ab071c8873bd73 \
+ --hash=sha256:69e7419c9012c4aaf695109564e3387f1259f001b4326dfa55907b098af082d3 \
+ --hash=sha256:71abbea030f2cfc3092a0ff9f8c8fdefdc5e0bf7d9d9c99663538bb0ecdac0b9 \
+ --hash=sha256:7211b95ca365519d3596a1d8688a95874cc94219d417504d9ecb2df99fa7bfa8 \
+ --hash=sha256:727c6c3275ddefa0dc078524a85e064c057b4f4e71ca5ca29a19163c607be745 \
+ --hash=sha256:79e9e06c4c2379db47f3f6fc7a8652e7498251789bf8ff5bd43bf478ef314ca2 \
+ --hash=sha256:7ad270f438cbdd402c364980317fb6b117d9ec5e226fff5b4148dd9aa9fc6e02 \
+ --hash=sha256:7d5d7999df434a038d75a748275cd6c0094b0ecdb0837342b332a82defc4dc4d \
+ --hash=sha256:8097529164c0f3e32bb89412a0905d9100bf434d9692d9fc275e18dcf53c9344 \
+ --hash=sha256:82c55962006156aeef1629b953fd359064aa47e4d82cfc8e67f0918f7da3344f \
+ --hash=sha256:8361ea4220d763e54cff2fbe7d8c93526b744f7cd9ddab47afeff7e14e8503be \
+ --hash=sha256:899d2c18024984814ac7e83f8f49d8e8180e2fbe1b2e252f2e7f1d06bea92425 \
+ --hash=sha256:8ad35f20be147a204e28b6a0575fbf3540c5e5f802634d4258d55b1ff5facce1 \
+ --hash=sha256:8f085da926c0d491ffff3096f91078cc97ea67e7e6b65e490bc8dcda65663be2 \
+ --hash=sha256:9171a42fcad32dcf3fa86f0a4faa5e9f8facefdb276f54b8b390d90447cff4e2 \
+ --hash=sha256:92a0e65272fd60bfa0d9278e0484c2f52fe03b97aedc02b357f33fe752c52ffb \
+ --hash=sha256:941c2a93313d030f219f3a71fd3d91a728b82979a5e8034eb2e60d394a2b83f9 \
+ --hash=sha256:98b35775e03ab7f868908b524fc0a84d38932d8daf7b7e1c3c3a1b6c7a2c9f15 \
+ --hash=sha256:a1ceafc5042451a858231588a104093474c6a5c57dcc724841f5c888d237d690 \
+ --hash=sha256:a73044b752f5d34d4232f25f18160a1cc418ea4507f5f11e299d8ac36875f8a0 \
+ --hash=sha256:a7870e8c5fc11aef57d6fea4b4085e537a3a60ad2cdd14322ed531fdca68d261 \
+ --hash=sha256:a92f227dbcdc9e4c3e193add1a189a9909947d4f8504c576f4a732fd0b54240a \
+ --hash=sha256:ac08c63cb7779b85e9d5318e6c3518b424bc1f364ac4cb2c6136f12e5ff2dccc \
+ --hash=sha256:b6bcf39112e956594b3331316d90c90c90fb961e39696bda97b89462f5f3943f \
+ --hash=sha256:c0faba4a331195bfa96f93dd9dfaa10b2c7aa8cda3a02b7fd635e588fe821bf5 \
+ --hash=sha256:ce9ce141a505053b3c7bce3216071f3bf5c182b8b28930f14cd24d43932cd2df \
+ --hash=sha256:cf6470d91d34bf669f61d515499859fa7a4c2f7c36434afb70e82df7217933f9 \
+ --hash=sha256:d3703409aac693fa82c0aee023a1ae06a6e9d065dba10f5e8e80f642f1e9d0a2 \
+ --hash=sha256:d3e3087f53e2b4428766b54932644d148613c5a595150533ae7f00dab2f319a8 \
+ --hash=sha256:d3f8f0df9f4b8be57b3bf74a1d087fec68f927a2fab68231fdb442bf2c12e426 \
+ --hash=sha256:d797454e37570cfd61143b73b8debd623c3c0952959adb817dd310a483d58a1b \
+ --hash=sha256:e1a27bb1b2dee45a2a53f5ca6ff2d1a7f135287883a1689e930d44d1ff296c87 \
+ --hash=sha256:e3bd2cb07841166420d2fa7146c96ce00cb3410664cbc1a6be028e456c4ee220 \
+ --hash=sha256:e7b6b5e28bbd47b7532698e5db2fe1db693d84b58c254e4389d99a27bb9b8f6b \
+ --hash=sha256:e867df947d427cdd7a60e3e271729090b0f0df80f5f10ab7dd436f40811699c3 \
+ --hash=sha256:ea66d2b41ca4a1630aae5507ee0a71647d3124d1741980138aa8f28f44dac36e \
+ --hash=sha256:edee228f76ee2dab4579fad6f51f6a305de09d444280109e0f75df247ff21501 \
+ --hash=sha256:f0a90aba7d521e6954670550e561a4cb925713bd944445dbe9e729b71f6cabee \
+ --hash=sha256:f93bc6892fe7b0663e5ffa83b61aab510aacffd58c16e012bb9352d489d90cb7 \
+ --hash=sha256:fb1461c99de4d040666ca0444057b06541e5642f800b71c56e6ea92d6a853a0c
# via
# -r tools/requirements.in
# scipy
@@ -661,9 +661,9 @@ platformdirs==4.5.1 \
--hash=sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda \
--hash=sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31
# via fastmcp
-prometheus-client==0.23.1 \
- --hash=sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce \
- --hash=sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99
+prometheus-client==0.24.0 \
+ --hash=sha256:4ab6d4fb5a1b25ad74b58e6271857e356fff3399473e599d227ab5d0ce6637f0 \
+ --hash=sha256:726b40c0d499f4904d4b5b7abe8d43e6aff090de0d468ae8f2226290b331c667
# via
# opentelemetry-exporter-prometheus
# pydocket
@@ -816,9 +816,9 @@ pydantic-settings==2.12.0 \
--hash=sha256:005538ef951e3c2a68e1c08b292b5f2e71490def8589d4221b95dab00dafcfd0 \
--hash=sha256:fddb9fd99a5b18da837b29710391e945b1e30c135477f484084ee513adb93809
# via mcp
-pydocket==0.16.3 \
- --hash=sha256:78e9da576de09e9f3f410d2471ef1c679b7741ddd21b586c97a13872b69bd265 \
- --hash=sha256:e2b50925356e7cd535286255195458ac7bba15f25293356651b36d223db5dd7c
+pydocket==0.16.6 \
+ --hash=sha256:683d21e2e846aa5106274e7d59210331b242d7fb0dce5b08d3b82065663ed183 \
+ --hash=sha256:b96c96ad7692827214ed4ff25fcf941ec38371314db5dcc1ae792b3e9d3a0294
# via fastmcp
pygments==2.19.2 \
--hash=sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887 \
@@ -1075,68 +1075,68 @@ rpds-py==0.30.0 \
# via
# jsonschema
# referencing
-scipy==1.16.3 \
- --hash=sha256:0151a0749efeaaab78711c78422d413c583b8cdd2011a3c1d6c794938ee9fdb2 \
- --hash=sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb \
- --hash=sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a \
- --hash=sha256:0553371015692a898e1aa858fed67a3576c34edefa6b7ebdb4e9dde49ce5c203 \
- --hash=sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304 \
- --hash=sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959 \
- --hash=sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a \
- --hash=sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d \
- --hash=sha256:1fb2472e72e24d1530debe6ae078db70fb1605350c88a3d14bc401d6306dbffe \
- --hash=sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562 \
- --hash=sha256:2a207a6ce9c24f1951241f4693ede2d393f59c07abc159b2cb2be980820e01fb \
- --hash=sha256:2b71d93c8a9936046866acebc915e2af2e292b883ed6e2cbe5c34beb094b82d9 \
- --hash=sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc \
- --hash=sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d \
- --hash=sha256:3d4a07a8e785d80289dfe66b7c27d8634a773020742ec7187b85ccc4b0e7b686 \
- --hash=sha256:40be6cf99e68b6c4321e9f8782e7d5ff8265af28ef2cd56e9c9b2638fa08ad97 \
- --hash=sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353 \
- --hash=sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2 \
- --hash=sha256:532fb5ad6a87e9e9cd9c959b106b73145a03f04c7d57ea3e6f6bb60b86ab0876 \
- --hash=sha256:53c3844d527213631e886621df5695d35e4f6a75f620dca412bcd292f6b87d78 \
- --hash=sha256:56edc65510d1331dae01ef9b658d428e33ed48b4f77b1d51caf479a0253f96dc \
- --hash=sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119 \
- --hash=sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9 \
- --hash=sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f \
- --hash=sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135 \
- --hash=sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234 \
- --hash=sha256:72d1717fd3b5e6ec747327ce9bda32d5463f472c9dce9f54499e81fbd50245a1 \
- --hash=sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88 \
- --hash=sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc \
- --hash=sha256:81fc5827606858cf71446a5e98715ba0e11f0dbc83d71c7409d05486592a45d6 \
- --hash=sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6 \
- --hash=sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22 \
- --hash=sha256:8be1ca9170fcb6223cc7c27f4305d680ded114a1567c0bd2bfcbf947d1b17511 \
- --hash=sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079 \
- --hash=sha256:9452781bd879b14b6f055b26643703551320aa8d79ae064a71df55c00286a184 \
- --hash=sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c \
- --hash=sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40 \
- --hash=sha256:a8a26c78ef223d3e30920ef759e25625a0ecdd0d60e5a8818b7513c3e5384cf2 \
- --hash=sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0 \
- --hash=sha256:b7180967113560cca57418a7bc719e30366b47959dd845a93206fbed693c867e \
- --hash=sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800 \
- --hash=sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4 \
- --hash=sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657 \
- --hash=sha256:bea0a62734d20d67608660f69dcda23e7f90fb4ca20974ab80b6ed40df87a005 \
- --hash=sha256:c5192722cffe15f9329a3948c4b1db789fbb1f05c97899187dcf009b283aea70 \
- --hash=sha256:c97176013d404c7346bf57874eaac5187d969293bf40497140b0a2b2b7482e07 \
- --hash=sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e \
- --hash=sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c \
- --hash=sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc \
- --hash=sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7 \
- --hash=sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146 \
- --hash=sha256:deb3841c925eeddb6afc1e4e4a45e418d19ec7b87c5df177695224078e8ec733 \
- --hash=sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c \
- --hash=sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d \
- --hash=sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6 \
- --hash=sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d \
- --hash=sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26 \
- --hash=sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8 \
- --hash=sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa \
- --hash=sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b \
- --hash=sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d
+scipy==1.17.0 \
+ --hash=sha256:00fb5f8ec8398ad90215008d8b6009c9db9fa924fd4c7d6be307c6f945f9cd73 \
+ --hash=sha256:031121914e295d9791319a1875444d55079885bbae5bdc9c5e0f2ee5f09d34ff \
+ --hash=sha256:0937a0b0d8d593a198cededd4c439a0ea216a3f36653901ea1f3e4be949056f8 \
+ --hash=sha256:0cf46c8013fec9d3694dc572f0b54100c28405d55d3e2cb15e2895b25057996e \
+ --hash=sha256:0d5018a57c24cb1dd828bcf51d7b10e65986d549f52ef5adb6b4d1ded3e32a57 \
+ --hash=sha256:130d12926ae34399d157de777472bf82e9061c60cc081372b3118edacafe1d00 \
+ --hash=sha256:13c4096ac6bc31d706018f06a49abe0485f96499deb82066b94d19b02f664209 \
+ --hash=sha256:13e861634a2c480bd237deb69333ac79ea1941b94568d4b0efa5db5e263d4fd1 \
+ --hash=sha256:1f9586a58039d7229ce77b52f8472c972448cded5736eaf102d5658bbac4c269 \
+ --hash=sha256:1ff269abf702f6c7e67a4b7aad981d42871a11b9dd83c58d2d2ea624efbd1088 \
+ --hash=sha256:255c0da161bd7b32a6c898e7891509e8a9289f0b1c6c7d96142ee0d2b114c2ea \
+ --hash=sha256:2591060c8e648d8b96439e111ac41fd8342fdeff1876be2e19dea3fe8930454e \
+ --hash=sha256:272a9f16d6bb4667e8b50d25d71eddcc2158a214df1b566319298de0939d2ab7 \
+ --hash=sha256:2abd71643797bd8a106dff97894ff7869eeeb0af0f7a5ce02e4227c6a2e9d6fd \
+ --hash=sha256:2b531f57e09c946f56ad0b4a3b2abee778789097871fc541e267d2eca081cff1 \
+ --hash=sha256:30509da9dbec1c2ed8f168b8d8aa853bc6723fede1dbc23c7d43a56f5ab72a67 \
+ --hash=sha256:33af70d040e8af9d5e7a38b5ed3b772adddd281e3062ff23fec49e49681c38cf \
+ --hash=sha256:357ca001c6e37601066092e7c89cca2f1ce74e2a520ca78d063a6d2201101df2 \
+ --hash=sha256:3625c631a7acd7cfd929e4e31d2582cf00f42fcf06011f59281271746d77e061 \
+ --hash=sha256:363ad4ae2853d88ebcde3ae6ec46ccca903ea9835ee8ba543f12f575e7b07e4e \
+ --hash=sha256:40052543f7bbe921df4408f46003d6f01c6af109b9e2c8a66dd1cf6cf57f7d5d \
+ --hash=sha256:423ca1f6584fc03936972b5f7c06961670dbba9f234e71676a7c7ccf938a0d61 \
+ --hash=sha256:474da16199f6af66601a01546144922ce402cb17362e07d82f5a6cf8f963e449 \
+ --hash=sha256:4e00562e519c09da34c31685f6acc3aa384d4d50604db0f245c14e1b4488bfa2 \
+ --hash=sha256:5194c445d0a1c7a6c1a4a4681b6b7c71baad98ff66d96b949097e7513c9d6742 \
+ --hash=sha256:5fb10d17e649e1446410895639f3385fd2bf4c3c7dfc9bea937bddcbc3d7b9ba \
+ --hash=sha256:65ec32f3d32dfc48c72df4291345dae4f048749bc8d5203ee0a3f347f96c5ce6 \
+ --hash=sha256:6680f2dfd4f6182e7d6db161344537da644d1cf85cf293f015c60a17ecf08752 \
+ --hash=sha256:6e886000eb4919eae3a44f035e63f0fd8b651234117e8f6f29bad1cd26e7bc45 \
+ --hash=sha256:7204fddcbec2fe6598f1c5fdf027e9f259106d05202a959a9f1aecf036adc9f6 \
+ --hash=sha256:819fc26862b4b3c73a60d486dbb919202f3d6d98c87cf20c223511429f2d1a97 \
+ --hash=sha256:8547e7c57f932e7354a2319fab613981cde910631979f74c9b542bb167a8b9db \
+ --hash=sha256:85b0ac3ad17fa3be50abd7e69d583d98792d7edc08367e01445a1e2076005379 \
+ --hash=sha256:87b411e42b425b84777718cc41516b8a7e0795abfa8e8e1d573bf0ef014f0812 \
+ --hash=sha256:88c22af9e5d5a4f9e027e26772cc7b5922fab8bcc839edb3ae33de404feebd9e \
+ --hash=sha256:9244608d27eafe02b20558523ba57f15c689357c85bdcfe920b1828750aa26eb \
+ --hash=sha256:979c3a0ff8e5ba254d45d59ebd38cde48fce4f10b5125c680c7a4bfe177aab07 \
+ --hash=sha256:9eeb9b5f5997f75507814ed9d298ab23f62cf79f5a3ef90031b1ee2506abdb5b \
+ --hash=sha256:9fad7d3578c877d606b1150135c2639e9de9cecd3705caa37b66862977cc3e72 \
+ --hash=sha256:a38c3337e00be6fd8a95b4ed66b5d988bac4ec888fd922c2ea9fe5fb1603dd67 \
+ --hash=sha256:aabf057c632798832f071a8dde013c2e26284043934f53b00489f1773b33527e \
+ --hash=sha256:c17514d11b78be8f7e6331b983a65a7f5ca1fd037b95e27b280921fe5606286a \
+ --hash=sha256:c5e8647f60679790c2f5c76be17e2e9247dc6b98ad0d3b065861e082c56e078d \
+ --hash=sha256:cacbaddd91fcffde703934897c5cd2c7cb0371fac195d383f4e1f1c5d3f3bd04 \
+ --hash=sha256:d7425fcafbc09a03731e1bc05581f5fad988e48c6a861f441b7ab729a49a55ea \
+ --hash=sha256:dac97a27520d66c12a34fd90a4fe65f43766c18c0d6e1c0a80f114d2260080e4 \
+ --hash=sha256:dbf133ced83889583156566d2bdf7a07ff89228fe0c0cb727f777de92092ec6b \
+ --hash=sha256:e8c0b331c2c1f531eb51f1b4fc9ba709521a712cce58f1aa627bc007421a5306 \
+ --hash=sha256:eb2651271135154aa24f6481cbae5cc8af1f0dd46e6533fb7b56aa9727b6a232 \
+ --hash=sha256:ebb7446a39b3ae0fe8f416a9a3fdc6fba3f11c634f680f16a239c5187bc487c0 \
+ --hash=sha256:ec0827aa4d36cb79ff1b81de898e948a51ac0b9b1c43e4a372c0508c38c0f9a3 \
+ --hash=sha256:edce1a1cf66298cccdc48a1bdf8fb10a3bf58e8b58d6c3883dd1530e103f87c0 \
+ --hash=sha256:eec3842ec9ac9de5917899b277428886042a93db0b227ebbe3a333b64ec7643d \
+ --hash=sha256:ef28d815f4d2686503e5f4f00edc387ae58dfd7a2f42e348bb53359538f01558 \
+ --hash=sha256:f2a4942b0f5f7c23c7cd641a0ca1955e2ae83dedcff537e3a0259096635e186b \
+ --hash=sha256:f3cd947f20fe17013d401b64e857c6b2da83cae567adbb75b9dcba865abc66d8 \
+ --hash=sha256:f603d8a5518c7426414d1d8f82e253e454471de682ce5e39c29adb0df1efb86b \
+ --hash=sha256:f7df7941d71314e60a481e02d5ebcb3f0185b8d799c70d03d8258f6c80f3d467 \
+ --hash=sha256:f9eb55bb97d00f8b7ab95cb64f873eb0bf54d9446264d9f3609130381233483f \
+ --hash=sha256:fc02c37a5639ee67d8fb646ffded6d793c06c5622d36b35cfa8fe5ececb8f042 \
+ --hash=sha256:fe508b5690e9eaaa9467fc047f833af58f1152ae51a0d0aed67aa5801f4dd7d6
# via -r tools/requirements.in
secretstorage==3.5.0 \
--hash=sha256:0ce65888c0725fcb2c5bc0fdb8e5438eece02c523557ea40ce0703c266248137 \
@@ -1154,9 +1154,9 @@ sse-starlette==3.1.2 \
--hash=sha256:55eff034207a83a0eb86de9a68099bd0157838f0b8b999a1b742005c71e33618 \
--hash=sha256:cd800dd349f4521b317b9391d3796fa97b71748a4da9b9e00aafab32dda375c8
# via mcp
-starlette==0.50.0 \
- --hash=sha256:9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca \
- --hash=sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca
+starlette==0.51.0 \
+ --hash=sha256:4c4fda9b1bc67f84037d3d14a5112e523509c369d9d47b111b2f984b0cc5ba6c \
+ --hash=sha256:fb460a3d6fd3c958d729fdd96aee297f89a51b0181f16401fe8fd4cb6129165d
# via
# mcp
# sse-starlette
@@ -1203,76 +1203,68 @@ validators==0.35.0 \
--hash=sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a \
--hash=sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd
# via -r tools/requirements.in
-websockets==15.0.1 \
- --hash=sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2 \
- --hash=sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9 \
- --hash=sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5 \
- --hash=sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3 \
- --hash=sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8 \
- --hash=sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e \
- --hash=sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1 \
- --hash=sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256 \
- --hash=sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85 \
- --hash=sha256:2034693ad3097d5355bfdacfffcbd3ef5694f9718ab7f29c29689a9eae841880 \
- --hash=sha256:21c1fa28a6a7e3cbdc171c694398b6df4744613ce9b36b1a498e816787e28123 \
- --hash=sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375 \
- --hash=sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065 \
- --hash=sha256:363c6f671b761efcb30608d24925a382497c12c506b51661883c3e22337265ed \
- --hash=sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41 \
- --hash=sha256:3b1ac0d3e594bf121308112697cf4b32be538fb1444468fb0a6ae4feebc83411 \
- --hash=sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597 \
- --hash=sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f \
- --hash=sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c \
- --hash=sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3 \
- --hash=sha256:47819cea040f31d670cc8d324bb6435c6f133b8c7a19ec3d61634e62f8d8f9eb \
- --hash=sha256:47b099e1f4fbc95b701b6e85768e1fcdaf1630f3cbe4765fa216596f12310e2e \
- --hash=sha256:4a9fac8e469d04ce6c25bb2610dc535235bd4aa14996b4e6dbebf5e007eba5ee \
- --hash=sha256:4b826973a4a2ae47ba357e4e82fa44a463b8f168e1ca775ac64521442b19e87f \
- --hash=sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf \
- --hash=sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf \
- --hash=sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4 \
- --hash=sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a \
- --hash=sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665 \
- --hash=sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22 \
- --hash=sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675 \
- --hash=sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4 \
- --hash=sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d \
- --hash=sha256:5f4c04ead5aed67c8a1a20491d54cdfba5884507a48dd798ecaf13c74c4489f5 \
- --hash=sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65 \
- --hash=sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792 \
- --hash=sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57 \
- --hash=sha256:67f2b6de947f8c757db2db9c71527933ad0019737ec374a8a6be9a956786aaf9 \
- --hash=sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3 \
- --hash=sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151 \
- --hash=sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d \
- --hash=sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475 \
- --hash=sha256:7f493881579c90fc262d9cdbaa05a6b54b3811c2f300766748db79f098db9940 \
- --hash=sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431 \
- --hash=sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee \
- --hash=sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413 \
- --hash=sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8 \
- --hash=sha256:a625e06551975f4b7ea7102bc43895b90742746797e2e14b70ed61c43a90f09b \
- --hash=sha256:abdc0c6c8c648b4805c5eacd131910d2a7f6455dfd3becab248ef108e89ab16a \
- --hash=sha256:ac017dd64572e5c3bd01939121e4d16cf30e5d7e110a119399cf3133b63ad054 \
- --hash=sha256:ac1e5c9054fe23226fb11e05a6e630837f074174c4c2f0fe442996112a6de4fb \
- --hash=sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205 \
- --hash=sha256:b359ed09954d7c18bbc1680f380c7301f92c60bf924171629c5db97febb12f04 \
- --hash=sha256:b7643a03db5c95c799b89b31c036d5f27eeb4d259c798e878d6937d71832b1e4 \
- --hash=sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa \
- --hash=sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9 \
- --hash=sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122 \
- --hash=sha256:d08eb4c2b7d6c41da6ca0600c077e93f5adcfd979cd777d747e9ee624556da4b \
- --hash=sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905 \
- --hash=sha256:d591f8de75824cbb7acad4e05d2d710484f15f29d4a915092675ad3456f11770 \
- --hash=sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe \
- --hash=sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b \
- --hash=sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562 \
- --hash=sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561 \
- --hash=sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215 \
- --hash=sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931 \
- --hash=sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9 \
- --hash=sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f \
- --hash=sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7
+websockets==16.0 \
+ --hash=sha256:0298d07ee155e2e9fda5be8a9042200dd2e3bb0b8a38482156576f863a9d457c \
+ --hash=sha256:04cdd5d2d1dacbad0a7bf36ccbcd3ccd5a30ee188f2560b7a62a30d14107b31a \
+ --hash=sha256:08d7af67b64d29823fed316505a89b86705f2b7981c07848fb5e3ea3020c1abe \
+ --hash=sha256:152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e \
+ --hash=sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec \
+ --hash=sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1 \
+ --hash=sha256:1c1b30e4f497b0b354057f3467f56244c603a79c0d1dafce1d16c283c25f6e64 \
+ --hash=sha256:2b9f1e0d69bc60a4a87349d50c09a037a2607918746f07de04df9e43252c77a3 \
+ --hash=sha256:31a52addea25187bde0797a97d6fc3d2f92b6f72a9370792d65a6e84615ac8a8 \
+ --hash=sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206 \
+ --hash=sha256:335c23addf3d5e6a8633f9f8eda77efad001671e80b95c491dd0924587ece0b3 \
+ --hash=sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156 \
+ --hash=sha256:349f83cd6c9a415428ee1005cadb5c2c56f4389bc06a9af16103c3bc3dcc8b7d \
+ --hash=sha256:37b31c1623c6605e4c00d466c9d633f9b812ea430c11c8a278774a1fde1acfa9 \
+ --hash=sha256:417b28978cdccab24f46400586d128366313e8a96312e4b9362a4af504f3bbad \
+ --hash=sha256:485c49116d0af10ac698623c513c1cc01c9446c058a4e61e3bf6c19dff7335a2 \
+ --hash=sha256:4a1aba3340a8dca8db6eb5a7986157f52eb9e436b74813764241981ca4888f03 \
+ --hash=sha256:50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8 \
+ --hash=sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230 \
+ --hash=sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8 \
+ --hash=sha256:5569417dc80977fc8c2d43a86f78e0a5a22fee17565d78621b6bb264a115d4ea \
+ --hash=sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641 \
+ --hash=sha256:583b7c42688636f930688d712885cf1531326ee05effd982028212ccc13e5957 \
+ --hash=sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6 \
+ --hash=sha256:5f451484aeb5cafee1ccf789b1b66f535409d038c56966d6101740c1614b86c6 \
+ --hash=sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5 \
+ --hash=sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f \
+ --hash=sha256:71c989cbf3254fbd5e84d3bff31e4da39c43f884e64f2551d14bb3c186230f00 \
+ --hash=sha256:781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e \
+ --hash=sha256:7be95cfb0a4dae143eaed2bcba8ac23f4892d8971311f1b06f3c6b78952ee70b \
+ --hash=sha256:7d837379b647c0c4c2355c2499723f82f1635fd2c26510e1f587d89bc2199e72 \
+ --hash=sha256:86890e837d61574c92a97496d590968b23c2ef0aeb8a9bc9421d174cd378ae39 \
+ --hash=sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9 \
+ --hash=sha256:8b6e209ffee39ff1b6d0fa7bfef6de950c60dfb91b8fcead17da4ee539121a79 \
+ --hash=sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0 \
+ --hash=sha256:8d7f0659570eefb578dacde98e24fb60af35350193e4f56e11190787bee77dac \
+ --hash=sha256:8e1dab317b6e77424356e11e99a432b7cb2f3ec8c5ab4dabbcee6add48f72b35 \
+ --hash=sha256:8ff32bb86522a9e5e31439a58addbb0166f0204d64066fb955265c4e214160f0 \
+ --hash=sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5 \
+ --hash=sha256:9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c \
+ --hash=sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8 \
+ --hash=sha256:a0b31e0b424cc6b5a04b8838bbaec1688834b2383256688cf47eb97412531da1 \
+ --hash=sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244 \
+ --hash=sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3 \
+ --hash=sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767 \
+ --hash=sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a \
+ --hash=sha256:af80d74d4edfa3cb9ed973a0a5ba2b2a549371f8a741e0800cb07becdd20f23d \
+ --hash=sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd \
+ --hash=sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e \
+ --hash=sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944 \
+ --hash=sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82 \
+ --hash=sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d \
+ --hash=sha256:caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4 \
+ --hash=sha256:d6297ce39ce5c2e6feb13c1a996a2ded3b6832155fcfc920265c76f24c7cceb5 \
+ --hash=sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904 \
+ --hash=sha256:df57afc692e517a85e65b72e165356ed1df12386ecb879ad5693be08fac65dde \
+ --hash=sha256:e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f \
+ --hash=sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c \
+ --hash=sha256:eaded469f5e5b7294e2bdca0ab06becb6756ea86894a47806456089298813c89 \
+ --hash=sha256:f4a32d1bd841d4bcbffdcb3d2ce50c09c3909fbead375ab28d0181af89fd04da \
+ --hash=sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4
# via fastmcp
wrapt==1.17.3 \
--hash=sha256:02b551d101f31694fc785e58e0720ef7d9a10c4e62c1c9358ce6f63f23e30a56 \
From 87998499598e89c17d6e466c9ddb3681c522c838 Mon Sep 17 00:00:00 2001
From: "publish-to-bcr-bot[bot]"
<112732530+publish-to-bcr-bot[bot]@users.noreply.github.com>
Date: Mon, 19 Jan 2026 14:53:35 +0100
Subject: [PATCH 032/367] maliput@1.11.0 (#7196)
:warning: The Publish to BCR GitHub app will be discontinued after June
30, 2026. Please migrate to the GitHub Actions [reusable
workflow](https://github.com/bazel-contrib/publish-to-bcr?tab=readme-ov-file#setup)
before then.
Release: https://github.com/maliput/maliput/releases/tag/1.11.0
_Automated by [Publish to BCR](https://github.com/apps/publish-to-bcr)_
Co-authored-by: Daniel Stonier
---
modules/maliput/1.11.0/MODULE.bazel | 14 ++++++++++++++
modules/maliput/1.11.0/presubmit.yml | 25 +++++++++++++++++++++++++
modules/maliput/1.11.0/source.json | 5 +++++
modules/maliput/metadata.json | 3 ++-
4 files changed, 46 insertions(+), 1 deletion(-)
create mode 100644 modules/maliput/1.11.0/MODULE.bazel
create mode 100644 modules/maliput/1.11.0/presubmit.yml
create mode 100644 modules/maliput/1.11.0/source.json
diff --git a/modules/maliput/1.11.0/MODULE.bazel b/modules/maliput/1.11.0/MODULE.bazel
new file mode 100644
index 00000000000..a150f862d71
--- /dev/null
+++ b/modules/maliput/1.11.0/MODULE.bazel
@@ -0,0 +1,14 @@
+"""
+Welcome to Maliput!
+"""
+
+module(
+ name = "maliput",
+ compatibility_level = 1,
+ version = "1.11.0",
+)
+
+bazel_dep(name = "rules_cc", version = "0.0.9")
+bazel_dep(name = "eigen", version = "3.4.0.bcr.1.1")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "yaml-cpp", version = "0.8.0")
diff --git a/modules/maliput/1.11.0/presubmit.yml b/modules/maliput/1.11.0/presubmit.yml
new file mode 100644
index 00000000000..c1f05fad6c5
--- /dev/null
+++ b/modules/maliput/1.11.0/presubmit.yml
@@ -0,0 +1,25 @@
+matrix:
+ bazel: [6.x, 7.x]
+ platform: ["ubuntu2004"] # "debian10", "macos", "windows"
+tasks:
+ verify_targets:
+ name: Verify Build Targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@maliput//:common'
+ - '@maliput//:math'
+ - '@maliput//:base'
+ - '@maliput//:geometry_base'
+ - '@maliput//:api'
+ - '@maliput//:plugin'
+ - '@maliput//:routing'
+ - '@maliput//:utility'
+ - '@maliput//:drake'
+ - '@maliput//:test_utilities'
+ # TODO(stonier): no tests yet...
+ # run_tests:
+ # name: "Run test module"
+ # platform: ${{ platform }}
+ # test_targets:
+ # - "//..."
diff --git a/modules/maliput/1.11.0/source.json b/modules/maliput/1.11.0/source.json
new file mode 100644
index 00000000000..06ec9c8c0a5
--- /dev/null
+++ b/modules/maliput/1.11.0/source.json
@@ -0,0 +1,5 @@
+{
+ "integrity": "sha256-DjnRcFqPzyMGF1hDAKKX2p980LhGJW2Ngw2uz6cQg7k=",
+ "strip_prefix": "maliput-1.11.0",
+ "url": "https://github.com/maliput/maliput/releases/download/1.11.0/maliput-1.11.0.tar.gz"
+}
diff --git a/modules/maliput/metadata.json b/modules/maliput/metadata.json
index 67f8efb3ef9..72f430d3d74 100644
--- a/modules/maliput/metadata.json
+++ b/modules/maliput/metadata.json
@@ -34,7 +34,8 @@
"1.8.1",
"1.8.2",
"1.9.0",
- "1.10.0"
+ "1.10.0",
+ "1.11.0"
],
"yanked_versions": {}
}
From 93c429ff5737fa26ef52c9bceb2fab86c3e1d4a0 Mon Sep 17 00:00:00 2001
From: "publish-to-bcr-bot[bot]"
<112732530+publish-to-bcr-bot[bot]@users.noreply.github.com>
Date: Mon, 19 Jan 2026 15:58:46 +0100
Subject: [PATCH 033/367] maliput_malidrive@0.17.0 (#7197)
:warning: The Publish to BCR GitHub app will be discontinued after June
30, 2026. Please migrate to the GitHub Actions [reusable
workflow](https://github.com/bazel-contrib/publish-to-bcr?tab=readme-ov-file#setup)
before then.
Release:
https://github.com/maliput/maliput_malidrive/releases/tag/0.17.0
_Automated by [Publish to BCR](https://github.com/apps/publish-to-bcr)_
Co-authored-by: Daniel Stonier
---
modules/maliput_malidrive/0.17.0/MODULE.bazel | 18 +++++++++++++
.../maliput_malidrive/0.17.0/presubmit.yml | 25 +++++++++++++++++++
modules/maliput_malidrive/0.17.0/source.json | 5 ++++
modules/maliput_malidrive/metadata.json | 3 ++-
4 files changed, 50 insertions(+), 1 deletion(-)
create mode 100644 modules/maliput_malidrive/0.17.0/MODULE.bazel
create mode 100644 modules/maliput_malidrive/0.17.0/presubmit.yml
create mode 100644 modules/maliput_malidrive/0.17.0/source.json
diff --git a/modules/maliput_malidrive/0.17.0/MODULE.bazel b/modules/maliput_malidrive/0.17.0/MODULE.bazel
new file mode 100644
index 00000000000..91e8f57c456
--- /dev/null
+++ b/modules/maliput_malidrive/0.17.0/MODULE.bazel
@@ -0,0 +1,18 @@
+"""
+Welcome to Maliput Malidrive!
+"""
+
+module(
+ name = "maliput_malidrive",
+ compatibility_level = 1,
+ version = "0.17.0",
+)
+
+bazel_dep(name = "rules_cc", version = "0.0.9")
+
+bazel_dep(name = "eigen", version = "3.4.0.bcr.1.1")
+bazel_dep(name = "gflags", version = "2.2.2")
+bazel_dep(name = "maliput", version = "1.11.0")
+bazel_dep(name = "tinyxml2", version = "9.0.0")
+
+bazel_dep(name = "googletest", version = "1.14.0", dev_dependency = True)
diff --git a/modules/maliput_malidrive/0.17.0/presubmit.yml b/modules/maliput_malidrive/0.17.0/presubmit.yml
new file mode 100644
index 00000000000..3fcfb7b68b7
--- /dev/null
+++ b/modules/maliput_malidrive/0.17.0/presubmit.yml
@@ -0,0 +1,25 @@
+matrix:
+ bazel: [6.x, 7.x, 8.x]
+ platform: ["ubuntu2004"] # "debian10", "macos", "windows"
+tasks:
+ verify_targets:
+ name: Verify Build Targets
+ bazel: ${{ bazel }}
+ platform: ${{ platform }}
+ build_flags:
+ - '--process_headers_in_dependencies'
+ build_targets:
+ - '@maliput_malidrive//:maliput_malidrive'
+
+bcr_test_module:
+ module_path: "."
+ matrix:
+ bazel: [6.x, 7.x, 8.x]
+ platform: ["ubuntu2004"] # "debian10", "macos", "windows"
+ tasks:
+ run_tests:
+ name: "Run test module"
+ bazel: ${{ bazel }}
+ platform: ${{ platform }}
+ test_targets:
+ - "//..."
diff --git a/modules/maliput_malidrive/0.17.0/source.json b/modules/maliput_malidrive/0.17.0/source.json
new file mode 100644
index 00000000000..c701cfc96fe
--- /dev/null
+++ b/modules/maliput_malidrive/0.17.0/source.json
@@ -0,0 +1,5 @@
+{
+ "integrity": "sha256-kVZ4rrmK8yEAOLfAjWrRJorZ+yp1hlOm5pGOaEF5ACg=",
+ "strip_prefix": "maliput_malidrive-0.17.0",
+ "url": "https://github.com/maliput/maliput_malidrive/releases/download/0.17.0/maliput_malidrive-0.17.0.tar.gz"
+}
diff --git a/modules/maliput_malidrive/metadata.json b/modules/maliput_malidrive/metadata.json
index 6b9b39978c1..2de897c9ee3 100644
--- a/modules/maliput_malidrive/metadata.json
+++ b/modules/maliput_malidrive/metadata.json
@@ -45,7 +45,8 @@
"0.14.0",
"0.15.0",
"0.15.1",
- "0.16.0"
+ "0.16.0",
+ "0.17.0"
],
"yanked_versions": {}
}
From 84ab72259ead0f504b490199146024410276ddf5 Mon Sep 17 00:00:00 2001
From: Connector Switch
Date: Mon, 19 Jan 2026 23:37:09 +0800
Subject: [PATCH 034/367] sqlite3@3.51.2 (#7198)
---
modules/sqlite3/3.51.2/MODULE.bazel | 9 +++++
modules/sqlite3/3.51.2/overlay/BUILD.bazel | 38 +++++++++++++++++++++
modules/sqlite3/3.51.2/overlay/MODULE.bazel | 9 +++++
modules/sqlite3/3.51.2/presubmit.yml | 17 +++++++++
modules/sqlite3/3.51.2/source.json | 9 +++++
modules/sqlite3/metadata.json | 3 +-
6 files changed, 84 insertions(+), 1 deletion(-)
create mode 100644 modules/sqlite3/3.51.2/MODULE.bazel
create mode 100644 modules/sqlite3/3.51.2/overlay/BUILD.bazel
create mode 100644 modules/sqlite3/3.51.2/overlay/MODULE.bazel
create mode 100644 modules/sqlite3/3.51.2/presubmit.yml
create mode 100644 modules/sqlite3/3.51.2/source.json
diff --git a/modules/sqlite3/3.51.2/MODULE.bazel b/modules/sqlite3/3.51.2/MODULE.bazel
new file mode 100644
index 00000000000..329120dd2d7
--- /dev/null
+++ b/modules/sqlite3/3.51.2/MODULE.bazel
@@ -0,0 +1,9 @@
+module(
+ name = "sqlite3",
+ version = "3.51.2",
+ compatibility_level = 1,
+ bazel_compatibility = [">=7.2.1"],
+)
+
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.16")
diff --git a/modules/sqlite3/3.51.2/overlay/BUILD.bazel b/modules/sqlite3/3.51.2/overlay/BUILD.bazel
new file mode 100644
index 00000000000..7bb3b52ecb1
--- /dev/null
+++ b/modules/sqlite3/3.51.2/overlay/BUILD.bazel
@@ -0,0 +1,38 @@
+package(default_visibility = ["//visibility:public"])
+
+load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
+
+cc_binary(
+ name = "shell",
+ srcs = ["shell.c"],
+ # Disable Bazel's default behavior of linking to `libstdc++` / `libc++`.
+ features = ["-default_link_libs"],
+ linkopts = select({
+ "@platforms//os:windows": [],
+ "//conditions:default": ["-lm"],
+ }),
+ deps = [":sqlite3"],
+)
+
+cc_library(
+ name = "sqlite3",
+ srcs = ["sqlite3.c"],
+ hdrs = ["sqlite3.h"],
+ includes = ["."],
+ # Some Unix platforms have pthread and/or dlopen in separate libraries.
+ linkopts = select({
+ "@platforms//os:freebsd": ["-lpthread"],
+ "@platforms//os:linux": [
+ "-lpthread",
+ "-ldl",
+ ],
+ "@platforms//os:netbsd": ["-lpthread"],
+ "@platforms//os:openbsd": ["-lpthread"],
+ "//conditions:default": [],
+ }),
+)
+
+cc_library(
+ name = "sqlite3ext",
+ hdrs = ["sqlite3ext.h"],
+)
diff --git a/modules/sqlite3/3.51.2/overlay/MODULE.bazel b/modules/sqlite3/3.51.2/overlay/MODULE.bazel
new file mode 100644
index 00000000000..329120dd2d7
--- /dev/null
+++ b/modules/sqlite3/3.51.2/overlay/MODULE.bazel
@@ -0,0 +1,9 @@
+module(
+ name = "sqlite3",
+ version = "3.51.2",
+ compatibility_level = 1,
+ bazel_compatibility = [">=7.2.1"],
+)
+
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.16")
diff --git a/modules/sqlite3/3.51.2/presubmit.yml b/modules/sqlite3/3.51.2/presubmit.yml
new file mode 100644
index 00000000000..6b9e9b3959e
--- /dev/null
+++ b/modules/sqlite3/3.51.2/presubmit.yml
@@ -0,0 +1,17 @@
+matrix:
+ platform:
+ - rockylinux8
+ - debian10
+ - ubuntu2004
+ - macos
+ - windows
+ bazel: [7.x]
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@sqlite3//:sqlite3'
+ - '@sqlite3//:shell'
+ - '@sqlite3//:sqlite3ext'
diff --git a/modules/sqlite3/3.51.2/source.json b/modules/sqlite3/3.51.2/source.json
new file mode 100644
index 00000000000..c7a066c39ee
--- /dev/null
+++ b/modules/sqlite3/3.51.2/source.json
@@ -0,0 +1,9 @@
+{
+ "url": "https://sqlite.org/2026/sqlite-amalgamation-3510200.zip",
+ "integrity": "sha256-biqEWkkwJr260GGLK1oM9IWE+qtHOESA7Z9ZLZEvI+w=",
+ "strip_prefix": "sqlite-amalgamation-3510200",
+ "overlay": {
+ "BUILD.bazel": "sha256-kGl4QNtzzHKZYXWNLPFmycZeetaJ2WqmXI1f/rI+FMM=",
+ "MODULE.bazel": "sha256-zIv37kVTTg2ceHsc3gKEqkna2blRAGIpSCTASZhT/5k="
+ }
+}
diff --git a/modules/sqlite3/metadata.json b/modules/sqlite3/metadata.json
index 455bb599137..4cbac493a0b 100644
--- a/modules/sqlite3/metadata.json
+++ b/modules/sqlite3/metadata.json
@@ -29,7 +29,8 @@
"3.50.4",
"3.51.0",
"3.51.1",
- "3.51.1.bcr.1"
+ "3.51.1.bcr.1",
+ "3.51.2"
],
"yanked_versions": {}
}
From d02dce09a5e8038e538884f2423b7d99293e16c3 Mon Sep 17 00:00:00 2001
From: Alexander Gutkin <35786058+agutkin@users.noreply.github.com>
Date: Mon, 19 Jan 2026 15:37:23 +0000
Subject: [PATCH 035/367] Cython@3.2.4 (#7182)
Release:
https://github.com/cython/cython/releases/download/3.2.4/cython-3.2.4.tar.gz
The module introduces a fix for missing rules_cc@ modules which was
preventing the builds using
https://github.com/cython/cython/blob/master/Tools/rules.bzl
rules to load.
See issue #7174.
Fixes #7174
@bazel-io skip_check unstable_url
---
modules/cython/3.2.4/MODULE.bazel | 27 +++++++++++++++++++++++
modules/cython/3.2.4/overlay/MODULE.bazel | 27 +++++++++++++++++++++++
modules/cython/3.2.4/presubmit.yml | 17 ++++++++++++++
modules/cython/3.2.4/source.json | 8 +++++++
modules/cython/metadata.json | 3 ++-
5 files changed, 81 insertions(+), 1 deletion(-)
create mode 100644 modules/cython/3.2.4/MODULE.bazel
create mode 100644 modules/cython/3.2.4/overlay/MODULE.bazel
create mode 100644 modules/cython/3.2.4/presubmit.yml
create mode 100644 modules/cython/3.2.4/source.json
diff --git a/modules/cython/3.2.4/MODULE.bazel b/modules/cython/3.2.4/MODULE.bazel
new file mode 100644
index 00000000000..46b6d57fd34
--- /dev/null
+++ b/modules/cython/3.2.4/MODULE.bazel
@@ -0,0 +1,27 @@
+module(
+ name = "cython",
+ version = "3.2.4",
+ bazel_compatibility = [">=7.2.1"],
+)
+
+bazel_dep(name = "rules_python", version = "1.7.0")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+
+PYTHON_VERSIONS = [
+ "3.8",
+ "3.9",
+ "3.10",
+ "3.11",
+ "3.12",
+ "3.13",
+]
+
+python = use_extension("@rules_python//python/extensions:python.bzl", "python")
+
+[
+ python.toolchain(
+ is_default = python_version == PYTHON_VERSIONS[-1],
+ python_version = python_version,
+ )
+ for python_version in PYTHON_VERSIONS
+]
diff --git a/modules/cython/3.2.4/overlay/MODULE.bazel b/modules/cython/3.2.4/overlay/MODULE.bazel
new file mode 100644
index 00000000000..46b6d57fd34
--- /dev/null
+++ b/modules/cython/3.2.4/overlay/MODULE.bazel
@@ -0,0 +1,27 @@
+module(
+ name = "cython",
+ version = "3.2.4",
+ bazel_compatibility = [">=7.2.1"],
+)
+
+bazel_dep(name = "rules_python", version = "1.7.0")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+
+PYTHON_VERSIONS = [
+ "3.8",
+ "3.9",
+ "3.10",
+ "3.11",
+ "3.12",
+ "3.13",
+]
+
+python = use_extension("@rules_python//python/extensions:python.bzl", "python")
+
+[
+ python.toolchain(
+ is_default = python_version == PYTHON_VERSIONS[-1],
+ python_version = python_version,
+ )
+ for python_version in PYTHON_VERSIONS
+]
diff --git a/modules/cython/3.2.4/presubmit.yml b/modules/cython/3.2.4/presubmit.yml
new file mode 100644
index 00000000000..0b9ec3940ee
--- /dev/null
+++ b/modules/cython/3.2.4/presubmit.yml
@@ -0,0 +1,17 @@
+matrix:
+ platform:
+ - debian10
+ - ubuntu2004
+ - macos
+ - macos_arm64
+ - windows
+ bazel:
+ - 8.x
+ - 7.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@cython'
diff --git a/modules/cython/3.2.4/source.json b/modules/cython/3.2.4/source.json
new file mode 100644
index 00000000000..a3b1411eb51
--- /dev/null
+++ b/modules/cython/3.2.4/source.json
@@ -0,0 +1,8 @@
+{
+ "url": "https://github.com/cython/cython/archive/refs/tags/3.2.4.tar.gz",
+ "strip_prefix": "cython-3.2.4",
+ "integrity": "sha256-ljHlhsSbnT9yw5YsN2EZR5pqmOPA48FNUhjhme9WOxg=",
+ "overlay": {
+ "MODULE.bazel": "sha256-+xeY1ErnMUZQ01CYeD42fO0KKlPQWf3q1RpPay2pXeM="
+ }
+}
diff --git a/modules/cython/metadata.json b/modules/cython/metadata.json
index 8e6f100f6c1..e9c70ef54bd 100644
--- a/modules/cython/metadata.json
+++ b/modules/cython/metadata.json
@@ -11,7 +11,8 @@
],
"versions": [
"3.0.11-1",
- "3.1.3"
+ "3.1.3",
+ "3.2.4"
],
"yanked_versions": {}
}
From 634318d49989103d60b9276760fac551e9b5ace9 Mon Sep 17 00:00:00 2001
From: Chuck Grindel
Date: Mon, 19 Jan 2026 08:56:54 -0700
Subject: [PATCH 036/367] swift_gazelle_plugin@0.2.2 (#7200)
Release:
https://github.com/cgrindel/swift_gazelle_plugin/releases/tag/v0.2.2
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: Chuck Grindel
---
.../swift_gazelle_plugin/0.2.2/MODULE.bazel | 65 +++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 ++++
.../swift_gazelle_plugin/0.2.2/presubmit.yml | 14 ++++
.../swift_gazelle_plugin/0.2.2/source.json | 9 +++
modules/swift_gazelle_plugin/metadata.json | 3 +-
5 files changed, 102 insertions(+), 1 deletion(-)
create mode 100644 modules/swift_gazelle_plugin/0.2.2/MODULE.bazel
create mode 100644 modules/swift_gazelle_plugin/0.2.2/patches/module_dot_bazel_version.patch
create mode 100644 modules/swift_gazelle_plugin/0.2.2/presubmit.yml
create mode 100644 modules/swift_gazelle_plugin/0.2.2/source.json
diff --git a/modules/swift_gazelle_plugin/0.2.2/MODULE.bazel b/modules/swift_gazelle_plugin/0.2.2/MODULE.bazel
new file mode 100644
index 00000000000..2130b8a40dc
--- /dev/null
+++ b/modules/swift_gazelle_plugin/0.2.2/MODULE.bazel
@@ -0,0 +1,65 @@
+module(
+ name = "swift_gazelle_plugin",
+ version = "0.2.2",
+)
+
+# MARK: - Runtime Dependencies
+
+bazel_dep(name = "rules_shell", version = "0.3.0")
+bazel_dep(name = "cgrindel_bazel_starlib", version = "0.27.0")
+bazel_dep(name = "bazel_skylib", version = "1.7.1")
+bazel_dep(name = "rules_go", version = "0.59.0")
+bazel_dep(name = "gazelle", version = "0.45.0")
+
+go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
+go_sdk.download(version = "1.24.0")
+
+go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
+go_deps.from_file(go_mod = "//:go.mod")
+use_repo(
+ go_deps,
+ "com_github_bazelbuild_buildtools",
+ "com_github_creasty_defaults",
+ "com_github_deckarep_golang_set_v2",
+ "com_github_stretchr_testify",
+ "in_gopkg_yaml_v3",
+ "org_golang_x_exp",
+ "org_golang_x_text",
+)
+
+# MARK: - Dev Dependencies
+
+bazel_dep(
+ name = "rules_bazel_integration_test",
+ version = "0.32.1",
+ dev_dependency = True,
+)
+bazel_dep(
+ name = "bazel_skylib_gazelle_plugin",
+ version = "1.4.1",
+ dev_dependency = True,
+)
+bazel_dep(
+ name = "platforms",
+ version = "1.0.0",
+ dev_dependency = True,
+)
+
+bazel_binaries = use_extension(
+ "@rules_bazel_integration_test//:extensions.bzl",
+ "bazel_binaries",
+ dev_dependency = True,
+)
+bazel_binaries.download(version_file = "//:.bazelversion")
+
+# GH0086: Enable once Bazel HEAD is happy again.
+# bazel_binaries.download(version = "last_green")
+use_repo(
+ bazel_binaries,
+ "bazel_binaries",
+ "bazel_binaries_bazelisk",
+ "build_bazel_bazel_.bazelversion",
+
+ # GH0086: Enable once Bazel HEAD is happy again.
+ # "build_bazel_bazel_last_green",
+)
diff --git a/modules/swift_gazelle_plugin/0.2.2/patches/module_dot_bazel_version.patch b/modules/swift_gazelle_plugin/0.2.2/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..892b7d403f7
--- /dev/null
+++ b/modules/swift_gazelle_plugin/0.2.2/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "swift_gazelle_plugin",
+- version = "0.0.0",
++ version = "0.2.2",
+ )
+
+ # MARK: - Runtime Dependencies
+
diff --git a/modules/swift_gazelle_plugin/0.2.2/presubmit.yml b/modules/swift_gazelle_plugin/0.2.2/presubmit.yml
new file mode 100644
index 00000000000..0a78d222c41
--- /dev/null
+++ b/modules/swift_gazelle_plugin/0.2.2/presubmit.yml
@@ -0,0 +1,14 @@
+bcr_test_module:
+ module_path: ""
+ matrix:
+ platform: ["macos"]
+ bazel:
+ # This needs to exactly match the value used in .bazelversion at the root.
+ - 8.5.1
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//bzlmod:e2e_test"
diff --git a/modules/swift_gazelle_plugin/0.2.2/source.json b/modules/swift_gazelle_plugin/0.2.2/source.json
new file mode 100644
index 00000000000..77ef49ff76a
--- /dev/null
+++ b/modules/swift_gazelle_plugin/0.2.2/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-QnLo9QHylUcToX01frdp5Ohj5fNM7whYqZUndtRdGP0=",
+ "strip_prefix": "",
+ "url": "https://github.com/cgrindel/swift_gazelle_plugin/releases/download/v0.2.2/swift_gazelle_plugin.v0.2.2.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-GxR022nOOXh61fsVMI0LYkzx2yfqfFJv6xjL7Rr0+lI="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/swift_gazelle_plugin/metadata.json b/modules/swift_gazelle_plugin/metadata.json
index 48aae45ccba..dad540929e9 100644
--- a/modules/swift_gazelle_plugin/metadata.json
+++ b/modules/swift_gazelle_plugin/metadata.json
@@ -14,7 +14,8 @@
"versions": [
"0.1.0",
"0.2.0",
- "0.2.1"
+ "0.2.1",
+ "0.2.2"
],
"yanked_versions": {}
}
From c0cad2f8dbaff887d083f83eb12ecde6083a926e Mon Sep 17 00:00:00 2001
From: Mizux Seiha
Date: Mon, 19 Jan 2026 09:54:22 -0800
Subject: [PATCH 037/367] feat: add or-tools@9.15 (#7202)
---
modules/or-tools/9.15/MODULE.bazel | 170 ++++++++++++++++++++++++++++
modules/or-tools/9.15/presubmit.yml | 31 +++++
modules/or-tools/9.15/source.json | 5 +
modules/or-tools/metadata.json | 3 +-
4 files changed, 208 insertions(+), 1 deletion(-)
create mode 100644 modules/or-tools/9.15/MODULE.bazel
create mode 100644 modules/or-tools/9.15/presubmit.yml
create mode 100644 modules/or-tools/9.15/source.json
diff --git a/modules/or-tools/9.15/MODULE.bazel b/modules/or-tools/9.15/MODULE.bazel
new file mode 100644
index 00000000000..12dde90cddc
--- /dev/null
+++ b/modules/or-tools/9.15/MODULE.bazel
@@ -0,0 +1,170 @@
+# Copyright 2010-2025 Google LLC
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+###############################################################################
+# Bazel now uses Bzlmod by default to manage external dependencies.
+# Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel.
+#
+# For more details, please check https://github.com/bazelbuild/bazel/issues/18958
+###############################################################################
+
+module(
+ name = "or-tools",
+ version = "9.15",
+)
+
+# see https://registry.bazel.build/
+# Bazel dependencies
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "contrib_rules_jvm", version = "0.28.0")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.9")
+bazel_dep(name = "rules_go", version = "0.53.0")
+bazel_dep(name = "rules_java", version = "8.14.0")
+bazel_dep(name = "rules_jvm_external", version = "6.7")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "rules_proto", version = "7.1.0")
+bazel_dep(name = "rules_python", version = "1.7.0")
+bazel_dep(name = "rules_shell", version = "0.6.1")
+
+# OR-Tools C++ dependencies
+bazel_dep(name = "abseil-cpp", version = "20250814.1")
+bazel_dep(name = "bzip2", version = "1.0.8.bcr.2")
+bazel_dep(name = "eigen", version = "3.4.0.bcr.3")
+bazel_dep(name = "glpk", version = "5.0.bcr.4")
+bazel_dep(name = "google_benchmark", version = "1.9.2")
+bazel_dep(name = "googletest", version = "1.17.0")
+bazel_dep(name = "highs", version = "1.11.0")
+bazel_dep(name = "protobuf-matchers", version = "0.1.1")
+bazel_dep(name = "protobuf", version = "32.0")
+bazel_dep(name = "re2", version = "2025-08-12")
+bazel_dep(name = "scip", version = "9.2.3")
+bazel_dep(name = "zlib", version = "1.3.1.bcr.7")
+
+# OR-Tools wrappers dependencies
+bazel_dep(name = "gazelle", version = "0.43.0")
+bazel_dep(name = "pybind11_abseil", version = "202402.0")
+bazel_dep(name = "pybind11_bazel", version = "2.13.6")
+bazel_dep(name = "pybind11_protobuf", version = "0.0.0-20240524-1d7a729")
+bazel_dep(name = "swig", version = "4.3.0")
+
+git_override(
+ module_name = "pybind11_bazel",
+ commit = "2b6082a4d9d163a52299718113fa41e4b7978db5",
+ patch_strip = 1,
+ patches = ["//:patches/pybind11_bazel.patch"],
+ remote = "https://github.com/pybind/pybind11_bazel.git",
+)
+
+git_override(
+ module_name = "pybind11_abseil",
+ commit = "70f8b693b3b70573ca785ef62d9f48054f45d786",
+ patch_strip = 1,
+ patches = ["//:patches/pybind11_abseil.patch"],
+ remote = "https://github.com/pybind/pybind11_abseil.git",
+)
+
+git_override(
+ module_name = "pybind11_protobuf",
+ commit = "f02a2b7653bc50eb5119d125842a3870db95d251",
+ remote = "https://github.com/pybind/pybind11_protobuf.git",
+)
+
+# Python
+# https://rules-python.readthedocs.io/en/latest/toolchains.html#library-modules-with-dev-only-python-usage
+
+DEFAULT_PYTHON = "3.12"
+
+python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True)
+python.defaults(python_version = DEFAULT_PYTHON)
+python.toolchain(python_version = DEFAULT_PYTHON)
+
+pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
+
+[
+ pip.parse(
+ envsubst = ["PIP_INDEX_URL"],
+ experimental_index_url = "${PIP_INDEX_URL:-https://pypi.org/simple}",
+ hub_name = hub_name,
+ python_version = DEFAULT_PYTHON,
+ requirements_lock = requirements_lock,
+ )
+ for hub_name, requirements_lock in [
+ ("ortools_pip_deps", "//bazel:ortools_requirements.txt"),
+ ("ortools_notebook_deps", "//bazel:notebook_requirements.txt"),
+ ]
+]
+
+use_repo(pip, pip_deps = "ortools_pip_deps")
+use_repo(pip, "ortools_notebook_deps")
+
+# Java
+
+JUNIT_PLATFORM_VERSION = "1.9.2"
+
+JUNIT_JUPITER_VERSION = "5.9.2"
+
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+maven.install(
+ artifacts = [
+ "net.java.dev.jna:jna:5.14.0",
+ "com.google.truth:truth:0.32",
+ "org.junit.platform:junit-platform-launcher:%s" % JUNIT_PLATFORM_VERSION,
+ "org.junit.platform:junit-platform-reporting:%s" % JUNIT_PLATFORM_VERSION,
+ "org.junit.jupiter:junit-jupiter-api:%s" % JUNIT_JUPITER_VERSION,
+ "org.junit.jupiter:junit-jupiter-params:%s" % JUNIT_JUPITER_VERSION,
+ "org.junit.jupiter:junit-jupiter-engine:%s" % JUNIT_JUPITER_VERSION,
+ ],
+ repositories = [
+ "https://repo1.maven.org/maven2",
+ ],
+)
+use_repo(maven, "maven")
+
+go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
+go_sdk.download(version = "1.22.4")
+
+go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
+go_deps.module(
+ path = "github.com/golang/glog",
+ sum = "h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY=",
+ version = "v1.2.2",
+)
+go_deps.module(
+ path = "github.com/golang/protobuf",
+ sum = "h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=",
+ version = "v1.5.4",
+)
+go_deps.module(
+ path = "github.com/google/go-cmp",
+ sum = "h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=",
+ version = "v0.6.0",
+)
+go_deps.module(
+ path = "google.golang.org/protobuf",
+ sum = "h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=",
+ version = "v1.36.5",
+)
+go_deps.module(
+ path = "golang.org/x/xerrors",
+ sum = "h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=",
+ version = "v0.0.0-20191204190536-9bdfabe68543",
+)
+use_repo(
+ go_deps,
+ "com_github_golang_glog",
+ "com_github_golang_protobuf",
+ "com_github_google_go_cmp",
+ "org_golang_google_protobuf",
+ "org_golang_x_xerrors",
+)
diff --git a/modules/or-tools/9.15/presubmit.yml b/modules/or-tools/9.15/presubmit.yml
new file mode 100644
index 00000000000..e3c6cc59394
--- /dev/null
+++ b/modules/or-tools/9.15/presubmit.yml
@@ -0,0 +1,31 @@
+matrix:
+ platform:
+ #- debian11 # some graph tests do not support gcc-10
+ - ubuntu2404
+ - macos
+ - macos_arm64
+ bazel:
+ - 8.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - '--compilation_mode=opt'
+ - '--cxxopt=-std=c++17'
+ - '--cxxopt=-Wno-sign-compare'
+ - '--host_cxxopt=-std=c++17'
+ - '--host_cxxopt=-Wno-sign-compare'
+ build_targets:
+ - '@or-tools//ortools/base:all'
+ - '@or-tools//ortools/init:all'
+ - '@or-tools//ortools/algorithms:all'
+ - '@or-tools//ortools/graph:all'
+ - '@or-tools//ortools/bop:all'
+ - '@or-tools//ortools/constraint_solver:all'
+ - '@or-tools//ortools/glop:all'
+ - '@or-tools//ortools/linear_solver:all'
+ - '@or-tools//ortools/math_opt:all'
+ - '@or-tools//ortools/pdlp:all'
+ - '@or-tools//ortools/sat:all'
diff --git a/modules/or-tools/9.15/source.json b/modules/or-tools/9.15/source.json
new file mode 100644
index 00000000000..185ed843a4a
--- /dev/null
+++ b/modules/or-tools/9.15/source.json
@@ -0,0 +1,5 @@
+{
+ "url": "https://github.com/google/or-tools/releases/download/v9.15/or-tools-9.15.tar.gz",
+ "strip_prefix": "or-tools-9.15",
+ "integrity": "sha256-WZyHAxm7EnRB2SxFLY95vKRspv0pXB3rgDHtMDo2ExE="
+}
diff --git a/modules/or-tools/metadata.json b/modules/or-tools/metadata.json
index f4636a3f211..d20fe16464a 100644
--- a/modules/or-tools/metadata.json
+++ b/modules/or-tools/metadata.json
@@ -21,7 +21,8 @@
"9.12",
"9.13",
"9.14",
- "9.14.bcr.1"
+ "9.14.bcr.1",
+ "9.15"
],
"yanked_versions": {}
}
From 986c26716bc1b3cd762761d334aac39c854700c2 Mon Sep 17 00:00:00 2001
From: Kevin Greene
Date: Mon, 19 Jan 2026 09:54:36 -0800
Subject: [PATCH 038/367] Add behaviortree_cpp@4.7.0.bcr.2 (#7176)
This PR patches behaviortree_cpp to use nlohmann_json and magic_enum
from the normal include paths instead of behaviortree_cpp's vendored
contrib directory. This way they do not interfere with other bazel
modules which might find the vendored headers, resulting in multiple
versions of the same dependency in the repo.
---
.../behaviortree_cpp/4.7.0.bcr.2/MODULE.bazel | 22 ++++
.../behaviortree_cpp/4.7.0.bcr.2/README.md | 11 ++
.../4.7.0.bcr.2/overlay/BUILD.bazel | 116 ++++++++++++++++++
.../patches/bt_test_folder_bazel.patch | 19 +++
.../patches/cpp-sqlite_bazel_compat.patch | 12 ++
.../patches/cppzmq_bazel_compat.patch | 28 +++++
.../4.7.0.bcr.2/patches/curses_include.patch | 13 ++
.../patches/minicoro_bazel_compat.patch | 13 ++
.../patches/minitrace_bazel_compat.patch | 14 +++
.../4.7.0.bcr.2/patches/no_contrib_deps.patch | 52 ++++++++
.../patches/tinyxml2_bazel_compat.patch | 13 ++
.../4.7.0.bcr.2/presubmit.yml | 35 ++++++
.../behaviortree_cpp/4.7.0.bcr.2/source.json | 19 +++
modules/behaviortree_cpp/metadata.json | 3 +-
14 files changed, 369 insertions(+), 1 deletion(-)
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/MODULE.bazel
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/README.md
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/overlay/BUILD.bazel
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/patches/bt_test_folder_bazel.patch
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/patches/cpp-sqlite_bazel_compat.patch
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/patches/cppzmq_bazel_compat.patch
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/patches/curses_include.patch
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/patches/minicoro_bazel_compat.patch
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/patches/minitrace_bazel_compat.patch
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/patches/no_contrib_deps.patch
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/patches/tinyxml2_bazel_compat.patch
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/presubmit.yml
create mode 100644 modules/behaviortree_cpp/4.7.0.bcr.2/source.json
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/MODULE.bazel b/modules/behaviortree_cpp/4.7.0.bcr.2/MODULE.bazel
new file mode 100644
index 00000000000..4a93174600f
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/MODULE.bazel
@@ -0,0 +1,22 @@
+module(
+ name = "behaviortree_cpp",
+ version = "4.7.0.bcr.2",
+ bazel_compatibility = [">=7.2.1"],
+)
+
+# NOTE: This is the newest version of cpp-sqlite that we are compatible with.
+bazel_dep(name = "cpp-sqlite", version = "0.0.0-20230222-7f931c4")
+bazel_dep(name = "cppzmq", version = "4.10.0.bcr.1")
+bazel_dep(name = "flatbuffers", version = "25.9.23")
+bazel_dep(name = "googletest", version = "1.17.0.bcr.2")
+bazel_dep(name = "lexy", version = "2025.05.0")
+bazel_dep(name = "libzmq", version = "4.3.5.bcr.4")
+bazel_dep(name = "magic_enum", version = "0.9.7")
+bazel_dep(name = "minicoro", version = "0.1.2")
+bazel_dep(name = "minitrace", version = "0.0.0-20241021-242da50")
+bazel_dep(name = "ncurses", version = "6.4.20221231.bcr.10")
+bazel_dep(name = "nlohmann_json", version = "3.12.0.bcr.1")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "tinyxml2", version = "10.0.0")
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/README.md b/modules/behaviortree_cpp/4.7.0.bcr.2/README.md
new file mode 100644
index 00000000000..52a6cff65a4
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/README.md
@@ -0,0 +1,11 @@
+## Notes to help generating patch files
+
+To create the no_contrib_deps.patch file, run the following commands:
+
+```
+rg -l behaviortree_cpp/contrib/json.hpp | xargs sed -i -e 's;behaviortree_cpp/contrib/json.hpp;nlohmann/json.hpp;g'
+```
+
+```
+rg -l behaviortree_cpp/contrib/magic_enum.hpp | xargs sed -i -e 's;behaviortree_cpp/contrib/magic_enum.hpp;magic_enum/magic_enum.hpp;g'
+```
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/overlay/BUILD.bazel b/modules/behaviortree_cpp/4.7.0.bcr.2/overlay/BUILD.bazel
new file mode 100644
index 00000000000..bdfc769fda4
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/overlay/BUILD.bazel
@@ -0,0 +1,116 @@
+load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
+load("@rules_license//rules:license.bzl", "license")
+
+license(
+ name = "license",
+ license_kinds = ["@rules_license//licenses/spdx:MIT"],
+ license_text = "LICENSE",
+)
+
+UNIX_SRCS = [
+ "src/shared_library_UNIX.cpp",
+]
+
+WINDOWS_SRCS = [
+ "src/shared_library_WIN.cpp",
+]
+
+cc_library(
+ name = "behaviortree_cpp",
+ srcs = glob(
+ [
+ "src/**/*.cpp",
+ "src/**/*.hpp",
+ ],
+ exclude = ["src/example.cpp"] + WINDOWS_SRCS + UNIX_SRCS,
+ ) +
+ select({
+ "@platforms//os:windows": WINDOWS_SRCS,
+ "//conditions:default": UNIX_SRCS,
+ }),
+ hdrs = glob(
+ [
+ "include/**/*.h",
+ "include/**/*.hpp",
+ ],
+ exclude = [
+ "include/behaviortree_cpp/contrib/json.hpp",
+ "include/behaviortree_cpp/contrib/magic_enum.hpp",
+ ],
+ ),
+ # IMPORTANT: module_version() MUST be in the form of X.Y.Z
+ defines = ['BTCPP_LIBRARY_VERSION=\\"' + module_version() + '\\"'],
+ includes = ["include"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":wildcards",
+ "@cpp-sqlite",
+ "@cppzmq",
+ "@flatbuffers",
+ "@lexy",
+ "@libzmq",
+ "@magic_enum",
+ "@minicoro",
+ "@minitrace",
+ "@ncurses",
+ "@nlohmann_json//:json",
+ "@tinyxml2",
+ ],
+)
+
+TESTS_THAT_FAIL_ON_MACOS = [
+ # These tests are broken on x86 macOS Bazel 8
+ "tests/gtest_postconditions.cpp",
+ "tests/gtest_parallel.cpp",
+]
+
+cc_test(
+ name = "behaviortree_cpp_test",
+ size = "small",
+ srcs = glob(
+ [
+ "tests/**/*.cpp",
+ "tests/**/*.h",
+ "tests/**/*.hpp",
+ "sample_nodes/*.cpp",
+ "sample_nodes/*.h",
+ ],
+ exclude = [
+ # These tests are broken and are not included in the cmake build.
+ "tests/gtest_async_action_node.cpp",
+ "tests/gtest_logger_zmq.cpp",
+ "tests/navigation_test.cpp",
+ ] + TESTS_THAT_FAIL_ON_MACOS,
+ ) + select({
+ "@platforms//os:macos": [],
+ "//conditions:default": TESTS_THAT_FAIL_ON_MACOS,
+ }),
+ data = glob(["tests/trees/**/*.xml"]),
+ includes = [
+ "tests",
+ "tests/include",
+ ],
+ # NOTE: It's not currently possible to get the path to a directory here. If bazel supported
+ # getting the path to a directory, then we could get the path to the tests directory and pass it
+ # directly as BT_TEST_FOLDER. Instead we get the path to one of the xml files, and then patch
+ # the logic in tests/gtest_factory.cpp as a work-around.
+ # See: https://github.com/bazelbuild/bazel/issues/23139
+ local_defines = [
+ "BT_TEST_PARENT_INCLUDE_CHILD_XML_FILE=" +
+ "\\\"../$(rlocationpath tests/trees/parent_include_child.xml)\\\"",
+ ],
+ deps = [
+ ":behaviortree_cpp",
+ "@googletest//:gtest",
+ ],
+)
+
+# Use the vendored version of wildcards because it has an important bug fix.
+# See: https://github.com/zemasoft/wildcards/issues/28
+# Be aware that this might cause issues if you depend on both behaviortree_cpp and a different
+# version of wildcards.
+cc_library(
+ name = "wildcards",
+ hdrs = ["3rdparty/wildcards/wildcards.hpp"],
+ includes = ["3rdparty"],
+)
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/patches/bt_test_folder_bazel.patch b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/bt_test_folder_bazel.patch
new file mode 100644
index 00000000000..5cf98ca45c1
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/bt_test_folder_bazel.patch
@@ -0,0 +1,19 @@
+diff --git a/tests/gtest_factory.cpp b/tests/gtest_factory.cpp
+index 321d24e..af97613 100644
+--- a/tests/gtest_factory.cpp
++++ b/tests/gtest_factory.cpp
+@@ -268,6 +268,14 @@ TEST(BehaviorTreeFactory, SubTreeWithRemapping)
+
+ std::string FilePath(const std::filesystem::path& relative_path)
+ {
++ // NOTE: Bazel doesn't support getting the execpath of a directory, so use a file instead.
++ // BT_TEST_PARENT_INCLUDE_CHILD_XML_FILE is expected to be the bazel runtime path to:
++ // tests/trees/parent_include_child.xml
++ const std::filesystem::path BT_TEST_FOLDER =
++ std::filesystem::path{ BT_TEST_PARENT_INCLUDE_CHILD_XML_FILE }
++ .parent_path()
++ .parent_path();
++
+ // clang-format off
+ static const std::filesystem::path search_paths[] = {
+ BT_TEST_FOLDER,
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/patches/cpp-sqlite_bazel_compat.patch b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/cpp-sqlite_bazel_compat.patch
new file mode 100644
index 00000000000..83239bef278
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/cpp-sqlite_bazel_compat.patch
@@ -0,0 +1,12 @@
+diff --git a/src/loggers/bt_sqlite_logger.cpp b/src/loggers/bt_sqlite_logger.cpp
+index 7dd736b..59a960d 100644
+--- a/src/loggers/bt_sqlite_logger.cpp
++++ b/src/loggers/bt_sqlite_logger.cpp
+@@ -1,6 +1,6 @@
+ #include "behaviortree_cpp/loggers/bt_sqlite_logger.h"
+ #include "behaviortree_cpp/xml_parsing.h"
+-#include "cpp-sqlite/sqlite.hpp"
++#include "sqlite.hpp"
+
+ namespace BT
+ {
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/patches/cppzmq_bazel_compat.patch b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/cppzmq_bazel_compat.patch
new file mode 100644
index 00000000000..061134dd560
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/cppzmq_bazel_compat.patch
@@ -0,0 +1,28 @@
+diff --git a/src/loggers/groot2_publisher.cpp b/src/loggers/groot2_publisher.cpp
+index 6146507..83bbe74 100644
+--- a/src/loggers/groot2_publisher.cpp
++++ b/src/loggers/groot2_publisher.cpp
+@@ -1,8 +1,8 @@
+ #include "behaviortree_cpp/loggers/groot2_publisher.h"
+ #include "behaviortree_cpp/loggers/groot2_protocol.h"
+ #include "behaviortree_cpp/xml_parsing.h"
+-#include "cppzmq/zmq.hpp"
+-#include "cppzmq/zmq_addon.hpp"
++#include
++#include
+
+ namespace BT
+ {
+diff --git a/tools/bt_recorder.cpp b/tools/bt_recorder.cpp
+index c652f9a..a1266de 100644
+--- a/tools/bt_recorder.cpp
++++ b/tools/bt_recorder.cpp
+@@ -3,7 +3,7 @@
+ #include
+ #include
+ #include
+-#include "cppzmq/zmq.hpp"
++#include
+ #include "behaviortree_cpp/flatbuffers/BT_logger_generated.h"
+
+ // http://zguide.zeromq.org/cpp:interrupt
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/patches/curses_include.patch b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/curses_include.patch
new file mode 100644
index 00000000000..77bdc77da84
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/curses_include.patch
@@ -0,0 +1,13 @@
+diff --git a/src/controls/manual_node.cpp b/src/controls/manual_node.cpp
+index 18af989..82e7e44 100644
+--- a/src/controls/manual_node.cpp
++++ b/src/controls/manual_node.cpp
+@@ -13,7 +13,7 @@
+
+ #include "behaviortree_cpp/controls/manual_node.h"
+ #include "behaviortree_cpp/action_node.h"
+-#include
++#include
+
+ namespace BT
+ {
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/patches/minicoro_bazel_compat.patch b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/minicoro_bazel_compat.patch
new file mode 100644
index 00000000000..45764a50042
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/minicoro_bazel_compat.patch
@@ -0,0 +1,13 @@
+diff --git a/src/action_node.cpp b/src/action_node.cpp
+index 61dff35..2bf78f9 100644
+--- a/src/action_node.cpp
++++ b/src/action_node.cpp
+@@ -12,7 +12,7 @@
+ */
+
+ #define MINICORO_IMPL
+-#include "minicoro/minicoro.h"
++#include "minicoro.h"
+ #include "behaviortree_cpp/action_node.h"
+
+ using namespace BT;
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/patches/minitrace_bazel_compat.patch b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/minitrace_bazel_compat.patch
new file mode 100644
index 00000000000..e6c2da0c14e
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/minitrace_bazel_compat.patch
@@ -0,0 +1,14 @@
+diff --git a/src/loggers/bt_minitrace_logger.cpp b/src/loggers/bt_minitrace_logger.cpp
+index 69d6d0b..478e227 100644
+--- a/src/loggers/bt_minitrace_logger.cpp
++++ b/src/loggers/bt_minitrace_logger.cpp
+@@ -1,8 +1,7 @@
+
+ #include "behaviortree_cpp/loggers/bt_minitrace_logger.h"
+
+-#define MTR_ENABLED true
+-#include "minitrace/minitrace.h"
++#include "minitrace.h"
+
+ namespace BT
+ {
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/patches/no_contrib_deps.patch b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/no_contrib_deps.patch
new file mode 100644
index 00000000000..dd92b61ed3f
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/no_contrib_deps.patch
@@ -0,0 +1,52 @@
+diff --git a/include/behaviortree_cpp/blackboard.h b/include/behaviortree_cpp/blackboard.h
+index 1c3aa96c..71495e7a 100644
+--- a/include/behaviortree_cpp/blackboard.h
++++ b/include/behaviortree_cpp/blackboard.h
+@@ -6,7 +6,7 @@
+ #include
+
+ #include "behaviortree_cpp/basic_types.h"
+-#include "behaviortree_cpp/contrib/json.hpp"
++#include "nlohmann/json.hpp"
+ #include "behaviortree_cpp/utils/safe_any.hpp"
+ #include "behaviortree_cpp/exceptions.h"
+ #include "behaviortree_cpp/utils/locked_reference.hpp"
+diff --git a/include/behaviortree_cpp/bt_factory.h b/include/behaviortree_cpp/bt_factory.h
+index 88009912..7aa13a91 100644
+--- a/include/behaviortree_cpp/bt_factory.h
++++ b/include/behaviortree_cpp/bt_factory.h
+@@ -21,7 +21,7 @@
+ #include
+ #include
+
+-#include "behaviortree_cpp/contrib/magic_enum.hpp"
++#include "magic_enum/magic_enum.hpp"
+ #include "behaviortree_cpp/behavior_tree.h"
+
+ namespace BT
+diff --git a/include/behaviortree_cpp/json_export.h b/include/behaviortree_cpp/json_export.h
+index 3eeee714..20976a30 100644
+--- a/include/behaviortree_cpp/json_export.h
++++ b/include/behaviortree_cpp/json_export.h
+@@ -5,7 +5,7 @@
+ #include "behaviortree_cpp/basic_types.h"
+
+ // Use the version nlohmann::json embedded in BT.CPP
+-#include "behaviortree_cpp/contrib/json.hpp"
++#include "nlohmann/json.hpp"
+
+ namespace BT
+ {
+diff --git a/include/behaviortree_cpp/loggers/groot2_protocol.h b/include/behaviortree_cpp/loggers/groot2_protocol.h
+index 507f2a00..c97dbe9f 100644
+--- a/include/behaviortree_cpp/loggers/groot2_protocol.h
++++ b/include/behaviortree_cpp/loggers/groot2_protocol.h
+@@ -9,7 +9,7 @@
+ #include
+ #include
+ #include "behaviortree_cpp/basic_types.h"
+-#include "behaviortree_cpp/contrib/json.hpp"
++#include "nlohmann/json.hpp"
+
+ namespace BT::Monitor
+ {
diff --git a/modules/behaviortree_cpp/4.7.0.bcr.2/patches/tinyxml2_bazel_compat.patch b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/tinyxml2_bazel_compat.patch
new file mode 100644
index 00000000000..731654b0f2f
--- /dev/null
+++ b/modules/behaviortree_cpp/4.7.0.bcr.2/patches/tinyxml2_bazel_compat.patch
@@ -0,0 +1,13 @@
+diff --git a/src/xml_parsing.cpp b/src/xml_parsing.cpp
+index 8b9ce95..2542260 100644
+--- a/src/xml_parsing.cpp
++++ b/src/xml_parsing.cpp
+@@ -33,7 +33,7 @@
+
+ #include
Using WORKSPACE
Paste this snippet into your WORKSPACE file:
load("@bazel_tools//tools/build_defs/repo:http.bzl",
"http_archive")
http_archive(
name = "rules_python",
sha256 =
"7ae25c0d3b52124fffe199a34520f43e496f4027d59452df70184eced23b96ef",
strip_prefix = "rules_python-1.8.1",
url = "https://github.com/bazel-contrib/rules_python/releases/download/1.8.1/rules_python-1.8.1.tar.gz",
)
load("@rules_python//python:repositories.bzl",
"py_repositories")
py_repositories()
Gazelle plugin
Paste this snippet into your WORKSPACE file:
... (truncated)
Changelog
Sourced from bazel-runfiles's
changelog.
[1.8.1] - 2026-01-20
{#v1-8-1-fixed}
Fixed
- (pipstar) Extra resolution that refers back to the package being
resolved works again.
Fixes #3524.
{#v1-8-0}
1.8.0
- 2025-12-19
{#v1-8-0-known-issues}
Known Issues
- (gazelle) Windows support for the Gazelle plugin may be broken. See
#3416
for
details and possible workarounds.
{#v1-8-0-removed}
Removed
-
(toolchain) Remove all of the python 3.8 toolchain support out of the
box. Users need
to pass the TOOL_VERSIONS that include 3.8 toolchains or
use the bzlmod APIs to add
them back. This means any hub pip.parse calls that target
3.8 will be ignored from
now on. (#2704)
{object}python.single_version_override, like:
python =
use_extension("@rules_python//python/extensions:python.bzl",
"python")
python.single_version_override(
python_version = "3.8.20",
sha256 = {
"aarch64-apple-darwin":
"2ddfc04bdb3e240f30fb782fa1deec6323799d0e857e0b63fa299218658fd3d4",
"aarch64-unknown-linux-gnu":
"9d8798f9e79e0fc0f36fcb95bfa28a1023407d51a8ea5944b4da711f1f75f1ed",
"x86_64-apple-darwin":
"68d060cd373255d2ca5b8b3441363d5aa7cc45b0c11bbccf52b1717c2b5aa8bb",
"x86_64-pc-windows-msvc":
"41b6709fec9c56419b7de1940d1f87fa62045aff81734480672dcb807eedc47e",
"x86_64-unknown-linux-gnu":
"285e141c36f88b2e9357654c5f77d1f8fb29cc25132698fe35bb30d787f38e87",
},
urls =
["https://github.com/astral-sh/python-build-standalone/releases/download/20241002/cpython-{python_version}+20241002-{platform}-{build}.tar.gz"],
)
-
(toolchain) Remove all of the python 3.9 toolchain versions except
for the 3.9.25.
This version has reached EOL and will no longer receive any security
fixes, please update to
3.10 or above. (#2704)
-
(toolchain) ignore_root_user_error has now been flipped
to be always enabled and
the chmod of the python toolchain directories have been
removed. From now on rules_python
always adds the pyc files to the glob excludes and in order
to avoid any problems when using
the toolchains in the repository phase, ensure that you pass
-B to the python interpreter.
(#2016)
... (truncated)
Commits
e7d5362
fix(pipstar): correctly handle complex self deps (#3527)
060bfeb
fix(pipstar): Handle dep appearing in extra both conditionally and
unconditio...
9d2a18c
feat(gazelle): Add ancestor conftest.py files (#3498)
13a37c2
fix (venv_site_packages): Fix wrong runfiles.symlinks when py_binary is
not i...
da121a2
chore: create bcr prs as non-draft so bazel-io processes the bot-created
PRs ...
c0f045b
doc: Add a snippet on how people can use 3.8 now onwards (#3502)
64bcaf4
fix(pipstar): correctly handle platlib and purelib in .data (#3501)
e58f396
fix(venv): Fix all .so files missing when py_binary lives at //:BUILD
(#3474)
9a20fc2
chore: update version markers for 1.8 release (#3472)
7f1fc2a
build(deps): bump
bazel-contrib/publish-to-bcr/.github/workflows/publish.yaml...
- Additional commits viewable in compare
view
Updates `cyclopts` from 4.4.5 to 4.5.0
Release notes
Sourced from cyclopts's
releases.
v4.5.0
Features
- Introduces
cyclopts.types.StdioPath. This type
subclasses pathlib.Path. If the special string
- is supplied, then the object will read/write to
stdin/stdout. Only available on python >=3.12 by @BrianPugh in BrianPugh/cyclopts#737
Full Changelog: https://github.com/BrianPugh/cyclopts/compare/v4.4.6...v4.5.0
v4.4.6
What's Changed
Full Changelog: https://github.com/BrianPugh/cyclopts/compare/v4.4.5...v4.4.6
Commits
13b1ded
Merge pull request #737
from BrianPugh/stdiofile-type
4e03ea8
Make it easier to subclass StdioPath
073fa1e
Fix docs build on <3.12
976e6d1
update docs
0979afe
newline was only introduced to read_text in python 3.13
dcd0884
revert shlex.split change
16d42a2
respect encoding/newline parameters more
f4681e0
Fix CI.
7e5a704
Introduce StdioPath for python >=3.12
1274c8d
Check cyclopts after unwrapping Annotated in
get_parameters()
- See full diff in compare
view
Updates `prometheus-client` from 0.24.0 to 0.24.1
Release notes
Sourced from prometheus-client's
releases.
v0.24.1
Commits
Updates `pycparser` from 2.23 to 3.0
Release notes
Sourced from pycparser's
releases.
release_v3.00
What's Changed
- Removed dependency on PLY, by rewriting pycparser to use a
hand-written lexer and recursive-descent parser for C. No API changes /
functionality changes intended - the same AST is produced.
- Add support for Python 3.14 and drop EOL 3.8 by
@hugovk in eliben/pycparser#581
- Update _ast_gen.py to be in sync with c_ast.py by
@simonlindholm
in eliben/pycparser#582
Full Changelog: https://github.com/eliben/pycparser/compare/release_v2.23...release_v3.00
Commits
77de509
Prepare for release 3.00
e57ccd1
Update README
230e12d
disable uv caching in CI
9c52f40
Update CI to run make check+test via uvx
6b8f064
Use dataclass where applicable; add 'make test' to Makefile
25376cb
Use f-strings instead of older formatting in other auxiliary files
9bd8997
Use f-strings instead of older formatting in core code + tests
664eac2
Modernize some code with pattern matching
842f064
Add type annotations to more examples
076f374
Add types to several exmaples
- Additional commits viewable in compare
view
Updates `referencing` from 0.36.2 to 0.37.0
Release notes
Sourced from referencing's
releases.
v0.37.0
What's Changed
New Contributors
Full Changelog: https://github.com/python-jsonschema/referencing/compare/v0.36.2...v0.37.0
Changelog
Sourced from referencing's
changelog.
v0.37.0
- Declare support for Python 3.14.
- Drop support for Python 3.9 which is near EOL.
Commits
944ed5a
Style.
6382532
Prepare the CHANGELOG for v0.37.
91b4bf5
Drop support for 3.9, which is near EOL.
0c14d46
Update requirements.
2928df5
Add the 3.14 classifier.
3ce7f9a
Merge pull request #270
from cclauss/patch-1
b6fc425
ci: Add Python 3.14 and 3.14t to the testing
9d1efc5
Merge pull request #265
from python-jsonschema/pre-commit-ci-update-config
1513a51
Merge pull request #268
from python-jsonschema/dependabot/submodules/suite-79...
8ebb38f
Merge pull request #269
from python-jsonschema/dependabot/github_actions/astr...
- Additional commits viewable in compare
view
Updates `sse-starlette` from 3.1.2 to 3.2.0
Release notes
Sourced from sse-starlette's
releases.
v3.2.0
What's Changed
New Contributors
Full Changelog: https://github.com/sysid/sse-starlette/compare/v3.1.2...v3.2.0
Commits
9101a42
Bump version to 3.2.0
c3248fc
Merge pull request #158
from sysid/pr-157
c99dd67
Merge pull request #157
from yuliy-openai/optional_auto_drain
ed35777
feat: add enable_automatic_graceful_drain_mode() for re-enabling
auto-drain
15f26cb
[feat] Allow disabling automatic draining immediately on sigterm
fc50af6
chore: update gitignore
268b3cd
feat: add pre-commit hooks for format, lint, and mypy
- See full diff in compare
view
Updates `starlette` from 0.51.0 to 0.52.1
Release notes
Sourced from starlette's
releases.
Version 0.52.1
What's Changed
Full Changelog: https://github.com/Kludex/starlette/compare/0.52.0...0.52.1
Version 0.52.0
In this release, State can be accessed using
dictionary-style syntax for improved type safety (#3036).
from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from typing import TypedDict
import httpx
from starlette.applications import Starlette
from starlette.requests import Request
class State(TypedDict):
http_client: httpx.AsyncClient
@asynccontextmanager
async def lifespan(app: Starlette) -> AsyncIterator[State]:
async with httpx.AsyncClient() as client:
yield {"http_client": client}
async def homepage(request: Request[State]):
client = request.state["http_client"]
# If you run the below line with mypy or pyright, it will reveal the
correct type.
reveal_type(client) # Revealed type is 'httpx.AsyncClient'
See Accessing
State for more details.
Full Changelog: https://github.com/Kludex/starlette/compare/0.51.0...0.52.0
Changelog
Sourced from starlette's
changelog.
0.52.1 (January 18, 2026)
Fixed
- Only use
typing_extensions in older Python versions #3109.
0.52.0 (January 18, 2026)
In this release, State can be accessed using
dictionary-style syntax for improved type
safety (#3036).
from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from typing import TypedDict
import httpx
from starlette.applications import Starlette
from starlette.requests import Request
class State(TypedDict):
http_client: httpx.AsyncClient
@asynccontextmanager
async def lifespan(app: Starlette) -> AsyncIterator[State]:
async with httpx.AsyncClient() as client:
yield {"http_client": client}
async def homepage(request: Request[State]):
client = request.state["http_client"]
# If you run the below line with mypy or pyright, it will reveal the
correct type.
reveal_type(client) # Revealed type is 'httpx.AsyncClient'
See Accessing
State for more details.
Commits
Updates `wrapt` from 1.17.3 to 2.0.1
Release notes
Sourced from wrapt's
releases.
wrapt-2.0.1
See the project page on the Python Package Index at https://pypi.org/project/wrapt/2.0.1/
for more information.
wrapt-2.0.0
See the project page on the Python Package Index at https://pypi.org/project/wrapt/2.0.0/
for more information.
Changelog
Sourced from wrapt's
changelog.
Version 2.0.1
Bugs Fixed
-
The wrapt.lazy_import() function wasn't included in the
__all__ attribute of the wrapt module, meaning
that it wasn't
accessible when using from wrapt import * and type checkers
such as
mypy or pylance may not see it as part of the
public API.
-
When using wrapt.lazy_import() to lazily import a
function of a module,
the resulting proxy object wasn't marked as callable until something
triggered
the import of the module via the proxy. This meant a
callable() check
on the proxy would return False until the module was
actually imported.
Further, calling the proxy before the module was imported would raise
TypeError: 'LazyObjectProxy' object is not callable rather
than
importing the module and calling the function as expected. In order to
address this issue, an additional keyword argument
interface has been
added to wrapt.lazy_import() which can be used to specify
the expected
interface type of the wrapped object. This will default to
Callable
when an attribute name is supplied, and to ModuleType when
no attribute
name is supplied. If using wrapt.lazy_import() and
supplying an
attribute argument, and you expect the wrapped object to be
something
other than a callable, you should now also supply
interface=... with the
appropriate type from collections.abc to ensure the proxy
behaves correctly
prior to the module being imported. This should only be necessary where
the
wrapped object has special dunder methods on its type which need to
exist on
the proxy prior to the module being imported.
Version 2.0.0
There have been subtle changes in various corner cases of the
behaviour of the
ObjectProxy class, which although not expected to cause
problems, still has
the potential for causing issues if code was for some reason dependent
on prior
behaviour. All existing code related to Python 2.X has also been
removed.
Finally it has also been a while since the last significant release. For
all
these reasons a major version bump is being made.
New Features
-
Added __all__ attribute to wrapt module to
expose the public API.
-
The wrapt.PartialCallableObjectProxy class can now be
accessed via the
alias wrapt.partial, which is a convenience for users who
are used to using
functools.partial and want to use the wrapt
version of it.
-
Type hints have been added to the wrapt module. The type
hints are
available when using Python 3.10 or later, and can be used with static
type
checkers such as pylance or mypy. Note that
due to limitations in
... (truncated)
Commits
14387af
Merge branch 'release/2.0.1'
73db180
Prepare for 2.0.1 release.
1ec71e0
Fix lazy import for callable attributes of a module.
09cd9e6
Use RestructuredText readme file for PyPi.
d8803ad
Change version to a release candidate.
26e637f
Missing lazy_import in public API declaration.
d07059f
Merge branch 'release/2.0.0'
a3a3b30
Merge tag '2.0.0' into develop
bf2609e
Update Python version in GitHub runner.
0363b82
Update version to 2.0.0 for release.
- Additional commits viewable in compare
view
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: bazel.build machine account
---
tools/requirements_lock.txt | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/tools/requirements_lock.txt b/tools/requirements_lock.txt
index 341da4958d6..59dbd9e8d39 100644
--- a/tools/requirements_lock.txt
+++ b/tools/requirements_lock.txt
@@ -31,8 +31,8 @@ backports-tarfile==1.2.0 \
--hash=sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34 \
--hash=sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991
# via jaraco-context
-bazel-runfiles==1.7.0 \
- --hash=sha256:558b5f8f90285ba9a7cedbf289fa3c895a2a7abd238ad0245d84586bed224459
+bazel-runfiles==1.8.1 \
+ --hash=sha256:6b2684ef5bb7b28a4659715291fe9a96f2de14dac49d090e1f3f01f1135c0469
# via -r tools/requirements.in
beartype==0.22.9 \
--hash=sha256:8f82b54aa723a2848a56008d18875f91c1db02c32ef6a62319a002e3e25a975f \
@@ -322,9 +322,9 @@ cryptography==46.0.3 \
# authlib
# pyjwt
# secretstorage
-cyclopts==4.4.5 \
- --hash=sha256:02c2c9375c57bb7622a4aab3511cdeb9d762dd0579b13ab467535e34f6be3c54 \
- --hash=sha256:d0f7584282c33796614bbb5fe7f5c86520802f028453a2180ead68c8630635f8
+cyclopts==4.5.0 \
+ --hash=sha256:305b9aa90a9cd0916f0a450b43e50ad5df9c252680731a0719edfb9b20381bf5 \
+ --hash=sha256:717ac4235548b58d500baf7e688aa4d024caf0ee68f61a012ffd5e29db3099f9
# via fastmcp
diskcache==5.6.3 \
--hash=sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc \
@@ -661,9 +661,9 @@ platformdirs==4.5.1 \
--hash=sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda \
--hash=sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31
# via fastmcp
-prometheus-client==0.24.0 \
- --hash=sha256:4ab6d4fb5a1b25ad74b58e6271857e356fff3399473e599d227ab5d0ce6637f0 \
- --hash=sha256:726b40c0d499f4904d4b5b7abe8d43e6aff090de0d468ae8f2226290b331c667
+prometheus-client==0.24.1 \
+ --hash=sha256:150db128af71a5c2482b36e588fc8a6b95e498750da4b17065947c16070f4055 \
+ --hash=sha256:7e0ced7fbbd40f7b84962d5d2ab6f17ef88a72504dcf7c0b40737b43b2a461f9
# via
# opentelemetry-exporter-prometheus
# pydocket
@@ -677,9 +677,9 @@ py-key-value-shared==0.3.0 \
--hash=sha256:5b0efba7ebca08bb158b1e93afc2f07d30b8f40c2fc12ce24a4c0d84f42f9298 \
--hash=sha256:8fdd786cf96c3e900102945f92aa1473138ebe960ef49da1c833790160c28a4b
# via py-key-value-aio
-pycparser==2.23 \
- --hash=sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2 \
- --hash=sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934
+pycparser==3.0 \
+ --hash=sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29 \
+ --hash=sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992
# via cffi
pydantic[email]==2.12.5 \
--hash=sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49 \
@@ -1150,13 +1150,13 @@ sortedcontainers==2.4.0 \
--hash=sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 \
--hash=sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0
# via fakeredis
-sse-starlette==3.1.2 \
- --hash=sha256:55eff034207a83a0eb86de9a68099bd0157838f0b8b999a1b742005c71e33618 \
- --hash=sha256:cd800dd349f4521b317b9391d3796fa97b71748a4da9b9e00aafab32dda375c8
+sse-starlette==3.2.0 \
+ --hash=sha256:5876954bd51920fc2cd51baee47a080eb88a37b5b784e615abb0b283f801cdbf \
+ --hash=sha256:8127594edfb51abe44eac9c49e59b0b01f1039d0c7461c6fd91d4e03b70da422
# via mcp
-starlette==0.51.0 \
- --hash=sha256:4c4fda9b1bc67f84037d3d14a5112e523509c369d9d47b111b2f984b0cc5ba6c \
- --hash=sha256:fb460a3d6fd3c958d729fdd96aee297f89a51b0181f16401fe8fd4cb6129165d
+starlette==0.52.1 \
+ --hash=sha256:0029d43eb3d273bc4f83a08720b4912ea4b071087a3b48db01b7c839f7954d74 \
+ --hash=sha256:834edd1b0a23167694292e94f597773bc3f89f362be6effee198165a35d62933
# via
# mcp
# sse-starlette
From a74a8a7f630c2ea3155cc7ab989c0b50f1132351 Mon Sep 17 00:00:00 2001
From: Will Noble <4642422+ouillie@users.noreply.github.com>
Date: Wed, 21 Jan 2026 12:39:26 -0500
Subject: [PATCH 061/367] rules_wasm@2.1.0 (#7217)
Release: https://github.com/vimana-cloud/rules_wasm/releases/tag/v2.1.0
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
---
modules/rules_wasm/2.1.0/MODULE.bazel | 362 +++++++++++++++++++++++++
modules/rules_wasm/2.1.0/presubmit.yml | 16 ++
modules/rules_wasm/2.1.0/source.json | 5 +
modules/rules_wasm/metadata.json | 3 +-
4 files changed, 385 insertions(+), 1 deletion(-)
create mode 100644 modules/rules_wasm/2.1.0/MODULE.bazel
create mode 100644 modules/rules_wasm/2.1.0/presubmit.yml
create mode 100644 modules/rules_wasm/2.1.0/source.json
diff --git a/modules/rules_wasm/2.1.0/MODULE.bazel b/modules/rules_wasm/2.1.0/MODULE.bazel
new file mode 100644
index 00000000000..d2e74fe3529
--- /dev/null
+++ b/modules/rules_wasm/2.1.0/MODULE.bazel
@@ -0,0 +1,362 @@
+module(
+ name = "rules_wasm",
+ version = "2.1.0",
+ # Since some external repositories use patches,
+ # we need to specify `7.2.1` as the minimum compatible Bazel version.
+ # https://github.com/bazelbuild/bazel-central-registry/blob/310e56d7b185c997d5a862775ce30116206b9ad1/tools/bcr_validation.py#L668-L669
+ bazel_compatibility = [">=7.2.1"],
+)
+
+bazel_dep(name = "buildifier_prebuilt", version = "8.2.1", dev_dependency = True, repo_name = "buildtools")
+
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "gazelle", version = "0.47.0")
+bazel_dep(name = "package_metadata", version = "0.0.6")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.14")
+bazel_dep(name = "rules_go", version = "0.59.0", repo_name = "io_bazel_rules_go")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "rules_rust", version = "0.67.0")
+bazel_dep(name = "rules_shell", version = "0.6.1")
+
+# The example module (which contains basic tests)
+# is itself referenced by tests in the main module,
+# which verify that some example tests are running properly.
+bazel_dep(name = "example", dev_dependency = True)
+local_path_override(
+ module_name = "example",
+ path = "example",
+)
+
+# Supported execution platforms for pre-built binaries.
+# TODO: Figure out how to dedupe this list with `private.bzl`.
+execution_platforms = [
+ "aarch64-linux",
+ "aarch64-macos",
+ "x86_64-linux",
+ "x86_64-macos",
+]
+
+# https://github.com/WebAssembly/binaryen/releases
+binaryen_version = "125"
+
+# https://pkg.go.dev/go.bytecodealliance.org/cm?tab=versions
+go_cm_version = "0.3.0"
+
+# https://github.com/tinygo-org/tinygo/releases
+tinygo_version = "0.39.0"
+
+# https://github.com/bytecodealliance/wac/releases
+wac_version = "0.8.1"
+
+# ATTOW TinyGo only supports version `0.2.0`:
+# https://github.com/WebAssembly/WASI/releases
+wasi_version = "0.2.0"
+
+# https://github.com/WebAssembly/wasi-sdk/releases
+wasi_sdk_version = "29"
+
+# https://github.com/bytecodealliance/wasmtime/releases
+wasmtime_version = "39.0.0"
+
+# https://github.com/bytecodealliance/wasm-tools/releases
+wasm_tools_version = "1.241.2"
+
+# https://github.com/bytecodealliance/wit-bindgen/releases
+wit_bindgen_version = "0.48.1"
+
+# https://github.com/bytecodealliance/go-modules/releases
+wit_bindgen_go_version = "0.7.0"
+
+# Rust setup: wit-bindgen-generated Rust files depend on the wit-bindgen crate.
+crate = use_extension("@rules_rust//crate_universe:extension.bzl", "crate")
+crate.spec(
+ package = "wit-bindgen",
+ version = wit_bindgen_version,
+)
+crate.from_specs(
+ name = "rules-wasm-crates",
+ # Hardcode all supported Rust toolchains to make Cargo splicing more efficient.
+ # https://github.com/bazelbuild/rules_rust/discussions/2259
+ supported_platform_triples = [
+ "aarch64-unknown-linux-gnu",
+ "aarch64-apple-darwin",
+ "wasm32-wasip2",
+ "x86_64-unknown-linux-gnu",
+ "x86_64-apple-darwin",
+ ],
+)
+use_repo(crate, "rules-wasm-crates")
+
+# Manually download prebuilt binaries for various dependencies:
+
+http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+http_file = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
+
+[http_archive(
+ name = "binaryen.{}".format(exe_platform),
+ build_file_content = """
+alias(
+ name = "wasm-opt",
+ actual = "binaryen-version_{version}/bin/wasm-opt",
+ visibility = ["//visibility:public"],
+)
+""".format(version = binaryen_version),
+ integrity = {
+ "aarch64-linux": "sha384-hr2gnlEqLM2lXYeCJCPepHUFu944rceDINqlD2Mp8czhIng56SKwNgDt7OO/Okhq",
+ "aarch64-macos": "sha384-/VyGEnbNCfuWhQdgk0jUZZ5BR6X/jFgUAp9UE704z/1z8TF4Q9TO80RdLwUVYW1C",
+ "x86_64-linux": "sha384-610rBOCcTE/qoOsS9ghQdTaN6z+TIbyjAeEQGuBJN6Xx9d2+pnZtvJiSSxW6UCov",
+ "x86_64-macos": "sha384-j1OKGc5CF6tcBJn0anAijAapE4eGtdMH75jcDXEqzaLFz/obRgkmr9agFRnUVY+D",
+ }[exe_platform],
+ url = "https://github.com/WebAssembly/binaryen/releases/download/version_{version}/binaryen-version_{version}-{platform}.tar.gz".format(
+ platform = {
+ "aarch64-linux": "aarch64-linux",
+ "aarch64-macos": "arm64-macos",
+ "x86_64-linux": "x86_64-linux",
+ "x86_64-macos": "x86_64-macos",
+ }[exe_platform],
+ version = binaryen_version,
+ ),
+) for exe_platform in execution_platforms]
+
+wac_platforms = {
+ "aarch64-linux": "aarch64-unknown-linux-musl",
+ "aarch64-macos": "aarch64-apple-darwin",
+ "x86_64-linux": "x86_64-unknown-linux-musl",
+ "x86_64-macos": "x86_64-apple-darwin",
+}
+
+[http_file(
+ name = "wac.{}".format(exe_platform),
+ executable = True,
+ integrity = {
+ "aarch64-linux": "sha384-IXwdLWoq0jax4B/k6Q3iU1iJCZdAuN1FYL/n3zfpjyIE3gjk7+8pEY9DuwcCegiM",
+ "aarch64-macos": "sha384-xSbymKgHE+ELSmprYedYF5Ak4L6ThqEZF3kllpNqKYXxxpLcNWtzlwdaGtBIk0SB",
+ "x86_64-linux": "sha384-KYJhbk+OszFP0FeoPUd6hH9KQmIIgZ6jmtfYT5CgcwEJOUTdXTAfzTQac/qdpqyb",
+ "x86_64-macos": "sha384-UAjGFeHo77fqwwykTWjOTn8//a3e183bAkGAuc55wTpN10uiNfZLTnK5Xm9OVVZ8",
+ }[exe_platform],
+ url = "https://github.com/bytecodealliance/wac/releases/download/v{version}/wac-cli-{platform}".format(
+ # WAC uses non-canonical platform strings in the URLs:
+ platform = wac_platforms[exe_platform],
+ version = wac_version,
+ ),
+) for exe_platform in execution_platforms]
+
+http_archive(
+ name = "wasi",
+ build_file_content = """
+load(":wasm.bzl", "wasi_packages")
+
+[filegroup(
+ name = package,
+ srcs = glob(["WASI-{version}/preview2/" + package + "/*.wit"]),
+ visibility = ["//visibility:public"],
+) for package in wasi_packages.keys()]
+""".format(version = wasi_version),
+ integrity = "sha384-k5+dIIcSf9AtW/dpJ4wHglf9GCs0OZw5I90Lkd74RZ/X8PMv0Cx9WKFPsTFPCV9H",
+ # Ideally there would be something like `remote_file_urls` for local files
+ # so we can eliminate this redundant patch file
+ # and instead just copy `wasm.bzl` into the remote repo:
+ # https://github.com/bazelbuild/bazel/issues/24499.
+ patches = ["//wasm:wasi.patch"],
+ url = "https://github.com/WebAssembly/WASI/archive/refs/tags/v{version}.tar.gz".format(version = wasi_version),
+)
+
+wasi_sdk_platforms = {
+ "aarch64-linux": "arm64-linux",
+ "aarch64-macos": "arm64-macos",
+ "x86_64-linux": "x86_64-linux",
+ "x86_64-macos": "x86_64-macos",
+}
+
+[http_archive(
+ name = "wasi-sdk.{}".format(exe_platform),
+ # Note: these are symlinks within the HTTP archive:
+ # - clang -> clang-19
+ # - ar -> llvm-ar
+ # - nm -> llvm-nm
+ # - objdump -> llvm-objdump
+ # - strip -> llvm-objcopy
+ build_file_content = """
+load("@bazel_skylib//rules/directory:directory.bzl", "directory")
+load("@bazel_skylib//rules/directory:subdirectory.bzl", "subdirectory")
+
+package(default_visibility=["//visibility:public"])
+
+alias(name = "clang", actual = "wasi-sdk-{version}.0-{platform}/bin/clang")
+alias(name = "wasm-component-ld", actual = "wasi-sdk-{version}.0-{platform}/bin/wasm-component-ld")
+alias(name = "ar", actual = "wasi-sdk-{version}.0-{platform}/bin/ar")
+alias(name = "nm", actual = "wasi-sdk-{version}.0-{platform}/bin/nm")
+alias(name = "objdump", actual = "wasi-sdk-{version}.0-{platform}/bin/objdump")
+alias(name = "strip", actual = "wasi-sdk-{version}.0-{platform}/bin/strip")
+
+directory(
+ name = "lib",
+ srcs = glob(["wasi-sdk-{version}.0-{platform}/lib/**"]),
+)
+subdirectory(
+ name = "include",
+ parent = ":lib",
+ path = "clang/19/include",
+)
+""".format(
+ platform = wasi_sdk_platforms[exe_platform],
+ version = wasi_sdk_version,
+ ),
+ integrity = {
+ "aarch64-linux": "sha384-0/4ZdpmJp6vgPzQTym6YAZXBXOXmIOaqPhntzKKkGqAsqjaV6Y4ykA/ga6Ox3i98",
+ "aarch64-macos": "sha384-ntXb6D5Je2Co93QjlxoCO2cRvU/vGUXsYeJVJL5ZMAI6FcZqK3hWVZefmFAFnX1q",
+ "x86_64-linux": "sha384-pn0lgY+yOddbNJzDHvvEVCJF+ZU/d8J31HF8Jo80mbhZNXa33qegs3ejsrwRJ9OC",
+ "x86_64-macos": "sha384-HBmQLk9vm5d3AMxQb0Awwn6ylOA/uySWd84xGhTlpgSHXb6k/Lk0iIWGg3Q7LkHm",
+ }[exe_platform],
+ url = "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-{version}/wasi-sdk-{version}.0-{platform}.tar.gz".format(
+ platform = wasi_sdk_platforms[exe_platform],
+ version = wasi_sdk_version,
+ ),
+) for exe_platform in execution_platforms]
+
+[http_archive(
+ name = "wasmtime.{}".format(exe_platform),
+ build_file_content = """
+alias(
+ name = "wasmtime",
+ actual = "wasmtime-v{version}-{platform}/wasmtime",
+ visibility = ["//visibility:public"],
+)
+""".format(
+ platform = exe_platform,
+ version = wasmtime_version,
+ ),
+ integrity = {
+ "aarch64-linux": "sha384-PkYBhaWuxSlMokqJzuI2BbR28GQaI/BAOzNIOfe3rGF9VU4voKH+uLq4Yv8olwvO",
+ "aarch64-macos": "sha384-vI0krkj0CDAkUWJEsRZDkFL3ihy6VmqmXrBGYmRUxB50x0CukJXlH1+mvGknYo6f",
+ "x86_64-linux": "sha384-ljYSa82I7RJNsWY7qQ0mTb3CwoLW0I+wAyL6aVcZ6q3V7kcsRKRWxpUyzh2cUv88",
+ "x86_64-macos": "sha384-Yy3iQ4+1uGhUUxOvRNajtRFaDrx8CdN1Nsp8zO7j8avdHqQ9UeklTkQJkc5+Srv4",
+ }[exe_platform],
+ url = "https://github.com/bytecodealliance/wasmtime/releases/download/v{version}/wasmtime-v{version}-{platform}.tar.xz".format(
+ platform = exe_platform,
+ version = wasmtime_version,
+ ),
+) for exe_platform in execution_platforms]
+
+[http_archive(
+ name = "wasm-tools.{}".format(exe_platform),
+ build_file_content = """
+alias(
+ name = "wasm-tools",
+ actual = "wasm-tools-{version}-{platform}/wasm-tools",
+ visibility = ["//visibility:public"],
+)
+""".format(
+ platform = exe_platform,
+ version = wasm_tools_version,
+ ),
+ integrity = {
+ "aarch64-linux": "sha384-d/fR/u28naIoiJMdjKSPHaMFZHJJLm7Gwhkp71jXtUgf7Cb+uYx9QeFPsCgTV50v",
+ "aarch64-macos": "sha384-I/3V9d7egNnRRcgRAen5yJ+IZJ2toqzbf+XPcxFWx4q6IFq5fwPc0MqyZUeH8GwJ",
+ "x86_64-linux": "sha384-TOtL6QT2ZgLE35TMTS39WHgWsp8MyKH5d3qBC3zNg4rP25CLhCsOlKq7CUtsFigf",
+ "x86_64-macos": "sha384-zKbb8MReONX3LZ1GfBJRaTzBEE/unyrm9lMMQGOrc2gR2E+lxqTYSGsmZN2JACRS",
+ }[exe_platform],
+ url = "https://github.com/bytecodealliance/wasm-tools/releases/download/v{version}/wasm-tools-{version}-{platform}.tar.gz".format(
+ platform = exe_platform,
+ version = wasm_tools_version,
+ ),
+) for exe_platform in execution_platforms]
+
+[http_archive(
+ name = "wit-bindgen.{}".format(exe_platform),
+ build_file_content = """
+alias(
+ name = "wit-bindgen",
+ actual = "wit-bindgen-{version}-{platform}/wit-bindgen",
+ visibility = ["//visibility:public"],
+)
+""".format(
+ platform = exe_platform,
+ version = wit_bindgen_version,
+ ),
+ integrity = {
+ "aarch64-linux": "sha384-wEwbZMcjKzwGPEJW8GZN3VG3RTTLPLq06be+MYFangnDuy4i3U5YKO6KrhxXTTxm",
+ "aarch64-macos": "sha384-My+C4rX74yKLYc0F8iN2c1/p89nOF7ftTe//td39IhrOp0OfNfDlB9Rd/Ld7Tftn",
+ "x86_64-linux": "sha384-q3NQYHXLbUDAq7fcny9IjsUVatoHpVLggrywr+nCEnomdvrgICBA7yMgyuueIBio",
+ "x86_64-macos": "sha384-M4hEqP8+Whei2MQHoxZFzaq0L+kE9GLeLcGa0uYWNfL6016TpUhCdmPKBGGUnfRb",
+ }[exe_platform],
+ url = "https://github.com/bytecodealliance/wit-bindgen/releases/download/v{version}/wit-bindgen-{version}-{platform}.tar.gz".format(
+ platform = exe_platform,
+ version = wit_bindgen_version,
+ ),
+) for exe_platform in execution_platforms]
+
+[http_archive(
+ name = "tinygo.{}".format(exe_platform),
+ build_file_content = """
+alias(
+ name = "tinygo",
+ actual = "tinygo/bin/tinygo",
+ visibility = ["//visibility:public"],
+)
+""",
+ integrity = {
+ "aarch64-linux": "sha384-YzSti1CVRxYGVhn5ihWLgCwGiZnR9M6bSl2AklXxX4XUqQGqsJ8JiLK5AMc+3D54",
+ "aarch64-macos": "sha384-YZywVFCfTar+yd6d7IlWW518PTJUi0n11FUfO8h6fXorFxMxvrL3sW5CDj10Ts6E",
+ "x86_64-linux": "sha384-fv7Q2NWBsZT0YaxwaPsvx8ib/AvVYaS3GanOYZZdl8Koffb0kS/bTHSHVD0OOA7+",
+ "x86_64-macos": "sha384-CPPi8Z0kBo+9zNlya5KUMsMata4czS9VOnkdjHH3iyuS8OxBvhP9nZiIVIkJEAVi",
+ }[exe_platform],
+ url = "https://github.com/tinygo-org/tinygo/releases/download/v{version}/tinygo{version}.{platform}.tar.gz".format(
+ platform = {
+ "aarch64-linux": "linux-arm64",
+ "aarch64-macos": "darwin-arm64",
+ "x86_64-linux": "linux-amd64",
+ "x86_64-macos": "darwin-amd64",
+ }[exe_platform],
+ version = tinygo_version,
+ ),
+) for exe_platform in execution_platforms]
+
+[http_archive(
+ name = "wit-bindgen-go.{}".format(exe_platform),
+ build_file_content = """
+exports_files(
+ ["wit-bindgen-go"],
+ visibility = ["//visibility:public"],
+)
+""",
+ integrity = {
+ "aarch64-linux": "sha384-cbNymuUTUpvyb0jVrN+Fy97NgFYmGyJQ+Ml7QyMa98G4KMKAi/Cbp/nRY/xGhvZX",
+ "aarch64-macos": "sha384-Yn43/bbLp4HKX2oz85ESWZOJgsa0La30Vda+SabuowxtS4604R+9h0ks1n1J0xGV",
+ "x86_64-linux": "sha384-a5R9jT7HdEHxManvsn8qhyP0Qma/kFousmmPVy4j+QHLat0eDh6aTfyXq1W6KyUd",
+ "x86_64-macos": "sha384-WmFNc+tWLOCe8zYuYBcQ/99ffOensY/FN1XmijQpVIWSBqz/KSIsPgDitVx2LJJF",
+ }[exe_platform],
+ url = "https://github.com/bytecodealliance/go-modules/releases/download/v{version}/wit-bindgen-go-{platform}.tgz".format(
+ platform = {
+ "aarch64-linux": "linux-arm64",
+ "aarch64-macos": "darwin-arm64",
+ "x86_64-linux": "linux-amd64",
+ "x86_64-macos": "darwin-amd64",
+ }[exe_platform],
+ version = wit_bindgen_go_version,
+ ),
+) for exe_platform in execution_platforms]
+
+# Temporary crutch until we can build against wasip2 directly.
+http_file(
+ name = "wasi-snapshot-preview1-reactor",
+ integrity = "sha384-lbuu+oHt/78NPSG3HIw7yqyd4m2MUDIxkKVuKNh37voeHlMCRihHmetG6JcIJBcg",
+ url = "https://github.com/bytecodealliance/wasmtime/releases/download/v{version}/wasi_snapshot_preview1.reactor.wasm".format(version = wasmtime_version),
+)
+
+go_repository = use_repo_rule("@gazelle//:deps.bzl", "go_repository")
+
+# The only dependency for generated Go bindings.
+go_repository(
+ name = "go-component-model-utility",
+ importpath = "go.bytecodealliance.org/cm",
+ # The patch expose the `go.mod` file
+ # as well as the Gazelle-generated package info.
+ patches = ["//go:cm.patch"],
+ sum = "h1:VhV+4vjZPUGCozCg9+up+FNL3YU6XR+XKghk7kQ0vFc=",
+ version = "v{}".format(go_cm_version),
+)
+
+register_toolchains("//:wasm32-wasi-toolchain")
diff --git a/modules/rules_wasm/2.1.0/presubmit.yml b/modules/rules_wasm/2.1.0/presubmit.yml
new file mode 100644
index 00000000000..d13750813dc
--- /dev/null
+++ b/modules/rules_wasm/2.1.0/presubmit.yml
@@ -0,0 +1,16 @@
+bcr_test_module:
+ module_path: example
+ matrix:
+ platform:
+ - debian10
+ - ubuntu2204_arm64
+ - macos
+ - macos_arm64
+ bazel: ["7.x", "8.x"]
+ tasks:
+ run_all_tests:
+ name: Exercise test module
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets: ["//..."]
+ test_targets: ["//..."]
diff --git a/modules/rules_wasm/2.1.0/source.json b/modules/rules_wasm/2.1.0/source.json
new file mode 100644
index 00000000000..fcd065035f9
--- /dev/null
+++ b/modules/rules_wasm/2.1.0/source.json
@@ -0,0 +1,5 @@
+{
+ "integrity": "sha256-5r/WzKl/OaiayF/jF0FFLZ3DblfHcxXQw7VzG3AfXtc=",
+ "strip_prefix": "rules_wasm-2.1.0",
+ "url": "https://github.com/vimana-cloud/rules_wasm/releases/download/v2.1.0/rules_wasm-v2.1.0.tar.gz"
+}
diff --git a/modules/rules_wasm/metadata.json b/modules/rules_wasm/metadata.json
index b0af858a489..a46049c7caf 100644
--- a/modules/rules_wasm/metadata.json
+++ b/modules/rules_wasm/metadata.json
@@ -16,7 +16,8 @@
"1.0.17",
"1.1.1",
"2.0.2",
- "2.0.3"
+ "2.0.3",
+ "2.1.0"
],
"yanked_versions": {}
}
From ea1af263a0bdb0a37a77616ff4dc95c5a4b5e521 Mon Sep 17 00:00:00 2001
From: Scott Pledger
Date: Wed, 21 Jan 2026 10:52:42 -0700
Subject: [PATCH 062/367] rules_shellspec@0.1.5 (#7223)
Release:
https://github.com/scottpledger/rules_shellspec/releases/tag/v0.1.5
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: scottpledger <1452087+scottpledger@users.noreply.github.com>
---
modules/rules_shellspec/0.1.5/MODULE.bazel | 59 +++++++++++++++++++
.../rules_shellspec/0.1.5/attestations.json | 17 ++++++
.../patches/module_dot_bazel_version.patch | 14 +++++
modules/rules_shellspec/0.1.5/presubmit.yml | 12 ++++
modules/rules_shellspec/0.1.5/source.json | 10 ++++
modules/rules_shellspec/metadata.json | 17 ++++++
6 files changed, 129 insertions(+)
create mode 100644 modules/rules_shellspec/0.1.5/MODULE.bazel
create mode 100644 modules/rules_shellspec/0.1.5/attestations.json
create mode 100644 modules/rules_shellspec/0.1.5/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_shellspec/0.1.5/presubmit.yml
create mode 100644 modules/rules_shellspec/0.1.5/source.json
create mode 100644 modules/rules_shellspec/metadata.json
diff --git a/modules/rules_shellspec/0.1.5/MODULE.bazel b/modules/rules_shellspec/0.1.5/MODULE.bazel
new file mode 100644
index 00000000000..f93ecad59e2
--- /dev/null
+++ b/modules/rules_shellspec/0.1.5/MODULE.bazel
@@ -0,0 +1,59 @@
+"Bazel rules for ShellSpec - BDD testing framework for shell scripts"
+
+module(
+ name = "rules_shellspec",
+ version = "0.1.5",
+ # NOTE:
+ #
+ # Always leave version unset or set to "" (the default). The default value
+ # can prevent issues when the module is used via non-registry overrides
+ # (e.g. https://github.com/bazel-contrib/rules_go/issues/4380).
+ #
+ # The publish.yaml GitHub Action sets the version in the registry to the
+ # release version by patching this MODULE.bazel file in the pull request to
+ # the BCR.
+ #
+ # For more info, see this Slack thread:
+ # https://bazelbuild.slack.com/archives/CA31HN1T3/p1750406404452179
+
+ # NOTE:
+ # compatibility_level = 0,
+ #
+ # Bumping compatibility_level too frequently is discouraged because it's
+ # very disruptive: as soon as a module is requested at two different
+ # compatibility levels in the dependency tree, users will see an error.
+ #
+ # As such, the compatibility_level (1) should be bumped *only* when the
+ # breaking change affects most use cases and isn't easy to migrate and/or
+ # work-around, and (2) *in the same commit* that introduces an incompatible
+ # (breaking) change.
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "bazel_lib", version = "3.0.0")
+bazel_dep(name = "package_metadata", version = "0.0.6")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_shell", version = "0.4.1")
+
+bazel_dep(name = "gazelle", version = "0.47.0", dev_dependency = True, repo_name = "bazel_gazelle")
+bazel_dep(name = "bazel_skylib_gazelle_plugin", version = "1.8.2", dev_dependency = True)
+bazel_dep(name = "buildifier_prebuilt", version = "8.2.1", dev_dependency = True)
+bazel_dep(name = "rules_testing", version = "0.6.0", dev_dependency = True)
+bazel_dep(name = "aspect_rules_lint", version = "1.10.2", dev_dependency = True)
+bazel_dep(name = "rules_multitool", version = "0.11.0", dev_dependency = True)
+bazel_dep(name = "bazelrc-preset.bzl", version = "1.6.0", dev_dependency = True)
+
+# Register the ShellSpec extension
+shellspec = use_extension("//shellspec:extensions.bzl", "shellspec")
+shellspec.toolchain(version = "0.28.1")
+use_repo(shellspec, "shellspec")
+
+# Register multitool for lint/format tools
+# aspect_rules_lint also uses multitool, so this adds our additional lockfile
+multitool = use_extension(
+ "@rules_multitool//multitool:extension.bzl",
+ "multitool",
+ dev_dependency = True,
+)
+multitool.hub(lockfile = "//tools/lint:multitool.lock.json")
+use_repo(multitool, "multitool")
diff --git a/modules/rules_shellspec/0.1.5/attestations.json b/modules/rules_shellspec/0.1.5/attestations.json
new file mode 100644
index 00000000000..a8804bf30de
--- /dev/null
+++ b/modules/rules_shellspec/0.1.5/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/scottpledger/rules_shellspec/releases/download/v0.1.5/source.json.intoto.jsonl",
+ "integrity": "sha256-RHcGDIoCwp+7HJpSNxX/4b0q2Wlh06x64VuXFJ7T0is="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/scottpledger/rules_shellspec/releases/download/v0.1.5/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-8aqaNugYjwu+ehPycXYFMyr/J7tcPnUNt9oMIh4N+YE="
+ },
+ "rules_shellspec-v0.1.5.tar.gz": {
+ "url": "https://github.com/scottpledger/rules_shellspec/releases/download/v0.1.5/rules_shellspec-v0.1.5.tar.gz.intoto.jsonl",
+ "integrity": "sha256-kpbxKKngVG5yxofwWFiT7ZiCRiM5xm2HgtZVs+5zbA4="
+ }
+ }
+}
diff --git a/modules/rules_shellspec/0.1.5/patches/module_dot_bazel_version.patch b/modules/rules_shellspec/0.1.5/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..8b7956c9c5e
--- /dev/null
+++ b/modules/rules_shellspec/0.1.5/patches/module_dot_bazel_version.patch
@@ -0,0 +1,14 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,9 +1,9 @@
+ "Bazel rules for ShellSpec - BDD testing framework for shell scripts"
+
+ module(
+ name = "rules_shellspec",
+- version = "",
++ version = "0.1.5",
+ # NOTE:
+ #
+ # Always leave version unset or set to "" (the default). The default value
+ # can prevent issues when the module is used via non-registry overrides
diff --git a/modules/rules_shellspec/0.1.5/presubmit.yml b/modules/rules_shellspec/0.1.5/presubmit.yml
new file mode 100644
index 00000000000..b09ae5bfcdb
--- /dev/null
+++ b/modules/rules_shellspec/0.1.5/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: "e2e/smoke"
+ matrix:
+ platform: ["debian11", "macos", "ubuntu2204", "windows"]
+ bazel: ["8.x", "7.x", "6.x"]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//..."
diff --git a/modules/rules_shellspec/0.1.5/source.json b/modules/rules_shellspec/0.1.5/source.json
new file mode 100644
index 00000000000..d8ddc612f5b
--- /dev/null
+++ b/modules/rules_shellspec/0.1.5/source.json
@@ -0,0 +1,10 @@
+{
+ "integrity": "sha256-MsudWw0t24w7Tv44xL8UXs2m+oWdvxYff6yyX3ny8Fg=",
+ "strip_prefix": "rules_shellspec-0.1.5",
+ "docs_url": "https://github.com/scottpledger/rules_shellspec/releases/download/v0.1.5/rules_shellspec-v0.1.5.docs.tar.gz",
+ "url": "https://github.com/scottpledger/rules_shellspec/releases/download/v0.1.5/rules_shellspec-v0.1.5.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-qI4hrsQWXmeATKY0ktKWzII5vP2/Qpzb6V3kQrrNH5w="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_shellspec/metadata.json b/modules/rules_shellspec/metadata.json
new file mode 100644
index 00000000000..548f4213654
--- /dev/null
+++ b/modules/rules_shellspec/metadata.json
@@ -0,0 +1,17 @@
+{
+ "homepage": "https://github.com/scottpledger/rules_shellspec",
+ "maintainers": [
+ {
+ "github": "scottpledger",
+ "name": "Scott Pledger",
+ "github_user_id": 1452087
+ }
+ ],
+ "repository": [
+ "github:scottpledger/rules_shellspec"
+ ],
+ "versions": [
+ "0.1.5"
+ ],
+ "yanked_versions": {}
+}
From e0a51a43ffa6962f9c37a96f3375838612d45d1a Mon Sep 17 00:00:00 2001
From: Jeremy Kun
Date: Wed, 21 Jan 2026 10:24:49 -0800
Subject: [PATCH 063/367] openfhe@1.4.2.bcr.1: separate pure c files into their
own build target (#7245)
I made a mistake in openfhe@1.4.2: c-only files were bundled in a target
with a copt specifying c++17, which led to the error
```
error: invalid argument '-std=c++17' not allowed with 'C'
```
This patch moves the pure-C parts of the library into a dedicated
target.
---------
Co-authored-by: Jeremy Kun
---
modules/openfhe/1.4.2.bcr.1/MODULE.bazel | 14 ++
modules/openfhe/1.4.2.bcr.1/overlay/BUILD | 206 ++++++++++++++++++
.../openfhe/1.4.2.bcr.1/overlay/MODULE.bazel | 14 ++
.../1.4.2.bcr.1/overlay/openfhe_config.bzl | 81 +++++++
modules/openfhe/1.4.2.bcr.1/presubmit.yml | 22 ++
modules/openfhe/1.4.2.bcr.1/source.json | 10 +
modules/openfhe/metadata.json | 3 +-
7 files changed, 349 insertions(+), 1 deletion(-)
create mode 100644 modules/openfhe/1.4.2.bcr.1/MODULE.bazel
create mode 100644 modules/openfhe/1.4.2.bcr.1/overlay/BUILD
create mode 100644 modules/openfhe/1.4.2.bcr.1/overlay/MODULE.bazel
create mode 100644 modules/openfhe/1.4.2.bcr.1/overlay/openfhe_config.bzl
create mode 100644 modules/openfhe/1.4.2.bcr.1/presubmit.yml
create mode 100644 modules/openfhe/1.4.2.bcr.1/source.json
diff --git a/modules/openfhe/1.4.2.bcr.1/MODULE.bazel b/modules/openfhe/1.4.2.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..1b8f2c21af7
--- /dev/null
+++ b/modules/openfhe/1.4.2.bcr.1/MODULE.bazel
@@ -0,0 +1,14 @@
+module(
+ name = "openfhe",
+ version = "1.4.2.bcr.1",
+ bazel_compatibility = [">=7.2.1"],
+ compatibility_level = 1,
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.9.0")
+bazel_dep(name = "cereal", version = "1.3.2.bcr.1")
+bazel_dep(name = "rapidjson", version = "1.1.0.bcr.20250205")
+bazel_dep(name = "rules_cc", version = "0.2.13")
+
+openfhe_ext = use_extension("//:openfhe_config.bzl", "openfhe_config")
+use_repo(openfhe_ext, "openfhe_config")
diff --git a/modules/openfhe/1.4.2.bcr.1/overlay/BUILD b/modules/openfhe/1.4.2.bcr.1/overlay/BUILD
new file mode 100644
index 00000000000..d4328b9a6c1
--- /dev/null
+++ b/modules/openfhe/1.4.2.bcr.1/overlay/BUILD
@@ -0,0 +1,206 @@
+load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
+load("@openfhe_config//:config.bzl", "HAS_INT128", "MATHBACKEND")
+load("@rules_cc//cc:defs.bzl", "cc_library", "cc_shared_library")
+
+package(
+ default_visibility = ["//visibility:public"],
+ features = [
+ "-layering_check", # Incompatible with `#include "gtest/gtest.h"`
+ "-use_header_modules", # Incompatible with -fexceptions.
+ ],
+)
+
+bool_flag(
+ name = "enable_openmp",
+ build_setting_default = True,
+)
+
+config_setting(
+ name = "config_enable_openmp",
+ flag_values = {":enable_openmp": "True"},
+)
+
+config_setting(
+ name = "config_disable_openmp",
+ flag_values = {":enable_openmp": "False"},
+)
+
+OPENFHE_VERSION = "1.4.2"
+
+OPENFHE_DEFINES = [
+ "MATHBACKEND=" + str(MATHBACKEND),
+ "OPENFHE_VERSION=" + OPENFHE_VERSION,
+] + select({
+ "//:config_enable_openmp": ["PARALLEL"],
+ "//conditions:default": [],
+})
+
+OPENFHE_COPTS = [
+ "-Wno-non-virtual-dtor",
+ "-Wno-shift-op-parentheses",
+ "-Wno-unused-private-field",
+ "-fexceptions",
+ "-std=c++17",
+]
+
+config_setting(
+ name = "clang_openmp",
+ flag_values = {
+ "@rules_cc//cc/compiler:compiler": "clang",
+ "//:enable_openmp": "True",
+ },
+)
+
+config_setting(
+ name = "gcc_openmp",
+ flag_values = {
+ "@rules_cc//cc/compiler:compiler": "gcc",
+ "//:enable_openmp": "True",
+ },
+)
+
+_OPENMP_CLANG_LINKOPTS = [
+ "-fopenmp",
+ "-lomp",
+]
+
+_OPENMP_GCC_LINKOPTS = [
+ "-fopenmp",
+ "-lgomp",
+]
+
+OPENMP_LINKOPTS = select({
+ "//:clang_openmp": _OPENMP_CLANG_LINKOPTS,
+ "//:gcc_openmp": _OPENMP_GCC_LINKOPTS,
+ "//conditions:default": [],
+})
+
+OPENMP_COPTS = select({
+ "//:config_enable_openmp": [
+ "-fopenmp",
+ "-Xpreprocessor",
+ "-Wno-unused-command-line-argument",
+ ],
+ "//conditions:default": [],
+})
+
+genrule(
+ name = "generate_config_core_h",
+ outs = ["src/core/include/config_core.h"],
+ cmd = "$(location @openfhe_config//:generate_header.sh) $@",
+ tools = ["@openfhe_config//:generate_header.sh"],
+)
+
+filegroup(
+ name = "headers",
+ srcs = [":generate_config_core_h"] + glob([
+ "src/binfhe/include/*.h",
+ "src/core/include/**/*.h",
+ "src/pke/include/**/*.h",
+ ]),
+)
+
+cc_library(
+ name = "prng",
+ srcs = [
+ "src/core/lib/utils/prng/blake2b-ref.c",
+ "src/core/lib/utils/prng/blake2xb-ref.c",
+ ],
+ hdrs = [
+ "src/core/include/utils/prng/blake2.h",
+ "src/core/include/utils/prng/blake2-impl.h",
+ ],
+ includes = [
+ "src/core/include",
+ ],
+ linkstatic = True,
+)
+
+cc_library(
+ name = "core",
+ srcs = glob([
+ "src/core/lib/**/*.cpp",
+ ]),
+ copts = OPENFHE_COPTS + OPENMP_COPTS + [
+ # /utils/blockAllocator/blockAllocator.cpp has misaligned-pointer-use
+ "-fno-sanitize=alignment",
+ ],
+ defines = OPENFHE_DEFINES,
+ includes = [
+ "src/core/include",
+ "src/core/lib",
+ ],
+ linkopts = OPENMP_LINKOPTS,
+ linkstatic = True,
+ textual_hdrs = [":generate_config_core_h"] + glob([
+ "src/core/include/**/*.h",
+ ]),
+ deps = [
+ ":generate_config_core_h",
+ ":prng",
+ "@cereal",
+ ],
+)
+
+cc_library(
+ name = "binfhe",
+ srcs = [":generate_config_core_h"] + glob([
+ "src/binfhe/lib/**/*.cpp",
+ ]),
+ copts = OPENFHE_COPTS + OPENMP_COPTS,
+ defines = OPENFHE_DEFINES,
+ includes = [
+ "src/binfhe/include",
+ "src/binfhe/lib",
+ ],
+ linkopts = OPENMP_LINKOPTS,
+ linkstatic = True,
+ textual_hdrs = [":generate_config_core_h"] + glob(["src/binfhe/include/**/*.h"]),
+ deps = [
+ ":core",
+ ":generate_config_core_h",
+ ],
+)
+
+cc_library(
+ name = "pke",
+ srcs = [":generate_config_core_h"] + glob([
+ "src/pke/lib/**/*.cpp",
+ ]),
+ copts = OPENFHE_COPTS + OPENMP_COPTS + [
+ "-Wno-vla-extension",
+ ],
+ defines = OPENFHE_DEFINES,
+ includes = [
+ "src/pke/include",
+ "src/pke/lib",
+ ],
+ linkopts = OPENMP_LINKOPTS,
+ linkstatic = True,
+ textual_hdrs = [":generate_config_core_h"] + glob([
+ "src/pke/include/**/*.h",
+ "src/pke/lib/**/*.cpp",
+ ]),
+ deps = [
+ ":binfhe",
+ ":core",
+ ":generate_config_core_h",
+ "@cereal",
+ ],
+)
+
+# Generates a shared library that can be shipped with the python frontend.
+cc_shared_library(
+ name = "libopenfhe",
+ shared_lib_name = "libopenfhe.so",
+ deps = [
+ ":binfhe",
+ ":core",
+ ":pke",
+ ],
+)
+
+alias(
+ name = "openfhe",
+ actual = ":pke",
+)
diff --git a/modules/openfhe/1.4.2.bcr.1/overlay/MODULE.bazel b/modules/openfhe/1.4.2.bcr.1/overlay/MODULE.bazel
new file mode 100644
index 00000000000..1b8f2c21af7
--- /dev/null
+++ b/modules/openfhe/1.4.2.bcr.1/overlay/MODULE.bazel
@@ -0,0 +1,14 @@
+module(
+ name = "openfhe",
+ version = "1.4.2.bcr.1",
+ bazel_compatibility = [">=7.2.1"],
+ compatibility_level = 1,
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.9.0")
+bazel_dep(name = "cereal", version = "1.3.2.bcr.1")
+bazel_dep(name = "rapidjson", version = "1.1.0.bcr.20250205")
+bazel_dep(name = "rules_cc", version = "0.2.13")
+
+openfhe_ext = use_extension("//:openfhe_config.bzl", "openfhe_config")
+use_repo(openfhe_ext, "openfhe_config")
diff --git a/modules/openfhe/1.4.2.bcr.1/overlay/openfhe_config.bzl b/modules/openfhe/1.4.2.bcr.1/overlay/openfhe_config.bzl
new file mode 100644
index 00000000000..8f843ac84e0
--- /dev/null
+++ b/modules/openfhe/1.4.2.bcr.1/overlay/openfhe_config.bzl
@@ -0,0 +1,81 @@
+"""OpenFHE module configuration extension."""
+
+_CONFIG_ATTRS = {
+ "has_int128": attr.bool(default = True, doc = "Enable 128-bit integer support"),
+ "mathbackend": attr.int(default = 4, doc = "Math backend (options are 1, 2, 4)"),
+}
+
+def _config_repo_impl(rctx):
+ """Repository rule that creates the config files."""
+ # Convert string dict back to usable types
+ has_int128 = rctx.attr.has_int128
+ mathbackend = rctx.attr.mathbackend
+
+ rctx.file("BUILD.bazel", 'exports_files(["config.bzl", "generate_header.sh"])')
+
+ # Store config values in .bzl for BUILD files to use
+ rctx.file("config.bzl", """
+HAS_INT128 = {has_int128}
+MATHBACKEND = {mathbackend}
+HAS_INT128_STR = "{has_int128_str}"
+""".format(
+ has_int128 = has_int128,
+ mathbackend = mathbackend,
+ has_int128_str = "TRUE" if has_int128 else "FALSE",
+ ))
+
+ # Create shell script that generates the header
+ rctx.file("generate_header.sh", """#!/bin/bash
+cat > "$1" << 'HEADER_EOF'
+// This file is normally generated by CMake; we generate it for bazel builds.
+
+#ifndef __CMAKE_GENERATED_CONFIG_CORE_H__
+#define __CMAKE_GENERATED_CONFIG_CORE_H__
+
+#define WITH_BE{mathbackend}
+#define WITH_OPENMP
+#define CKKS_M_FACTOR 1
+#define HAVE_INT128 {has_int128_str}
+#define HAVE_INT64 TRUE
+#define MATHBACKEND {mathbackend}
+#define NATIVEINT 64
+
+#endif // __CMAKE_GENERATED_CONFIG_CORE_H__
+HEADER_EOF
+""".format(
+ mathbackend = mathbackend,
+ has_int128_str = "TRUE" if has_int128 else "FALSE",
+ ), executable = True)
+
+# Define the repository rule
+_config_repo = repository_rule(
+ implementation = _config_repo_impl,
+ attrs = _CONFIG_ATTRS,
+)
+
+def _openfhe_config_impl(ctx):
+ """Generate configuration based on module settings."""
+
+ config = None
+ for mod in ctx.modules:
+ for cfg in mod.tags.configure:
+ config = cfg
+ break
+ if config:
+ break
+
+ if not config:
+ config = struct(has_int128 = True, mathbackend = 2)
+
+ _config_repo(
+ name = "openfhe_config",
+ has_int128 = config.has_int128,
+ mathbackend = config.mathbackend,
+ )
+
+
+_configure_tag = tag_class(attrs = _CONFIG_ATTRS)
+openfhe_config = module_extension(
+ implementation = _openfhe_config_impl,
+ tag_classes = {"configure": _configure_tag},
+)
diff --git a/modules/openfhe/1.4.2.bcr.1/presubmit.yml b/modules/openfhe/1.4.2.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..194c02c0557
--- /dev/null
+++ b/modules/openfhe/1.4.2.bcr.1/presubmit.yml
@@ -0,0 +1,22 @@
+matrix:
+ linux_platform: ["debian11", "ubuntu2204"]
+ # Blocked due to lack of openmp support on MacOS in the BCR CI; however, this
+ # module will compile on macos platforms that have openmp configured properly
+ # with the system compiler.
+ # osx_platform: ["macos", "macos_arm64"]
+ bazel: [7.x, 8.x]
+
+tasks:
+ verify_linux_targets:
+ name: Verify linux build and test targets
+ platform: ${{ linux_platform }}
+ shell_commands:
+ - sudo apt-get update
+ - sudo apt-get install libomp5 -y
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@openfhe//:core'
+ - '@openfhe//:pke'
+ - '@openfhe//:binfhe'
+ - '@openfhe//:headers'
+ - '@openfhe//:libopenfhe'
diff --git a/modules/openfhe/1.4.2.bcr.1/source.json b/modules/openfhe/1.4.2.bcr.1/source.json
new file mode 100644
index 00000000000..f33198a3b12
--- /dev/null
+++ b/modules/openfhe/1.4.2.bcr.1/source.json
@@ -0,0 +1,10 @@
+{
+ "url": "https://github.com/openfheorg/openfhe-development/archive/refs/tags/v1.4.2.zip",
+ "integrity": "sha256-0jUZvaVu9XWDqiRWVPaSw6bR+PAHxdK3b+w7FJRi0q0=",
+ "strip_prefix": "openfhe-development-1.4.2",
+ "overlay": {
+ "BUILD": "sha256-M07bNlD61A8WQizSsv+w2i+lSWKLMYGZsev7pwaI6Rc=",
+ "MODULE.bazel": "sha256-71l//jOS2JzqjPE9QojPQq05JET0yslWaEnbvNu482s=",
+ "openfhe_config.bzl": "sha256-2UjwErnjUw6ANajlfu6RgTNWT8vRO+NGf+JDnaF+amk="
+ }
+}
diff --git a/modules/openfhe/metadata.json b/modules/openfhe/metadata.json
index 512e06a2e13..d831e1ebe3d 100644
--- a/modules/openfhe/metadata.json
+++ b/modules/openfhe/metadata.json
@@ -12,7 +12,8 @@
"github:openfheorg/openfhe-development"
],
"versions": [
- "1.4.2"
+ "1.4.2",
+ "1.4.2.bcr.1"
],
"yanked_versions": {}
}
From 1036efeb854a468fb6da4ab0042e1b76db2ba208 Mon Sep 17 00:00:00 2001
From: Arjuna Ariyaratne
Date: Wed, 21 Jan 2026 13:25:02 -0500
Subject: [PATCH 064/367] Support Bazel 9 in mp-units (#7239)
This PR
1) Adds support for Bazel 9 in mp-units
2) Allows the user to enable and disable contracts
3) Cleans up Build files
---
modules/mp-units/2.5.0.bcr.0/MODULE.bazel | 13 ++++
.../mp-units/2.5.0.bcr.0/overlay/BUILD.bazel | 72 +++++++++++++++++++
.../2.5.0.bcr.0/overlay/test/BUILD.bazel | 28 ++++++++
modules/mp-units/2.5.0.bcr.0/presubmit.yml | 45 ++++++++++++
modules/mp-units/2.5.0.bcr.0/source.json | 9 +++
modules/mp-units/metadata.json | 6 +-
6 files changed, 172 insertions(+), 1 deletion(-)
create mode 100644 modules/mp-units/2.5.0.bcr.0/MODULE.bazel
create mode 100644 modules/mp-units/2.5.0.bcr.0/overlay/BUILD.bazel
create mode 100644 modules/mp-units/2.5.0.bcr.0/overlay/test/BUILD.bazel
create mode 100644 modules/mp-units/2.5.0.bcr.0/presubmit.yml
create mode 100644 modules/mp-units/2.5.0.bcr.0/source.json
diff --git a/modules/mp-units/2.5.0.bcr.0/MODULE.bazel b/modules/mp-units/2.5.0.bcr.0/MODULE.bazel
new file mode 100644
index 00000000000..d23591af394
--- /dev/null
+++ b/modules/mp-units/2.5.0.bcr.0/MODULE.bazel
@@ -0,0 +1,13 @@
+module(
+ name = "mp-units",
+ version = "2.5.0.bcr.0",
+ bazel_compatibility = [">=7.2.1"],
+ compatibility_level = 0,
+)
+
+
+bazel_dep(name = "bazel_skylib", version = "1.9.0")
+bazel_dep(name = "catch2", version = "3.12.0", dev_dependency = True)
+bazel_dep(name = "gsl", version = "4.2.1")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "rules_license", version = "1.0.0")
diff --git a/modules/mp-units/2.5.0.bcr.0/overlay/BUILD.bazel b/modules/mp-units/2.5.0.bcr.0/overlay/BUILD.bazel
new file mode 100644
index 00000000000..f8bb6dcf343
--- /dev/null
+++ b/modules/mp-units/2.5.0.bcr.0/overlay/BUILD.bazel
@@ -0,0 +1,72 @@
+load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
+load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary")
+load("@rules_license//rules:license.bzl", "license")
+
+package(
+ default_applicable_licenses = [":license"],
+)
+
+exports_files(["LICENSE"])
+
+license(
+ name = "license",
+ package_name = "mp-units",
+ license_kinds = ["@rules_license//licenses/spdx:MIT"],
+ license_text = "LICENSE",
+ package_url = "https://github.com/mpusz/mp-units",
+)
+
+bool_flag(
+ name = "mp_units_enable_contracts",
+ build_setting_default = False,
+)
+
+config_setting(
+ name = "mp_units_enable_contracts_flag",
+ flag_values = {":mp_units_enable_contracts": "True"},
+)
+
+cc_library(
+ name = "core",
+ hdrs = glob(["src/core/include/**/*.h"]),
+ defines = [
+ "MP_UNITS_API_STD_FORMAT=1",
+ "MP_UNITS_HOSTED=1",
+ ] + select({
+ ":mp_units_enable_contracts_flag": ["MP_UNITS_API_CONTRACTS=3"], # MS-GSL
+ "//conditions:default": ["MP_UNITS_API_CONTRACTS=0"], # none
+ }),
+ deps = select({
+ ":mp_units_enable_contracts_flag": ["@gsl//:gsl"],
+ "//conditions:default": [],
+ }),
+ strip_include_prefix = "src/core/include",
+ includes = ["src/core/include"],
+ visibility = ["//visibility:public"],
+)
+
+cc_library(
+ name = "systems",
+ hdrs = glob(["src/systems/include/**/*.h"]),
+ deps = [":core"],
+ strip_include_prefix = "src/systems/include",
+ includes = ["src/systems/include"],
+ visibility = ["//visibility:public"],
+)
+
+cc_library(
+ name = "mp-units",
+ deps = [
+ ":core",
+ ":systems",
+ ],
+ visibility = ["//visibility:public"],
+)
+
+cc_binary(
+ name = "hello_units",
+ srcs = ["example/hello_units.cpp"],
+ deps = [
+ ":mp-units",
+ ],
+)
diff --git a/modules/mp-units/2.5.0.bcr.0/overlay/test/BUILD.bazel b/modules/mp-units/2.5.0.bcr.0/overlay/test/BUILD.bazel
new file mode 100644
index 00000000000..a2d6c925d52
--- /dev/null
+++ b/modules/mp-units/2.5.0.bcr.0/overlay/test/BUILD.bazel
@@ -0,0 +1,28 @@
+load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
+
+cc_library(
+ name = "unit_tests_static",
+ testonly = True,
+ srcs = glob(["static/*.cpp"], exclude = [
+ "static/unit_magnitude_test.cpp",
+ "static/magnitude_test.cpp",
+ "static/custom_rep_test_min_expl.cpp",
+ "static/iau_test.cpp",
+ ]) + ["static/test_tools.h"],
+ deps = [
+ "//:mp-units",
+ ],
+)
+
+cc_test(
+ name = "unit_tests_runtime",
+ srcs = glob(["runtime/*.cpp"],exclude = [
+ "runtime/linear_algebra_test.cpp",
+ ]) + ["runtime/almost_equals.h"],
+ deps = [
+ "//:mp-units",
+ "@catch2//:catch2",
+ "@catch2//:catch2_main",
+ ],
+ copts = ["-Wno-conversion", "-Wno-subobject-linkage",],
+)
diff --git a/modules/mp-units/2.5.0.bcr.0/presubmit.yml b/modules/mp-units/2.5.0.bcr.0/presubmit.yml
new file mode 100644
index 00000000000..3e5e1c4f43d
--- /dev/null
+++ b/modules/mp-units/2.5.0.bcr.0/presubmit.yml
@@ -0,0 +1,45 @@
+matrix:
+ platform:
+ - ubuntu2404
+ bazel:
+ - 7.x
+ - 8.x
+ - 9.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--cxxopt=-std=c++20"
+ - "--host_cxxopt=-std=c++20"
+ build_targets:
+ - "@mp-units//:core"
+ - "@mp-units//:systems"
+ - "@mp-units//:mp-units"
+
+bcr_test_module:
+ module_path: "."
+ matrix:
+ platform:
+ - ubuntu2404
+ bazel:
+ - 7.x
+ - 8.x
+ - 9.x
+ tasks:
+ run_test_module:
+ name: Run test module
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--cxxopt=-std=c++20"
+ - "--host_cxxopt=-std=c++20"
+ build_targets:
+ - "//:hello_units"
+ - "//test:unit_tests_static"
+ test_flags:
+ - "--cxxopt=-std=c++20"
+ - "--host_cxxopt=-std=c++20"
+ test_targets:
+ - "//test:unit_tests_runtime"
diff --git a/modules/mp-units/2.5.0.bcr.0/source.json b/modules/mp-units/2.5.0.bcr.0/source.json
new file mode 100644
index 00000000000..d59e6560de9
--- /dev/null
+++ b/modules/mp-units/2.5.0.bcr.0/source.json
@@ -0,0 +1,9 @@
+{
+ "url": "https://github.com/mpusz/mp-units/archive/refs/tags/v2.5.0.tar.gz",
+ "integrity": "sha256-pr1IvuaZ8R8O1bBLjFAG0V925tiY4FjbOIBVTS5HpAA=",
+ "strip_prefix": "mp-units-2.5.0",
+ "overlay": {
+ "BUILD.bazel": "sha256-VeACPuR21bXWcmOadv+iJe58u6q/dSSiKS7TOI8fspw=",
+ "test/BUILD.bazel": "sha256-Fc6n82nVLINC1sCux8G80BRKnKRsxhPG73R8p3EFx6E="
+ }
+}
diff --git a/modules/mp-units/metadata.json b/modules/mp-units/metadata.json
index c29f6b438b4..4f95a2df650 100644
--- a/modules/mp-units/metadata.json
+++ b/modules/mp-units/metadata.json
@@ -9,6 +9,10 @@
}
],
"repository": ["github:mpusz/mp-units"],
- "versions": ["2.4.0", "2.5.0"],
+ "versions": [
+ "2.4.0",
+ "2.5.0",
+ "2.5.0.bcr.0"
+ ],
"yanked_versions": {}
}
From a88e7a508e2bca0bfae7751892c61a263e0e4c09 Mon Sep 17 00:00:00 2001
From: David Tolnay
Date: Wed, 21 Jan 2026 11:07:09 -0800
Subject: [PATCH 065/367] Publish cxx.rs@1.0.194 (#7246)
Release: https://github.com/dtolnay/cxx/releases/tag/1.0.194
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: dtolnay <1940490+dtolnay@users.noreply.github.com>
---
modules/cxx.rs/1.0.194/MODULE.bazel | 22 +++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 ++++++++++
modules/cxx.rs/1.0.194/presubmit.yml | 15 +++++++++++++
modules/cxx.rs/1.0.194/source.json | 9 ++++++++
modules/cxx.rs/metadata.json | 3 ++-
5 files changed, 60 insertions(+), 1 deletion(-)
create mode 100644 modules/cxx.rs/1.0.194/MODULE.bazel
create mode 100644 modules/cxx.rs/1.0.194/patches/module_dot_bazel_version.patch
create mode 100644 modules/cxx.rs/1.0.194/presubmit.yml
create mode 100644 modules/cxx.rs/1.0.194/source.json
diff --git a/modules/cxx.rs/1.0.194/MODULE.bazel b/modules/cxx.rs/1.0.194/MODULE.bazel
new file mode 100644
index 00000000000..86485f37051
--- /dev/null
+++ b/modules/cxx.rs/1.0.194/MODULE.bazel
@@ -0,0 +1,22 @@
+module(
+ name = "cxx.rs",
+ version = "1.0.194",
+ bazel_compatibility = [">=8.0.0"],
+ compatibility_level = 1,
+)
+
+bazel_dep(name = "apple_support", version = "2.1.0")
+bazel_dep(name = "bazel_features", version = "1.33.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.14")
+bazel_dep(name = "rules_rust", version = "0.68.1")
+
+rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
+rust.toolchain(versions = ["1.92.0"])
+use_repo(rust, "rust_toolchains")
+
+register_toolchains("@rust_toolchains//:all")
+
+crate_repositories = use_extension("//tools/bazel:extension.bzl", "crate_repositories")
+use_repo(crate_repositories, "crates.io", "vendor")
diff --git a/modules/cxx.rs/1.0.194/patches/module_dot_bazel_version.patch b/modules/cxx.rs/1.0.194/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..9d464025290
--- /dev/null
+++ b/modules/cxx.rs/1.0.194/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "cxx.rs",
+- version = "0.0.0",
++ version = "1.0.194",
+ bazel_compatibility = [">=8.0.0"],
+ compatibility_level = 1,
+ )
+
diff --git a/modules/cxx.rs/1.0.194/presubmit.yml b/modules/cxx.rs/1.0.194/presubmit.yml
new file mode 100644
index 00000000000..b6a039872e3
--- /dev/null
+++ b/modules/cxx.rs/1.0.194/presubmit.yml
@@ -0,0 +1,15 @@
+matrix:
+ platform:
+ - macos_arm64
+ - ubuntu2404
+ - windows
+ bazel: [8.x, 9.x]
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@cxx.rs//...'
+ test_targets:
+ - '@cxx.rs//...'
diff --git a/modules/cxx.rs/1.0.194/source.json b/modules/cxx.rs/1.0.194/source.json
new file mode 100644
index 00000000000..f2fef2ce3c4
--- /dev/null
+++ b/modules/cxx.rs/1.0.194/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-6ScViSUSeIirmiIpBsAcEMzpXSQCHjIvrQCYAhv8EvQ=",
+ "strip_prefix": "cxx-1.0.194",
+ "url": "https://github.com/dtolnay/cxx/releases/download/1.0.194/cxx-1.0.194.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-asJnjwcYSSDlLyQ/dhpwsXxihpnDuwin0ryJxV7rD2U="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/cxx.rs/metadata.json b/modules/cxx.rs/metadata.json
index d5729a0bb14..92be8d60108 100644
--- a/modules/cxx.rs/metadata.json
+++ b/modules/cxx.rs/metadata.json
@@ -49,7 +49,8 @@
"1.0.188",
"1.0.190",
"1.0.191",
- "1.0.192"
+ "1.0.192",
+ "1.0.194"
],
"yanked_versions": {}
}
From 69bc903ac6cba8390484d8d162d14e46316141fd Mon Sep 17 00:00:00 2001
From: Guillaume Lagrange
Date: Wed, 21 Jan 2026 20:07:16 +0100
Subject: [PATCH 066/367]
{codspeed_core,codspeed_google_benchmark_compat}@2.1.0 (#7240)
Release: https://github.com/CodSpeedHQ/codspeed-cpp/releases/tag/v2.1.0
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
---
modules/codspeed_core/2.1.0/MODULE.bazel | 8 ++++
modules/codspeed_core/2.1.0/presubmit.yml | 44 +++++++++++++++++++
modules/codspeed_core/2.1.0/source.json | 5 +++
modules/codspeed_core/metadata.json | 7 +--
.../2.1.0/MODULE.bazel | 42 ++++++++++++++++++
.../2.1.0/presubmit.yml | 44 +++++++++++++++++++
.../2.1.0/source.json | 5 +++
.../metadata.json | 7 +--
8 files changed, 156 insertions(+), 6 deletions(-)
create mode 100644 modules/codspeed_core/2.1.0/MODULE.bazel
create mode 100644 modules/codspeed_core/2.1.0/presubmit.yml
create mode 100644 modules/codspeed_core/2.1.0/source.json
create mode 100644 modules/codspeed_google_benchmark_compat/2.1.0/MODULE.bazel
create mode 100644 modules/codspeed_google_benchmark_compat/2.1.0/presubmit.yml
create mode 100644 modules/codspeed_google_benchmark_compat/2.1.0/source.json
diff --git a/modules/codspeed_core/2.1.0/MODULE.bazel b/modules/codspeed_core/2.1.0/MODULE.bazel
new file mode 100644
index 00000000000..994e829cf8d
--- /dev/null
+++ b/modules/codspeed_core/2.1.0/MODULE.bazel
@@ -0,0 +1,8 @@
+module(
+ name = "codspeed_core",
+ version = "2.1.0",
+)
+
+bazel_dep(name = "rules_cc", version = "0.0.17")
+bazel_dep(name = "bazel_skylib", version = "1.7.1")
+bazel_dep(name = "platforms", version = "0.0.10")
diff --git a/modules/codspeed_core/2.1.0/presubmit.yml b/modules/codspeed_core/2.1.0/presubmit.yml
new file mode 100644
index 00000000000..577c256e871
--- /dev/null
+++ b/modules/codspeed_core/2.1.0/presubmit.yml
@@ -0,0 +1,44 @@
+bcr_test_module:
+ module_path: ""
+ matrix:
+ platform:
+ - debian10
+ - macos
+ - ubuntu2004
+ - windows
+ bazel:
+ - 7.x
+ - 8.x
+ tasks:
+ verify_instrumentation:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--//:codspeed_mode=instrumentation"
+ build_targets:
+ - "//:codspeed"
+ - "//:instrument_hooks"
+ verify_simulation:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--//:codspeed_mode=simulation"
+ build_targets:
+ - "//:codspeed"
+ - "//:instrument_hooks"
+ verify_walltime:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--//:codspeed_mode=walltime"
+ build_targets:
+ - "//:codspeed"
+ - "//:instrument_hooks"
+ verify_off:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--//:codspeed_mode=off"
+ build_targets:
+ - "//:codspeed"
+ - "//:instrument_hooks"
diff --git a/modules/codspeed_core/2.1.0/source.json b/modules/codspeed_core/2.1.0/source.json
new file mode 100644
index 00000000000..f0b4d689e1d
--- /dev/null
+++ b/modules/codspeed_core/2.1.0/source.json
@@ -0,0 +1,5 @@
+{
+ "url": "https://github.com/CodSpeedHQ/codspeed-cpp/releases/download/v2.1.0/codspeed-cpp-v2.1.0.tar.gz",
+ "integrity": "sha256-njaeAB7hRtHDnxdNwSk4gFIZbdNBmd4WvFqVEnYIB5c=",
+ "strip_prefix": "codspeed-cpp-v2.1.0/core"
+}
diff --git a/modules/codspeed_core/metadata.json b/modules/codspeed_core/metadata.json
index eb58d2e0484..d4647622447 100644
--- a/modules/codspeed_core/metadata.json
+++ b/modules/codspeed_core/metadata.json
@@ -2,17 +2,18 @@
"homepage": "https://codspeed.io",
"maintainers": [
{
+ "name": "Arthur Pastel",
"email": "arthur@codspeed.io",
"github": "art049",
- "github_user_id": 15641577,
- "name": "Arthur Pastel"
+ "github_user_id": 15641577
}
],
"repository": [
"github:CodSpeedHQ/codspeed-cpp"
],
"versions": [
- "2.0.0"
+ "2.0.0",
+ "2.1.0"
],
"yanked_versions": {}
}
diff --git a/modules/codspeed_google_benchmark_compat/2.1.0/MODULE.bazel b/modules/codspeed_google_benchmark_compat/2.1.0/MODULE.bazel
new file mode 100644
index 00000000000..2c5d62c7371
--- /dev/null
+++ b/modules/codspeed_google_benchmark_compat/2.1.0/MODULE.bazel
@@ -0,0 +1,42 @@
+module(
+ name = "codspeed_google_benchmark_compat",
+ version = "2.1.0",
+)
+
+bazel_dep(name = "codspeed_core", version = "2.1.0")
+bazel_dep(name = "bazel_skylib", version = "1.7.1")
+bazel_dep(name = "platforms", version = "0.0.10")
+bazel_dep(name = "rules_cc", version = "0.0.9")
+
+bazel_dep(name = "rules_python", version = "1.0.0", dev_dependency = True)
+bazel_dep(name = "googletest", version = "1.14.0", dev_dependency = True, repo_name = "com_google_googletest")
+
+bazel_dep(name = "libpfm", version = "4.11.0.bcr.1")
+
+# Register a toolchain for Python 3.9 to be able to build numpy. Python
+# versions >=3.10 are problematic.
+# A second reason for this is to be able to build Python hermetically instead
+# of relying on the changing default version from rules_python.
+
+python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True)
+python.toolchain(python_version = "3.8")
+python.toolchain(python_version = "3.9")
+python.toolchain(python_version = "3.10")
+python.toolchain(python_version = "3.11")
+python.toolchain(
+ is_default = True,
+ python_version = "3.12",
+)
+python.toolchain(python_version = "3.13")
+
+pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = True)
+pip.parse(
+ hub_name = "tools_pip_deps",
+ python_version = "3.9",
+ requirements_lock = "//tools:requirements.txt",
+)
+use_repo(pip, "tools_pip_deps")
+
+# -- bazel_dep definitions -- #
+
+bazel_dep(name = "nanobind_bazel", version = "2.5.0", dev_dependency = True)
diff --git a/modules/codspeed_google_benchmark_compat/2.1.0/presubmit.yml b/modules/codspeed_google_benchmark_compat/2.1.0/presubmit.yml
new file mode 100644
index 00000000000..6b2e76162e3
--- /dev/null
+++ b/modules/codspeed_google_benchmark_compat/2.1.0/presubmit.yml
@@ -0,0 +1,44 @@
+bcr_test_module:
+ module_path: ""
+ matrix:
+ platform:
+ - debian10
+ - macos
+ - ubuntu2004
+ - windows
+ bazel:
+ - 7.x
+ - 8.x
+ tasks:
+ verify_instrumentation:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--@codspeed_core//:codspeed_mode=instrumentation"
+ build_targets:
+ - "//:benchmark"
+ - "//:benchmark_main"
+ verify_simulation:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--@codspeed_core//:codspeed_mode=simulation"
+ build_targets:
+ - "//:benchmark"
+ - "//:benchmark_main"
+ verify_walltime:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--@codspeed_core//:codspeed_mode=walltime"
+ build_targets:
+ - "//:benchmark"
+ - "//:benchmark_main"
+ verify_off:
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - "--@codspeed_core//:codspeed_mode=off"
+ build_targets:
+ - "//:benchmark"
+ - "//:benchmark_main"
diff --git a/modules/codspeed_google_benchmark_compat/2.1.0/source.json b/modules/codspeed_google_benchmark_compat/2.1.0/source.json
new file mode 100644
index 00000000000..8bbc0aadafc
--- /dev/null
+++ b/modules/codspeed_google_benchmark_compat/2.1.0/source.json
@@ -0,0 +1,5 @@
+{
+ "url": "https://github.com/CodSpeedHQ/codspeed-cpp/releases/download/v2.1.0/codspeed-cpp-v2.1.0.tar.gz",
+ "integrity": "sha256-njaeAB7hRtHDnxdNwSk4gFIZbdNBmd4WvFqVEnYIB5c=",
+ "strip_prefix": "codspeed-cpp-v2.1.0/google_benchmark"
+}
diff --git a/modules/codspeed_google_benchmark_compat/metadata.json b/modules/codspeed_google_benchmark_compat/metadata.json
index eb58d2e0484..d4647622447 100644
--- a/modules/codspeed_google_benchmark_compat/metadata.json
+++ b/modules/codspeed_google_benchmark_compat/metadata.json
@@ -2,17 +2,18 @@
"homepage": "https://codspeed.io",
"maintainers": [
{
+ "name": "Arthur Pastel",
"email": "arthur@codspeed.io",
"github": "art049",
- "github_user_id": 15641577,
- "name": "Arthur Pastel"
+ "github_user_id": 15641577
}
],
"repository": [
"github:CodSpeedHQ/codspeed-cpp"
],
"versions": [
- "2.0.0"
+ "2.0.0",
+ "2.1.0"
],
"yanked_versions": {}
}
From 3f20ec18a2965ba590bc98407fc87cb3e8385055 Mon Sep 17 00:00:00 2001
From: Filip Filmar
Date: Wed, 21 Jan 2026 20:35:07 +0000
Subject: [PATCH 067/367] Publish fshlib@0.2.0 (#7184)
Release: https://github.com/filmil/fshlib/releases/tag/v0.2.0
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
---
modules/fshlib/0.2.0/MODULE.bazel | 8 ++++++++
.../patches/module_dot_bazel_version.patch | 12 ++++++++++++
modules/fshlib/0.2.0/presubmit.yml | 12 ++++++++++++
modules/fshlib/0.2.0/source.json | 9 +++++++++
modules/fshlib/metadata.json | 18 ++++++++++++++++++
5 files changed, 59 insertions(+)
create mode 100644 modules/fshlib/0.2.0/MODULE.bazel
create mode 100644 modules/fshlib/0.2.0/patches/module_dot_bazel_version.patch
create mode 100644 modules/fshlib/0.2.0/presubmit.yml
create mode 100644 modules/fshlib/0.2.0/source.json
create mode 100644 modules/fshlib/metadata.json
diff --git a/modules/fshlib/0.2.0/MODULE.bazel b/modules/fshlib/0.2.0/MODULE.bazel
new file mode 100644
index 00000000000..7e287fc0b69
--- /dev/null
+++ b/modules/fshlib/0.2.0/MODULE.bazel
@@ -0,0 +1,8 @@
+module(
+ name = "fshlib",
+ version = "0.2.0",
+ bazel_compatibility = [">=7.0.0"],
+)
+
+bazel_dep(name = "rules_shell", version = "0.6.1")
+
diff --git a/modules/fshlib/0.2.0/patches/module_dot_bazel_version.patch b/modules/fshlib/0.2.0/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..0de0e6b60b7
--- /dev/null
+++ b/modules/fshlib/0.2.0/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "fshlib",
+- version = "0.0.0",
++ version = "0.2.0",
+ bazel_compatibility = [">=7.0.0"],
+ )
+
+ bazel_dep(name = "rules_shell", version = "0.6.1")
diff --git a/modules/fshlib/0.2.0/presubmit.yml b/modules/fshlib/0.2.0/presubmit.yml
new file mode 100644
index 00000000000..4b824a21afa
--- /dev/null
+++ b/modules/fshlib/0.2.0/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: "integration"
+ matrix:
+ platform: ["ubuntu2204"]
+ bazel: ["7.x", "8.x"]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//..."
diff --git a/modules/fshlib/0.2.0/source.json b/modules/fshlib/0.2.0/source.json
new file mode 100644
index 00000000000..b27cbce65f2
--- /dev/null
+++ b/modules/fshlib/0.2.0/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-9pATWwXS7IPBPTZTiIZwk8yP+gt2rY8HFopVtc4Sy9k=",
+ "strip_prefix": "",
+ "url": "https://github.com/filmil/fshlib/releases/download/v0.2.0/fshlib-v0.2.0.zip",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-+4u9IZWG8uyvIJYG2MiLIw1si+xhPwE/hURg6NS58KQ="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/fshlib/metadata.json b/modules/fshlib/metadata.json
new file mode 100644
index 00000000000..6a260f250bf
--- /dev/null
+++ b/modules/fshlib/metadata.json
@@ -0,0 +1,18 @@
+{
+ "homepage": "https://github.com/filmil/fshlib",
+ "maintainers": [
+ {
+ "name": "Filip Filmar",
+ "email": "246576+filmil@users.noreply.github.com",
+ "github": "filmil",
+ "github_user_id": 246576
+ }
+ ],
+ "repository": [
+ "github:filmil/fshlib"
+ ],
+ "versions": [
+ "0.2.0"
+ ],
+ "yanked_versions": {}
+}
From 814711cebf43c63dd15c1e826203bc57e8ef7dad Mon Sep 17 00:00:00 2001
From: "publish-to-bcr-bot[bot]"
<112732530+publish-to-bcr-bot[bot]@users.noreply.github.com>
Date: Wed, 21 Jan 2026 22:34:50 +0100
Subject: [PATCH 068/367] maliput@1.12.0 (#7255)
:warning: The Publish to BCR GitHub app will be discontinued after June
30, 2026. Please migrate to the GitHub Actions [reusable
workflow](https://github.com/bazel-contrib/publish-to-bcr?tab=readme-ov-file#setup)
before then.
Release: https://github.com/maliput/maliput/releases/tag/1.12.0
_Automated by [Publish to BCR](https://github.com/apps/publish-to-bcr)_
Co-authored-by: Daniel Stonier
---
modules/maliput/1.12.0/MODULE.bazel | 14 ++++++++++++++
modules/maliput/1.12.0/presubmit.yml | 25 +++++++++++++++++++++++++
modules/maliput/1.12.0/source.json | 5 +++++
modules/maliput/metadata.json | 3 ++-
4 files changed, 46 insertions(+), 1 deletion(-)
create mode 100644 modules/maliput/1.12.0/MODULE.bazel
create mode 100644 modules/maliput/1.12.0/presubmit.yml
create mode 100644 modules/maliput/1.12.0/source.json
diff --git a/modules/maliput/1.12.0/MODULE.bazel b/modules/maliput/1.12.0/MODULE.bazel
new file mode 100644
index 00000000000..28c96a5fce0
--- /dev/null
+++ b/modules/maliput/1.12.0/MODULE.bazel
@@ -0,0 +1,14 @@
+"""
+Welcome to Maliput!
+"""
+
+module(
+ name = "maliput",
+ compatibility_level = 1,
+ version = "1.12.0",
+)
+
+bazel_dep(name = "rules_cc", version = "0.0.9")
+bazel_dep(name = "eigen", version = "3.4.0.bcr.1.1")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "yaml-cpp", version = "0.8.0")
diff --git a/modules/maliput/1.12.0/presubmit.yml b/modules/maliput/1.12.0/presubmit.yml
new file mode 100644
index 00000000000..c1f05fad6c5
--- /dev/null
+++ b/modules/maliput/1.12.0/presubmit.yml
@@ -0,0 +1,25 @@
+matrix:
+ bazel: [6.x, 7.x]
+ platform: ["ubuntu2004"] # "debian10", "macos", "windows"
+tasks:
+ verify_targets:
+ name: Verify Build Targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@maliput//:common'
+ - '@maliput//:math'
+ - '@maliput//:base'
+ - '@maliput//:geometry_base'
+ - '@maliput//:api'
+ - '@maliput//:plugin'
+ - '@maliput//:routing'
+ - '@maliput//:utility'
+ - '@maliput//:drake'
+ - '@maliput//:test_utilities'
+ # TODO(stonier): no tests yet...
+ # run_tests:
+ # name: "Run test module"
+ # platform: ${{ platform }}
+ # test_targets:
+ # - "//..."
diff --git a/modules/maliput/1.12.0/source.json b/modules/maliput/1.12.0/source.json
new file mode 100644
index 00000000000..850d354fcde
--- /dev/null
+++ b/modules/maliput/1.12.0/source.json
@@ -0,0 +1,5 @@
+{
+ "integrity": "sha256-GNT3LTS6PWdbVNMLVLiuiU4LWfddSPKvwMVj1j+1euc=",
+ "strip_prefix": "maliput-1.12.0",
+ "url": "https://github.com/maliput/maliput/releases/download/1.12.0/maliput-1.12.0.tar.gz"
+}
diff --git a/modules/maliput/metadata.json b/modules/maliput/metadata.json
index 0cec777bc39..8b81d6f8771 100644
--- a/modules/maliput/metadata.json
+++ b/modules/maliput/metadata.json
@@ -48,7 +48,8 @@
"1.9.0",
"1.10.0",
"1.11.0",
- "1.11.1"
+ "1.11.1",
+ "1.12.0"
],
"yanked_versions": {}
}
From ad846904f724ade96f41d12b6b1505394dce2517 Mon Sep 17 00:00:00 2001
From: Scott Pledger
Date: Wed, 21 Jan 2026 14:34:55 -0700
Subject: [PATCH 069/367] rules_shellspec@0.1.6 (#7254)
Release:
https://github.com/scottpledger/rules_shellspec/releases/tag/v0.1.6
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: scottpledger <1452087+scottpledger@users.noreply.github.com>
---
modules/rules_shellspec/0.1.6/MODULE.bazel | 47 +++++++++++++++++++
.../rules_shellspec/0.1.6/attestations.json | 17 +++++++
.../patches/module_dot_bazel_version.patch | 14 ++++++
modules/rules_shellspec/0.1.6/presubmit.yml | 12 +++++
modules/rules_shellspec/0.1.6/source.json | 10 ++++
modules/rules_shellspec/metadata.json | 3 +-
6 files changed, 102 insertions(+), 1 deletion(-)
create mode 100644 modules/rules_shellspec/0.1.6/MODULE.bazel
create mode 100644 modules/rules_shellspec/0.1.6/attestations.json
create mode 100644 modules/rules_shellspec/0.1.6/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_shellspec/0.1.6/presubmit.yml
create mode 100644 modules/rules_shellspec/0.1.6/source.json
diff --git a/modules/rules_shellspec/0.1.6/MODULE.bazel b/modules/rules_shellspec/0.1.6/MODULE.bazel
new file mode 100644
index 00000000000..3c938ba4354
--- /dev/null
+++ b/modules/rules_shellspec/0.1.6/MODULE.bazel
@@ -0,0 +1,47 @@
+"Bazel rules for ShellSpec - BDD testing framework for shell scripts"
+
+module(
+ name = "rules_shellspec",
+ version = "0.1.6",
+ # NOTE:
+ #
+ # Always leave version unset or set to "" (the default). The default value
+ # can prevent issues when the module is used via non-registry overrides
+ # (e.g. https://github.com/bazel-contrib/rules_go/issues/4380).
+ #
+ # The publish.yaml GitHub Action sets the version in the registry to the
+ # release version by patching this MODULE.bazel file in the pull request to
+ # the BCR.
+ #
+ # For more info, see this Slack thread:
+ # https://bazelbuild.slack.com/archives/CA31HN1T3/p1750406404452179
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "bazel_lib", version = "3.0.0")
+bazel_dep(name = "package_metadata", version = "0.0.6")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_shell", version = "0.4.1")
+
+bazel_dep(name = "gazelle", version = "0.47.0", dev_dependency = True, repo_name = "bazel_gazelle")
+bazel_dep(name = "bazel_skylib_gazelle_plugin", version = "1.8.2", dev_dependency = True)
+bazel_dep(name = "buildifier_prebuilt", version = "8.2.1", dev_dependency = True)
+bazel_dep(name = "rules_testing", version = "0.6.0", dev_dependency = True)
+bazel_dep(name = "aspect_rules_lint", version = "1.10.2", dev_dependency = True)
+bazel_dep(name = "rules_multitool", version = "0.11.0", dev_dependency = True)
+bazel_dep(name = "bazelrc-preset.bzl", version = "1.6.0", dev_dependency = True)
+
+# Register the ShellSpec extension
+shellspec = use_extension("//shellspec:extensions.bzl", "shellspec")
+shellspec.toolchain(version = "0.28.1")
+use_repo(shellspec, "shellspec")
+
+# Register multitool for lint/format tools
+# aspect_rules_lint also uses multitool, so this adds our additional lockfile
+multitool = use_extension(
+ "@rules_multitool//multitool:extension.bzl",
+ "multitool",
+ dev_dependency = True,
+)
+multitool.hub(lockfile = "//tools/lint:multitool.lock.json")
+use_repo(multitool, "multitool")
diff --git a/modules/rules_shellspec/0.1.6/attestations.json b/modules/rules_shellspec/0.1.6/attestations.json
new file mode 100644
index 00000000000..a62fd1899f7
--- /dev/null
+++ b/modules/rules_shellspec/0.1.6/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/scottpledger/rules_shellspec/releases/download/v0.1.6/source.json.intoto.jsonl",
+ "integrity": "sha256-L9ndyPS9+jzdohIjiyNE4d/cGqHje9bn99B/dBfG6Ng="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/scottpledger/rules_shellspec/releases/download/v0.1.6/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-X6J6mzBiWsLO85BvFblNZLRB98T/f9CRS8UK9tMDICA="
+ },
+ "rules_shellspec-v0.1.6.tar.gz": {
+ "url": "https://github.com/scottpledger/rules_shellspec/releases/download/v0.1.6/rules_shellspec-v0.1.6.tar.gz.intoto.jsonl",
+ "integrity": "sha256-TGDgwkI/l3y4V1ila5qn5QK6pNtCSzyzY1JM52Is8cs="
+ }
+ }
+}
diff --git a/modules/rules_shellspec/0.1.6/patches/module_dot_bazel_version.patch b/modules/rules_shellspec/0.1.6/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..c817cde812b
--- /dev/null
+++ b/modules/rules_shellspec/0.1.6/patches/module_dot_bazel_version.patch
@@ -0,0 +1,14 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,9 +1,9 @@
+ "Bazel rules for ShellSpec - BDD testing framework for shell scripts"
+
+ module(
+ name = "rules_shellspec",
+- version = "",
++ version = "0.1.6",
+ # NOTE:
+ #
+ # Always leave version unset or set to "" (the default). The default value
+ # can prevent issues when the module is used via non-registry overrides
diff --git a/modules/rules_shellspec/0.1.6/presubmit.yml b/modules/rules_shellspec/0.1.6/presubmit.yml
new file mode 100644
index 00000000000..b09ae5bfcdb
--- /dev/null
+++ b/modules/rules_shellspec/0.1.6/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: "e2e/smoke"
+ matrix:
+ platform: ["debian11", "macos", "ubuntu2204", "windows"]
+ bazel: ["8.x", "7.x", "6.x"]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//..."
diff --git a/modules/rules_shellspec/0.1.6/source.json b/modules/rules_shellspec/0.1.6/source.json
new file mode 100644
index 00000000000..8bc0d4cee12
--- /dev/null
+++ b/modules/rules_shellspec/0.1.6/source.json
@@ -0,0 +1,10 @@
+{
+ "integrity": "sha256-rKyqWO4cGpoTatuwa3JxsxyLF019eNzIlsWL0c2FyI8=",
+ "strip_prefix": "rules_shellspec-0.1.6",
+ "docs_url": "https://github.com/scottpledger/rules_shellspec/releases/download/v0.1.6/rules_shellspec-v0.1.6.docs.tar.gz",
+ "url": "https://github.com/scottpledger/rules_shellspec/releases/download/v0.1.6/rules_shellspec-v0.1.6.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-aaZYFNFzcZW+w38cpJH2EedHYzwyttKOArxnFWbMmZE="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_shellspec/metadata.json b/modules/rules_shellspec/metadata.json
index 548f4213654..5520340b838 100644
--- a/modules/rules_shellspec/metadata.json
+++ b/modules/rules_shellspec/metadata.json
@@ -11,7 +11,8 @@
"github:scottpledger/rules_shellspec"
],
"versions": [
- "0.1.5"
+ "0.1.5",
+ "0.1.6"
],
"yanked_versions": {}
}
From 706ca4f0ade35955f5131b540992054b0847b84a Mon Sep 17 00:00:00 2001
From: "Marvin, the Aspect bot"
Date: Wed, 21 Jan 2026 13:35:05 -0800
Subject: [PATCH 070/367] aspect_rules_js@3.0.0-rc1 (#7252)
Release:
https://github.com/aspect-build/rules_js/releases/tag/v3.0.0-rc1
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: jbedard <89246+jbedard@users.noreply.github.com>
---
.../aspect_rules_js/3.0.0-rc1/MODULE.bazel | 322 ++++++++++++++++++
.../3.0.0-rc1/attestations.json | 17 +
.../patches/module_dot_bazel_version.patch | 13 +
.../aspect_rules_js/3.0.0-rc1/presubmit.yml | 12 +
modules/aspect_rules_js/3.0.0-rc1/source.json | 10 +
modules/aspect_rules_js/metadata.json | 3 +-
6 files changed, 376 insertions(+), 1 deletion(-)
create mode 100644 modules/aspect_rules_js/3.0.0-rc1/MODULE.bazel
create mode 100644 modules/aspect_rules_js/3.0.0-rc1/attestations.json
create mode 100644 modules/aspect_rules_js/3.0.0-rc1/patches/module_dot_bazel_version.patch
create mode 100644 modules/aspect_rules_js/3.0.0-rc1/presubmit.yml
create mode 100644 modules/aspect_rules_js/3.0.0-rc1/source.json
diff --git a/modules/aspect_rules_js/3.0.0-rc1/MODULE.bazel b/modules/aspect_rules_js/3.0.0-rc1/MODULE.bazel
new file mode 100644
index 00000000000..4055a55c6f5
--- /dev/null
+++ b/modules/aspect_rules_js/3.0.0-rc1/MODULE.bazel
@@ -0,0 +1,322 @@
+"aspect-build/rules_js"
+
+module(
+ name = "aspect_rules_js",
+ bazel_compatibility = [">=7.6.0"],
+ compatibility_level = 1,
+ version = "3.0.0-rc1",
+)
+
+# Lower-bounds (minimum) versions for direct runtime dependencies.
+# Do not bump these unless rules_js requires a newer version to function.
+bazel_dep(name = "tar.bzl", version = "0.6.0")
+bazel_dep(name = "yq.bzl", version = "0.3.2")
+bazel_dep(name = "jq.bzl", version = "0.4.0")
+bazel_dep(name = "aspect_tools_telemetry", version = "0.3.3")
+bazel_dep(name = "bazel_lib", version = "3.0.0")
+bazel_dep(name = "bazel_skylib", version = "1.5.0")
+bazel_dep(name = "platforms", version = "0.0.5")
+bazel_dep(name = "rules_nodejs", version = "6.7.3")
+
+# Ensure any version of aspect_bazel_lib used includes:
+# https://github.com/bazel-contrib/bazel-lib/commit/371362199e5e5bde58aeb15b54ea6cfb164af337
+# https://github.com/bazel-contrib/bazel-lib/commit/ceaff54210291292f35d03bd4bbc0b6ceb40e77a
+# https://github.com/bazel-contrib/bazel-lib/commit/27a9e7af51c0f806f823425a03283ae487d3a953
+# https://github.com/bazel-contrib/bazel-lib/commit/e56aa707b72364bb1cc6f92580cb12ff88dfc1b4
+# https://github.com/bazel-contrib/bazel-lib/commit/2befef614904d0ebe5161beb271ac31c83e82fd2
+bazel_dep(name = "aspect_bazel_lib", version = "2.22.5", repo_name = None)
+
+tel = use_extension("@aspect_tools_telemetry//:extension.bzl", "telemetry")
+use_repo(tel, "aspect_tools_telemetry_report")
+
+node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
+use_repo(node, "nodejs_toolchains")
+use_repo(node, "nodejs_darwin_amd64")
+use_repo(node, "nodejs_darwin_arm64")
+use_repo(node, "nodejs_linux_amd64")
+use_repo(node, "nodejs_linux_arm64")
+use_repo(node, "nodejs_linux_ppc64le")
+use_repo(node, "nodejs_linux_s390x")
+use_repo(node, "nodejs_windows_amd64")
+
+# The default + public version of pnpm used by default.
+pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm")
+pnpm.pnpm(name = "pnpm")
+use_repo(pnpm, "pnpm", "pnpm__links")
+
+bazel_lib_toolchains = use_extension("@bazel_lib//lib:extensions.bzl", "toolchains")
+use_repo(
+ bazel_lib_toolchains,
+ "coreutils_darwin_amd64",
+ "coreutils_darwin_arm64",
+ "coreutils_linux_amd64",
+ "coreutils_linux_arm64",
+ "coreutils_toolchains",
+ "coreutils_windows_amd64",
+ "coreutils_windows_arm64",
+)
+
+yq_toolchain = use_extension("@yq.bzl//yq:extensions.bzl", "yq")
+use_repo(
+ yq_toolchain,
+ "yq_darwin_amd64",
+ "yq_darwin_arm64",
+ "yq_linux_amd64",
+ "yq_linux_arm64",
+ "yq_linux_ppc64le",
+ "yq_linux_s390x",
+ "yq_windows_amd64",
+)
+
+tar_toolchains = use_extension("@tar.bzl//tar:extensions.bzl", "toolchains")
+use_repo(
+ tar_toolchains,
+ "bsd_tar_toolchains",
+ "bsd_tar_toolchains_darwin_amd64",
+ "bsd_tar_toolchains_darwin_arm64",
+ "bsd_tar_toolchains_linux_amd64",
+ "bsd_tar_toolchains_linux_arm64",
+ "bsd_tar_toolchains_windows_amd64",
+ "bsd_tar_toolchains_windows_arm64",
+)
+
+####### Dev dependencies ########
+
+# Dev-only pnpm used for local testing
+pnpm10 = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm", dev_dependency = True)
+pnpm10.pnpm(
+ name = "pnpm10",
+ pnpm_version = "10.22.0",
+ pnpm_version_integrity = "sha512-vwSe/plbKPUn/StBrgR0zikYb37cs79UUIe9Yfu+uyv3U2LRMH/aCcLSiOHkmXh6wS1Py2F6l0cYpgUfLu50HA==",
+)
+use_repo(pnpm10, "pnpm10")
+
+bazel_dep(name = "bazelrc-preset.bzl", version = "1.3.0", dev_dependency = True)
+bazel_dep(name = "aspect_rules_lint", version = "1.13.0", dev_dependency = True)
+bazel_dep(name = "buildifier_prebuilt", version = "8.2.1.1", dev_dependency = True)
+bazel_dep(name = "rules_shell", version = "0.6.1", dev_dependency = True)
+
+host = use_extension(
+ "@bazel_lib//lib:extensions.bzl",
+ "host",
+ dev_dependency = True,
+)
+host.host()
+use_repo(host, "bazel_lib_host")
+
+node_dev = use_extension(
+ "@rules_nodejs//nodejs:extensions.bzl",
+ "node",
+ dev_dependency = True,
+)
+use_repo(node_dev, "node20_linux_amd64")
+use_repo(node_dev, "node20_darwin_arm64")
+use_repo(node_dev, "node20_darwin_amd64")
+use_repo(node_dev, "node20_linux_arm64")
+use_repo(node_dev, "node20_linux_s390x")
+use_repo(node_dev, "node20_linux_ppc64le")
+use_repo(node_dev, "node20_windows_amd64")
+use_repo(node_dev, "node22_linux_amd64")
+use_repo(node_dev, "node22_darwin_arm64")
+use_repo(node_dev, "node22_darwin_amd64")
+use_repo(node_dev, "node22_linux_arm64")
+use_repo(node_dev, "node22_linux_s390x")
+use_repo(node_dev, "node22_linux_ppc64le")
+use_repo(node_dev, "node22_windows_amd64")
+use_repo(node_dev, "node24_linux_amd64")
+use_repo(node_dev, "node24_darwin_arm64")
+use_repo(node_dev, "node24_darwin_amd64")
+use_repo(node_dev, "node24_linux_arm64")
+use_repo(node_dev, "node24_linux_s390x")
+use_repo(node_dev, "node24_linux_ppc64le")
+use_repo(node_dev, "node24_windows_amd64")
+
+# default name+version
+node_dev.toolchain()
+
+# additional custom name+versions
+node_dev.toolchain(
+ name = "node20",
+ node_version = "20.17.0",
+)
+node_dev.toolchain(
+ name = "node22",
+ node_version = "22.20.0",
+)
+node_dev.toolchain(
+ name = "node24",
+ node_version = "24.9.0",
+)
+
+############################################
+# npm dependencies used by examples
+
+npm = use_extension(
+ "@aspect_rules_js//npm:extensions.bzl",
+ "npm",
+ dev_dependency = True,
+)
+npm.npm_translate_lock(
+ name = "npm",
+ bins = {
+ # derived from "bin" attribute in node_modules/typescript/package.json
+ "typescript": [
+ "tsc=./bin/tsc",
+ "tsserver=./bin/tsserver",
+ ],
+ },
+ custom_postinstalls = {
+ "@aspect-test/c": "echo moo > cow.txt",
+ "@aspect-test/c@2.0.2": "echo mooo >> cow.txt",
+ "pngjs": "chmod -R a+X *", # fixes malformed tarball content file permissions in this package after extraction (see https://github.com/aspect-build/rules_js/issues/1637 for more details)
+ },
+ data = [
+ "//:package.json",
+ "//:pnpm-workspace.yaml",
+ "//examples/js_binary:package.json",
+ "//examples/js_lib_pkg/a:package.json",
+ "//examples/js_lib_pkg/b:package.json",
+ "//examples/linked_consumer:package.json",
+ "//examples/linked_empty_node_modules:package.json",
+ "//examples/linked_lib:package.json",
+ "//examples/linked_pkg:package.json",
+ "//examples/macro:package.json",
+ "//examples/nextjs:package.json",
+ "//examples/npm_deps:package.json",
+ "//examples/npm_deps/patches:meaning-of-life@1.0.0-pnpm.patch",
+ "//examples/npm_package/libs/lib_a:package.json",
+ "//examples/npm_package/packages/pkg_a:package.json",
+ "//examples/npm_package/packages/pkg_b:package.json",
+ "//examples/npm_package/packages/pkg_d:package.json",
+ "//examples/npm_package/packages/pkg_e:package.json",
+ "//examples/runfiles:package.json",
+ "//examples/stack_traces:package.json",
+ "//examples/vite3:package.json",
+ "//examples/vite6:package.json",
+ "//examples/webpack_cli:package.json",
+ "//js/private/coverage/bundle:package.json",
+ "//js/private/devserver/src:package.json",
+ "//js/private/test/image:package.json",
+ "//js/private/test/js_run_devserver:package.json",
+ "//js/private/test/node-patches:package.json",
+ "//js/private/worker/src:package.json",
+ "//npm/private/lifecycle:package.json",
+ "//npm/private/test:package.json",
+ "//npm/private/test:vendored/lodash-4.17.21.tgz",
+ "//npm/private/test/npm_package:package.json",
+ "//npm/private/test/npm_package_publish:package.json",
+ "//npm/private/test/subs:package.json",
+ "//npm/private/test/vendored/is-odd:package.json",
+ "//npm/private/test/vendored/semver-max:package.json",
+ ],
+ generate_bzl_library_targets = True,
+ lifecycle_hooks = {
+ # We fetch @kubernetes/client-node from source and it has a `prepare` lifecycle hook that needs to be run
+ # which runs the `build` package.json script: https://github.com/kubernetes-client/javascript/blob/fc681991e61c6808dd26012a2331f83671a11218/package.json#L28.
+ # Here we run run build so we just run `tsc` instead of `npm run build` which ends up just running `tsc`.
+ "@kubernetes/client-node": ["build"],
+ # 'install' hook fails as it assumes the following path to `node-pre-gyp`: ./node_modules/.bin/node-pre-gyp
+ # https://github.com/stultuss/protoc-gen-grpc-ts/blob/53d52a9d0e1fe3cbe930dec5581eca89b3dde807/package.json#L28
+ "protoc-gen-grpc@2.0.3": [],
+ },
+ lifecycle_hooks_execution_requirements = {
+ "*": [
+ "no-sandbox",
+ ],
+ # If @kubernetes/client-node is not sandboxed, will fail with
+ # ```
+ # src/azure_auth.ts(97,43): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # src/azure_auth.ts(98,34): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # src/gcp_auth.ts(93,43): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # src/gcp_auth.ts(94,34): error TS2575: No overload expects 2 arguments, but overloads do exist that expect either 1 or 4 arguments.
+ # ```
+ # since a `jsonpath-plus@7.2.0` that is newer then the transitive dep `jsonpath-plus@0.19.0` is found outside of the sandbox that
+ # includes typings that don't match the 0.19.0 "any" usage.
+ "@kubernetes/client-node": [],
+ "@figma/nodegit": [
+ "no-sandbox",
+ "requires-network",
+ ],
+ "esbuild": [
+ "no-sandbox",
+ "requires-network",
+ ],
+ "segfault-handler": [
+ "no-sandbox",
+ "requires-network",
+ ],
+ "puppeteer": [
+ "no-remote",
+ "no-sandbox",
+ "requires-network",
+ ],
+ },
+ npmrc = "//:.npmrc",
+ package_visibility = {
+ "unused": ["//npm/private/test:__subpackages__"],
+ "@mycorp/pkg-a": [
+ "//examples:__subpackages__",
+ "//js/private/test/image:__subpackages__",
+ ],
+ "@mycorp/pkg-d": [
+ "//examples:__subpackages__",
+ "//js/private/test/image:__subpackages__",
+ ],
+ "@mycorp/pkg-e": ["//examples:__subpackages__"],
+ },
+ pnpm_lock = "//:pnpm-lock.yaml",
+ public_hoist_packages = {
+ # Instructs the linker to hoist the ms@2.1.3 npm package to `node_modules/ms` in the `examples/npm_deps` package.
+ # Similar to adding `public-hoist-pattern[]=ms` in .npmrc but with control over which version to hoist and where
+ # to hoist it. This hoisted package can be referenced by the label `//examples/npm_deps:node_modules/ms` same as
+ # other direct dependencies in the `examples/npm_deps/package.json`.
+ "ms@2.1.3": ["examples/npm_deps"],
+ },
+ update_pnpm_lock = True,
+ use_pnpm = "@pnpm10//:package/bin/pnpm.cjs",
+ verify_node_modules_ignored = "//:.bazelignore",
+ verify_patches = "//examples/npm_deps/patches:patches",
+)
+npm.npm_translate_lock(
+ name = "npm-no_optional",
+ no_optional = True,
+ npmrc = "//:.npmrc",
+ pnpm_lock = "//:pnpm-lock.yaml",
+)
+npm.npm_translate_lock(
+ name = "npm-no_dev",
+ no_dev = True,
+ npmrc = "//:.npmrc",
+ pnpm_lock = "//:pnpm-lock.yaml",
+)
+use_repo(
+ npm,
+ "npm",
+ "npm-no_dev",
+ "npm-no_optional",
+ "npm__es5-ext__0.10.64__links",
+ "npm__fsevents__2.3.3__links",
+ "npm__google-closure-compiler__20251111.0.0__links",
+ "npm__next__15.2.6_1315089095__links",
+ "npm__rollup__4.55.2",
+ "npm__rollup__4.55.2__links",
+ "npm__unused__0.2.2__links",
+ "npm__webpack-bundle-analyzer__4.5.0_bufferutil_4.0.8",
+)
+
+# As an example, manually import a package using explicit coordinates.
+# Just a demonstration of the syntax de-sugaring.
+npm.npm_import(
+ name = "acorn__8.4.0",
+ bins = {"acorn": "./bin/acorn"},
+ integrity = "sha512-ULr0LDaEqQrMFGyQ3bhJkLsbtrQ8QibAseGZeaSUiT/6zb9IvIkomWHJIvgvwad+hinRAgsI51JcWk2yvwyL+w==",
+ package = "acorn",
+ # Root package where to link the package store
+ root_package = "",
+ version = "8.4.0",
+)
+use_repo(
+ npm,
+ "acorn__8.4.0",
+ "acorn__8.4.0__links",
+)
diff --git a/modules/aspect_rules_js/3.0.0-rc1/attestations.json b/modules/aspect_rules_js/3.0.0-rc1/attestations.json
new file mode 100644
index 00000000000..9b046417403
--- /dev/null
+++ b/modules/aspect_rules_js/3.0.0-rc1/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v3.0.0-rc1/source.json.intoto.jsonl",
+ "integrity": "sha256-q+SG/7Txh+nmk+GRZ280wCNagVJZ+TOl/cgzB9pQZt0="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v3.0.0-rc1/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-F+Vn30Ceeekpy0TiiSF53nyUfN9gUWrv5xT/k/+mlts="
+ },
+ "rules_js-v3.0.0-rc1.tar.gz": {
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v3.0.0-rc1/rules_js-v3.0.0-rc1.tar.gz.intoto.jsonl",
+ "integrity": "sha256-ehJyPoAQFrNLzN/ludoEnbqq/X7BOXJqZ/rQyzsIgZM="
+ }
+ }
+}
diff --git a/modules/aspect_rules_js/3.0.0-rc1/patches/module_dot_bazel_version.patch b/modules/aspect_rules_js/3.0.0-rc1/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..8f80232727b
--- /dev/null
+++ b/modules/aspect_rules_js/3.0.0-rc1/patches/module_dot_bazel_version.patch
@@ -0,0 +1,13 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -3,8 +3,9 @@
+ module(
+ name = "aspect_rules_js",
+ bazel_compatibility = [">=7.6.0"],
+ compatibility_level = 1,
++ version = "3.0.0-rc1",
+ )
+
+ # Lower-bounds (minimum) versions for direct runtime dependencies.
+ # Do not bump these unless rules_js requires a newer version to function.
diff --git a/modules/aspect_rules_js/3.0.0-rc1/presubmit.yml b/modules/aspect_rules_js/3.0.0-rc1/presubmit.yml
new file mode 100644
index 00000000000..769f7abe02e
--- /dev/null
+++ b/modules/aspect_rules_js/3.0.0-rc1/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: 'e2e/bzlmod'
+ matrix:
+ bazel: ['7.x', '8.x', '9.x']
+ platform: ['debian10', 'macos', 'ubuntu2004', 'windows']
+ tasks:
+ run_tests:
+ name: 'Run test module'
+ bazel: ${{ bazel }}
+ platform: ${{ platform }}
+ test_targets:
+ - '//...'
diff --git a/modules/aspect_rules_js/3.0.0-rc1/source.json b/modules/aspect_rules_js/3.0.0-rc1/source.json
new file mode 100644
index 00000000000..070bcb8f5fd
--- /dev/null
+++ b/modules/aspect_rules_js/3.0.0-rc1/source.json
@@ -0,0 +1,10 @@
+{
+ "integrity": "sha256-0QMNhSQs8YbppuQbWSz5GU2mh8Q6Zsl9GD1Lym5Z/SU=",
+ "strip_prefix": "rules_js-3.0.0-rc1",
+ "docs_url": "https://github.com/aspect-build/rules_js/releases/download/v3.0.0-rc1/rules_js-v3.0.0-rc1.docs.tar.gz",
+ "url": "https://github.com/aspect-build/rules_js/releases/download/v3.0.0-rc1/rules_js-v3.0.0-rc1.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-Mih/JK8A1sWD8N6bGKeU0Gva3e5NUAoooBuoH+hVUnE="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/aspect_rules_js/metadata.json b/modules/aspect_rules_js/metadata.json
index 3d756e02b87..cc527460e90 100644
--- a/modules/aspect_rules_js/metadata.json
+++ b/modules/aspect_rules_js/metadata.json
@@ -156,7 +156,8 @@
"3.0.0-alpha.2",
"3.0.0-alpha.3",
"3.0.0-alpha.4",
- "3.0.0-rc0"
+ "3.0.0-rc0",
+ "3.0.0-rc1"
],
"yanked_versions": {
"2.3.2": "It contains a bug that breaks the js_image_layer rule: https://github.com/aspect-build/rules_js/pull/2145"
From 6b96845be6cc75494ae68bf0160dd4c14d21f0b2 Mon Sep 17 00:00:00 2001
From: "Marvin, the Aspect bot"
Date: Wed, 21 Jan 2026 13:35:38 -0800
Subject: [PATCH 071/367] aspect_rules_swc@2.6.1 (#7214)
Release: https://github.com/aspect-build/rules_swc/releases/tag/v2.6.1
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
---------
Co-authored-by: jbedard <89246+jbedard@users.noreply.github.com>
Co-authored-by: Jason Bedard
---
modules/aspect_rules_swc/2.6.1/MODULE.bazel | 40 +++++++++++++++++++
.../aspect_rules_swc/2.6.1/attestations.json | 17 ++++++++
.../patches/module_dot_bazel_version.patch | 13 ++++++
modules/aspect_rules_swc/2.6.1/presubmit.yml | 12 ++++++
modules/aspect_rules_swc/2.6.1/source.json | 10 +++++
modules/aspect_rules_swc/metadata.json | 3 +-
6 files changed, 94 insertions(+), 1 deletion(-)
create mode 100644 modules/aspect_rules_swc/2.6.1/MODULE.bazel
create mode 100644 modules/aspect_rules_swc/2.6.1/attestations.json
create mode 100644 modules/aspect_rules_swc/2.6.1/patches/module_dot_bazel_version.patch
create mode 100644 modules/aspect_rules_swc/2.6.1/presubmit.yml
create mode 100644 modules/aspect_rules_swc/2.6.1/source.json
diff --git a/modules/aspect_rules_swc/2.6.1/MODULE.bazel b/modules/aspect_rules_swc/2.6.1/MODULE.bazel
new file mode 100644
index 00000000000..c8292a6582c
--- /dev/null
+++ b/modules/aspect_rules_swc/2.6.1/MODULE.bazel
@@ -0,0 +1,40 @@
+"aspect-build/rules_swc"
+
+module(
+ name = "aspect_rules_swc",
+ compatibility_level = 1,
+ version = "2.6.1",
+)
+
+# Lower-bounds (minimum) versions for direct runtime dependencies
+bazel_dep(name = "aspect_bazel_lib", version = "2.19.3")
+bazel_dep(name = "aspect_tools_telemetry", version = "0.2.6")
+bazel_dep(name = "aspect_rules_js", version = "2.0.0") # Note: only used for provider symbols, we don't spawn nodejs actions
+bazel_dep(name = "bazel_skylib", version = "1.5.0")
+bazel_dep(name = "platforms", version = "0.0.7")
+
+tel = use_extension("@aspect_tools_telemetry//:extension.bzl", "telemetry")
+use_repo(tel, "aspect_tools_telemetry_report")
+
+swc = use_extension("@aspect_rules_swc//swc:extensions.bzl", "swc")
+swc.toolchain(
+ name = "swc",
+ swc_version = "v1.7.40",
+)
+use_repo(swc, "swc_toolchains")
+
+register_toolchains("@swc_toolchains//:all")
+
+####### Dev dependencies ########
+
+bazel_dep(name = "bazelrc-preset.bzl", version = "1.1.0", dev_dependency = True)
+bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True)
+
+npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm", dev_dependency = True)
+npm.npm_translate_lock(
+ name = "npm",
+ npmrc = "//:.npmrc",
+ pnpm_lock = "//examples:pnpm-lock.yaml",
+ verify_node_modules_ignored = "//:.bazelignore",
+)
+use_repo(npm, "npm")
diff --git a/modules/aspect_rules_swc/2.6.1/attestations.json b/modules/aspect_rules_swc/2.6.1/attestations.json
new file mode 100644
index 00000000000..79cf1a862a6
--- /dev/null
+++ b/modules/aspect_rules_swc/2.6.1/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/aspect-build/rules_swc/releases/download/v2.6.1/source.json.intoto.jsonl",
+ "integrity": "sha256-01z1j2UX0W4iuyPCA3RmbpVFBws4kbw9ejgeTk83hz4="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/aspect-build/rules_swc/releases/download/v2.6.1/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-AhmRS2oi3BSZWqp8tfu0A04RVds/IphbrcQK2v8BRWk="
+ },
+ "rules_swc-v2.6.1.tar.gz": {
+ "url": "https://github.com/aspect-build/rules_swc/releases/download/v2.6.1/rules_swc-v2.6.1.tar.gz.intoto.jsonl",
+ "integrity": "sha256-c4R6VuIIEj6bvaqY7+00VNuFKAX2hkYuvGfOy4joKDY="
+ }
+ }
+}
diff --git a/modules/aspect_rules_swc/2.6.1/patches/module_dot_bazel_version.patch b/modules/aspect_rules_swc/2.6.1/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..5bcacc8ad53
--- /dev/null
+++ b/modules/aspect_rules_swc/2.6.1/patches/module_dot_bazel_version.patch
@@ -0,0 +1,13 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -2,8 +2,9 @@
+
+ module(
+ name = "aspect_rules_swc",
+ compatibility_level = 1,
++ version = "2.6.1",
+ )
+
+ # Lower-bounds (minimum) versions for direct runtime dependencies
+ bazel_dep(name = "aspect_bazel_lib", version = "2.19.3")
diff --git a/modules/aspect_rules_swc/2.6.1/presubmit.yml b/modules/aspect_rules_swc/2.6.1/presubmit.yml
new file mode 100644
index 00000000000..70bbbe70826
--- /dev/null
+++ b/modules/aspect_rules_swc/2.6.1/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: "e2e/smoke"
+ matrix:
+ bazel: ["8.x", "7.x", "6.x"]
+ platform: ["debian10", "macos", "ubuntu2004", "windows"]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ bazel: ${{ bazel }}
+ platform: ${{ platform }}
+ test_targets:
+ - "//..."
diff --git a/modules/aspect_rules_swc/2.6.1/source.json b/modules/aspect_rules_swc/2.6.1/source.json
new file mode 100644
index 00000000000..10a88558847
--- /dev/null
+++ b/modules/aspect_rules_swc/2.6.1/source.json
@@ -0,0 +1,10 @@
+{
+ "integrity": "sha256-co24mGYPu52QqUekFbEqLT23dSS3PP2jBoRNzd9ZeFI=",
+ "strip_prefix": "rules_swc-2.6.1",
+ "docs_url": "https://github.com/aspect-build/rules_swc/releases/download/v2.6.1/rules_swc-v2.6.1.docs.tar.gz",
+ "url": "https://github.com/aspect-build/rules_swc/releases/download/v2.6.1/rules_swc-v2.6.1.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-B2O7Ssi9lEqbipZhUnXoVJm50SSwMHLx70OWhWlPYsk="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/aspect_rules_swc/metadata.json b/modules/aspect_rules_swc/metadata.json
index 22ee837f5f7..417b1c33aa6 100644
--- a/modules/aspect_rules_swc/metadata.json
+++ b/modules/aspect_rules_swc/metadata.json
@@ -46,7 +46,8 @@
"2.4.3",
"2.4.4",
"2.5.0",
- "2.6.0"
+ "2.6.0",
+ "2.6.1"
],
"yanked_versions": {}
}
From 42e8bfab2f38fd964d42e507a002d2dafe8d0f3d Mon Sep 17 00:00:00 2001
From: Simon Mavi Stewart
Date: Wed, 21 Jan 2026 21:56:21 +0000
Subject: [PATCH 072/367] contrib_rules_jvm@0.32.0 (#7247)
---
modules/contrib_rules_jvm/0.32.0/MODULE.bazel | 205 ++++++++++++++++++
.../0.32.0/patches/fix-examples.patch | 32 +++
.../0.32.0/patches/update-version.patch | 11 +
.../contrib_rules_jvm/0.32.0/presubmit.yml | 37 ++++
modules/contrib_rules_jvm/0.32.0/source.json | 10 +
modules/contrib_rules_jvm/metadata.json | 3 +-
6 files changed, 297 insertions(+), 1 deletion(-)
create mode 100644 modules/contrib_rules_jvm/0.32.0/MODULE.bazel
create mode 100644 modules/contrib_rules_jvm/0.32.0/patches/fix-examples.patch
create mode 100644 modules/contrib_rules_jvm/0.32.0/patches/update-version.patch
create mode 100644 modules/contrib_rules_jvm/0.32.0/presubmit.yml
create mode 100644 modules/contrib_rules_jvm/0.32.0/source.json
diff --git a/modules/contrib_rules_jvm/0.32.0/MODULE.bazel b/modules/contrib_rules_jvm/0.32.0/MODULE.bazel
new file mode 100644
index 00000000000..2132e257760
--- /dev/null
+++ b/modules/contrib_rules_jvm/0.32.0/MODULE.bazel
@@ -0,0 +1,205 @@
+module(
+ name = "contrib_rules_jvm",
+ version = "0.32.0",
+ repo_name = "contrib_rules_jvm",
+)
+
+PROTOBUF_VERSION = "21.7"
+
+# The java packages are published to maven under a different versioning scheme.
+PROTOBUF_JAVA_VERSION = "3.{}".format(PROTOBUF_VERSION)
+
+bazel_dep(name = "apple_rules_lint", version = "0.4.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.1")
+bazel_dep(name = "gazelle", version = "0.42.0", repo_name = "bazel_gazelle")
+bazel_dep(name = "protobuf", version = "29.1", repo_name = "com_google_protobuf")
+bazel_dep(name = "rules_cc", version = "0.1.1")
+bazel_dep(name = "rules_go", version = "0.52.0")
+bazel_dep(name = "rules_java", version = "8.5.1")
+bazel_dep(name = "rules_jvm_external", version = "6.7")
+bazel_dep(name = "rules_proto", version = "7.0.2")
+bazel_dep(name = "bazel_lib", version = "3.0.0")
+
+bazel_dep(name = "bazel_skylib_gazelle_plugin", version = "1.8.1", dev_dependency = True)
+bazel_dep(name = "rules_python", version = "1.5.4", dev_dependency = True)
+bazel_dep(name = "rules_shell", version = "0.6.0", dev_dependency = True)
+bazel_dep(name = "stardoc", version = "0.7.2", dev_dependency = True, repo_name = "io_bazel_stardoc")
+
+linter = use_extension("@apple_rules_lint//lint:extensions.bzl", "linter")
+linter.register(name = "java-checkstyle")
+linter.configure(
+ name = "java-checkstyle",
+ config = "//java:checkstyle-default-config",
+)
+linter.register(name = "java-pmd")
+linter.configure(
+ name = "java-pmd",
+ config = "//java:pmd-config",
+)
+linter.register(name = "java-spotbugs")
+linter.configure(
+ name = "java-spotbugs",
+ config = "//java:spotbugs-default-config",
+)
+use_repo(
+ linter,
+ "apple_linters",
+)
+
+# There is a `grpc_java` bazel_dep we could use, but that pollutes the main
+# `maven` namespace and patches `protobuf` too. Instead, we pull the http
+# archive and patch it so we can use it in the one target we care about
+http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+http_archive(
+ name = "grpc-java",
+ integrity = "sha256-zhr831Ew50E46ToPnwu3ckFhDX8AyYf0bf/F+wg/bwo=",
+ patch_args = ["-p1"],
+ patches = [
+ "//third_party:grpc-java.patch",
+ ],
+ strip_prefix = "grpc-java-1.78.0",
+ url = "https://github.com/grpc/grpc-java/archive/refs/tags/v1.78.0.tar.gz",
+)
+
+maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
+
+IO_GRPC_GRPC_JAVA_ARTIFACTS = [
+ "com.google.api.grpc:proto-google-common-protos:2.9.0",
+ "com.google.guava:failureaccess:1.0.1",
+ "org.apache.tomcat:annotations-api:6.0.53",
+ "org.codehaus.mojo:animal-sniffer-annotations:1.21",
+]
+
+slf4j_version = "1.7.32"
+
+spotbugs_version = "4.8.6"
+
+maven.install(
+ name = "contrib_rules_jvm_deps",
+ artifacts = [
+ "com.github.spotbugs:spotbugs-annotations:%s" % spotbugs_version,
+ "com.google.code.findbugs:jsr305:3.0.2",
+ "com.google.errorprone:error_prone_annotations:2.35.1",
+ "com.google.googlejavaformat:google-java-format:1.24.0",
+ "com.google.guava:guava:33.3.1-jre",
+ "commons-cli:commons-cli:1.9.0",
+ "io.grpc:grpc-api",
+ "io.grpc:grpc-core",
+ "io.grpc:grpc-netty",
+ "io.grpc:grpc-services",
+ "io.grpc:grpc-stub",
+
+ # These can be versioned independently of the versions in `repositories.bzl`
+ # so long as the version numbers are higher.
+ "org.junit.jupiter:junit-jupiter-engine",
+ "org.junit.jupiter:junit-jupiter-api",
+ "org.junit.platform:junit-platform-commons",
+ "org.junit.platform:junit-platform-engine",
+ "org.junit.platform:junit-platform-launcher",
+ "org.junit.platform:junit-platform-reporting",
+ "org.junit.vintage:junit-vintage-engine",
+ "junit:junit:4.13.2",
+
+ # Open Test Alliance for the JVM dep
+ "org.opentest4j:opentest4j:1.3.0",
+
+ # Checkstyle deps
+ "com.puppycrawl.tools:checkstyle:10.20.2",
+
+ # PMD deps
+ "net.sourceforge.pmd:pmd-dist:7.8.0",
+
+ # Spotbugs deps
+ "org.slf4j:slf4j-api:%s" % slf4j_version,
+ "org.slf4j:slf4j-jdk14:%s" % slf4j_version,
+
+ # Used by us at runtime
+ "org.slf4j:slf4j-simple:%s" % slf4j_version,
+
+ # For Kotlin parsing in the Gazelle plugin
+ "org.jetbrains.kotlin:kotlin-compiler:2.2.20",
+
+ # For the javaagent used by the JUnit5 runner
+ "org.ow2.asm:asm:9.7",
+
+ # We explicitly declare a protobuf runtime version
+ # so that it coincides with the one we use to generate the code.
+ "com.google.protobuf:protobuf-java:{}".format(PROTOBUF_JAVA_VERSION),
+ ] + IO_GRPC_GRPC_JAVA_ARTIFACTS,
+ boms = [
+ "io.grpc:grpc-bom:1.68.2",
+ "org.junit:junit-bom:5.11.3",
+ ],
+ fail_if_repin_required = True,
+ lock_file = "//:contrib_rules_jvm_deps_install.json",
+ resolver = "maven",
+ strict_visibility = True,
+)
+
+# Spotbugs deps
+# We don't want to force people to use 1.8-beta
+# but we can't use the `maven` macros because
+# we've not loaded rules yet. Fortunately, the
+# expansion is easy :)
+maven.artifact(
+ name = "contrib_rules_jvm_deps",
+ artifact = "spotbugs",
+ exclusions = ["org.slf4j:slf4j-api"],
+ group = "com.github.spotbugs",
+ version = spotbugs_version,
+)
+use_repo(maven, "contrib_rules_jvm_deps")
+
+dev_maven = use_extension(
+ "@rules_jvm_external//:extensions.bzl",
+ "maven",
+ dev_dependency = True,
+)
+dev_maven.install(
+ name = "contrib_rules_jvm_tests",
+ artifacts = [
+ # These can be versioned independently of the versions in `repositories.bzl`
+ # so long as the version numbers are higher.
+ "org.junit.jupiter:junit-jupiter-engine:5.8.2",
+ "org.junit.jupiter:junit-jupiter-api:5.8.2",
+ "org.junit.jupiter:junit-jupiter-params:5.8.2",
+ "org.junit.platform:junit-platform-launcher:1.8.2",
+ "org.junit.platform:junit-platform-reporting:1.8.2",
+ "org.junit.platform:junit-platform-suite:1.8.2",
+ "org.junit.platform:junit-platform-suite-api:1.8.2",
+ "org.junit.platform:junit-platform-suite-engine:1.8.2",
+ "org.junit.platform:junit-platform-testkit:1.8.2",
+ "org.junit.vintage:junit-vintage-engine:5.8.2",
+ "org.mockito:mockito-core:4.8.1",
+ ],
+ fail_if_repin_required = True,
+ fetch_sources = True,
+ lock_file = "//:contrib_rules_jvm_tests_install.json",
+)
+use_repo(
+ dev_maven,
+ "contrib_rules_jvm_tests",
+)
+
+go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
+go_sdk.download(version = "1.23.6")
+
+go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
+go_deps.from_file(go_mod = "//:go.mod")
+use_repo(
+ go_deps,
+ "com_github_aristanetworks_goarista",
+ "com_github_bazelbuild_buildtools",
+ "com_github_google_btree",
+ "com_github_google_go_cmp",
+ "com_github_google_uuid",
+ "com_github_hashicorp_golang_lru",
+ "com_github_rs_zerolog",
+ "com_github_sergi_go_diff",
+ "com_github_stretchr_testify",
+ "net_starlark_go",
+ "org_golang_google_grpc",
+ "org_golang_x_tools",
+ "org_golang_x_tools_go_vcs",
+)
diff --git a/modules/contrib_rules_jvm/0.32.0/patches/fix-examples.patch b/modules/contrib_rules_jvm/0.32.0/patches/fix-examples.patch
new file mode 100644
index 00000000000..54e1f30426a
--- /dev/null
+++ b/modules/contrib_rules_jvm/0.32.0/patches/fix-examples.patch
@@ -0,0 +1,32 @@
+diff --git a/examples/tests_and_lints/MODULE.bazel b/examples/tests_and_lints/MODULE.bazel
+index 69ef1f2..eca5013 100644
+--- a/examples/tests_and_lints/MODULE.bazel
++++ b/examples/tests_and_lints/MODULE.bazel
+@@ -16,9 +16,17 @@ local_path_override(
+ path = "../..",
+ )
+
++bazel_dep(
++ name = "rules_java",
++ version = "8.5.1",
++)
+ bazel_dep(
+ name = "rules_jvm_external",
+- version = "6.6",
++ version = "6.7",
++)
++bazel_dep(
++ name = "bazel_skylib",
++ version = "1.8.1",
+ )
+
+ linter = use_extension("@apple_rules_lint//lint:extensions.bzl", "linter")
+@@ -49,6 +57,6 @@ use_repo(
+ )
+
+ register_toolchains(
+- "@@bazel_skylib//toolchains/unittest:cmd_toolchain",
+- "@@bazel_skylib//toolchains/unittest:bash_toolchain",
++ "@bazel_skylib//toolchains/unittest:cmd_toolchain",
++ "@bazel_skylib//toolchains/unittest:bash_toolchain",
+ )
diff --git a/modules/contrib_rules_jvm/0.32.0/patches/update-version.patch b/modules/contrib_rules_jvm/0.32.0/patches/update-version.patch
new file mode 100644
index 00000000000..d9981a5cfd0
--- /dev/null
+++ b/modules/contrib_rules_jvm/0.32.0/patches/update-version.patch
@@ -0,0 +1,11 @@
+diff --git a/MODULE.bazel b/MODULE.bazel
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,6 +1,6 @@
+ module(
+ name = "contrib_rules_jvm",
+- version = "0.31.0",
++ version = "0.32.0",
+ repo_name = "contrib_rules_jvm",
+ )
+
diff --git a/modules/contrib_rules_jvm/0.32.0/presubmit.yml b/modules/contrib_rules_jvm/0.32.0/presubmit.yml
new file mode 100644
index 00000000000..279b7e8b9e5
--- /dev/null
+++ b/modules/contrib_rules_jvm/0.32.0/presubmit.yml
@@ -0,0 +1,37 @@
+matrix:
+ platform:
+ - debian11
+ - ubuntu2204
+ - macos
+ - macos_arm64
+ - windows
+ bazel:
+ - 8.x
+ - 7.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@contrib_rules_jvm//java/src/...'
+bcr_test_module:
+ module_path: examples/tests_and_lints
+ matrix:
+ platform:
+ - debian11
+ - ubuntu2204
+ - macos
+ - macos_arm64
+ bazel:
+ - 8.x
+ - 7.x
+ tasks:
+ run_test_module:
+ name: Run test module
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - //...
+ test_targets:
+ - //...
diff --git a/modules/contrib_rules_jvm/0.32.0/source.json b/modules/contrib_rules_jvm/0.32.0/source.json
new file mode 100644
index 00000000000..36fc6b8a55e
--- /dev/null
+++ b/modules/contrib_rules_jvm/0.32.0/source.json
@@ -0,0 +1,10 @@
+{
+ "url": "https://github.com/bazel-contrib/rules_jvm/releases/download/v0.32.0/rules_jvm-v0.32.0.tar.gz",
+ "integrity": "sha256-80QAtFuJV7afr3vKr3tUQs343NZuoZVLvtWrOkVD0HA=",
+ "strip_prefix": "rules_jvm-0.32.0",
+ "patches": {
+ "update-version.patch": "sha256-wiBveqB7WSclEbAfqnGnYZv78yhYQN1SdiNTWvTxmQc=",
+ "fix-examples.patch": "sha256-z7K7zvBmFFls5hbN0vFOE2t+Za1NCiekhED9qyXbnVA="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/contrib_rules_jvm/metadata.json b/modules/contrib_rules_jvm/metadata.json
index 7ee195fe0b1..d408f935351 100644
--- a/modules/contrib_rules_jvm/metadata.json
+++ b/modules/contrib_rules_jvm/metadata.json
@@ -37,7 +37,8 @@
"0.28.0",
"0.29.0",
"0.30.0",
- "0.31.1"
+ "0.31.1",
+ "0.32.0"
],
"yanked_versions": {}
}
From 982076c3f426221986b602a1a5bd62f31fc8180c Mon Sep 17 00:00:00 2001
From: armandomontanez
Date: Wed, 21 Jan 2026 14:34:43 -0800
Subject: [PATCH 073/367] Add GitHub releases of rules_libusb (#7253)
rules_libusb has been mirrored to GitHub, which makes it possible to
offer more standard release source URLs. Additionally, the GCS buckets
hosting the old artifacts will soon lose public permissions.
This introduces mirrors for the previous releases as .bcr.1 versions
that point to equivalent GitHub releases.
---
.../rules_libusb/0.1.0-rc1.bcr.1/MODULE.bazel | 14 +++++++
.../patches/0001-Version.patch | 12 ++++++
.../0.1.0-rc1.bcr.1/presubmit.yml | 38 +++++++++++++++++++
.../rules_libusb/0.1.0-rc1.bcr.1/source.json | 9 +++++
.../rules_libusb/0.1.0-rc2.bcr.1/MODULE.bazel | 15 ++++++++
.../patches/0001-Version.patch | 12 ++++++
.../0.1.0-rc2.bcr.1/presubmit.yml | 35 +++++++++++++++++
.../rules_libusb/0.1.0-rc2.bcr.1/source.json | 9 +++++
modules/rules_libusb/metadata.json | 7 +++-
9 files changed, 149 insertions(+), 2 deletions(-)
create mode 100644 modules/rules_libusb/0.1.0-rc1.bcr.1/MODULE.bazel
create mode 100644 modules/rules_libusb/0.1.0-rc1.bcr.1/patches/0001-Version.patch
create mode 100644 modules/rules_libusb/0.1.0-rc1.bcr.1/presubmit.yml
create mode 100644 modules/rules_libusb/0.1.0-rc1.bcr.1/source.json
create mode 100644 modules/rules_libusb/0.1.0-rc2.bcr.1/MODULE.bazel
create mode 100644 modules/rules_libusb/0.1.0-rc2.bcr.1/patches/0001-Version.patch
create mode 100644 modules/rules_libusb/0.1.0-rc2.bcr.1/presubmit.yml
create mode 100644 modules/rules_libusb/0.1.0-rc2.bcr.1/source.json
diff --git a/modules/rules_libusb/0.1.0-rc1.bcr.1/MODULE.bazel b/modules/rules_libusb/0.1.0-rc1.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..aa0e10d06f8
--- /dev/null
+++ b/modules/rules_libusb/0.1.0-rc1.bcr.1/MODULE.bazel
@@ -0,0 +1,14 @@
+module(
+ name = "rules_libusb",
+ version = "0.1.0-rc1.bcr.1",
+)
+
+bazel_dep(name = "platforms", version = "0.0.8")
+bazel_dep(name = "rules_license", version = "0.0.8")
+bazel_dep(name = "bazel_skylib", version = "1.5.0")
+
+# If your project has versioning requirements for libusb, you'll need to specify
+# this in your project's MODULE.bazel.
+libusb = use_extension("@rules_libusb//:extensions.bzl", "libusb")
+libusb.source_release(min_version = "1.0.20-rc1")
+use_repo(libusb, "libusb")
diff --git a/modules/rules_libusb/0.1.0-rc1.bcr.1/patches/0001-Version.patch b/modules/rules_libusb/0.1.0-rc1.bcr.1/patches/0001-Version.patch
new file mode 100644
index 00000000000..4b933171f4f
--- /dev/null
+++ b/modules/rules_libusb/0.1.0-rc1.bcr.1/patches/0001-Version.patch
@@ -0,0 +1,12 @@
+diff --git a/MODULE.bazel b/MODULE.bazel
+index 8cdba89..aa0e10d 100644
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,6 +1,6 @@
+ module(
+ name = "rules_libusb",
+- version = "0.1.0-rc1",
++ version = "0.1.0-rc1.bcr.1",
+ )
+
+ bazel_dep(name = "platforms", version = "0.0.8")
diff --git a/modules/rules_libusb/0.1.0-rc1.bcr.1/presubmit.yml b/modules/rules_libusb/0.1.0-rc1.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..f81801c9929
--- /dev/null
+++ b/modules/rules_libusb/0.1.0-rc1.bcr.1/presubmit.yml
@@ -0,0 +1,38 @@
+bcr_test_module:
+ module_path: examples/basic_usage
+ matrix:
+ linux_platform: ["debian10", "ubuntu2004"]
+ tasks:
+ run_linux_test_module:
+ name: "Build linux test"
+ platform: ${{ linux_platform }}
+ bazel: "7.x"
+ build_flags:
+ - "--copt=-pthread"
+ - "--linkopt=-pthread"
+ test_flags:
+ - "--copt=-pthread"
+ - "--linkopt=-pthread"
+ build_targets:
+ - "@libusb//:libusb_dynamic"
+ - "//:example"
+ run_windows_test_module:
+ name: "Build Windows test"
+ platform: "windows"
+ bazel: "7.x"
+ build_flags:
+ - "--copt=-DHAVE_STRUCT_TIMESPEC=1"
+ - "--linkopt=-DEFAULTLIB:User32.Lib"
+ test_flags:
+ - "--copt=-DHAVE_STRUCT_TIMESPEC=1"
+ - "--linkopt=-DEFAULTLIB:User32.Lib"
+ build_targets:
+ - "@libusb//:libusb_dynamic"
+ run_macos_test_module:
+ name: "Run macOS test"
+ platform: "macos"
+ bazel: "7.x"
+ build_targets:
+ - "@libusb//:libusb_dynamic"
+ test_targets:
+ - "//:example"
diff --git a/modules/rules_libusb/0.1.0-rc1.bcr.1/source.json b/modules/rules_libusb/0.1.0-rc1.bcr.1/source.json
new file mode 100644
index 00000000000..a195da9cd45
--- /dev/null
+++ b/modules/rules_libusb/0.1.0-rc1.bcr.1/source.json
@@ -0,0 +1,9 @@
+{
+ "archive_type": "tar.gz",
+ "integrity": "sha256-p/EjP1lK0R4IRl5zetX8XRl2P7NquivNK5j2xT+s0G8=",
+ "patch_strip": 1,
+ "patches": {
+ "0001-Version.patch": "sha256-2aT4+BichTYmT8NpR4RRlELqBsyf577nyfeI8fOYFPM="
+ },
+ "url": "https://github.com/pigweed-project/rules_libusb/releases/download/v0.1.0-rc1/rules_libusb-8745211641617303569-f5c0af2f037b6e8405b4158b5e3041675da8e522.tar.gz"
+}
diff --git a/modules/rules_libusb/0.1.0-rc2.bcr.1/MODULE.bazel b/modules/rules_libusb/0.1.0-rc2.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..a40d9786f86
--- /dev/null
+++ b/modules/rules_libusb/0.1.0-rc2.bcr.1/MODULE.bazel
@@ -0,0 +1,15 @@
+module(
+ name = "rules_libusb",
+ version = "0.1.0-rc2.bcr.1",
+)
+
+bazel_dep(name = "platforms", version = "0.0.8")
+bazel_dep(name = "rules_cc", version = "0.0.10")
+bazel_dep(name = "rules_license", version = "0.0.8")
+bazel_dep(name = "bazel_skylib", version = "1.5.0")
+
+# If your project has versioning requirements for libusb, you'll need to specify
+# this in your project's MODULE.bazel.
+libusb = use_extension("@rules_libusb//:extensions.bzl", "libusb")
+libusb.source_release(min_version = "1.0.20-rc1")
+use_repo(libusb, "libusb")
diff --git a/modules/rules_libusb/0.1.0-rc2.bcr.1/patches/0001-Version.patch b/modules/rules_libusb/0.1.0-rc2.bcr.1/patches/0001-Version.patch
new file mode 100644
index 00000000000..4de95c57f09
--- /dev/null
+++ b/modules/rules_libusb/0.1.0-rc2.bcr.1/patches/0001-Version.patch
@@ -0,0 +1,12 @@
+diff --git a/MODULE.bazel b/MODULE.bazel
+index 6ed518d..a40d978 100644
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,6 +1,6 @@
+ module(
+ name = "rules_libusb",
+- version = "0.1.0-rc2",
++ version = "0.1.0-rc2.bcr.1",
+ )
+
+ bazel_dep(name = "platforms", version = "0.0.8")
diff --git a/modules/rules_libusb/0.1.0-rc2.bcr.1/presubmit.yml b/modules/rules_libusb/0.1.0-rc2.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..d603ea4c9e5
--- /dev/null
+++ b/modules/rules_libusb/0.1.0-rc2.bcr.1/presubmit.yml
@@ -0,0 +1,35 @@
+bcr_test_module:
+ module_path: examples/basic_usage
+ matrix:
+ linux_platform: ["debian10", "ubuntu2004"]
+ tasks:
+ run_linux_test_module:
+ name: "Build linux test"
+ platform: ${{ linux_platform }}
+ bazel: "8.1.0"
+ build_flags:
+ - "--copt=-pthread"
+ - "--linkopt=-pthread"
+ build_targets:
+ - "@libusb//:libusb_dynamic"
+ - "//:example"
+ run_windows_test_module:
+ name: "Build Windows test"
+ platform: "windows"
+ bazel: "7.x"
+ build_flags:
+ - "--copt=-DHAVE_STRUCT_TIMESPEC=1"
+ test_flags:
+ - "--copt=-DHAVE_STRUCT_TIMESPEC=1"
+ build_targets:
+ - "@libusb//:libusb_dynamic"
+ test_targets:
+ - "//:example"
+ run_macos_test_module:
+ name: "Run macOS test"
+ platform: "macos"
+ bazel: "7.x"
+ build_targets:
+ - "@libusb//:libusb_dynamic"
+ test_targets:
+ - "//:example"
diff --git a/modules/rules_libusb/0.1.0-rc2.bcr.1/source.json b/modules/rules_libusb/0.1.0-rc2.bcr.1/source.json
new file mode 100644
index 00000000000..7e23f636ad1
--- /dev/null
+++ b/modules/rules_libusb/0.1.0-rc2.bcr.1/source.json
@@ -0,0 +1,9 @@
+{
+ "archive_type": "tar.gz",
+ "integrity": "sha256-axSA7LBKxSp/7xiuooNG5sUUvyltOHHsSiqWw5TS2gE=",
+ "patch_strip": 1,
+ "patches": {
+ "0001-Version.patch": "sha256-+ZVgPozyA6iTQl7Y25kUDC8vOdoft3i9ap9VkOjj1TQ="
+ },
+ "url": "https://github.com/pigweed-project/rules_libusb/releases/download/v0.1.0-rc2/rules_libusb-8720113729935528369-7f91dc339a79292ab8aa5ca127572e54b0b586e8.tar.gz"
+}
diff --git a/modules/rules_libusb/metadata.json b/modules/rules_libusb/metadata.json
index 9f38243a236..7877fb4158b 100644
--- a/modules/rules_libusb/metadata.json
+++ b/modules/rules_libusb/metadata.json
@@ -22,11 +22,14 @@
}
],
"repository": [
- "https://storage.googleapis.com/pigweed-bazel-tarballs"
+ "https://storage.googleapis.com/pigweed-bazel-tarballs",
+ "https://github.com/pigweed-project/rules_libusb"
],
"versions": [
"0.1.0-rc1",
- "0.1.0-rc2"
+ "0.1.0-rc1.bcr.1",
+ "0.1.0-rc2",
+ "0.1.0-rc2.bcr.1"
],
"yanked_versions": {}
}
From 03e8193503f12b372eea0c806aa1271fab0d3018 Mon Sep 17 00:00:00 2001
From: Filip Filmar
Date: Wed, 21 Jan 2026 23:34:48 +0000
Subject: [PATCH 074/367] Publish gotopt2@2.2.19 (#7236)
Release: https://github.com/filmil/gotopt2/releases/tag/v2.2.19
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
---
modules/gotopt2/2.2.19/MODULE.bazel | 34 +++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 +++++++
modules/gotopt2/2.2.19/presubmit.yml | 12 +++++++
modules/gotopt2/2.2.19/source.json | 9 +++++
modules/gotopt2/metadata.json | 3 +-
5 files changed, 69 insertions(+), 1 deletion(-)
create mode 100644 modules/gotopt2/2.2.19/MODULE.bazel
create mode 100644 modules/gotopt2/2.2.19/patches/module_dot_bazel_version.patch
create mode 100644 modules/gotopt2/2.2.19/presubmit.yml
create mode 100644 modules/gotopt2/2.2.19/source.json
diff --git a/modules/gotopt2/2.2.19/MODULE.bazel b/modules/gotopt2/2.2.19/MODULE.bazel
new file mode 100644
index 00000000000..506ffa5fb19
--- /dev/null
+++ b/modules/gotopt2/2.2.19/MODULE.bazel
@@ -0,0 +1,34 @@
+module(
+ name = "gotopt2",
+ version = "2.2.19",
+)
+
+bazel_dep(name = "rules_go", version = "0.50.1")
+bazel_dep(name = "gazelle", version = "0.42.0", repo_name = "bazel_gazelle")
+bazel_dep(name = "buildifier_prebuilt", version = "6.4.0")
+bazel_dep(name = "bazel_bats", version = "0.35.0")
+bazel_dep(name = "rules_pkg", version = "1.0.1")
+
+# Go SDK
+
+go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
+go_sdk.download(version = "1.24.1")
+
+go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
+go_deps.from_file(go_mod = "//:go.mod")
+
+# All *direct* Go dependencies of the module have to be listed explicitly.
+use_repo(
+ go_deps,
+ "com_github_google_go_cmp",
+ "in_gopkg_yaml_v3",
+)
+
+# multitool
+bazel_dep(name = "rules_multitool", version = "1.9.0")
+multitool = use_extension("@rules_multitool//multitool:extension.bzl", "multitool")
+multitool.hub(lockfile = "//:multitool.lock.json")
+use_repo(multitool, "multitool")
+
+# rules_shell
+bazel_dep(name = "rules_shell", version = "0.6.1")
diff --git a/modules/gotopt2/2.2.19/patches/module_dot_bazel_version.patch b/modules/gotopt2/2.2.19/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..bf0858deea9
--- /dev/null
+++ b/modules/gotopt2/2.2.19/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "gotopt2",
+- version = "2.0.1",
++ version = "2.2.19",
+ )
+
+ bazel_dep(name = "rules_go", version = "0.50.1")
+ bazel_dep(name = "gazelle", version = "0.42.0", repo_name = "bazel_gazelle")
diff --git a/modules/gotopt2/2.2.19/presubmit.yml b/modules/gotopt2/2.2.19/presubmit.yml
new file mode 100644
index 00000000000..c5f729ad9bf
--- /dev/null
+++ b/modules/gotopt2/2.2.19/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: "integration"
+ matrix:
+ platform: ["ubuntu2204"]
+ bazel: [8.x]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//..."
diff --git a/modules/gotopt2/2.2.19/source.json b/modules/gotopt2/2.2.19/source.json
new file mode 100644
index 00000000000..92a849e1744
--- /dev/null
+++ b/modules/gotopt2/2.2.19/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-lt1sd3F9W6Kmp6UQmo+2CPqrq3WzBeAT/Sth6f6RoBM=",
+ "strip_prefix": "",
+ "url": "https://github.com/filmil/gotopt2/releases/download/v2.2.19/gotopt2-v2.2.19.zip",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-S2cJvtATp6oZgCc7y8oh0UveRJ1w6iagkGEatOg3VpM="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/gotopt2/metadata.json b/modules/gotopt2/metadata.json
index 2b32c979715..91fb219d370 100644
--- a/modules/gotopt2/metadata.json
+++ b/modules/gotopt2/metadata.json
@@ -13,7 +13,8 @@
],
"versions": [
"2.2.0",
- "2.2.2"
+ "2.2.2",
+ "2.2.19"
],
"yanked_versions": {}
}
From 502e52da5c455d0738268efe02d96918a9235ece Mon Sep 17 00:00:00 2001
From: Filip Filmar
Date: Thu, 22 Jan 2026 04:55:32 +0000
Subject: [PATCH 075/367] Publish rules_shar@1.0.0 (#7262)
Release: https://github.com/filmil/rules_shar/releases/tag/v1.0.0
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
---
modules/rules_shar/1.0.0/MODULE.bazel | 9 +++++++++
.../1.0.0/patches/module_dot_bazel_version.patch | 12 ++++++++++++
modules/rules_shar/1.0.0/presubmit.yml | 12 ++++++++++++
modules/rules_shar/1.0.0/source.json | 9 +++++++++
modules/rules_shar/metadata.json | 5 +++--
5 files changed, 45 insertions(+), 2 deletions(-)
create mode 100644 modules/rules_shar/1.0.0/MODULE.bazel
create mode 100644 modules/rules_shar/1.0.0/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_shar/1.0.0/presubmit.yml
create mode 100644 modules/rules_shar/1.0.0/source.json
diff --git a/modules/rules_shar/1.0.0/MODULE.bazel b/modules/rules_shar/1.0.0/MODULE.bazel
new file mode 100644
index 00000000000..e8fc00a128d
--- /dev/null
+++ b/modules/rules_shar/1.0.0/MODULE.bazel
@@ -0,0 +1,9 @@
+module(
+ name = "rules_shar",
+ version = "1.0.0",
+ bazel_compatibility = [">=8.0.0"],
+)
+
+bazel_dep(name = "rules_shell", version = "0.6.1")
+bazel_dep(name = "rules_pkg", version = "1.2.0")
+
diff --git a/modules/rules_shar/1.0.0/patches/module_dot_bazel_version.patch b/modules/rules_shar/1.0.0/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..d29bc452c23
--- /dev/null
+++ b/modules/rules_shar/1.0.0/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "rules_shar",
+- version = "0.0.0",
++ version = "1.0.0",
+ bazel_compatibility = [">=8.0.0"],
+ )
+
+ bazel_dep(name = "rules_shell", version = "0.6.1")
diff --git a/modules/rules_shar/1.0.0/presubmit.yml b/modules/rules_shar/1.0.0/presubmit.yml
new file mode 100644
index 00000000000..c5f729ad9bf
--- /dev/null
+++ b/modules/rules_shar/1.0.0/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: "integration"
+ matrix:
+ platform: ["ubuntu2204"]
+ bazel: [8.x]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//..."
diff --git a/modules/rules_shar/1.0.0/source.json b/modules/rules_shar/1.0.0/source.json
new file mode 100644
index 00000000000..afdd749ca44
--- /dev/null
+++ b/modules/rules_shar/1.0.0/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-8JWbu+gTCOUM8/HbwRWQmZOhHkAUHVelF0V9JNqqTMw=",
+ "strip_prefix": "",
+ "url": "https://github.com/filmil/rules_shar/releases/download/v1.0.0/rules_shar-v1.0.0.zip",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-y8/oULd1l4CagrxiBcQHxzLBL9V2O6MlXN0BA9urJwk="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_shar/metadata.json b/modules/rules_shar/metadata.json
index 80e03c225b5..7854bede744 100644
--- a/modules/rules_shar/metadata.json
+++ b/modules/rules_shar/metadata.json
@@ -1,5 +1,5 @@
{
- "homepage": "https://github.com/filmil/rules_shar",
+ "homepage": "https://www.hdlfactory.com/post/2025/11/22/rules_shar-bazel-rules-for-creating-self-extracting-archives-shars/",
"maintainers": [
{
"name": "Filip Filmar",
@@ -13,7 +13,8 @@
],
"versions": [
"0.1.0",
- "0.3.1"
+ "0.3.1",
+ "1.0.0"
],
"yanked_versions": {}
}
From c63d953d270b034fa313583db20187ed18b81dff Mon Sep 17 00:00:00 2001
From: "publish-to-bcr-bot[bot]"
<112732530+publish-to-bcr-bot[bot]@users.noreply.github.com>
Date: Thu, 22 Jan 2026 06:09:39 +0000
Subject: [PATCH 076/367] apple_support@2.2.0 (#7264)
---
modules/apple_support/2.2.0/MODULE.bazel | 34 +++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 13 +++++++
modules/apple_support/2.2.0/presubmit.yml | 32 +++++++++++++++++
modules/apple_support/2.2.0/source.json | 10 ++++++
modules/apple_support/metadata.json | 3 +-
5 files changed, 91 insertions(+), 1 deletion(-)
create mode 100644 modules/apple_support/2.2.0/MODULE.bazel
create mode 100644 modules/apple_support/2.2.0/patches/module_dot_bazel_version.patch
create mode 100644 modules/apple_support/2.2.0/presubmit.yml
create mode 100644 modules/apple_support/2.2.0/source.json
diff --git a/modules/apple_support/2.2.0/MODULE.bazel b/modules/apple_support/2.2.0/MODULE.bazel
new file mode 100644
index 00000000000..91e269c1304
--- /dev/null
+++ b/modules/apple_support/2.2.0/MODULE.bazel
@@ -0,0 +1,34 @@
+"""apple_support"""
+
+module(
+ name = "apple_support",
+ bazel_compatibility = [">=7.0.0"],
+ compatibility_level = 1,
+ repo_name = "build_bazel_apple_support",
+ version = "2.2.0",
+)
+
+bazel_dep(name = "bazel_features", version = "1.27.0")
+bazel_dep(name = "bazel_skylib", version = "1.3.0")
+bazel_dep(name = "platforms", version = "0.0.9")
+bazel_dep(name = "rules_cc", version = "0.2.15")
+
+apple_cc_configure = use_extension("//crosstool:setup.bzl", "apple_cc_configure_extension")
+use_repo(apple_cc_configure, "local_config_apple_cc", "local_config_apple_cc_toolchains")
+
+register_toolchains("@local_config_apple_cc_toolchains//:all")
+
+bazel_dep(name = "rules_shell", version = "0.3.0", dev_dependency = True)
+bazel_dep(name = "stardoc", version = "0.8.0", dev_dependency = True)
+
+# TODO: Remove when transitives bump past this
+bazel_dep(name = "protobuf", version = "33.0", dev_dependency = True)
+
+dmg_arc_test_deps = use_extension("//tools/http_dmg/private/tests:http_dmg_test_extensions.bzl", "http_dmg_test", dev_dependency = True)
+use_repo(
+ dmg_arc_test_deps,
+ "http_dmg_test_firefox",
+ "http_dmg_test_firefox_strip_prefix",
+ "http_dmg_test_krita",
+ "http_dmg_test_krita_strip_prefix",
+)
diff --git a/modules/apple_support/2.2.0/patches/module_dot_bazel_version.patch b/modules/apple_support/2.2.0/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..d9dfe5f6e6a
--- /dev/null
+++ b/modules/apple_support/2.2.0/patches/module_dot_bazel_version.patch
@@ -0,0 +1,13 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -4,8 +4,9 @@
+ name = "apple_support",
+ bazel_compatibility = [">=7.0.0"],
+ compatibility_level = 1,
+ repo_name = "build_bazel_apple_support",
++ version = "2.2.0",
+ )
+
+ bazel_dep(name = "bazel_features", version = "1.27.0")
+ bazel_dep(name = "bazel_skylib", version = "1.3.0")
diff --git a/modules/apple_support/2.2.0/presubmit.yml b/modules/apple_support/2.2.0/presubmit.yml
new file mode 100644
index 00000000000..ef79a9ca298
--- /dev/null
+++ b/modules/apple_support/2.2.0/presubmit.yml
@@ -0,0 +1,32 @@
+matrix:
+ bazel: ["7.x", "8.x", "9.x"]
+
+tasks:
+ verify_targets:
+ name: "Build targets under //lib"
+ platform: ubuntu2004
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@apple_support//lib/...'
+
+bcr_test_module:
+ module_path: "."
+
+ matrix:
+ bazel: ["7.x", "8.x", "9.x"]
+
+ tasks:
+ run_tests:
+ name: "Run test targets"
+ platform: "macos_arm64"
+ bazel: ${{ bazel }}
+ test_targets:
+ - '//test/...'
+ - '--'
+ # Needs visionOS SDK
+ - '-//test:binary_visionos_arm64_simulator_test'
+ - '-//test:binary_visionos_device_test'
+ # Needs Xcode update on BCR CI
+ - '-//test:binary_relative_oso_test'
+ # Needs min bazel version 8.x on BCR CI
+ - '-//test:linking_generate_cpp_dsym_test'
diff --git a/modules/apple_support/2.2.0/source.json b/modules/apple_support/2.2.0/source.json
new file mode 100644
index 00000000000..5b500987a8c
--- /dev/null
+++ b/modules/apple_support/2.2.0/source.json
@@ -0,0 +1,10 @@
+{
+ "integrity": "sha256-zSuIluCmEAoaexTNar4idSArWg+LHhVI7XH7gbjBkYI=",
+ "strip_prefix": "",
+ "docs_url": "https://github.com/bazelbuild/apple_support/releases/download/2.2.0/apple_support.2.2.0.docs.tar.gz",
+ "url": "https://github.com/bazelbuild/apple_support/releases/download/2.2.0/apple_support.2.2.0.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-24tMGgweqo1BtgA1m0BQAPUf3Bna4KvjX3Mm8sHNAIM="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/apple_support/metadata.json b/modules/apple_support/metadata.json
index 6bcc8fb24ff..4f13b8e7e9d 100644
--- a/modules/apple_support/metadata.json
+++ b/modules/apple_support/metadata.json
@@ -78,7 +78,8 @@
"1.24.4",
"1.24.5",
"2.0.0",
- "2.1.0"
+ "2.1.0",
+ "2.2.0"
],
"yanked_versions": {}
}
From 15dab0f8e08f3840057f12780bd6e3db77575dec Mon Sep 17 00:00:00 2001
From: Mark Reuter <13319190+reutermj@users.noreply.github.com>
Date: Wed, 21 Jan 2026 22:37:25 -0800
Subject: [PATCH 077/367] fix(gmp): add missing deps and fix empty glob errors
(#7166)
## Summary
- Adds GMP version 6.2.0.bcr.1 with fixes for two build issues
## Fixes
### 1. Missing library dependencies
The `printf` and `scanf` libraries call into `mpz`, `mpq`, and `mpf`
functions for number formatting and parsing, but only declared a
dependency on `mpn`. This caused linker errors:
```
undefined reference to `__gmpz_get_str'
undefined reference to `__gmpq_get_str'
undefined reference to `__gmpf_set_si'
```
### 2. Empty glob errors with Bazel 8
The `mpn.bzl` glob patterns fail with
`--incompatible_disallow_empty_glob=true` (Bazel 8's default) because
not all architectures have `.asm` implementations for all operations.
Added `allow_empty = True` to the affected glob calls.
## Testing
Built against an example project:
https://github.com/reutermj/toolchains_cc/tree/feat/gmp-example/examples/gmp
---
modules/gmp/6.2.0.bcr.1/MODULE.bazel | 11 +
modules/gmp/6.2.0.bcr.1/overlay/BUILD.bazel | 1293 +++++++++
.../overlay/config/arm/v7a/cora9/config.h | 668 +++++
.../overlay/config/arm/v7a/cora9/config.m4 | 37 +
.../overlay/config/arm/v7a/cora9/gmp.h | 2336 +++++++++++++++++
.../6.2.0.bcr.1/overlay/config/arm64/config.h | 668 +++++
.../overlay/config/arm64/config.m4 | 35 +
.../6.2.0.bcr.1/overlay/config/arm64/gmp.h | 2336 +++++++++++++++++
.../overlay/config/x86_64/config.h | 670 +++++
.../overlay/config/x86_64/config.m4 | 38 +
.../6.2.0.bcr.1/overlay/config/x86_64/gmp.h | 2336 +++++++++++++++++
modules/gmp/6.2.0.bcr.1/overlay/mpn.bzl | 207 ++
modules/gmp/6.2.0.bcr.1/presubmit.yml | 10 +
modules/gmp/6.2.0.bcr.1/source.json | 19 +
modules/gmp/metadata.json | 3 +-
15 files changed, 10666 insertions(+), 1 deletion(-)
create mode 100644 modules/gmp/6.2.0.bcr.1/MODULE.bazel
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/BUILD.bazel
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/config.h
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/config.m4
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/gmp.h
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/config/arm64/config.h
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/config/arm64/config.m4
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/config/arm64/gmp.h
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/config.h
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/config.m4
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/gmp.h
create mode 100644 modules/gmp/6.2.0.bcr.1/overlay/mpn.bzl
create mode 100644 modules/gmp/6.2.0.bcr.1/presubmit.yml
create mode 100644 modules/gmp/6.2.0.bcr.1/source.json
diff --git a/modules/gmp/6.2.0.bcr.1/MODULE.bazel b/modules/gmp/6.2.0.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..9281c5e0e74
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/MODULE.bazel
@@ -0,0 +1,11 @@
+module(
+ name = "gmp",
+ version = "6.2.0.bcr.1",
+ compatibility_level = 1,
+ bazel_compatibility = [">=7.2.1"],
+)
+
+bazel_dep(name = "rules_cc", version = "0.2.13")
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "rules_m4", version = "0.2.4")
+bazel_dep(name = "platforms", version = "1.0.0")
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/BUILD.bazel b/modules/gmp/6.2.0.bcr.1/overlay/BUILD.bazel
new file mode 100644
index 00000000000..113649365db
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/BUILD.bazel
@@ -0,0 +1,1293 @@
+# Note: This BUILD file was handwritten by carefully reading the existing build system and translating it.
+
+load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("@rules_cc//cc:cc_test.bzl", "cc_test")
+load(
+ ":mpn.bzl",
+ "architecture_includes",
+ "config_include_from_architecture",
+ "current_directory",
+ "file_from_architecture",
+ "mparam_path",
+ "mpn_cc_library",
+ "mpn_m4_cc_library",
+)
+
+licenses(["reciprocal"])
+
+architecture_paths = {
+ "@platforms//cpu:arm64": [
+ "arm64",
+ "generic",
+ ],
+ "@platforms//cpu:x86_64": [
+ "x86_64",
+ "generic",
+ ],
+ "@platforms//cpu:armv7": [
+ "arm/v7a/cora9",
+ "arm/v6t2",
+ "arm/v6",
+ "arm/v5",
+ "arm",
+ "generic",
+ ],
+}
+
+# gmp's tools leak memory on purpose. Just skip asan for them.
+tool_features = ["-asan"]
+
+genrule(
+ name = "gmp_h_copy",
+ srcs = file_from_architecture(architecture_paths, "gmp.h"),
+ outs = ["gmp.h"],
+ cmd = "cp $< $@",
+ target_compatible_with = ["@platforms//os:linux"],
+)
+
+genrule(
+ name = "config_m4_copy",
+ srcs = file_from_architecture(architecture_paths, "config.m4"),
+ outs = ["config.m4"],
+ cmd = "cp $< $@",
+ target_compatible_with = ["@platforms//os:linux"],
+)
+
+copts_common = [
+ "-Wno-error",
+ "-Wno-unused-but-set-variable",
+ "-Wno-format-nonliteral",
+ "-Wno-unused-parameter",
+ "-Wno-missing-field-initializers",
+ "-DHAVE_CONFIG_H",
+ "-I" + current_directory(),
+ "-I$(GENDIR)/" + current_directory(),
+ "-I" + current_directory() + "/mpn",
+ "-I$(GENDIR)/" + current_directory() + "/mpn",
+ "-Wno-cast-align",
+ "-Wno-dangling-else",
+ "-Wno-cast-qual",
+ "-Wno-sign-compare",
+ "-Wno-unused-function",
+ "-Wno-unused-value",
+ "-Wno-unknown-warning-option",
+ "-Wno-unused-variable",
+] + architecture_includes(architecture_paths) + select({
+ "@platforms//cpu:x86_64": [],
+ "@platforms//cpu:arm64": [
+ "-Wno-old-style-declaration",
+ "-Wno-maybe-uninitialized",
+ "-Wno-empty-body",
+ "-Wno-implicit-fallthrough",
+ ],
+ "@platforms//cpu:armv7": [
+ "-Wno-old-style-declaration",
+ "-Wno-maybe-uninitialized",
+ "-Wno-empty-body",
+ "-Wno-implicit-fallthrough",
+ ],
+}) + config_include_from_architecture(architecture_paths)
+
+ccopts = copts_common + [
+ "-D__GMP_WITHIN_GMPXX",
+ "-Wno-unused-label",
+]
+
+copts = copts_common + [
+ "-D__GMP_WITHIN_GMP",
+ "-Wno-bitwise-conditional-parentheses",
+]
+
+cc_library(
+ name = "bootstrap",
+ target_compatible_with = ["@platforms//os:linux"],
+ textual_hdrs = [
+ "bootstrap.c",
+ "mini-gmp/mini-gmp.c",
+ "mini-gmp/mini-gmp.h",
+ ],
+)
+
+cc_binary(
+ name = "gen-fac",
+ srcs = ["gen-fac.c"],
+ copts = copts,
+ features = tool_features,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":bootstrap"],
+)
+
+nail_bits = "0"
+
+limb_bits = select({
+ "@platforms//cpu:x86_64": "64",
+ "@platforms//cpu:arm64": "64",
+ "@platforms//cpu:armv7": "32",
+})
+
+genrule(
+ name = "fac_table_h",
+ outs = ["fac_table.h"],
+ cmd = "$(location :gen-fac) " + limb_bits + " " + nail_bits + " > $@",
+ target_compatible_with = ["@platforms//os:linux"],
+ tools = [":gen-fac"],
+)
+
+cc_binary(
+ name = "gen-fib",
+ srcs = ["gen-fib.c"],
+ copts = copts,
+ features = tool_features,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":bootstrap"],
+)
+
+genrule(
+ name = "fib_table_h",
+ outs = ["fib_table.h"],
+ cmd = "$(location :gen-fib) header " + limb_bits + " " + nail_bits + " > $@",
+ target_compatible_with = ["@platforms//os:linux"],
+ tools = [":gen-fib"],
+)
+
+genrule(
+ name = "fib_table_c",
+ outs = ["mpn/fib_table.c"],
+ cmd = "$(location :gen-fib) table " + limb_bits + " " + nail_bits + " > $@",
+ target_compatible_with = ["@platforms//os:linux"],
+ tools = [":gen-fib"],
+)
+
+cc_binary(
+ name = "gen-bases",
+ srcs = ["gen-bases.c"],
+ copts = copts,
+ features = tool_features,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":bootstrap"],
+)
+
+genrule(
+ name = "mp_bases_h",
+ outs = ["mp_bases.h"],
+ cmd = "$(location :gen-bases) header " + limb_bits + " " + nail_bits + " > $@",
+ target_compatible_with = ["@platforms//os:linux"],
+ tools = [":gen-bases"],
+)
+
+genrule(
+ name = "mp_bases_c",
+ outs = ["mpn/mp_bases.c"],
+ cmd = "$(location :gen-bases) table " + limb_bits + " " + nail_bits + " > $@",
+ target_compatible_with = ["@platforms//os:linux"],
+ tools = [":gen-bases"],
+)
+
+cc_binary(
+ name = "gen-trialdivtab",
+ srcs = ["gen-trialdivtab.c"],
+ copts = copts,
+ features = tool_features,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":bootstrap"],
+)
+
+genrule(
+ name = "trialdivtab_h",
+ outs = ["trialdivtab.h"],
+ cmd = "$(location :gen-trialdivtab) " + limb_bits + " 8000 > $@",
+ target_compatible_with = ["@platforms//os:linux"],
+ tools = [":gen-trialdivtab"],
+)
+
+cc_binary(
+ name = "gen-jacobitab",
+ srcs = ["gen-jacobitab.c"],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":bootstrap"],
+)
+
+genrule(
+ name = "jacobitab_h",
+ outs = ["mpn/jacobitab.h"],
+ cmd = "$(location :gen-jacobitab) > $@",
+ target_compatible_with = ["@platforms//os:linux"],
+ tools = [":gen-jacobitab"],
+)
+
+cc_binary(
+ name = "gen-psqr",
+ srcs = ["gen-psqr.c"],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":bootstrap"],
+)
+
+genrule(
+ name = "perfsqr_h",
+ outs = ["mpn/perfsqr.h"],
+ cmd = "$(location :gen-psqr) " + limb_bits + " " + nail_bits + " > $@",
+ target_compatible_with = ["@platforms//os:linux"],
+ tools = [":gen-psqr"],
+)
+
+extra_functions = ["invert_limb_table"]
+
+gmp_mpn_functions_optional = extra_functions + [
+ "umul",
+ "udiv",
+ "invert_limb",
+ "sqr_diagonal",
+ "sqr_diag_addlsh1",
+ "mul_2",
+ "mul_3",
+ "mul_4",
+ "mul_5",
+ "mul_6",
+ "addmul_2",
+ "addmul_3",
+ "addmul_4",
+ "addmul_5",
+ "addmul_6",
+ "addmul_7",
+ "addmul_8",
+ "addlsh1_n",
+ "sublsh1_n",
+ "rsblsh1_n",
+ "rsh1add_n",
+ "rsh1sub_n",
+ "addlsh2_n",
+ "sublsh2_n",
+ "rsblsh2_n",
+ "addlsh_n",
+ "sublsh_n",
+ "rsblsh_n",
+ "add_n_sub_n",
+ "addaddmul_1msb0",
+]
+
+gmp_mpn_functions = [
+ "add",
+ "add_1",
+ "add_n",
+ "sub",
+ "sub_1",
+ "sub_n",
+ "cnd_add_n",
+ "cnd_sub_n",
+ "cnd_swap",
+ "neg",
+ "com",
+ "mul_1",
+ "addmul_1",
+ "submul_1",
+ "add_err1_n",
+ "add_err2_n",
+ "add_err3_n",
+ "sub_err1_n",
+ "sub_err2_n",
+ "sub_err3_n",
+ "lshift",
+ "rshift",
+ "dive_1",
+ "diveby3",
+ "divis",
+ "divrem",
+ "divrem_1",
+ "divrem_2",
+ "fib2_ui",
+ "fib2m",
+ "mod_1",
+ "mod_34lsub1",
+ "mode1o",
+ "pre_mod_1",
+ "dump",
+ "mod_1_1",
+ "mod_1_2",
+ "mod_1_3",
+ "mod_1_4",
+ "lshiftc",
+ "mul",
+ "mul_fft",
+ "mul_n",
+ "sqr",
+ "mul_basecase",
+ "sqr_basecase",
+ "nussbaumer_mul",
+ "mulmid_basecase",
+ "toom42_mulmid",
+ "mulmid_n",
+ "mulmid",
+ "random",
+ "random2",
+ "pow_1",
+ "rootrem",
+ "sqrtrem",
+ "sizeinbase",
+ "get_str",
+ "set_str",
+ "compute_powtab",
+ "scan0",
+ "scan1",
+ "popcount",
+ "hamdist",
+ "cmp",
+ "zero_p",
+ "perfsqr",
+ "perfpow",
+ "strongfibo",
+ "gcd_11",
+ "gcd_22",
+ "gcd_1",
+ "gcd",
+ "gcdext_1",
+ "gcdext",
+ "gcd_subdiv_step",
+ "gcdext_lehmer",
+ "div_q",
+ "tdiv_qr",
+ "jacbase",
+ "jacobi_2",
+ "jacobi",
+ "get_d",
+ "matrix22_mul",
+ "matrix22_mul1_inverse_vector",
+ "hgcd_matrix",
+ "hgcd2",
+ "hgcd_step",
+ "hgcd_reduce",
+ "hgcd",
+ "hgcd_appr",
+ "hgcd2_jacobi",
+ "hgcd_jacobi",
+ "mullo_n",
+ "mullo_basecase",
+ "sqrlo",
+ "sqrlo_basecase",
+ "toom22_mul",
+ "toom32_mul",
+ "toom42_mul",
+ "toom52_mul",
+ "toom62_mul",
+ "toom33_mul",
+ "toom43_mul",
+ "toom53_mul",
+ "toom54_mul",
+ "toom63_mul",
+ "toom44_mul",
+ "toom6h_mul",
+ "toom6_sqr",
+ "toom8h_mul",
+ "toom8_sqr",
+ "toom_couple_handling",
+ "toom2_sqr",
+ "toom3_sqr",
+ "toom4_sqr",
+ "toom_eval_dgr3_pm1",
+ "toom_eval_dgr3_pm2",
+ "toom_eval_pm1",
+ "toom_eval_pm2",
+ "toom_eval_pm2exp",
+ "toom_eval_pm2rexp",
+ "toom_interpolate_5pts",
+ "toom_interpolate_6pts",
+ "toom_interpolate_7pts",
+ "toom_interpolate_8pts",
+ "toom_interpolate_12pts",
+ "toom_interpolate_16pts",
+ "invertappr",
+ "invert",
+ "binvert",
+ "mulmod_bnm1",
+ "sqrmod_bnm1",
+ "div_qr_1",
+ "div_qr_1n_pi1",
+ "div_qr_2",
+ "div_qr_2n_pi1",
+ "div_qr_2u_pi1",
+ "sbpi1_div_q",
+ "sbpi1_div_qr",
+ "sbpi1_divappr_q",
+ "dcpi1_div_q",
+ "dcpi1_div_qr",
+ "dcpi1_divappr_q",
+ "mu_div_qr",
+ "mu_divappr_q",
+ "mu_div_q",
+ "bdiv_q_1",
+ "sbpi1_bdiv_q",
+ "sbpi1_bdiv_qr",
+ "sbpi1_bdiv_r",
+ "dcpi1_bdiv_q",
+ "dcpi1_bdiv_qr",
+ "mu_bdiv_q",
+ "mu_bdiv_qr",
+ "bdiv_q",
+ "bdiv_qr",
+ "broot",
+ "brootinv",
+ "bsqrt",
+ "bsqrtinv",
+ "divexact",
+ "bdiv_dbm1c",
+ "redc_1",
+ "redc_2",
+ "redc_n",
+ "powm",
+ "powlo",
+ "sec_powm",
+ "sec_mul",
+ "sec_sqr",
+ "sec_div_qr",
+ "sec_div_r",
+ "sec_pi1_div_qr",
+ "sec_pi1_div_r",
+ "sec_add_1",
+ "sec_sub_1",
+ "sec_invert",
+ "trialdiv",
+ "remove",
+ "and_n",
+ "andn_n",
+ "nand_n",
+ "ior_n",
+ "iorn_n",
+ "nior_n",
+ "xor_n",
+ "xnor_n",
+ "copyi",
+ "copyd",
+ "zero",
+ "sec_tabselect",
+ "comb_tables",
+] + gmp_mpn_functions_optional
+
+gmp_mpn_functions_cpu_aarch64 = ["pre_divrem_1"]
+
+gmp_mpn_functions_cpu_select = select({
+ "@platforms//cpu:arm64": ["pre_divrem_1"],
+ "@platforms//cpu:armv7": [],
+ "@platforms//cpu:x86_64": [],
+})
+
+[
+ mpn_m4_cc_library(
+ name = x,
+ architecture_paths = architecture_paths,
+ target_compatible_with = ["@platforms//os:linux"],
+ )
+ for x in gmp_mpn_functions + gmp_mpn_functions_cpu_aarch64
+]
+
+cc_library(
+ name = "mpn_core",
+ srcs = gmp_mpn_functions + gmp_mpn_functions_cpu_select + [
+ "assert.c",
+ "compat.c",
+ "errno.c",
+ "extract-dbl.c",
+ "invalid.c",
+ "memory.c",
+ "mp_bpl.c",
+ "mp_clz_tab.c",
+ "mp_dv_tab.c",
+ "mp_get_fns.c",
+ "mp_minv_tab.c",
+ "mp_set_fns.c",
+ "nextprime.c",
+ "primesieve.c",
+ "tal-reent.c",
+ "version.c",
+ ],
+ hdrs = [
+ "fac_table.h",
+ "fib_table.h",
+ "gmp.h",
+ "gmp-impl.h",
+ "gmpxx.h",
+ "longlong.h",
+ "mp_bases.h",
+ "mpn/jacobitab.h",
+ "mpn/perfsqr.h",
+ "trialdivtab.h",
+ ] + mparam_path(architecture_paths) + file_from_architecture(architecture_paths, "config.h"),
+ copts = copts + [
+ "-Wno-unused-command-line-argument",
+ "-Wa,--noexecstack",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+)
+
+# TODO(austin): Can we run these through the mpn_m4_cc_library and get operation baked in without work?
+mpn_cc_library(
+ name = "fib_table",
+ srcs = [
+ "mpn/fib_table.c",
+ ],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":mpn_core"],
+)
+
+mpn_cc_library(
+ name = "mp_bases",
+ srcs = [
+ "mpn/mp_bases.c",
+ ],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":mpn_core"],
+)
+
+cc_library(
+ name = "mpn",
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [
+ ":fib_table",
+ ":mp_bases",
+ ":mpn_core",
+ ],
+)
+
+cc_library(
+ name = "mpz",
+ srcs = [
+ "mpz/2fac_ui.c",
+ "mpz/abs.c",
+ "mpz/add.c",
+ "mpz/add_ui.c",
+ "mpz/and.c",
+ "mpz/aors.h",
+ "mpz/aors_ui.h",
+ "mpz/aorsmul.c",
+ "mpz/aorsmul_i.c",
+ "mpz/array_init.c",
+ "mpz/bin_ui.c",
+ "mpz/bin_uiui.c",
+ "mpz/cdiv_q.c",
+ "mpz/cdiv_q_ui.c",
+ "mpz/cdiv_qr.c",
+ "mpz/cdiv_qr_ui.c",
+ "mpz/cdiv_r.c",
+ "mpz/cdiv_r_ui.c",
+ "mpz/cdiv_ui.c",
+ "mpz/cfdiv_q_2exp.c",
+ "mpz/cfdiv_r_2exp.c",
+ "mpz/clear.c",
+ "mpz/clears.c",
+ "mpz/clrbit.c",
+ "mpz/cmp.c",
+ "mpz/cmp_d.c",
+ "mpz/cmp_si.c",
+ "mpz/cmp_ui.c",
+ "mpz/cmpabs.c",
+ "mpz/cmpabs_d.c",
+ "mpz/cmpabs_ui.c",
+ "mpz/com.c",
+ "mpz/combit.c",
+ "mpz/cong.c",
+ "mpz/cong_2exp.c",
+ "mpz/cong_ui.c",
+ "mpz/dive_ui.c",
+ "mpz/divegcd.c",
+ "mpz/divexact.c",
+ "mpz/divis.c",
+ "mpz/divis_2exp.c",
+ "mpz/divis_ui.c",
+ "mpz/dump.c",
+ "mpz/export.c",
+ "mpz/fac_ui.c",
+ "mpz/fdiv_q.c",
+ "mpz/fdiv_q_ui.c",
+ "mpz/fdiv_qr.c",
+ "mpz/fdiv_qr_ui.c",
+ "mpz/fdiv_r.c",
+ "mpz/fdiv_r_ui.c",
+ "mpz/fdiv_ui.c",
+ "mpz/fib2_ui.c",
+ "mpz/fib_ui.c",
+ "mpz/fits_s.h",
+ "mpz/fits_sint.c",
+ "mpz/fits_slong.c",
+ "mpz/fits_sshort.c",
+ "mpz/fits_uint.c",
+ "mpz/fits_ulong.c",
+ "mpz/fits_ushort.c",
+ "mpz/gcd.c",
+ "mpz/gcd_ui.c",
+ "mpz/gcdext.c",
+ "mpz/get_d.c",
+ "mpz/get_d_2exp.c",
+ "mpz/get_si.c",
+ "mpz/get_str.c",
+ "mpz/get_ui.c",
+ "mpz/getlimbn.c",
+ "mpz/hamdist.c",
+ "mpz/import.c",
+ "mpz/init.c",
+ "mpz/init2.c",
+ "mpz/inits.c",
+ "mpz/inp_raw.c",
+ "mpz/inp_str.c",
+ "mpz/invert.c",
+ "mpz/ior.c",
+ "mpz/iset.c",
+ "mpz/iset_d.c",
+ "mpz/iset_si.c",
+ "mpz/iset_str.c",
+ "mpz/iset_ui.c",
+ "mpz/jacobi.c",
+ "mpz/kronsz.c",
+ "mpz/kronuz.c",
+ "mpz/kronzs.c",
+ "mpz/kronzu.c",
+ "mpz/lcm.c",
+ "mpz/lcm_ui.c",
+ "mpz/limbs_finish.c",
+ "mpz/limbs_modify.c",
+ "mpz/limbs_read.c",
+ "mpz/limbs_write.c",
+ "mpz/lucmod.c",
+ "mpz/lucnum2_ui.c",
+ "mpz/lucnum_ui.c",
+ "mpz/mfac_uiui.c",
+ "mpz/millerrabin.c",
+ "mpz/mod.c",
+ "mpz/mul.c",
+ "mpz/mul_2exp.c",
+ "mpz/mul_i.h",
+ "mpz/mul_si.c",
+ "mpz/mul_ui.c",
+ "mpz/n_pow_ui.c",
+ "mpz/neg.c",
+ "mpz/nextprime.c",
+ "mpz/oddfac_1.c",
+ "mpz/out_raw.c",
+ "mpz/out_str.c",
+ "mpz/perfpow.c",
+ "mpz/perfsqr.c",
+ "mpz/popcount.c",
+ "mpz/pow_ui.c",
+ "mpz/powm.c",
+ "mpz/powm_sec.c",
+ "mpz/powm_ui.c",
+ "mpz/pprime_p.c",
+ "mpz/primorial_ui.c",
+ "mpz/prodlimbs.c",
+ "mpz/random.c",
+ "mpz/random2.c",
+ "mpz/realloc.c",
+ "mpz/realloc2.c",
+ "mpz/remove.c",
+ "mpz/roinit_n.c",
+ "mpz/root.c",
+ "mpz/rootrem.c",
+ "mpz/rrandomb.c",
+ "mpz/scan0.c",
+ "mpz/scan1.c",
+ "mpz/set.c",
+ "mpz/set_d.c",
+ "mpz/set_f.c",
+ "mpz/set_q.c",
+ "mpz/set_si.c",
+ "mpz/set_str.c",
+ "mpz/set_ui.c",
+ "mpz/setbit.c",
+ "mpz/size.c",
+ "mpz/sizeinbase.c",
+ "mpz/sqrt.c",
+ "mpz/sqrtrem.c",
+ "mpz/stronglucas.c",
+ "mpz/sub.c",
+ "mpz/sub_ui.c",
+ "mpz/swap.c",
+ "mpz/tdiv_q.c",
+ "mpz/tdiv_q_2exp.c",
+ "mpz/tdiv_q_ui.c",
+ "mpz/tdiv_qr.c",
+ "mpz/tdiv_qr_ui.c",
+ "mpz/tdiv_r.c",
+ "mpz/tdiv_r_2exp.c",
+ "mpz/tdiv_r_ui.c",
+ "mpz/tdiv_ui.c",
+ "mpz/tstbit.c",
+ "mpz/ui_pow_ui.c",
+ "mpz/ui_sub.c",
+ "mpz/urandomb.c",
+ "mpz/urandomm.c",
+ "mpz/xor.c",
+ ],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [
+ ":mpn",
+ ],
+)
+
+cc_library(
+ name = "mpq",
+ srcs = [
+ "mpq/abs.c",
+ "mpq/aors.c",
+ "mpq/canonicalize.c",
+ "mpq/clear.c",
+ "mpq/clears.c",
+ "mpq/cmp.c",
+ "mpq/cmp_si.c",
+ "mpq/cmp_ui.c",
+ "mpq/div.c",
+ "mpq/equal.c",
+ "mpq/get_d.c",
+ "mpq/get_den.c",
+ "mpq/get_num.c",
+ "mpq/get_str.c",
+ "mpq/init.c",
+ "mpq/inits.c",
+ "mpq/inp_str.c",
+ "mpq/inv.c",
+ "mpq/md_2exp.c",
+ "mpq/mul.c",
+ "mpq/neg.c",
+ "mpq/out_str.c",
+ "mpq/set.c",
+ "mpq/set_d.c",
+ "mpq/set_den.c",
+ "mpq/set_f.c",
+ "mpq/set_num.c",
+ "mpq/set_si.c",
+ "mpq/set_str.c",
+ "mpq/set_ui.c",
+ "mpq/set_z.c",
+ "mpq/swap.c",
+ ],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [
+ ":mpn",
+ ],
+)
+
+cc_library(
+ name = "mpf",
+ srcs = [
+ "mpf/abs.c",
+ "mpf/add.c",
+ "mpf/add_ui.c",
+ "mpf/ceilfloor.c",
+ "mpf/clear.c",
+ "mpf/clears.c",
+ "mpf/cmp.c",
+ "mpf/cmp_d.c",
+ "mpf/cmp_si.c",
+ "mpf/cmp_ui.c",
+ "mpf/cmp_z.c",
+ "mpf/div.c",
+ "mpf/div_2exp.c",
+ "mpf/div_ui.c",
+ "mpf/dump.c",
+ "mpf/eq.c",
+ "mpf/fits_s.h",
+ "mpf/fits_sint.c",
+ "mpf/fits_slong.c",
+ "mpf/fits_sshort.c",
+ "mpf/fits_u.h",
+ "mpf/fits_uint.c",
+ "mpf/fits_ulong.c",
+ "mpf/fits_ushort.c",
+ "mpf/get_d.c",
+ "mpf/get_d_2exp.c",
+ "mpf/get_dfl_prec.c",
+ "mpf/get_prc.c",
+ "mpf/get_si.c",
+ "mpf/get_str.c",
+ "mpf/get_ui.c",
+ "mpf/init.c",
+ "mpf/init2.c",
+ "mpf/inits.c",
+ "mpf/inp_str.c",
+ "mpf/int_p.c",
+ "mpf/iset.c",
+ "mpf/iset_d.c",
+ "mpf/iset_si.c",
+ "mpf/iset_str.c",
+ "mpf/iset_ui.c",
+ "mpf/mul.c",
+ "mpf/mul_2exp.c",
+ "mpf/mul_ui.c",
+ "mpf/neg.c",
+ "mpf/out_str.c",
+ "mpf/pow_ui.c",
+ "mpf/random2.c",
+ "mpf/reldiff.c",
+ "mpf/set.c",
+ "mpf/set_d.c",
+ "mpf/set_dfl_prec.c",
+ "mpf/set_prc.c",
+ "mpf/set_prc_raw.c",
+ "mpf/set_q.c",
+ "mpf/set_si.c",
+ "mpf/set_str.c",
+ "mpf/set_ui.c",
+ "mpf/set_z.c",
+ "mpf/size.c",
+ "mpf/sqrt.c",
+ "mpf/sqrt_ui.c",
+ "mpf/sub.c",
+ "mpf/sub_ui.c",
+ "mpf/swap.c",
+ "mpf/trunc.c",
+ "mpf/ui_div.c",
+ "mpf/ui_sub.c",
+ "mpf/urandomb.c",
+ ],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [
+ ":mpn",
+ ],
+)
+
+cc_library(
+ name = "printf",
+ srcs = [
+ "printf/asprintf.c",
+ "printf/asprntffuns.c",
+ "printf/doprnt.c",
+ "printf/doprntf.c",
+ "printf/doprnti.c",
+ "printf/fprintf.c",
+ "printf/obprintf.c",
+ "printf/obprntffuns.c",
+ "printf/obvprintf.c",
+ "printf/printf.c",
+ "printf/printffuns.c",
+ "printf/repl-vsnprintf.c",
+ "printf/snprintf.c",
+ "printf/snprntffuns.c",
+ "printf/sprintf.c",
+ "printf/sprintffuns.c",
+ "printf/vasprintf.c",
+ "printf/vfprintf.c",
+ "printf/vprintf.c",
+ "printf/vsnprintf.c",
+ "printf/vsprintf.c",
+ ],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [
+ ":mpf",
+ ":mpn",
+ ":mpq",
+ ":mpz",
+ ],
+)
+
+cc_library(
+ name = "scanf",
+ srcs = [
+ "scanf/doscan.c",
+ "scanf/fscanf.c",
+ "scanf/fscanffuns.c",
+ "scanf/scanf.c",
+ "scanf/sscanf.c",
+ "scanf/sscanffuns.c",
+ "scanf/vfscanf.c",
+ "scanf/vscanf.c",
+ "scanf/vsscanf.c",
+ ],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [
+ ":mpf",
+ ":mpn",
+ ":mpq",
+ ":mpz",
+ ],
+)
+
+cc_library(
+ name = "rand",
+ srcs = [
+ "rand/rand.c",
+ "rand/randbui.c",
+ "rand/randclr.c",
+ "rand/randdef.c",
+ "rand/randiset.c",
+ "rand/randlc2s.c",
+ "rand/randlc2x.c",
+ "rand/randmt.c",
+ "rand/randmt.h",
+ "rand/randmts.c",
+ "rand/randmui.c",
+ "rand/rands.c",
+ "rand/randsd.c",
+ "rand/randsdui.c",
+ ],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [
+ ":mpn",
+ ],
+)
+
+cc_library(
+ name = "cxx",
+ srcs = [
+ "cxx/isfuns.cc",
+ "cxx/ismpf.cc",
+ "cxx/ismpq.cc",
+ "cxx/ismpz.cc",
+ "cxx/ismpznw.cc",
+ "cxx/limits.cc",
+ "cxx/osdoprnti.cc",
+ "cxx/osfuns.cc",
+ "cxx/osmpf.cc",
+ "cxx/osmpq.cc",
+ "cxx/osmpz.cc",
+ ],
+ copts = ccopts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [
+ ":mpn",
+ ],
+)
+
+cc_library(
+ name = "gmp",
+ includes = ["."],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":cxx",
+ ":mpf",
+ ":mpn",
+ ":mpq",
+ ":mpz",
+ ":printf",
+ ":rand",
+ ":scanf",
+ ],
+)
+
+genrule(
+ name = "call_m4",
+ srcs = glob([
+ "**/*.m4",
+ "**/*.asm",
+ ]) + ["config.m4"],
+ outs = ["tests/call.s"],
+ cmd = "ROOT=$$(pwd); cd ./" + current_directory() + "/tests; $${ROOT}/$(M4) -I $${ROOT}/$(GENDIR)/" + current_directory() + "/tests -DHAVE_CONFIG_H -DPIC " + select({
+ "@platforms//cpu:x86_64": "amd64call.asm",
+ "@platforms//cpu:arm64": "arm32call.asm",
+ "@platforms//cpu:armv7": "arm32call.asm",
+ }) +
+ " > $${ROOT}/$@",
+ target_compatible_with = ["@platforms//os:linux"],
+ toolchains = ["@rules_m4//m4:current_m4_toolchain"],
+)
+
+cc_library(
+ name = "testlib",
+ srcs =
+ select({
+ "@platforms//cpu:x86_64": [
+ "tests/amd64check.c",
+ ":call_m4",
+ ],
+ "@platforms//cpu:arm64": [],
+ "@platforms//cpu:armv7": [],
+ }) + [
+ "tests/memory.c",
+ "tests/misc.c",
+ "tests/refmpf.c",
+ "tests/refmpn.c",
+ "tests/refmpq.c",
+ "tests/refmpz.c",
+ "tests/spinner.c",
+ "tests/trace.c",
+ ],
+ hdrs = [
+ "tests/cxx/t-ops2.h",
+ "tests/mpn/toom-shared.h",
+ "tests/mpn/toom-sqr-shared.h",
+ "tests/tests.h",
+ ],
+ copts = copts + ["-Wno-unused-command-line-argument"],
+ includes = [
+ ".",
+ "tests",
+ ] + select({k: ["mpn/" + v for v in architecture_paths[k]] for k in architecture_paths}),
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":gmp"],
+)
+
+[cc_test(
+ name = "tests/" + x,
+ srcs = ["tests/" + x + ".c"],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":testlib"],
+) for x in [
+ "t-bswap",
+ "t-constants",
+ "t-count_zeros",
+ "t-hightomask",
+ "t-modlinv",
+ "t-popc",
+ "t-parity",
+ "t-sub",
+]]
+
+[cc_test(
+ name = "tests/mpn/" + x,
+ srcs = ["tests/mpn/" + x + ".c"],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":testlib"],
+) for x in [
+ "t-asmtype",
+ "t-aors_1",
+ "t-divrem_1",
+ "t-mod_1",
+ "t-fat",
+ "t-get_d",
+ "t-instrument",
+ "t-iord_u",
+ "t-mp_bases",
+ "t-perfsqr",
+ "t-scan",
+ "logic",
+ "t-toom22",
+ "t-toom32",
+ "t-toom33",
+ "t-toom42",
+ "t-toom43",
+ "t-toom44",
+ "t-toom52",
+ "t-toom53",
+ "t-toom54",
+ "t-toom62",
+ "t-toom63",
+ "t-toom6h",
+ "t-toom8h",
+ "t-toom2-sqr",
+ "t-toom3-sqr",
+ "t-toom4-sqr",
+ "t-toom6-sqr",
+ "t-toom8-sqr",
+ "t-div",
+ "t-mul",
+ "t-mullo",
+ "t-sqrlo",
+ "t-mulmod_bnm1",
+ "t-sqrmod_bnm1",
+ "t-mulmid",
+ "t-hgcd",
+ "t-hgcd_appr",
+ "t-matrix22",
+ "t-invert",
+ "t-bdiv",
+ "t-fib2m",
+ "t-broot",
+ "t-brootinv",
+ "t-minvert",
+ "t-sizeinbase",
+ "t-gcd_11",
+ "t-gcd_22",
+ "t-gcdext_1",
+]]
+
+[cc_test(
+ name = "tests/mpz/" + x,
+ srcs = ["tests/mpz/" + x + ".c"],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":testlib"],
+) for x in [
+ "reuse",
+ "t-addsub",
+ "t-cmp",
+ "t-mul",
+ "t-mul_i",
+ "t-tdiv",
+ "t-tdiv_ui",
+ "t-fdiv",
+ "t-fdiv_ui",
+ "t-cdiv_ui",
+ "t-gcd",
+ "t-gcd_ui",
+ "t-lcm",
+ "t-invert",
+ "dive",
+ "dive_ui",
+ "t-sqrtrem",
+ "convert",
+ "io",
+ "t-inp_str",
+ "logic",
+ "bit",
+ "t-powm",
+ "t-powm_ui",
+ "t-pow",
+ "t-div_2exp",
+ "t-root",
+ "t-perfsqr",
+ "t-perfpow",
+ "t-jac",
+ "t-bin",
+ "t-get_d",
+ "t-get_d_2exp",
+ "t-get_si",
+ "t-set_d",
+ "t-set_si",
+ "t-lucm",
+ "t-fac_ui",
+ "t-mfac_uiui",
+ "t-primorial_ui",
+ "t-fib_ui",
+ "t-lucnum_ui",
+ "t-scan",
+ "t-fits",
+ "t-divis",
+ "t-divis_2exp",
+ "t-cong",
+ "t-cong_2exp",
+ "t-sizeinbase",
+ "t-set_str",
+ "t-aorsmul",
+ "t-cmp_d",
+ "t-cmp_si",
+ "t-hamdist",
+ "t-oddeven",
+ "t-popcount",
+ "t-set_f",
+ "t-io_raw",
+ "t-import",
+ "t-export",
+ "t-pprime_p",
+ "t-nextprime",
+ "t-remove",
+ "t-limbs",
+]]
+
+[cc_test(
+ name = "tests/mpq/" + x,
+ srcs = ["tests/mpq/" + x + ".c"],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":testlib"],
+) for x in [
+ "t-aors",
+ "t-cmp",
+ "t-cmp_ui",
+ "t-cmp_si",
+ "t-equal",
+ "t-get_d",
+ "t-get_str",
+ "t-inp_str",
+ "t-inv",
+ "t-md_2exp",
+ "t-set_f",
+ "t-set_str",
+ "io",
+ "reuse",
+ "t-cmp_z",
+]]
+
+[cc_test(
+ name = "tests/mpf/" + x,
+ srcs = ["tests/mpf/" + x + ".c"],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":testlib"],
+) for x in [
+ "t-dm2exp",
+ "t-conv",
+ "t-add",
+ "t-sub",
+ "t-sqrt",
+ "t-sqrt_ui",
+ "t-muldiv",
+ "reuse",
+ "t-cmp_d",
+ "t-cmp_si",
+ "t-div",
+ "t-fits",
+ "t-get_d",
+ "t-get_d_2exp",
+ "t-get_si",
+ "t-get_ui",
+ "t-gsprec",
+ "t-inp_str",
+ "t-int_p",
+ "t-mul_ui",
+ "t-set",
+ "t-set_q",
+ "t-set_si",
+ "t-set_ui",
+ "t-trunc",
+ "t-ui_div",
+ "t-eq",
+ "t-pow_ui",
+]]
+
+[cc_test(
+ name = "tests/rand/" + x,
+ srcs = ["tests/rand/" + x + ".c"],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":testlib"],
+) for x in [
+ "t-iset",
+ "t-lc2exp",
+ "t-mt",
+ "t-rand",
+ "t-urbui",
+ "t-urmui",
+ "t-urndmm",
+]]
+
+[cc_test(
+ name = "tests/misc/" + x,
+ srcs = ["tests/misc/" + x + ".c"],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":testlib"],
+) for x in [
+ "t-printf",
+ "t-scanf",
+ "t-locale",
+]]
+
+[cc_test(
+ name = "tests/cxx/" + x,
+ srcs = ["tests/cxx/" + x + ".cc"],
+ copts = copts,
+ target_compatible_with = ["@platforms//os:linux"],
+ deps = [":testlib"],
+) for x in [
+ "t-binary",
+ "t-cast",
+ "t-cxx11",
+ "t-headers",
+ "t-iostream",
+ "t-istream",
+ "t-locale",
+ "t-misc",
+ "t-mix",
+ "t-ops",
+ "t-ops2qf",
+ "t-ops2f",
+ "t-ops3",
+ "t-ostream",
+ "t-prec",
+ "t-ternary",
+ "t-unary",
+ "t-do-exceptions-work-at-all-with-this-compiler",
+ "t-ops2z",
+ "t-assign",
+ "t-constr",
+ "t-rand",
+]]
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/config.h b/modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/config.h
new file mode 100644
index 00000000000..f0c64c86c20
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/config.h
@@ -0,0 +1,668 @@
+/* config.h. Generated from config.in by configure. */
+/* config.in. Generated from configure.ac by autoheader. */
+
+/*
+
+Copyright 1996-2020 Free Software Foundation, Inc.
+
+This file is part of the GNU MP Library.
+
+The GNU MP Library is free software; you can redistribute it and/or modify
+it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+or
+
+ * the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any
+ later version.
+
+or both in parallel, as here.
+
+The GNU MP Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received copies of the GNU General Public License and the
+GNU Lesser General Public License along with the GNU MP Library. If not,
+see https://www.gnu.org/licenses/.
+*/
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* The gmp-mparam.h file (a string) the tune program should suggest updating.
+ */
+#define GMP_MPARAM_H_SUGGEST "./mpn/arm/gmp-mparam.h"
+
+/* Define to 1 if you have the `alarm' function. */
+#define HAVE_ALARM 1
+
+/* Define to 1 if alloca() works (via gmp-impl.h). */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have and it should be used (not on Ultrix).
+ */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((const)) */
+#define HAVE_ATTRIBUTE_CONST 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((malloc)) */
+#define HAVE_ATTRIBUTE_MALLOC 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((mode (XX)))
+ */
+#define HAVE_ATTRIBUTE_MODE 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((noreturn)) */
+#define HAVE_ATTRIBUTE_NORETURN 1
+
+/* Define to 1 if you have the `attr_get' function. */
+/* #undef HAVE_ATTR_GET */
+
+/* Define to 1 if tests/libtests has calling conventions checking for the CPU
+ */
+#define HAVE_CALLING_CONVENTIONS 1
+
+/* Define to 1 if you have the `clock' function. */
+#define HAVE_CLOCK 1
+
+/* Define to 1 if you have the `clock_gettime' function */
+#define HAVE_CLOCK_GETTIME 1
+
+/* Define to 1 if you have the `cputime' function. */
+/* #undef HAVE_CPUTIME */
+
+/* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't.
+ */
+#define HAVE_DECL_FGETC 1
+
+/* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't.
+ */
+#define HAVE_DECL_FSCANF 1
+
+/* Define to 1 if you have the declaration of `optarg', and to 0 if you don't.
+ */
+#define HAVE_DECL_OPTARG 1
+
+/* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you
+ don't. */
+#define HAVE_DECL_SYS_ERRLIST 1
+
+/* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you
+ don't. */
+#define HAVE_DECL_SYS_NERR 1
+
+/* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't.
+ */
+#define HAVE_DECL_UNGETC 1
+
+/* Define to 1 if you have the declaration of `vfprintf', and to 0 if you
+ don't. */
+#define HAVE_DECL_VFPRINTF 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define one of the following to 1 for the format of a `double'.
+ If your format is not among these choices, or you don't know what it is,
+ then leave all undefined.
+ IEEE_LITTLE_SWAPPED means little endian, but with the two 4-byte halves
+ swapped, as used by ARM CPUs in little endian mode. */
+/* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */
+#define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1
+/* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */
+/* #undef HAVE_DOUBLE_VAX_D */
+/* #undef HAVE_DOUBLE_VAX_G */
+/* #undef HAVE_DOUBLE_CRAY_CFP */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getrusage' function. */
+#define HAVE_GETRUSAGE 1
+
+/* Define to 1 if you have the `getsysinfo' function. */
+/* #undef HAVE_GETSYSINFO */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((visibility))
+ and __attribute__ ((alias)) */
+#define HAVE_HIDDEN_ALIAS 1
+
+/* Define one of these to 1 for the host CPU family.
+ If your CPU is not in any of these families, leave all undefined.
+ For an AMD64 chip, define "x86" in ABI=32, but not in ABI=64. */
+/* #undef HAVE_HOST_CPU_FAMILY_alpha */
+/* #undef HAVE_HOST_CPU_FAMILY_m68k */
+/* #undef HAVE_HOST_CPU_FAMILY_power */
+/* #undef HAVE_HOST_CPU_FAMILY_powerpc */
+/* #undef HAVE_HOST_CPU_FAMILY_x86 */
+/* #undef HAVE_HOST_CPU_FAMILY_x86_64 */
+
+/* Define one of the following to 1 for the host CPU, as per the output of
+ ./config.guess. If your CPU is not listed here, leave all undefined. */
+/* #undef HAVE_HOST_CPU_alphaev67 */
+/* #undef HAVE_HOST_CPU_alphaev68 */
+/* #undef HAVE_HOST_CPU_alphaev7 */
+/* #undef HAVE_HOST_CPU_m68020 */
+/* #undef HAVE_HOST_CPU_m68030 */
+/* #undef HAVE_HOST_CPU_m68040 */
+/* #undef HAVE_HOST_CPU_m68060 */
+/* #undef HAVE_HOST_CPU_m68360 */
+/* #undef HAVE_HOST_CPU_powerpc604 */
+/* #undef HAVE_HOST_CPU_powerpc604e */
+/* #undef HAVE_HOST_CPU_powerpc750 */
+/* #undef HAVE_HOST_CPU_powerpc7400 */
+/* #undef HAVE_HOST_CPU_supersparc */
+/* #undef HAVE_HOST_CPU_i386 */
+/* #undef HAVE_HOST_CPU_i586 */
+/* #undef HAVE_HOST_CPU_i686 */
+/* #undef HAVE_HOST_CPU_pentium */
+/* #undef HAVE_HOST_CPU_pentiummmx */
+/* #undef HAVE_HOST_CPU_pentiumpro */
+/* #undef HAVE_HOST_CPU_pentium2 */
+/* #undef HAVE_HOST_CPU_pentium3 */
+/* #undef HAVE_HOST_CPU_pentium4 */
+/* #undef HAVE_HOST_CPU_core2 */
+/* #undef HAVE_HOST_CPU_nehalem */
+/* #undef HAVE_HOST_CPU_westmere */
+/* #undef HAVE_HOST_CPU_sandybridge */
+/* #undef HAVE_HOST_CPU_ivybridge */
+/* #undef HAVE_HOST_CPU_haswell */
+/* #undef HAVE_HOST_CPU_broadwell */
+/* #undef HAVE_HOST_CPU_skylake */
+/* #undef HAVE_HOST_CPU_silvermont */
+/* #undef HAVE_HOST_CPU_goldmont */
+/* #undef HAVE_HOST_CPU_k8 */
+/* #undef HAVE_HOST_CPU_k10 */
+/* #undef HAVE_HOST_CPU_bulldozer */
+/* #undef HAVE_HOST_CPU_piledriver */
+/* #undef HAVE_HOST_CPU_steamroller */
+/* #undef HAVE_HOST_CPU_excavator */
+/* #undef HAVE_HOST_CPU_zen */
+/* #undef HAVE_HOST_CPU_bobcat */
+/* #undef HAVE_HOST_CPU_jaguar */
+/* #undef HAVE_HOST_CPU_s390_z900 */
+/* #undef HAVE_HOST_CPU_s390_z990 */
+/* #undef HAVE_HOST_CPU_s390_z9 */
+/* #undef HAVE_HOST_CPU_s390_z10 */
+/* #undef HAVE_HOST_CPU_s390_z196 */
+
+/* Define to 1 iff we have a s390 with 64-bit registers. */
+/* #undef HAVE_HOST_CPU_s390_zarch */
+
+/* Define to 1 if the system has the type `intmax_t'. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if the system has the type `intptr_t'. */
+#define HAVE_INTPTR_T 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_INVENT_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_LANGINFO_H 1
+
+/* Define one of these to 1 for the endianness of `mp_limb_t'.
+ If the endianness is not a simple big or little, or you don't know what
+ it is, then leave both undefined. */
+/* #undef HAVE_LIMB_BIG_ENDIAN */
+#define HAVE_LIMB_LITTLE_ENDIAN 1
+
+/* Define to 1 if you have the `localeconv' function. */
+#define HAVE_LOCALECONV 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if the system has the type `long double'. */
+#define HAVE_LONG_DOUBLE 1
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_MACHINE_HAL_SYSINFO_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `memset' function. */
+#define HAVE_MEMSET 1
+
+/* Define to 1 if you have the `mmap' function. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the `mprotect' function. */
+#define HAVE_MPROTECT 1
+
+/* Define to 1 each of the following for which a native (ie. CPU specific)
+ implementation of the corresponding routine exists. */
+#define HAVE_NATIVE_mpn_add_n 1
+/* #undef HAVE_NATIVE_mpn_add_n_sub_n */
+#define HAVE_NATIVE_mpn_add_nc 1
+/* #undef HAVE_NATIVE_mpn_addaddmul_1msb0 */
+#define HAVE_NATIVE_mpn_addlsh1_n 1
+/* #undef HAVE_NATIVE_mpn_addlsh2_n */
+/* #undef HAVE_NATIVE_mpn_addlsh_n */
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addmul_1c */
+/* #undef HAVE_NATIVE_mpn_addmul_2 */
+/* #undef HAVE_NATIVE_mpn_addmul_3 */
+/* #undef HAVE_NATIVE_mpn_addmul_4 */
+/* #undef HAVE_NATIVE_mpn_addmul_5 */
+/* #undef HAVE_NATIVE_mpn_addmul_6 */
+/* #undef HAVE_NATIVE_mpn_addmul_7 */
+/* #undef HAVE_NATIVE_mpn_addmul_8 */
+/* #undef HAVE_NATIVE_mpn_addmul_2s */
+#define HAVE_NATIVE_mpn_and_n 1
+#define HAVE_NATIVE_mpn_andn_n 1
+#define HAVE_NATIVE_mpn_bdiv_dbm1c 1
+#define HAVE_NATIVE_mpn_bdiv_q_1 1
+#define HAVE_NATIVE_mpn_pi1_bdiv_q_1 1
+#define HAVE_NATIVE_mpn_cnd_add_n 1
+#define HAVE_NATIVE_mpn_cnd_sub_n 1
+#define HAVE_NATIVE_mpn_com 1
+#define HAVE_NATIVE_mpn_copyd 1
+#define HAVE_NATIVE_mpn_copyi 1
+/* #undef HAVE_NATIVE_mpn_div_qr_1n_pi1 */
+/* #undef HAVE_NATIVE_mpn_div_qr_2 */
+#define HAVE_NATIVE_mpn_divexact_1 1
+/* #undef HAVE_NATIVE_mpn_divexact_by3c */
+/* #undef HAVE_NATIVE_mpn_divrem_1 */
+/* #undef HAVE_NATIVE_mpn_divrem_1c */
+/* #undef HAVE_NATIVE_mpn_divrem_2 */
+/* #undef HAVE_NATIVE_mpn_gcd_1 */
+/* #undef HAVE_NATIVE_mpn_gcd_11 */
+/* #undef HAVE_NATIVE_mpn_gcd_22 */
+/* #undef HAVE_NATIVE_mpn_hamdist */
+#define HAVE_NATIVE_mpn_invert_limb 1
+#define HAVE_NATIVE_mpn_ior_n 1
+#define HAVE_NATIVE_mpn_iorn_n 1
+#define HAVE_NATIVE_mpn_lshift 1
+#define HAVE_NATIVE_mpn_lshiftc 1
+/* #undef HAVE_NATIVE_mpn_lshsub_n */
+/* #undef HAVE_NATIVE_mpn_mod_1 */
+/* #undef HAVE_NATIVE_mpn_mod_1_1p */
+/* #undef HAVE_NATIVE_mpn_mod_1c */
+/* #undef HAVE_NATIVE_mpn_mod_1s_2p */
+/* #undef HAVE_NATIVE_mpn_mod_1s_4p */
+#define HAVE_NATIVE_mpn_mod_34lsub1 1
+/* #undef HAVE_NATIVE_mpn_modexact_1_odd */
+#define HAVE_NATIVE_mpn_modexact_1c_odd 1
+#define HAVE_NATIVE_mpn_mul_1 1
+/* #undef HAVE_NATIVE_mpn_mul_1c */
+/* #undef HAVE_NATIVE_mpn_mul_2 */
+/* #undef HAVE_NATIVE_mpn_mul_3 */
+/* #undef HAVE_NATIVE_mpn_mul_4 */
+/* #undef HAVE_NATIVE_mpn_mul_5 */
+/* #undef HAVE_NATIVE_mpn_mul_6 */
+/* #undef HAVE_NATIVE_mpn_mul_basecase */
+/* #undef HAVE_NATIVE_mpn_mullo_basecase */
+#define HAVE_NATIVE_mpn_nand_n 1
+#define HAVE_NATIVE_mpn_nior_n 1
+/* #undef HAVE_NATIVE_mpn_popcount */
+/* #undef HAVE_NATIVE_mpn_preinv_divrem_1 */
+/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */
+/* #undef HAVE_NATIVE_mpn_redc_1 */
+/* #undef HAVE_NATIVE_mpn_redc_2 */
+/* #undef HAVE_NATIVE_mpn_rsblsh1_n */
+/* #undef HAVE_NATIVE_mpn_rsblsh2_n */
+/* #undef HAVE_NATIVE_mpn_rsblsh_n */
+/* #undef HAVE_NATIVE_mpn_rsblsh1_nc */
+/* #undef HAVE_NATIVE_mpn_rsblsh2_nc */
+/* #undef HAVE_NATIVE_mpn_rsblsh_nc */
+#define HAVE_NATIVE_mpn_rsh1add_n 1
+/* #undef HAVE_NATIVE_mpn_rsh1add_nc */
+#define HAVE_NATIVE_mpn_rsh1sub_n 1
+/* #undef HAVE_NATIVE_mpn_rsh1sub_nc */
+#define HAVE_NATIVE_mpn_rshift 1
+/* #undef HAVE_NATIVE_mpn_sbpi1_bdiv_r */
+/* #undef HAVE_NATIVE_mpn_sqr_basecase */
+/* #undef HAVE_NATIVE_mpn_sqr_diagonal */
+/* #undef HAVE_NATIVE_mpn_sqr_diag_addlsh1 */
+#define HAVE_NATIVE_mpn_sub_n 1
+#define HAVE_NATIVE_mpn_sub_nc 1
+#define HAVE_NATIVE_mpn_sublsh1_n 1
+/* #undef HAVE_NATIVE_mpn_sublsh2_n */
+/* #undef HAVE_NATIVE_mpn_sublsh_n */
+/* #undef HAVE_NATIVE_mpn_sublsh1_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh2_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh1_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh2_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh1_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh2_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_submul_1c */
+/* #undef HAVE_NATIVE_mpn_tabselect */
+#define HAVE_NATIVE_mpn_udiv_qrnnd 1
+/* #undef HAVE_NATIVE_mpn_udiv_qrnnd_r */
+/* #undef HAVE_NATIVE_mpn_umul_ppmm */
+/* #undef HAVE_NATIVE_mpn_umul_ppmm_r */
+#define HAVE_NATIVE_mpn_xor_n 1
+#define HAVE_NATIVE_mpn_xnor_n 1
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#define HAVE_NL_LANGINFO 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_NL_TYPES_H 1
+
+/* Define to 1 if you have the `obstack_vprintf' function. */
+#define HAVE_OBSTACK_VPRINTF 1
+
+/* Define to 1 if you have the `popen' function. */
+#define HAVE_POPEN 1
+
+/* Define to 1 if you have the `processor_info' function. */
+/* #undef HAVE_PROCESSOR_INFO */
+
+/* Define to 1 if `struct pst_processor' exists and contains
+ `psp_iticksperclktick'. */
+/* #undef HAVE_PSP_ITICKSPERCLKTICK */
+
+/* Define to 1 if you have the `pstat_getprocessor' function. */
+/* #undef HAVE_PSTAT_GETPROCESSOR */
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#define HAVE_PTRDIFF_T 1
+
+/* Define to 1 if the system has the type `quad_t'. */
+#define HAVE_QUAD_T 1
+
+/* Define to 1 if you have the `raise' function. */
+#define HAVE_RAISE 1
+
+/* Define to 1 if you have the `read_real_time' function. */
+/* #undef HAVE_READ_REAL_TIME */
+
+/* Define to 1 if you have the `sigaction' function. */
+#define HAVE_SIGACTION 1
+
+/* Define to 1 if you have the `sigaltstack' function. */
+#define HAVE_SIGALTSTACK 1
+
+/* Define to 1 if you have the `sigstack' function. */
+#define HAVE_SIGSTACK 1
+
+/* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */
+/* #undef HAVE_SPEED_CYCLECOUNTER */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SSTREAM 1
+
+/* Define to 1 if the system has the type `stack_t'. */
+#define HAVE_STACK_T 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if the system has the type `std::locale'. */
+#define HAVE_STD__LOCALE 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strnlen' function. */
+#define HAVE_STRNLEN 1
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if you have the `sysctl' function. */
+#define HAVE_SYSCTL 1
+
+/* Define to 1 if you have the `sysctlbyname' function. */
+/* #undef HAVE_SYSCTLBYNAME */
+
+/* Define to 1 if you have the `syssgi' function. */
+/* #undef HAVE_SYSSGI */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_ATTRIBUTES_H */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_IOGRAPH_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_PROCESSOR_H */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_PSTAT_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SYSCTL_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SYSINFO_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_SYSSGI_H */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_SYSTEMCFG_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TIMES_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `times' function. */
+#define HAVE_TIMES 1
+
+/* Define to 1 if the system has the type `uint_least32_t'. */
+#define HAVE_UINT_LEAST32_T 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `vsnprintf' function and it works properly. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 for Windos/64 */
+/* #undef HOST_DOS64 */
+
+/* Assembler local label prefix */
+#define LSYM_PREFIX ".L"
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 to disable the use of inline assembly */
+/* #undef NO_ASM */
+
+/* Name of package */
+#define PACKAGE "gmp"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "gmp-bugs@gmplib.org, see https://gmplib.org/manual/Reporting-Bugs.html"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "GNU MP"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "GNU MP 6.2.0"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "gmp"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL "http://www.gnu.org/software/gmp/"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "6.2.0"
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* The size of `mp_limb_t', as computed by sizeof. */
+#define SIZEOF_MP_LIMB_T 4
+
+/* The size of `unsigned', as computed by sizeof. */
+#define SIZEOF_UNSIGNED 4
+
+/* The size of `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 4
+
+/* The size of `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT 2
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 4
+
+/* Define to 1 if sscanf requires writable inputs */
+/* #undef SSCANF_WRITABLE_INPUT */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both and . */
+#define TIME_WITH_SYS_TIME 1
+
+/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */
+#define TUNE_SQR_TOOM2_MAX SQR_TOOM2_MAX_GENERIC
+
+/* Version number of package */
+#define VERSION "6.2.0"
+
+/* Define to 1 to enable ASSERT checking, per --enable-assert */
+/* #undef WANT_ASSERT */
+
+/* Define to 1 to enable GMP_CPU_TYPE faking cpuid, per --enable-fake-cpuid */
+/* #undef WANT_FAKE_CPUID */
+
+/* Define to 1 when building a fat binary. */
+/* #undef WANT_FAT_BINARY */
+
+/* Define to 1 to enable FFTs for multiplication, per --enable-fft */
+#define WANT_FFT 1
+
+/* Define to 1 to enable old mpn_mul_fft_full for multiplication, per
+ --enable-old-fft-full */
+/* #undef WANT_OLD_FFT_FULL */
+
+/* Define to 1 if --enable-profiling=gprof */
+/* #undef WANT_PROFILING_GPROF */
+
+/* Define to 1 if --enable-profiling=instrument */
+/* #undef WANT_PROFILING_INSTRUMENT */
+
+/* Define to 1 if --enable-profiling=prof */
+/* #undef WANT_PROFILING_PROF */
+
+/* Define one of these to 1 for the desired temporary memory allocation
+ method, per --enable-alloca. */
+#define WANT_TMP_ALLOCA 1
+/* #undef WANT_TMP_REENTRANT */
+/* #undef WANT_TMP_NOTREENTRANT */
+/* #undef WANT_TMP_DEBUG */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* # undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to 1 if the assembler understands the mulx instruction */
+/* #undef X86_ASM_MULX */
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+/* #undef YYTEXT_POINTER */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+#define restrict __restrict
+/* Work around a bug in Sun C++: it does not support _Restrict or
+ __restrict__, even though the corresponding Sun C compiler ends up with
+ "#define restrict _Restrict" or "#define restrict __restrict__" in the
+ previous line. Perhaps some future version of Sun C++ will work with
+ restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+# define __restrict__
+#endif
+
+/* Define to empty if the keyword `volatile' does not work. Warning: valid
+ code using `volatile' can become incorrect without. Disable with care. */
+/* #undef volatile */
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/config.m4 b/modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/config.m4
new file mode 100644
index 00000000000..54a046af5ed
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/config.m4
@@ -0,0 +1,37 @@
+dnl config.m4. Generated automatically by configure.
+changequote(<,>)
+ifdef(<__CONFIG_M4_INCLUDED__>,,<
+define(,<`../.'>)
+define(,0)
+define(,<`no'>)
+define(,0)
+define(,)
+define(, <.text>)
+define(, <.data>)
+define(, <:>)
+define(, <.globl>)
+define(, <>)
+define(, <>)
+define(, < .section .rodata>)
+define(, <.type $1,#$2>)
+define(, <.size $1,$2>)
+define(, <.L>)
+define(, <.long>)
+define(,)
+define(,<78>)
+define(,<41>)
+define(,<4>)
+define(,32)
+define(,0)
+define(,eval(GMP_LIMB_BITS-GMP_NAIL_BITS))
+>)
+changequote(`,')
+ifdef(`__CONFIG_M4_INCLUDED__',,`
+include(CONFIG_TOP_SRCDIR`/mpn/asm-defs.m4')
+include_mpn(`arm/arm-defs.m4')
+define_not_for_expansion(`HAVE_HOST_CPU_arm')
+define_not_for_expansion(`HAVE_ABI_32')
+define_not_for_expansion(`HAVE_LIMB_LITTLE_ENDIAN')
+define_not_for_expansion(`HAVE_DOUBLE_IEEE_LITTLE_ENDIAN')
+')
+define(`__CONFIG_M4_INCLUDED__')
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/gmp.h b/modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/gmp.h
new file mode 100644
index 00000000000..acec8640f69
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/config/arm/v7a/cora9/gmp.h
@@ -0,0 +1,2336 @@
+/* Definitions for GNU multiple precision functions. -*- mode: c -*-
+
+Copyright 1991, 1993-1997, 1999-2016, 2020 Free Software Foundation, Inc.
+
+This file is part of the GNU MP Library.
+
+The GNU MP Library is free software; you can redistribute it and/or modify
+it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+or
+
+ * the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any
+ later version.
+
+or both in parallel, as here.
+
+The GNU MP Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received copies of the GNU General Public License and the
+GNU Lesser General Public License along with the GNU MP Library. If not,
+see https://www.gnu.org/licenses/. */
+
+#ifndef __GMP_H__
+
+#if defined (__cplusplus)
+#include /* for std::istream, std::ostream, std::string */
+#include
+#endif
+
+
+/* Instantiated by configure. */
+#if ! defined (__GMP_WITHIN_CONFIGURE)
+#define __GMP_HAVE_HOST_CPU_FAMILY_power 0
+#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0
+#define GMP_LIMB_BITS 32
+#define GMP_NAIL_BITS 0
+#endif
+#define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS)
+#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS)
+#define GMP_NUMB_MAX GMP_NUMB_MASK
+#define GMP_NAIL_MASK (~ GMP_NUMB_MASK)
+
+
+#ifndef __GNU_MP__
+#define __GNU_MP__ 6
+
+#include /* for size_t */
+#include
+
+/* Instantiated by configure. */
+#if ! defined (__GMP_WITHIN_CONFIGURE)
+/* #undef _LONG_LONG_LIMB */
+#define __GMP_LIBGMP_DLL 0
+#endif
+
+
+/* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in
+ all other circumstances.
+
+ When compiling objects for libgmp, __GMP_DECLSPEC is an export directive,
+ or when compiling for an application it's an import directive. The two
+ cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles
+ (and not defined from an application).
+
+ __GMP_DECLSPEC_XX is similarly used for libgmpxx. __GMP_WITHIN_GMPXX
+ indicates when building libgmpxx, and in that case libgmpxx functions are
+ exports, but libgmp functions which might get called are imports.
+
+ Libtool DLL_EXPORT define is not used.
+
+ There's no attempt to support GMP built both static and DLL. Doing so
+ would mean applications would have to tell us which of the two is going
+ to be used when linking, and that seems very tedious and error prone if
+ using GMP by hand, and equally tedious from a package since autoconf and
+ automake don't give much help.
+
+ __GMP_DECLSPEC is required on all documented global functions and
+ variables, the various internals in gmp-impl.h etc can be left unadorned.
+ But internals used by the test programs or speed measuring programs
+ should have __GMP_DECLSPEC, and certainly constants or variables must
+ have it or the wrong address will be resolved.
+
+ In gcc __declspec can go at either the start or end of a prototype.
+
+ In Microsoft C __declspec must go at the start, or after the type like
+ void __declspec(...) *foo()". There's no __dllexport or anything to
+ guard against someone foolish #defining dllexport. _export used to be
+ available, but no longer.
+
+ In Borland C _export still exists, but needs to go after the type, like
+ "void _export foo();". Would have to change the __GMP_DECLSPEC syntax to
+ make use of that. Probably more trouble than it's worth. */
+
+#if defined (__GNUC__)
+#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__)
+#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__)
+#endif
+#if defined (_MSC_VER) || defined (__BORLANDC__)
+#define __GMP_DECLSPEC_EXPORT __declspec(dllexport)
+#define __GMP_DECLSPEC_IMPORT __declspec(dllimport)
+#endif
+#ifdef __WATCOMC__
+#define __GMP_DECLSPEC_EXPORT __export
+#define __GMP_DECLSPEC_IMPORT __import
+#endif
+#ifdef __IBMC__
+#define __GMP_DECLSPEC_EXPORT _Export
+#define __GMP_DECLSPEC_IMPORT _Import
+#endif
+
+#if __GMP_LIBGMP_DLL
+#ifdef __GMP_WITHIN_GMP
+/* compiling to go into a DLL libgmp */
+#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT
+#else
+/* compiling to go into an application which will link to a DLL libgmp */
+#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT
+#endif
+#else
+/* all other cases */
+#define __GMP_DECLSPEC
+#endif
+
+
+#ifdef __GMP_SHORT_LIMB
+typedef unsigned int mp_limb_t;
+typedef int mp_limb_signed_t;
+#else
+#ifdef _LONG_LONG_LIMB
+typedef unsigned long long int mp_limb_t;
+typedef long long int mp_limb_signed_t;
+#else
+typedef unsigned long int mp_limb_t;
+typedef long int mp_limb_signed_t;
+#endif
+#endif
+typedef unsigned long int mp_bitcnt_t;
+
+/* For reference, note that the name __mpz_struct gets into C++ mangled
+ function names, which means although the "__" suggests an internal, we
+ must leave this name for binary compatibility. */
+typedef struct
+{
+ int _mp_alloc; /* Number of *limbs* allocated and pointed
+ to by the _mp_d field. */
+ int _mp_size; /* abs(_mp_size) is the number of limbs the
+ last field points to. If _mp_size is
+ negative this is a negative number. */
+ mp_limb_t *_mp_d; /* Pointer to the limbs. */
+} __mpz_struct;
+
+#endif /* __GNU_MP__ */
+
+
+typedef __mpz_struct MP_INT; /* gmp 1 source compatibility */
+typedef __mpz_struct mpz_t[1];
+
+typedef mp_limb_t * mp_ptr;
+typedef const mp_limb_t * mp_srcptr;
+#if defined (_CRAY) && ! defined (_CRAYMPP)
+/* plain `int' is much faster (48 bits) */
+#define __GMP_MP_SIZE_T_INT 1
+typedef int mp_size_t;
+typedef int mp_exp_t;
+#else
+#define __GMP_MP_SIZE_T_INT 0
+typedef long int mp_size_t;
+typedef long int mp_exp_t;
+#endif
+
+typedef struct
+{
+ __mpz_struct _mp_num;
+ __mpz_struct _mp_den;
+} __mpq_struct;
+
+typedef __mpq_struct MP_RAT; /* gmp 1 source compatibility */
+typedef __mpq_struct mpq_t[1];
+
+typedef struct
+{
+ int _mp_prec; /* Max precision, in number of `mp_limb_t's.
+ Set by mpf_init and modified by
+ mpf_set_prec. The area pointed to by the
+ _mp_d field contains `prec' + 1 limbs. */
+ int _mp_size; /* abs(_mp_size) is the number of limbs the
+ last field points to. If _mp_size is
+ negative this is a negative number. */
+ mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */
+ mp_limb_t *_mp_d; /* Pointer to the limbs. */
+} __mpf_struct;
+
+/* typedef __mpf_struct MP_FLOAT; */
+typedef __mpf_struct mpf_t[1];
+
+/* Available random number generation algorithms. */
+typedef enum
+{
+ GMP_RAND_ALG_DEFAULT = 0,
+ GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */
+} gmp_randalg_t;
+
+/* Random state struct. */
+typedef struct
+{
+ mpz_t _mp_seed; /* _mp_d member points to state of the generator. */
+ gmp_randalg_t _mp_alg; /* Currently unused. */
+ union {
+ void *_mp_lc; /* Pointer to function pointers structure. */
+ } _mp_algdata;
+} __gmp_randstate_struct;
+typedef __gmp_randstate_struct gmp_randstate_t[1];
+
+/* Types for function declarations in gmp files. */
+/* ??? Should not pollute user name space with these ??? */
+typedef const __mpz_struct *mpz_srcptr;
+typedef __mpz_struct *mpz_ptr;
+typedef const __mpf_struct *mpf_srcptr;
+typedef __mpf_struct *mpf_ptr;
+typedef const __mpq_struct *mpq_srcptr;
+typedef __mpq_struct *mpq_ptr;
+
+
+#if __GMP_LIBGMP_DLL
+#ifdef __GMP_WITHIN_GMPXX
+/* compiling to go into a DLL libgmpxx */
+#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT
+#else
+/* compiling to go into a application which will link to a DLL libgmpxx */
+#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT
+#endif
+#else
+/* all other cases */
+#define __GMP_DECLSPEC_XX
+#endif
+
+
+#ifndef __MPN
+#define __MPN(x) __gmpn_##x
+#endif
+
+/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4,
+ defines EOF but not FILE. */
+#if defined (FILE) \
+ || defined (H_STDIO) \
+ || defined (_H_STDIO) /* AIX */ \
+ || defined (_STDIO_H) /* glibc, Sun, SCO */ \
+ || defined (_STDIO_H_) /* BSD, OSF */ \
+ || defined (__STDIO_H) /* Borland */ \
+ || defined (__STDIO_H__) /* IRIX */ \
+ || defined (_STDIO_INCLUDED) /* HPUX */ \
+ || defined (__dj_include_stdio_h_) /* DJGPP */ \
+ || defined (_FILE_DEFINED) /* Microsoft */ \
+ || defined (__STDIO__) /* Apple MPW MrC */ \
+ || defined (_MSL_STDIO_H) /* Metrowerks */ \
+ || defined (_STDIO_H_INCLUDED) /* QNX4 */ \
+ || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \
+ || defined (__STDIO_LOADED) /* VMS */ \
+ || defined (__DEFINED_FILE) /* musl */
+#define _GMP_H_HAVE_FILE 1
+#endif
+
+/* In ISO C, if a prototype involving "struct obstack *" is given without
+ that structure defined, then the struct is scoped down to just the
+ prototype, causing a conflict if it's subsequently defined for real. So
+ only give prototypes if we've got obstack.h. */
+#if defined (_OBSTACK_H) /* glibc */
+#define _GMP_H_HAVE_OBSTACK 1
+#endif
+
+/* The prototypes for gmp_vprintf etc are provided only if va_list is defined,
+ via an application having included . Usually va_list is a typedef
+ so can't be tested directly, but C99 specifies that va_start is a macro.
+
+ will define some sort of va_list for vprintf and vfprintf, but
+ let's not bother trying to use that since it's not standard and since
+ application uses for gmp_vprintf etc will almost certainly require the
+ whole anyway. */
+
+#ifdef va_start
+#define _GMP_H_HAVE_VA_LIST 1
+#endif
+
+/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
+#if defined (__GNUC__) && defined (__GNUC_MINOR__)
+#define __GMP_GNUC_PREREQ(maj, min) \
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+#define __GMP_GNUC_PREREQ(maj, min) 0
+#endif
+
+/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically
+ it means a function does nothing but examine its arguments and memory
+ (global or via arguments) to generate a return value, but changes nothing
+ and has no side-effects. __GMP_NO_ATTRIBUTE_CONST_PURE lets
+ tune/common.c etc turn this off when trying to write timing loops. */
+#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE)
+#define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+#define __GMP_ATTRIBUTE_PURE
+#endif
+
+
+/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean
+ to "g++ -Wold-style-cast".
+
+ Casts in "extern inline" code within an extern "C" block don't induce
+ these warnings, so __GMP_CAST only needs to be used on documented
+ macros. */
+
+#ifdef __cplusplus
+#define __GMP_CAST(type, expr) (static_cast (expr))
+#else
+#define __GMP_CAST(type, expr) ((type) (expr))
+#endif
+
+
+/* An empty "throw ()" means the function doesn't throw any C++ exceptions,
+ this can save some stack frame info in applications.
+
+ Currently it's given only on functions which never divide-by-zero etc,
+ don't allocate memory, and are expected to never need to allocate memory.
+ This leaves open the possibility of a C++ throw from a future GMP
+ exceptions scheme.
+
+ mpz_set_ui etc are omitted to leave open the lazy allocation scheme
+ described in doc/tasks.html. mpz_get_d etc are omitted to leave open
+ exceptions for float overflows.
+
+ Note that __GMP_NOTHROW must be given on any inlines the same as on their
+ prototypes (for g++ at least, where they're used together). Note also
+ that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like
+ __GMP_ATTRIBUTE_PURE. */
+
+#if defined (__cplusplus)
+#if __cplusplus >= 201103L
+#define __GMP_NOTHROW noexcept
+#else
+#define __GMP_NOTHROW throw ()
+#endif
+#else
+#define __GMP_NOTHROW
+#endif
+
+
+/* PORTME: What other compilers have a useful "extern inline"? "static
+ inline" would be an acceptable substitute if the compiler (or linker)
+ discards unused statics. */
+
+ /* gcc has __inline__ in all modes, including strict ansi. Give a prototype
+ for an inline too, so as to correctly specify "dllimport" on windows, in
+ case the function is called rather than inlined.
+ GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+ inline semantics, unless -fgnu89-inline is used. */
+#ifdef __GNUC__
+#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2) \
+ || (defined __GNUC_GNU_INLINE__ && defined __cplusplus)
+#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
+#else
+#define __GMP_EXTERN_INLINE extern __inline__
+#endif
+#define __GMP_INLINE_PROTOTYPES 1
+#endif
+
+/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1
+ strict ANSI mode. Inlining is done even when not optimizing (ie. -O0
+ mode, which is the default), but an unnecessary local copy of foo is
+ emitted unless -O is used. "extern __inline" is accepted, but the
+ "extern" appears to be ignored, ie. it becomes a plain global function
+ but which is inlined within its file. Don't know if all old versions of
+ DEC C supported __inline, but as a start let's do the right thing for
+ current versions. */
+#ifdef __DECC
+#define __GMP_EXTERN_INLINE static __inline
+#endif
+
+/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict
+ ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes
+ place under -O. Without -O "foo" seems to be emitted whether it's used
+ or not, which is wasteful. "extern inline foo()" isn't useful, the
+ "extern" is apparently ignored, so foo is inlined if possible but also
+ emitted as a global, which causes multiple definition errors when
+ building a shared libgmp. */
+#ifdef __SCO_VERSION__
+#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \
+ && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE static inline
+#endif
+#endif
+
+/* Microsoft's C compiler accepts __inline */
+#ifdef _MSC_VER
+#define __GMP_EXTERN_INLINE __inline
+#endif
+
+/* Recent enough Sun C compilers want "inline" */
+#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \
+ && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE inline
+#endif
+
+/* Somewhat older Sun C compilers want "static inline" */
+#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \
+ && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE static inline
+#endif
+
+
+/* C++ always has "inline" and since it's a normal feature the linker should
+ discard duplicate non-inlined copies, or if it doesn't then that's a
+ problem for everyone, not just GMP. */
+#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE inline
+#endif
+
+/* Don't do any inlining within a configure run, since if the compiler ends
+ up emitting copies of the code into the object file it can end up
+ demanding the various support routines (like mpn_popcount) for linking,
+ making the "alloca" test and perhaps others fail. And on hppa ia64 a
+ pre-release gcc 3.2 was seen not respecting the "extern" in "extern
+ __inline__", triggering this problem too. */
+#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE
+#undef __GMP_EXTERN_INLINE
+#endif
+
+/* By default, don't give a prototype when there's going to be an inline
+ version. Note in particular that Cray C++ objects to the combination of
+ prototype and inline. */
+#ifdef __GMP_EXTERN_INLINE
+#ifndef __GMP_INLINE_PROTOTYPES
+#define __GMP_INLINE_PROTOTYPES 0
+#endif
+#else
+#define __GMP_INLINE_PROTOTYPES 1
+#endif
+
+
+#define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x))
+#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i))
+
+
+/* __builtin_expect is in gcc 3.0, and not in 2.95. */
+#if __GMP_GNUC_PREREQ (3,0)
+#define __GMP_LIKELY(cond) __builtin_expect ((cond) != 0, 1)
+#define __GMP_UNLIKELY(cond) __builtin_expect ((cond) != 0, 0)
+#else
+#define __GMP_LIKELY(cond) (cond)
+#define __GMP_UNLIKELY(cond) (cond)
+#endif
+
+#ifdef _CRAY
+#define __GMP_CRAY_Pragma(str) _Pragma (str)
+#else
+#define __GMP_CRAY_Pragma(str)
+#endif
+
+
+/* Allow direct user access to numerator and denominator of an mpq_t object. */
+#define mpq_numref(Q) (&((Q)->_mp_num))
+#define mpq_denref(Q) (&((Q)->_mp_den))
+
+
+#if defined (__cplusplus)
+extern "C" {
+using std::FILE;
+#endif
+
+#define mp_set_memory_functions __gmp_set_memory_functions
+__GMP_DECLSPEC void mp_set_memory_functions (void *(*) (size_t),
+ void *(*) (void *, size_t, size_t),
+ void (*) (void *, size_t)) __GMP_NOTHROW;
+
+#define mp_get_memory_functions __gmp_get_memory_functions
+__GMP_DECLSPEC void mp_get_memory_functions (void *(**) (size_t),
+ void *(**) (void *, size_t, size_t),
+ void (**) (void *, size_t)) __GMP_NOTHROW;
+
+#define mp_bits_per_limb __gmp_bits_per_limb
+__GMP_DECLSPEC extern const int mp_bits_per_limb;
+
+#define gmp_errno __gmp_errno
+__GMP_DECLSPEC extern int gmp_errno;
+
+#define gmp_version __gmp_version
+__GMP_DECLSPEC extern const char * const gmp_version;
+
+
+/**************** Random number routines. ****************/
+
+/* obsolete */
+#define gmp_randinit __gmp_randinit
+__GMP_DECLSPEC void gmp_randinit (gmp_randstate_t, gmp_randalg_t, ...);
+
+#define gmp_randinit_default __gmp_randinit_default
+__GMP_DECLSPEC void gmp_randinit_default (gmp_randstate_t);
+
+#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp
+__GMP_DECLSPEC void gmp_randinit_lc_2exp (gmp_randstate_t, mpz_srcptr, unsigned long int, mp_bitcnt_t);
+
+#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size
+__GMP_DECLSPEC int gmp_randinit_lc_2exp_size (gmp_randstate_t, mp_bitcnt_t);
+
+#define gmp_randinit_mt __gmp_randinit_mt
+__GMP_DECLSPEC void gmp_randinit_mt (gmp_randstate_t);
+
+#define gmp_randinit_set __gmp_randinit_set
+__GMP_DECLSPEC void gmp_randinit_set (gmp_randstate_t, const __gmp_randstate_struct *);
+
+#define gmp_randseed __gmp_randseed
+__GMP_DECLSPEC void gmp_randseed (gmp_randstate_t, mpz_srcptr);
+
+#define gmp_randseed_ui __gmp_randseed_ui
+__GMP_DECLSPEC void gmp_randseed_ui (gmp_randstate_t, unsigned long int);
+
+#define gmp_randclear __gmp_randclear
+__GMP_DECLSPEC void gmp_randclear (gmp_randstate_t);
+
+#define gmp_urandomb_ui __gmp_urandomb_ui
+__GMP_DECLSPEC unsigned long gmp_urandomb_ui (gmp_randstate_t, unsigned long);
+
+#define gmp_urandomm_ui __gmp_urandomm_ui
+__GMP_DECLSPEC unsigned long gmp_urandomm_ui (gmp_randstate_t, unsigned long);
+
+
+/**************** Formatted output routines. ****************/
+
+#define gmp_asprintf __gmp_asprintf
+__GMP_DECLSPEC int gmp_asprintf (char **, const char *, ...);
+
+#define gmp_fprintf __gmp_fprintf
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC int gmp_fprintf (FILE *, const char *, ...);
+#endif
+
+#define gmp_obstack_printf __gmp_obstack_printf
+#if defined (_GMP_H_HAVE_OBSTACK)
+__GMP_DECLSPEC int gmp_obstack_printf (struct obstack *, const char *, ...);
+#endif
+
+#define gmp_obstack_vprintf __gmp_obstack_vprintf
+#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_obstack_vprintf (struct obstack *, const char *, va_list);
+#endif
+
+#define gmp_printf __gmp_printf
+__GMP_DECLSPEC int gmp_printf (const char *, ...);
+
+#define gmp_snprintf __gmp_snprintf
+__GMP_DECLSPEC int gmp_snprintf (char *, size_t, const char *, ...);
+
+#define gmp_sprintf __gmp_sprintf
+__GMP_DECLSPEC int gmp_sprintf (char *, const char *, ...);
+
+#define gmp_vasprintf __gmp_vasprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vasprintf (char **, const char *, va_list);
+#endif
+
+#define gmp_vfprintf __gmp_vfprintf
+#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vfprintf (FILE *, const char *, va_list);
+#endif
+
+#define gmp_vprintf __gmp_vprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vprintf (const char *, va_list);
+#endif
+
+#define gmp_vsnprintf __gmp_vsnprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vsnprintf (char *, size_t, const char *, va_list);
+#endif
+
+#define gmp_vsprintf __gmp_vsprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vsprintf (char *, const char *, va_list);
+#endif
+
+
+/**************** Formatted input routines. ****************/
+
+#define gmp_fscanf __gmp_fscanf
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC int gmp_fscanf (FILE *, const char *, ...);
+#endif
+
+#define gmp_scanf __gmp_scanf
+__GMP_DECLSPEC int gmp_scanf (const char *, ...);
+
+#define gmp_sscanf __gmp_sscanf
+__GMP_DECLSPEC int gmp_sscanf (const char *, const char *, ...);
+
+#define gmp_vfscanf __gmp_vfscanf
+#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vfscanf (FILE *, const char *, va_list);
+#endif
+
+#define gmp_vscanf __gmp_vscanf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vscanf (const char *, va_list);
+#endif
+
+#define gmp_vsscanf __gmp_vsscanf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vsscanf (const char *, const char *, va_list);
+#endif
+
+
+/**************** Integer (i.e. Z) routines. ****************/
+
+#define _mpz_realloc __gmpz_realloc
+#define mpz_realloc __gmpz_realloc
+__GMP_DECLSPEC void *_mpz_realloc (mpz_ptr, mp_size_t);
+
+#define mpz_abs __gmpz_abs
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs)
+__GMP_DECLSPEC void mpz_abs (mpz_ptr, mpz_srcptr);
+#endif
+
+#define mpz_add __gmpz_add
+__GMP_DECLSPEC void mpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_add_ui __gmpz_add_ui
+__GMP_DECLSPEC void mpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_addmul __gmpz_addmul
+__GMP_DECLSPEC void mpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_addmul_ui __gmpz_addmul_ui
+__GMP_DECLSPEC void mpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_and __gmpz_and
+__GMP_DECLSPEC void mpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_array_init __gmpz_array_init
+__GMP_DECLSPEC void mpz_array_init (mpz_ptr, mp_size_t, mp_size_t);
+
+#define mpz_bin_ui __gmpz_bin_ui
+__GMP_DECLSPEC void mpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_bin_uiui __gmpz_bin_uiui
+__GMP_DECLSPEC void mpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int);
+
+#define mpz_cdiv_q __gmpz_cdiv_q
+__GMP_DECLSPEC void mpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp
+__GMP_DECLSPEC void mpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_cdiv_qr __gmpz_cdiv_qr
+__GMP_DECLSPEC void mpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_cdiv_r __gmpz_cdiv_r
+__GMP_DECLSPEC void mpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp
+__GMP_DECLSPEC void mpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_cdiv_ui __gmpz_cdiv_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_clear __gmpz_clear
+__GMP_DECLSPEC void mpz_clear (mpz_ptr);
+
+#define mpz_clears __gmpz_clears
+__GMP_DECLSPEC void mpz_clears (mpz_ptr, ...);
+
+#define mpz_clrbit __gmpz_clrbit
+__GMP_DECLSPEC void mpz_clrbit (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_cmp __gmpz_cmp
+__GMP_DECLSPEC int mpz_cmp (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmp_d __gmpz_cmp_d
+__GMP_DECLSPEC int mpz_cmp_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE;
+
+#define _mpz_cmp_si __gmpz_cmp_si
+__GMP_DECLSPEC int _mpz_cmp_si (mpz_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define _mpz_cmp_ui __gmpz_cmp_ui
+__GMP_DECLSPEC int _mpz_cmp_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmpabs __gmpz_cmpabs
+__GMP_DECLSPEC int mpz_cmpabs (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmpabs_d __gmpz_cmpabs_d
+__GMP_DECLSPEC int mpz_cmpabs_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmpabs_ui __gmpz_cmpabs_ui
+__GMP_DECLSPEC int mpz_cmpabs_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_com __gmpz_com
+__GMP_DECLSPEC void mpz_com (mpz_ptr, mpz_srcptr);
+
+#define mpz_combit __gmpz_combit
+__GMP_DECLSPEC void mpz_combit (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_congruent_p __gmpz_congruent_p
+__GMP_DECLSPEC int mpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p
+__GMP_DECLSPEC int mpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_congruent_ui_p __gmpz_congruent_ui_p
+__GMP_DECLSPEC int mpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_divexact __gmpz_divexact
+__GMP_DECLSPEC void mpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_divexact_ui __gmpz_divexact_ui
+__GMP_DECLSPEC void mpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long);
+
+#define mpz_divisible_p __gmpz_divisible_p
+__GMP_DECLSPEC int mpz_divisible_p (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_divisible_ui_p __gmpz_divisible_ui_p
+__GMP_DECLSPEC int mpz_divisible_ui_p (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p
+__GMP_DECLSPEC int mpz_divisible_2exp_p (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_dump __gmpz_dump
+__GMP_DECLSPEC void mpz_dump (mpz_srcptr);
+
+#define mpz_export __gmpz_export
+__GMP_DECLSPEC void *mpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr);
+
+#define mpz_fac_ui __gmpz_fac_ui
+__GMP_DECLSPEC void mpz_fac_ui (mpz_ptr, unsigned long int);
+
+#define mpz_2fac_ui __gmpz_2fac_ui
+__GMP_DECLSPEC void mpz_2fac_ui (mpz_ptr, unsigned long int);
+
+#define mpz_mfac_uiui __gmpz_mfac_uiui
+__GMP_DECLSPEC void mpz_mfac_uiui (mpz_ptr, unsigned long int, unsigned long int);
+
+#define mpz_primorial_ui __gmpz_primorial_ui
+__GMP_DECLSPEC void mpz_primorial_ui (mpz_ptr, unsigned long int);
+
+#define mpz_fdiv_q __gmpz_fdiv_q
+__GMP_DECLSPEC void mpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp
+__GMP_DECLSPEC void mpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_fdiv_qr __gmpz_fdiv_qr
+__GMP_DECLSPEC void mpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_fdiv_r __gmpz_fdiv_r
+__GMP_DECLSPEC void mpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp
+__GMP_DECLSPEC void mpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_fdiv_ui __gmpz_fdiv_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fib_ui __gmpz_fib_ui
+__GMP_DECLSPEC void mpz_fib_ui (mpz_ptr, unsigned long int);
+
+#define mpz_fib2_ui __gmpz_fib2_ui
+__GMP_DECLSPEC void mpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int);
+
+#define mpz_fits_sint_p __gmpz_fits_sint_p
+__GMP_DECLSPEC int mpz_fits_sint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fits_slong_p __gmpz_fits_slong_p
+__GMP_DECLSPEC int mpz_fits_slong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fits_sshort_p __gmpz_fits_sshort_p
+__GMP_DECLSPEC int mpz_fits_sshort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fits_uint_p __gmpz_fits_uint_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p)
+__GMP_DECLSPEC int mpz_fits_uint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_fits_ulong_p __gmpz_fits_ulong_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p)
+__GMP_DECLSPEC int mpz_fits_ulong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_fits_ushort_p __gmpz_fits_ushort_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p)
+__GMP_DECLSPEC int mpz_fits_ushort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_gcd __gmpz_gcd
+__GMP_DECLSPEC void mpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_gcd_ui __gmpz_gcd_ui
+__GMP_DECLSPEC unsigned long int mpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_gcdext __gmpz_gcdext
+__GMP_DECLSPEC void mpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_get_d __gmpz_get_d
+__GMP_DECLSPEC double mpz_get_d (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_get_d_2exp __gmpz_get_d_2exp
+__GMP_DECLSPEC double mpz_get_d_2exp (signed long int *, mpz_srcptr);
+
+#define mpz_get_si __gmpz_get_si
+__GMP_DECLSPEC /* signed */ long int mpz_get_si (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_get_str __gmpz_get_str
+__GMP_DECLSPEC char *mpz_get_str (char *, int, mpz_srcptr);
+
+#define mpz_get_ui __gmpz_get_ui
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui)
+__GMP_DECLSPEC unsigned long int mpz_get_ui (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_getlimbn __gmpz_getlimbn
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn)
+__GMP_DECLSPEC mp_limb_t mpz_getlimbn (mpz_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_hamdist __gmpz_hamdist
+__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_import __gmpz_import
+__GMP_DECLSPEC void mpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *);
+
+#define mpz_init __gmpz_init
+__GMP_DECLSPEC void mpz_init (mpz_ptr) __GMP_NOTHROW;
+
+#define mpz_init2 __gmpz_init2
+__GMP_DECLSPEC void mpz_init2 (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_inits __gmpz_inits
+__GMP_DECLSPEC void mpz_inits (mpz_ptr, ...) __GMP_NOTHROW;
+
+#define mpz_init_set __gmpz_init_set
+__GMP_DECLSPEC void mpz_init_set (mpz_ptr, mpz_srcptr);
+
+#define mpz_init_set_d __gmpz_init_set_d
+__GMP_DECLSPEC void mpz_init_set_d (mpz_ptr, double);
+
+#define mpz_init_set_si __gmpz_init_set_si
+__GMP_DECLSPEC void mpz_init_set_si (mpz_ptr, signed long int);
+
+#define mpz_init_set_str __gmpz_init_set_str
+__GMP_DECLSPEC int mpz_init_set_str (mpz_ptr, const char *, int);
+
+#define mpz_init_set_ui __gmpz_init_set_ui
+__GMP_DECLSPEC void mpz_init_set_ui (mpz_ptr, unsigned long int);
+
+#define mpz_inp_raw __gmpz_inp_raw
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_inp_raw (mpz_ptr, FILE *);
+#endif
+
+#define mpz_inp_str __gmpz_inp_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_inp_str (mpz_ptr, FILE *, int);
+#endif
+
+#define mpz_invert __gmpz_invert
+__GMP_DECLSPEC int mpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_ior __gmpz_ior
+__GMP_DECLSPEC void mpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_jacobi __gmpz_jacobi
+__GMP_DECLSPEC int mpz_jacobi (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_kronecker mpz_jacobi /* alias */
+
+#define mpz_kronecker_si __gmpz_kronecker_si
+__GMP_DECLSPEC int mpz_kronecker_si (mpz_srcptr, long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_kronecker_ui __gmpz_kronecker_ui
+__GMP_DECLSPEC int mpz_kronecker_ui (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_si_kronecker __gmpz_si_kronecker
+__GMP_DECLSPEC int mpz_si_kronecker (long, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_ui_kronecker __gmpz_ui_kronecker
+__GMP_DECLSPEC int mpz_ui_kronecker (unsigned long, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_lcm __gmpz_lcm
+__GMP_DECLSPEC void mpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_lcm_ui __gmpz_lcm_ui
+__GMP_DECLSPEC void mpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long);
+
+#define mpz_legendre mpz_jacobi /* alias */
+
+#define mpz_lucnum_ui __gmpz_lucnum_ui
+__GMP_DECLSPEC void mpz_lucnum_ui (mpz_ptr, unsigned long int);
+
+#define mpz_lucnum2_ui __gmpz_lucnum2_ui
+__GMP_DECLSPEC void mpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int);
+
+#define mpz_millerrabin __gmpz_millerrabin
+__GMP_DECLSPEC int mpz_millerrabin (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_mod __gmpz_mod
+__GMP_DECLSPEC void mpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */
+
+#define mpz_mul __gmpz_mul
+__GMP_DECLSPEC void mpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_mul_2exp __gmpz_mul_2exp
+__GMP_DECLSPEC void mpz_mul_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_mul_si __gmpz_mul_si
+__GMP_DECLSPEC void mpz_mul_si (mpz_ptr, mpz_srcptr, long int);
+
+#define mpz_mul_ui __gmpz_mul_ui
+__GMP_DECLSPEC void mpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_neg __gmpz_neg
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg)
+__GMP_DECLSPEC void mpz_neg (mpz_ptr, mpz_srcptr);
+#endif
+
+#define mpz_nextprime __gmpz_nextprime
+__GMP_DECLSPEC void mpz_nextprime (mpz_ptr, mpz_srcptr);
+
+#define mpz_out_raw __gmpz_out_raw
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_out_raw (FILE *, mpz_srcptr);
+#endif
+
+#define mpz_out_str __gmpz_out_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr);
+#endif
+
+#define mpz_perfect_power_p __gmpz_perfect_power_p
+__GMP_DECLSPEC int mpz_perfect_power_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_perfect_square_p __gmpz_perfect_square_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p)
+__GMP_DECLSPEC int mpz_perfect_square_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_popcount __gmpz_popcount
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount)
+__GMP_DECLSPEC mp_bitcnt_t mpz_popcount (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_pow_ui __gmpz_pow_ui
+__GMP_DECLSPEC void mpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_powm __gmpz_powm
+__GMP_DECLSPEC void mpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_powm_sec __gmpz_powm_sec
+__GMP_DECLSPEC void mpz_powm_sec (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_powm_ui __gmpz_powm_ui
+__GMP_DECLSPEC void mpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr);
+
+#define mpz_probab_prime_p __gmpz_probab_prime_p
+__GMP_DECLSPEC int mpz_probab_prime_p (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_random __gmpz_random
+__GMP_DECLSPEC void mpz_random (mpz_ptr, mp_size_t);
+
+#define mpz_random2 __gmpz_random2
+__GMP_DECLSPEC void mpz_random2 (mpz_ptr, mp_size_t);
+
+#define mpz_realloc2 __gmpz_realloc2
+__GMP_DECLSPEC void mpz_realloc2 (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_remove __gmpz_remove
+__GMP_DECLSPEC mp_bitcnt_t mpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_root __gmpz_root
+__GMP_DECLSPEC int mpz_root (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_rootrem __gmpz_rootrem
+__GMP_DECLSPEC void mpz_rootrem (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_rrandomb __gmpz_rrandomb
+__GMP_DECLSPEC void mpz_rrandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t);
+
+#define mpz_scan0 __gmpz_scan0
+__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_scan1 __gmpz_scan1
+__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_set __gmpz_set
+__GMP_DECLSPEC void mpz_set (mpz_ptr, mpz_srcptr);
+
+#define mpz_set_d __gmpz_set_d
+__GMP_DECLSPEC void mpz_set_d (mpz_ptr, double);
+
+#define mpz_set_f __gmpz_set_f
+__GMP_DECLSPEC void mpz_set_f (mpz_ptr, mpf_srcptr);
+
+#define mpz_set_q __gmpz_set_q
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q)
+__GMP_DECLSPEC void mpz_set_q (mpz_ptr, mpq_srcptr);
+#endif
+
+#define mpz_set_si __gmpz_set_si
+__GMP_DECLSPEC void mpz_set_si (mpz_ptr, signed long int);
+
+#define mpz_set_str __gmpz_set_str
+__GMP_DECLSPEC int mpz_set_str (mpz_ptr, const char *, int);
+
+#define mpz_set_ui __gmpz_set_ui
+__GMP_DECLSPEC void mpz_set_ui (mpz_ptr, unsigned long int);
+
+#define mpz_setbit __gmpz_setbit
+__GMP_DECLSPEC void mpz_setbit (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_size __gmpz_size
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size)
+__GMP_DECLSPEC size_t mpz_size (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_sizeinbase __gmpz_sizeinbase
+__GMP_DECLSPEC size_t mpz_sizeinbase (mpz_srcptr, int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_sqrt __gmpz_sqrt
+__GMP_DECLSPEC void mpz_sqrt (mpz_ptr, mpz_srcptr);
+
+#define mpz_sqrtrem __gmpz_sqrtrem
+__GMP_DECLSPEC void mpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr);
+
+#define mpz_sub __gmpz_sub
+__GMP_DECLSPEC void mpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_sub_ui __gmpz_sub_ui
+__GMP_DECLSPEC void mpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_ui_sub __gmpz_ui_sub
+__GMP_DECLSPEC void mpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr);
+
+#define mpz_submul __gmpz_submul
+__GMP_DECLSPEC void mpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_submul_ui __gmpz_submul_ui
+__GMP_DECLSPEC void mpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_swap __gmpz_swap
+__GMP_DECLSPEC void mpz_swap (mpz_ptr, mpz_ptr) __GMP_NOTHROW;
+
+#define mpz_tdiv_ui __gmpz_tdiv_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_tdiv_q __gmpz_tdiv_q
+__GMP_DECLSPEC void mpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp
+__GMP_DECLSPEC void mpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_tdiv_qr __gmpz_tdiv_qr
+__GMP_DECLSPEC void mpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_tdiv_r __gmpz_tdiv_r
+__GMP_DECLSPEC void mpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp
+__GMP_DECLSPEC void mpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_tstbit __gmpz_tstbit
+__GMP_DECLSPEC int mpz_tstbit (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_ui_pow_ui __gmpz_ui_pow_ui
+__GMP_DECLSPEC void mpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int);
+
+#define mpz_urandomb __gmpz_urandomb
+__GMP_DECLSPEC void mpz_urandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t);
+
+#define mpz_urandomm __gmpz_urandomm
+__GMP_DECLSPEC void mpz_urandomm (mpz_ptr, gmp_randstate_t, mpz_srcptr);
+
+#define mpz_xor __gmpz_xor
+#define mpz_eor __gmpz_xor
+__GMP_DECLSPEC void mpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_limbs_read __gmpz_limbs_read
+__GMP_DECLSPEC mp_srcptr mpz_limbs_read (mpz_srcptr);
+
+#define mpz_limbs_write __gmpz_limbs_write
+__GMP_DECLSPEC mp_ptr mpz_limbs_write (mpz_ptr, mp_size_t);
+
+#define mpz_limbs_modify __gmpz_limbs_modify
+__GMP_DECLSPEC mp_ptr mpz_limbs_modify (mpz_ptr, mp_size_t);
+
+#define mpz_limbs_finish __gmpz_limbs_finish
+__GMP_DECLSPEC void mpz_limbs_finish (mpz_ptr, mp_size_t);
+
+#define mpz_roinit_n __gmpz_roinit_n
+__GMP_DECLSPEC mpz_srcptr mpz_roinit_n (mpz_ptr, mp_srcptr, mp_size_t);
+
+#define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }}
+
+/**************** Rational (i.e. Q) routines. ****************/
+
+#define mpq_abs __gmpq_abs
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs)
+__GMP_DECLSPEC void mpq_abs (mpq_ptr, mpq_srcptr);
+#endif
+
+#define mpq_add __gmpq_add
+__GMP_DECLSPEC void mpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_canonicalize __gmpq_canonicalize
+__GMP_DECLSPEC void mpq_canonicalize (mpq_ptr);
+
+#define mpq_clear __gmpq_clear
+__GMP_DECLSPEC void mpq_clear (mpq_ptr);
+
+#define mpq_clears __gmpq_clears
+__GMP_DECLSPEC void mpq_clears (mpq_ptr, ...);
+
+#define mpq_cmp __gmpq_cmp
+__GMP_DECLSPEC int mpq_cmp (mpq_srcptr, mpq_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define _mpq_cmp_si __gmpq_cmp_si
+__GMP_DECLSPEC int _mpq_cmp_si (mpq_srcptr, long, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define _mpq_cmp_ui __gmpq_cmp_ui
+__GMP_DECLSPEC int _mpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpq_cmp_z __gmpq_cmp_z
+__GMP_DECLSPEC int mpq_cmp_z (mpq_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpq_div __gmpq_div
+__GMP_DECLSPEC void mpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_div_2exp __gmpq_div_2exp
+__GMP_DECLSPEC void mpq_div_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t);
+
+#define mpq_equal __gmpq_equal
+__GMP_DECLSPEC int mpq_equal (mpq_srcptr, mpq_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpq_get_num __gmpq_get_num
+__GMP_DECLSPEC void mpq_get_num (mpz_ptr, mpq_srcptr);
+
+#define mpq_get_den __gmpq_get_den
+__GMP_DECLSPEC void mpq_get_den (mpz_ptr, mpq_srcptr);
+
+#define mpq_get_d __gmpq_get_d
+__GMP_DECLSPEC double mpq_get_d (mpq_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpq_get_str __gmpq_get_str
+__GMP_DECLSPEC char *mpq_get_str (char *, int, mpq_srcptr);
+
+#define mpq_init __gmpq_init
+__GMP_DECLSPEC void mpq_init (mpq_ptr);
+
+#define mpq_inits __gmpq_inits
+__GMP_DECLSPEC void mpq_inits (mpq_ptr, ...);
+
+#define mpq_inp_str __gmpq_inp_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpq_inp_str (mpq_ptr, FILE *, int);
+#endif
+
+#define mpq_inv __gmpq_inv
+__GMP_DECLSPEC void mpq_inv (mpq_ptr, mpq_srcptr);
+
+#define mpq_mul __gmpq_mul
+__GMP_DECLSPEC void mpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_mul_2exp __gmpq_mul_2exp
+__GMP_DECLSPEC void mpq_mul_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t);
+
+#define mpq_neg __gmpq_neg
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg)
+__GMP_DECLSPEC void mpq_neg (mpq_ptr, mpq_srcptr);
+#endif
+
+#define mpq_out_str __gmpq_out_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpq_out_str (FILE *, int, mpq_srcptr);
+#endif
+
+#define mpq_set __gmpq_set
+__GMP_DECLSPEC void mpq_set (mpq_ptr, mpq_srcptr);
+
+#define mpq_set_d __gmpq_set_d
+__GMP_DECLSPEC void mpq_set_d (mpq_ptr, double);
+
+#define mpq_set_den __gmpq_set_den
+__GMP_DECLSPEC void mpq_set_den (mpq_ptr, mpz_srcptr);
+
+#define mpq_set_f __gmpq_set_f
+__GMP_DECLSPEC void mpq_set_f (mpq_ptr, mpf_srcptr);
+
+#define mpq_set_num __gmpq_set_num
+__GMP_DECLSPEC void mpq_set_num (mpq_ptr, mpz_srcptr);
+
+#define mpq_set_si __gmpq_set_si
+__GMP_DECLSPEC void mpq_set_si (mpq_ptr, signed long int, unsigned long int);
+
+#define mpq_set_str __gmpq_set_str
+__GMP_DECLSPEC int mpq_set_str (mpq_ptr, const char *, int);
+
+#define mpq_set_ui __gmpq_set_ui
+__GMP_DECLSPEC void mpq_set_ui (mpq_ptr, unsigned long int, unsigned long int);
+
+#define mpq_set_z __gmpq_set_z
+__GMP_DECLSPEC void mpq_set_z (mpq_ptr, mpz_srcptr);
+
+#define mpq_sub __gmpq_sub
+__GMP_DECLSPEC void mpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_swap __gmpq_swap
+__GMP_DECLSPEC void mpq_swap (mpq_ptr, mpq_ptr) __GMP_NOTHROW;
+
+
+/**************** Float (i.e. F) routines. ****************/
+
+#define mpf_abs __gmpf_abs
+__GMP_DECLSPEC void mpf_abs (mpf_ptr, mpf_srcptr);
+
+#define mpf_add __gmpf_add
+__GMP_DECLSPEC void mpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_add_ui __gmpf_add_ui
+__GMP_DECLSPEC void mpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+#define mpf_ceil __gmpf_ceil
+__GMP_DECLSPEC void mpf_ceil (mpf_ptr, mpf_srcptr);
+
+#define mpf_clear __gmpf_clear
+__GMP_DECLSPEC void mpf_clear (mpf_ptr);
+
+#define mpf_clears __gmpf_clears
+__GMP_DECLSPEC void mpf_clears (mpf_ptr, ...);
+
+#define mpf_cmp __gmpf_cmp
+__GMP_DECLSPEC int mpf_cmp (mpf_srcptr, mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_z __gmpf_cmp_z
+__GMP_DECLSPEC int mpf_cmp_z (mpf_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_d __gmpf_cmp_d
+__GMP_DECLSPEC int mpf_cmp_d (mpf_srcptr, double) __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_si __gmpf_cmp_si
+__GMP_DECLSPEC int mpf_cmp_si (mpf_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_ui __gmpf_cmp_ui
+__GMP_DECLSPEC int mpf_cmp_ui (mpf_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_div __gmpf_div
+__GMP_DECLSPEC void mpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_div_2exp __gmpf_div_2exp
+__GMP_DECLSPEC void mpf_div_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t);
+
+#define mpf_div_ui __gmpf_div_ui
+__GMP_DECLSPEC void mpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_dump __gmpf_dump
+__GMP_DECLSPEC void mpf_dump (mpf_srcptr);
+
+#define mpf_eq __gmpf_eq
+__GMP_DECLSPEC int mpf_eq (mpf_srcptr, mpf_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_sint_p __gmpf_fits_sint_p
+__GMP_DECLSPEC int mpf_fits_sint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_slong_p __gmpf_fits_slong_p
+__GMP_DECLSPEC int mpf_fits_slong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_sshort_p __gmpf_fits_sshort_p
+__GMP_DECLSPEC int mpf_fits_sshort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_uint_p __gmpf_fits_uint_p
+__GMP_DECLSPEC int mpf_fits_uint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_ulong_p __gmpf_fits_ulong_p
+__GMP_DECLSPEC int mpf_fits_ulong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_ushort_p __gmpf_fits_ushort_p
+__GMP_DECLSPEC int mpf_fits_ushort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_floor __gmpf_floor
+__GMP_DECLSPEC void mpf_floor (mpf_ptr, mpf_srcptr);
+
+#define mpf_get_d __gmpf_get_d
+__GMP_DECLSPEC double mpf_get_d (mpf_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_d_2exp __gmpf_get_d_2exp
+__GMP_DECLSPEC double mpf_get_d_2exp (signed long int *, mpf_srcptr);
+
+#define mpf_get_default_prec __gmpf_get_default_prec
+__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec (void) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_prec __gmpf_get_prec
+__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_si __gmpf_get_si
+__GMP_DECLSPEC long mpf_get_si (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_str __gmpf_get_str
+__GMP_DECLSPEC char *mpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr);
+
+#define mpf_get_ui __gmpf_get_ui
+__GMP_DECLSPEC unsigned long mpf_get_ui (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_init __gmpf_init
+__GMP_DECLSPEC void mpf_init (mpf_ptr);
+
+#define mpf_init2 __gmpf_init2
+__GMP_DECLSPEC void mpf_init2 (mpf_ptr, mp_bitcnt_t);
+
+#define mpf_inits __gmpf_inits
+__GMP_DECLSPEC void mpf_inits (mpf_ptr, ...);
+
+#define mpf_init_set __gmpf_init_set
+__GMP_DECLSPEC void mpf_init_set (mpf_ptr, mpf_srcptr);
+
+#define mpf_init_set_d __gmpf_init_set_d
+__GMP_DECLSPEC void mpf_init_set_d (mpf_ptr, double);
+
+#define mpf_init_set_si __gmpf_init_set_si
+__GMP_DECLSPEC void mpf_init_set_si (mpf_ptr, signed long int);
+
+#define mpf_init_set_str __gmpf_init_set_str
+__GMP_DECLSPEC int mpf_init_set_str (mpf_ptr, const char *, int);
+
+#define mpf_init_set_ui __gmpf_init_set_ui
+__GMP_DECLSPEC void mpf_init_set_ui (mpf_ptr, unsigned long int);
+
+#define mpf_inp_str __gmpf_inp_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpf_inp_str (mpf_ptr, FILE *, int);
+#endif
+
+#define mpf_integer_p __gmpf_integer_p
+__GMP_DECLSPEC int mpf_integer_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_mul __gmpf_mul
+__GMP_DECLSPEC void mpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_mul_2exp __gmpf_mul_2exp
+__GMP_DECLSPEC void mpf_mul_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t);
+
+#define mpf_mul_ui __gmpf_mul_ui
+__GMP_DECLSPEC void mpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_neg __gmpf_neg
+__GMP_DECLSPEC void mpf_neg (mpf_ptr, mpf_srcptr);
+
+#define mpf_out_str __gmpf_out_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpf_out_str (FILE *, int, size_t, mpf_srcptr);
+#endif
+
+#define mpf_pow_ui __gmpf_pow_ui
+__GMP_DECLSPEC void mpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_random2 __gmpf_random2
+__GMP_DECLSPEC void mpf_random2 (mpf_ptr, mp_size_t, mp_exp_t);
+
+#define mpf_reldiff __gmpf_reldiff
+__GMP_DECLSPEC void mpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_set __gmpf_set
+__GMP_DECLSPEC void mpf_set (mpf_ptr, mpf_srcptr);
+
+#define mpf_set_d __gmpf_set_d
+__GMP_DECLSPEC void mpf_set_d (mpf_ptr, double);
+
+#define mpf_set_default_prec __gmpf_set_default_prec
+__GMP_DECLSPEC void mpf_set_default_prec (mp_bitcnt_t) __GMP_NOTHROW;
+
+#define mpf_set_prec __gmpf_set_prec
+__GMP_DECLSPEC void mpf_set_prec (mpf_ptr, mp_bitcnt_t);
+
+#define mpf_set_prec_raw __gmpf_set_prec_raw
+__GMP_DECLSPEC void mpf_set_prec_raw (mpf_ptr, mp_bitcnt_t) __GMP_NOTHROW;
+
+#define mpf_set_q __gmpf_set_q
+__GMP_DECLSPEC void mpf_set_q (mpf_ptr, mpq_srcptr);
+
+#define mpf_set_si __gmpf_set_si
+__GMP_DECLSPEC void mpf_set_si (mpf_ptr, signed long int);
+
+#define mpf_set_str __gmpf_set_str
+__GMP_DECLSPEC int mpf_set_str (mpf_ptr, const char *, int);
+
+#define mpf_set_ui __gmpf_set_ui
+__GMP_DECLSPEC void mpf_set_ui (mpf_ptr, unsigned long int);
+
+#define mpf_set_z __gmpf_set_z
+__GMP_DECLSPEC void mpf_set_z (mpf_ptr, mpz_srcptr);
+
+#define mpf_size __gmpf_size
+__GMP_DECLSPEC size_t mpf_size (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_sqrt __gmpf_sqrt
+__GMP_DECLSPEC void mpf_sqrt (mpf_ptr, mpf_srcptr);
+
+#define mpf_sqrt_ui __gmpf_sqrt_ui
+__GMP_DECLSPEC void mpf_sqrt_ui (mpf_ptr, unsigned long int);
+
+#define mpf_sub __gmpf_sub
+__GMP_DECLSPEC void mpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_sub_ui __gmpf_sub_ui
+__GMP_DECLSPEC void mpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_swap __gmpf_swap
+__GMP_DECLSPEC void mpf_swap (mpf_ptr, mpf_ptr) __GMP_NOTHROW;
+
+#define mpf_trunc __gmpf_trunc
+__GMP_DECLSPEC void mpf_trunc (mpf_ptr, mpf_srcptr);
+
+#define mpf_ui_div __gmpf_ui_div
+__GMP_DECLSPEC void mpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr);
+
+#define mpf_ui_sub __gmpf_ui_sub
+__GMP_DECLSPEC void mpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr);
+
+#define mpf_urandomb __gmpf_urandomb
+__GMP_DECLSPEC void mpf_urandomb (mpf_t, gmp_randstate_t, mp_bitcnt_t);
+
+
+/************ Low level positive-integer (i.e. N) routines. ************/
+
+/* This is ugly, but we need to make user calls reach the prefixed function. */
+
+#define mpn_add __MPN(add)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add)
+__GMP_DECLSPEC mp_limb_t mpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+#endif
+
+#define mpn_add_1 __MPN(add_1)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1)
+__GMP_DECLSPEC mp_limb_t mpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW;
+#endif
+
+#define mpn_add_n __MPN(add_n)
+__GMP_DECLSPEC mp_limb_t mpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_addmul_1 __MPN(addmul_1)
+__GMP_DECLSPEC mp_limb_t mpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_cmp __MPN(cmp)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp)
+__GMP_DECLSPEC int mpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpn_zero_p __MPN(zero_p)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_zero_p)
+__GMP_DECLSPEC int mpn_zero_p (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpn_divexact_1 __MPN(divexact_1)
+__GMP_DECLSPEC void mpn_divexact_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_divexact_by3(dst,src,size) \
+ mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0))
+
+#define mpn_divexact_by3c __MPN(divexact_by3c)
+__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_divmod_1(qp,np,nsize,dlimb) \
+ mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb)
+
+#define mpn_divrem __MPN(divrem)
+__GMP_DECLSPEC mp_limb_t mpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t);
+
+#define mpn_divrem_1 __MPN(divrem_1)
+__GMP_DECLSPEC mp_limb_t mpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_divrem_2 __MPN(divrem_2)
+__GMP_DECLSPEC mp_limb_t mpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr);
+
+#define mpn_div_qr_1 __MPN(div_qr_1)
+__GMP_DECLSPEC mp_limb_t mpn_div_qr_1 (mp_ptr, mp_limb_t *, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_div_qr_2 __MPN(div_qr_2)
+__GMP_DECLSPEC mp_limb_t mpn_div_qr_2 (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr);
+
+#define mpn_gcd __MPN(gcd)
+__GMP_DECLSPEC mp_size_t mpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
+
+#define mpn_gcd_11 __MPN(gcd_11)
+__GMP_DECLSPEC mp_limb_t mpn_gcd_11 (mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_gcd_1 __MPN(gcd_1)
+__GMP_DECLSPEC mp_limb_t mpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_gcdext_1 __MPN(gcdext_1)
+__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 (mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t);
+
+#define mpn_gcdext __MPN(gcdext)
+__GMP_DECLSPEC mp_size_t mpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
+
+#define mpn_get_str __MPN(get_str)
+__GMP_DECLSPEC size_t mpn_get_str (unsigned char *, int, mp_ptr, mp_size_t);
+
+#define mpn_hamdist __MPN(hamdist)
+__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpn_lshift __MPN(lshift)
+__GMP_DECLSPEC mp_limb_t mpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+
+#define mpn_mod_1 __MPN(mod_1)
+__GMP_DECLSPEC mp_limb_t mpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_mul __MPN(mul)
+__GMP_DECLSPEC mp_limb_t mpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+
+#define mpn_mul_1 __MPN(mul_1)
+__GMP_DECLSPEC mp_limb_t mpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_mul_n __MPN(mul_n)
+__GMP_DECLSPEC void mpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_sqr __MPN(sqr)
+__GMP_DECLSPEC void mpn_sqr (mp_ptr, mp_srcptr, mp_size_t);
+
+#define mpn_neg __MPN(neg)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg)
+__GMP_DECLSPEC mp_limb_t mpn_neg (mp_ptr, mp_srcptr, mp_size_t);
+#endif
+
+#define mpn_com __MPN(com)
+__GMP_DECLSPEC void mpn_com (mp_ptr, mp_srcptr, mp_size_t);
+
+#define mpn_perfect_square_p __MPN(perfect_square_p)
+__GMP_DECLSPEC int mpn_perfect_square_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_perfect_power_p __MPN(perfect_power_p)
+__GMP_DECLSPEC int mpn_perfect_power_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_popcount __MPN(popcount)
+__GMP_DECLSPEC mp_bitcnt_t mpn_popcount (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpn_pow_1 __MPN(pow_1)
+__GMP_DECLSPEC mp_size_t mpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+
+/* undocumented now, but retained here for upward compatibility */
+#define mpn_preinv_mod_1 __MPN(preinv_mod_1)
+__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_random __MPN(random)
+__GMP_DECLSPEC void mpn_random (mp_ptr, mp_size_t);
+
+#define mpn_random2 __MPN(random2)
+__GMP_DECLSPEC void mpn_random2 (mp_ptr, mp_size_t);
+
+#define mpn_rshift __MPN(rshift)
+__GMP_DECLSPEC mp_limb_t mpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+
+#define mpn_scan0 __MPN(scan0)
+__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_scan1 __MPN(scan1)
+__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_set_str __MPN(set_str)
+__GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);
+
+#define mpn_sizeinbase __MPN(sizeinbase)
+__GMP_DECLSPEC size_t mpn_sizeinbase (mp_srcptr, mp_size_t, int);
+
+#define mpn_sqrtrem __MPN(sqrtrem)
+__GMP_DECLSPEC mp_size_t mpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t);
+
+#define mpn_sub __MPN(sub)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub)
+__GMP_DECLSPEC mp_limb_t mpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+#endif
+
+#define mpn_sub_1 __MPN(sub_1)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1)
+__GMP_DECLSPEC mp_limb_t mpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW;
+#endif
+
+#define mpn_sub_n __MPN(sub_n)
+__GMP_DECLSPEC mp_limb_t mpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_submul_1 __MPN(submul_1)
+__GMP_DECLSPEC mp_limb_t mpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_tdiv_qr __MPN(tdiv_qr)
+__GMP_DECLSPEC void mpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+
+#define mpn_and_n __MPN(and_n)
+__GMP_DECLSPEC void mpn_and_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_andn_n __MPN(andn_n)
+__GMP_DECLSPEC void mpn_andn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_nand_n __MPN(nand_n)
+__GMP_DECLSPEC void mpn_nand_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_ior_n __MPN(ior_n)
+__GMP_DECLSPEC void mpn_ior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_iorn_n __MPN(iorn_n)
+__GMP_DECLSPEC void mpn_iorn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_nior_n __MPN(nior_n)
+__GMP_DECLSPEC void mpn_nior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_xor_n __MPN(xor_n)
+__GMP_DECLSPEC void mpn_xor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_xnor_n __MPN(xnor_n)
+__GMP_DECLSPEC void mpn_xnor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_copyi __MPN(copyi)
+__GMP_DECLSPEC void mpn_copyi (mp_ptr, mp_srcptr, mp_size_t);
+#define mpn_copyd __MPN(copyd)
+__GMP_DECLSPEC void mpn_copyd (mp_ptr, mp_srcptr, mp_size_t);
+#define mpn_zero __MPN(zero)
+__GMP_DECLSPEC void mpn_zero (mp_ptr, mp_size_t);
+
+#define mpn_cnd_add_n __MPN(cnd_add_n)
+__GMP_DECLSPEC mp_limb_t mpn_cnd_add_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_cnd_sub_n __MPN(cnd_sub_n)
+__GMP_DECLSPEC mp_limb_t mpn_cnd_sub_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_sec_add_1 __MPN(sec_add_1)
+__GMP_DECLSPEC mp_limb_t mpn_sec_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+#define mpn_sec_add_1_itch __MPN(sec_add_1_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_add_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_sub_1 __MPN(sec_sub_1)
+__GMP_DECLSPEC mp_limb_t mpn_sec_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+#define mpn_sec_sub_1_itch __MPN(sec_sub_1_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_sub_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_cnd_swap __MPN(cnd_swap)
+__GMP_DECLSPEC void mpn_cnd_swap (mp_limb_t, volatile mp_limb_t *, volatile mp_limb_t *, mp_size_t);
+
+#define mpn_sec_mul __MPN(sec_mul)
+__GMP_DECLSPEC void mpn_sec_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_mul_itch __MPN(sec_mul_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_mul_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_sqr __MPN(sec_sqr)
+__GMP_DECLSPEC void mpn_sec_sqr (mp_ptr, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_sqr_itch __MPN(sec_sqr_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_sqr_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_powm __MPN(sec_powm)
+__GMP_DECLSPEC void mpn_sec_powm (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_bitcnt_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_powm_itch __MPN(sec_powm_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_powm_itch (mp_size_t, mp_bitcnt_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_tabselect __MPN(sec_tabselect)
+__GMP_DECLSPEC void mpn_sec_tabselect (volatile mp_limb_t *, volatile const mp_limb_t *, mp_size_t, mp_size_t, mp_size_t);
+
+#define mpn_sec_div_qr __MPN(sec_div_qr)
+__GMP_DECLSPEC mp_limb_t mpn_sec_div_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_div_qr_itch __MPN(sec_div_qr_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_div_qr_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+#define mpn_sec_div_r __MPN(sec_div_r)
+__GMP_DECLSPEC void mpn_sec_div_r (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_div_r_itch __MPN(sec_div_r_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_div_r_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_invert __MPN(sec_invert)
+__GMP_DECLSPEC int mpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitcnt_t, mp_ptr);
+#define mpn_sec_invert_itch __MPN(sec_invert_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_invert_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+
+/**************** mpz inlines ****************/
+
+/* The following are provided as inlines where possible, but always exist as
+ library functions too, for binary compatibility.
+
+ Within gmp itself this inlining generally isn't relied on, since it
+ doesn't get done for all compilers, whereas if something is worth
+ inlining then it's worth arranging always.
+
+ There are two styles of inlining here. When the same bit of code is
+ wanted for the inline as for the library version, then __GMP_FORCE_foo
+ arranges for that code to be emitted and the __GMP_EXTERN_INLINE
+ directive suppressed, eg. mpz_fits_uint_p. When a different bit of code
+ is wanted for the inline than for the library version, then
+ __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs)
+__GMP_EXTERN_INLINE void
+mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpz_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size);
+}
+#endif
+
+#if GMP_NAIL_BITS == 0
+#define __GMPZ_FITS_UTYPE_P(z,maxval) \
+ mp_size_t __gmp_n = z->_mp_size; \
+ mp_ptr __gmp_p = z->_mp_d; \
+ return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval));
+#else
+#define __GMPZ_FITS_UTYPE_P(z,maxval) \
+ mp_size_t __gmp_n = z->_mp_size; \
+ mp_ptr __gmp_p = z->_mp_d; \
+ return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \
+ || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS)));
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p)
+#if ! defined (__GMP_FORCE_mpz_fits_uint_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ __GMPZ_FITS_UTYPE_P (__gmp_z, UINT_MAX);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p)
+#if ! defined (__GMP_FORCE_mpz_fits_ulong_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ __GMPZ_FITS_UTYPE_P (__gmp_z, ULONG_MAX);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p)
+#if ! defined (__GMP_FORCE_mpz_fits_ushort_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ __GMPZ_FITS_UTYPE_P (__gmp_z, USHRT_MAX);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui)
+#if ! defined (__GMP_FORCE_mpz_get_ui)
+__GMP_EXTERN_INLINE
+#endif
+unsigned long
+mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ mp_ptr __gmp_p = __gmp_z->_mp_d;
+ mp_size_t __gmp_n = __gmp_z->_mp_size;
+ mp_limb_t __gmp_l = __gmp_p[0];
+ /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings
+ about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland
+ C++ 6.0 warnings about condition always true for something like
+ "ULONG_MAX < GMP_NUMB_MASK". */
+#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB)
+ /* limb==long and no nails, or limb==longlong, one limb is enough */
+ return (__gmp_n != 0 ? __gmp_l : 0);
+#else
+ /* limb==long and nails, need two limbs when available */
+ __gmp_n = __GMP_ABS (__gmp_n);
+ if (__gmp_n <= 1)
+ return (__gmp_n != 0 ? __gmp_l : 0);
+ else
+ return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS);
+#endif
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn)
+#if ! defined (__GMP_FORCE_mpz_getlimbn)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW
+{
+ mp_limb_t __gmp_result = 0;
+ if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size)))
+ __gmp_result = __gmp_z->_mp_d[__gmp_n];
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg)
+__GMP_EXTERN_INLINE void
+mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpz_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_size = - __gmp_w->_mp_size;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p)
+#if ! defined (__GMP_FORCE_mpz_perfect_square_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_perfect_square_p (mpz_srcptr __gmp_a)
+{
+ mp_size_t __gmp_asize;
+ int __gmp_result;
+
+ __gmp_asize = __gmp_a->_mp_size;
+ __gmp_result = (__gmp_asize >= 0); /* zero is a square, negatives are not */
+ if (__GMP_LIKELY (__gmp_asize > 0))
+ __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount)
+#if ! defined (__GMP_FORCE_mpz_popcount)
+__GMP_EXTERN_INLINE
+#endif
+mp_bitcnt_t
+mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW
+{
+ mp_size_t __gmp_usize;
+ mp_bitcnt_t __gmp_result;
+
+ __gmp_usize = __gmp_u->_mp_size;
+ __gmp_result = (__gmp_usize < 0 ? ~ __GMP_CAST (mp_bitcnt_t, 0) : __GMP_CAST (mp_bitcnt_t, 0));
+ if (__GMP_LIKELY (__gmp_usize > 0))
+ __gmp_result = mpn_popcount (__gmp_u->_mp_d, __gmp_usize);
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q)
+#if ! defined (__GMP_FORCE_mpz_set_q)
+__GMP_EXTERN_INLINE
+#endif
+void
+mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u));
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size)
+#if ! defined (__GMP_FORCE_mpz_size)
+__GMP_EXTERN_INLINE
+#endif
+size_t
+mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ return __GMP_ABS (__gmp_z->_mp_size);
+}
+#endif
+
+
+/**************** mpq inlines ****************/
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs)
+__GMP_EXTERN_INLINE void
+mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpq_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg)
+__GMP_EXTERN_INLINE void
+mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpq_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
+}
+#endif
+
+
+/**************** mpn inlines ****************/
+
+/* The comments with __GMPN_ADD_1 below apply here too.
+
+ The test for FUNCTION returning 0 should predict well. If it's assumed
+ {yp,ysize} will usually have a random number of bits then the high limb
+ won't be full and a carry out will occur a good deal less than 50% of the
+ time.
+
+ ysize==0 isn't a documented feature, but is used internally in a few
+ places.
+
+ Producing cout last stops it using up a register during the main part of
+ the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))"
+ doesn't seem able to move the true and false legs of the conditional up
+ to the two places cout is generated. */
+
+#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x; \
+ \
+ /* ASSERT ((ysize) >= 0); */ \
+ /* ASSERT ((xsize) >= (ysize)); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \
+ \
+ __gmp_i = (ysize); \
+ if (__gmp_i != 0) \
+ { \
+ if (FUNCTION (wp, xp, yp, __gmp_i)) \
+ { \
+ do \
+ { \
+ if (__gmp_i >= (xsize)) \
+ { \
+ (cout) = 1; \
+ goto __gmp_done; \
+ } \
+ __gmp_x = (xp)[__gmp_i]; \
+ } \
+ while (TEST); \
+ } \
+ } \
+ if ((wp) != (xp)) \
+ __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \
+ (cout) = 0; \
+ __gmp_done: \
+ ; \
+ } while (0)
+
+#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \
+ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \
+ (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0))
+#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \
+ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \
+ (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0))
+
+
+/* The use of __gmp_i indexing is designed to ensure a compile time src==dst
+ remains nice and clear to the compiler, so that __GMPN_COPY_REST can
+ disappear, and the load/add/store gets a chance to become a
+ read-modify-write on CISC CPUs.
+
+ Alternatives:
+
+ Using a pair of pointers instead of indexing would be possible, but gcc
+ isn't able to recognise compile-time src==dst in that case, even when the
+ pointers are incremented more or less together. Other compilers would
+ very likely have similar difficulty.
+
+ gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or
+ similar to detect a compile-time src==dst. This works nicely on gcc
+ 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems
+ to be always false, for a pointer p. But the current code form seems
+ good enough for src==dst anyway.
+
+ gcc on x86 as usual doesn't give particularly good flags handling for the
+ carry/borrow detection. It's tempting to want some multi instruction asm
+ blocks to help it, and this was tried, but in truth there's only a few
+ instructions to save and any gain is all too easily lost by register
+ juggling setting up for the asm. */
+
+#if GMP_NAIL_BITS == 0
+#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x, __gmp_r; \
+ \
+ /* ASSERT ((n) >= 1); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \
+ \
+ __gmp_x = (src)[0]; \
+ __gmp_r = __gmp_x OP (v); \
+ (dst)[0] = __gmp_r; \
+ if (CB (__gmp_r, __gmp_x, (v))) \
+ { \
+ (cout) = 1; \
+ for (__gmp_i = 1; __gmp_i < (n);) \
+ { \
+ __gmp_x = (src)[__gmp_i]; \
+ __gmp_r = __gmp_x OP 1; \
+ (dst)[__gmp_i] = __gmp_r; \
+ ++__gmp_i; \
+ if (!CB (__gmp_r, __gmp_x, 1)) \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, __gmp_i); \
+ (cout) = 0; \
+ break; \
+ } \
+ } \
+ } \
+ else \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, 1); \
+ (cout) = 0; \
+ } \
+ } while (0)
+#endif
+
+#if GMP_NAIL_BITS >= 1
+#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x, __gmp_r; \
+ \
+ /* ASSERT ((n) >= 1); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \
+ \
+ __gmp_x = (src)[0]; \
+ __gmp_r = __gmp_x OP (v); \
+ (dst)[0] = __gmp_r & GMP_NUMB_MASK; \
+ if (__gmp_r >> GMP_NUMB_BITS != 0) \
+ { \
+ (cout) = 1; \
+ for (__gmp_i = 1; __gmp_i < (n);) \
+ { \
+ __gmp_x = (src)[__gmp_i]; \
+ __gmp_r = __gmp_x OP 1; \
+ (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \
+ ++__gmp_i; \
+ if (__gmp_r >> GMP_NUMB_BITS == 0) \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, __gmp_i); \
+ (cout) = 0; \
+ break; \
+ } \
+ } \
+ } \
+ else \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, 1); \
+ (cout) = 0; \
+ } \
+ } while (0)
+#endif
+
+#define __GMPN_ADDCB(r,x,y) ((r) < (y))
+#define __GMPN_SUBCB(r,x,y) ((x) < (y))
+
+#define __GMPN_ADD_1(cout, dst, src, n, v) \
+ __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB)
+#define __GMPN_SUB_1(cout, dst, src, n, v) \
+ __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB)
+
+
+/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or
+ negative. size==0 is allowed. On random data usually only one limb will
+ need to be examined to get a result, so it's worth having it inline. */
+#define __GMPN_CMP(result, xp, yp, size) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x, __gmp_y; \
+ \
+ /* ASSERT ((size) >= 0); */ \
+ \
+ (result) = 0; \
+ __gmp_i = (size); \
+ while (--__gmp_i >= 0) \
+ { \
+ __gmp_x = (xp)[__gmp_i]; \
+ __gmp_y = (yp)[__gmp_i]; \
+ if (__gmp_x != __gmp_y) \
+ { \
+ /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \
+ (result) = (__gmp_x > __gmp_y ? 1 : -1); \
+ break; \
+ } \
+ } \
+ } while (0)
+
+
+#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST)
+#define __GMPN_COPY_REST(dst, src, size, start) \
+ do { \
+ /* ASSERT ((start) >= 0); */ \
+ /* ASSERT ((start) <= (size)); */ \
+ __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \
+ } while (0)
+#endif
+
+/* Copy {src,size} to {dst,size}, starting at "start". This is designed to
+ keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1,
+ __GMPN_ADD, etc. */
+#if ! defined (__GMPN_COPY_REST)
+#define __GMPN_COPY_REST(dst, src, size, start) \
+ do { \
+ mp_size_t __gmp_j; \
+ /* ASSERT ((size) >= 0); */ \
+ /* ASSERT ((start) >= 0); */ \
+ /* ASSERT ((start) <= (size)); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \
+ __GMP_CRAY_Pragma ("_CRI ivdep"); \
+ for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \
+ (dst)[__gmp_j] = (src)[__gmp_j]; \
+ } while (0)
+#endif
+
+/* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use
+ mpn_copyi if there's a native version, and if we don't mind demanding
+ binary compatibility for it (on targets which use it). */
+
+#if ! defined (__GMPN_COPY)
+#define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0)
+#endif
+
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add)
+#if ! defined (__GMP_FORCE_mpn_add)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
+{
+ mp_limb_t __gmp_c;
+ __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1)
+#if ! defined (__GMP_FORCE_mpn_add_1)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
+{
+ mp_limb_t __gmp_c;
+ __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp)
+#if ! defined (__GMP_FORCE_mpn_cmp)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW
+{
+ int __gmp_result;
+ __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size);
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_zero_p)
+#if ! defined (__GMP_FORCE_mpn_zero_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpn_zero_p (mp_srcptr __gmp_p, mp_size_t __gmp_n) __GMP_NOTHROW
+{
+ /* if (__GMP_LIKELY (__gmp_n > 0)) */
+ do {
+ if (__gmp_p[--__gmp_n] != 0)
+ return 0;
+ } while (__gmp_n != 0);
+ return 1;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub)
+#if ! defined (__GMP_FORCE_mpn_sub)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
+{
+ mp_limb_t __gmp_c;
+ __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1)
+#if ! defined (__GMP_FORCE_mpn_sub_1)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
+{
+ mp_limb_t __gmp_c;
+ __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg)
+#if ! defined (__GMP_FORCE_mpn_neg)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
+{
+ while (*__gmp_up == 0) /* Low zero limbs are unchanged by negation. */
+ {
+ *__gmp_rp = 0;
+ if (!--__gmp_n) /* All zero */
+ return 0;
+ ++__gmp_up; ++__gmp_rp;
+ }
+
+ *__gmp_rp = (- *__gmp_up) & GMP_NUMB_MASK;
+
+ if (--__gmp_n) /* Higher limbs get complemented. */
+ mpn_com (++__gmp_rp, ++__gmp_up, __gmp_n);
+
+ return 1;
+}
+#endif
+
+#if defined (__cplusplus)
+}
+#endif
+
+
+/* Allow faster testing for negative, zero, and positive. */
+#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)
+#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)
+#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)
+
+/* When using GCC, optimize certain common comparisons. */
+#if defined (__GNUC__) && __GNUC__ >= 2
+#define mpz_cmp_ui(Z,UI) \
+ (__builtin_constant_p (UI) && (UI) == 0 \
+ ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI))
+#define mpz_cmp_si(Z,SI) \
+ (__builtin_constant_p ((SI) >= 0) && (SI) >= 0 \
+ ? mpz_cmp_ui (Z, __GMP_CAST (unsigned long, SI)) \
+ : _mpz_cmp_si (Z,SI))
+#define mpq_cmp_ui(Q,NUI,DUI) \
+ (__builtin_constant_p (NUI) && (NUI) == 0 ? mpq_sgn (Q) \
+ : __builtin_constant_p ((NUI) == (DUI)) && (NUI) == (DUI) \
+ ? mpz_cmp (mpq_numref (Q), mpq_denref (Q)) \
+ : _mpq_cmp_ui (Q,NUI,DUI))
+#define mpq_cmp_si(q,n,d) \
+ (__builtin_constant_p ((n) >= 0) && (n) >= 0 \
+ ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \
+ : _mpq_cmp_si (q, n, d))
+#else
+#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI)
+#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI)
+#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI)
+#define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d)
+#endif
+
+
+/* Using "&" rather than "&&" means these can come out branch-free. Every
+ mpz_t has at least one limb allocated, so fetching the low limb is always
+ allowed. */
+#define mpz_odd_p(z) (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0]))
+#define mpz_even_p(z) (! mpz_odd_p (z))
+
+
+/**************** C++ routines ****************/
+
+#ifdef __cplusplus
+__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);
+__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);
+__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);
+__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr);
+__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr);
+__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr);
+#endif
+
+
+/* Source-level compatibility with GMP 2 and earlier. */
+#define mpn_divmod(qp,np,nsize,dp,dsize) \
+ mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize)
+
+/* Source-level compatibility with GMP 1. */
+#define mpz_mdiv mpz_fdiv_q
+#define mpz_mdivmod mpz_fdiv_qr
+#define mpz_mmod mpz_fdiv_r
+#define mpz_mdiv_ui mpz_fdiv_q_ui
+#define mpz_mdivmod_ui(q,r,n,d) \
+ (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))
+#define mpz_mmod_ui(r,n,d) \
+ (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))
+
+/* Useful synonyms, but not quite compatible with GMP 1. */
+#define mpz_div mpz_fdiv_q
+#define mpz_divmod mpz_fdiv_qr
+#define mpz_div_ui mpz_fdiv_q_ui
+#define mpz_divmod_ui mpz_fdiv_qr_ui
+#define mpz_div_2exp mpz_fdiv_q_2exp
+#define mpz_mod_2exp mpz_fdiv_r_2exp
+
+enum
+{
+ GMP_ERROR_NONE = 0,
+ GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
+ GMP_ERROR_DIVISION_BY_ZERO = 2,
+ GMP_ERROR_SQRT_OF_NEGATIVE = 4,
+ GMP_ERROR_INVALID_ARGUMENT = 8
+};
+
+/* Define CC and CFLAGS which were used to build this version of GMP */
+#define __GMP_CC "arm-frc2020-linux-gnueabi-gcc"
+#define __GMP_CFLAGS "-O2 -pedantic -fomit-frame-pointer -march=armv4 -mfloat-abi=softfp"
+
+/* Major version number is the value of __GNU_MP__ too, above. */
+#define __GNU_MP_VERSION 6
+#define __GNU_MP_VERSION_MINOR 2
+#define __GNU_MP_VERSION_PATCHLEVEL 0
+#define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL)
+
+#define __GMP_H__
+#endif /* __GMP_H__ */
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/config/arm64/config.h b/modules/gmp/6.2.0.bcr.1/overlay/config/arm64/config.h
new file mode 100644
index 00000000000..fcac711079c
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/config/arm64/config.h
@@ -0,0 +1,668 @@
+/* config.h. Generated from config.in by configure. */
+/* config.in. Generated from configure.ac by autoheader. */
+
+/*
+
+Copyright 1996-2020 Free Software Foundation, Inc.
+
+This file is part of the GNU MP Library.
+
+The GNU MP Library is free software; you can redistribute it and/or modify
+it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+or
+
+ * the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any
+ later version.
+
+or both in parallel, as here.
+
+The GNU MP Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received copies of the GNU General Public License and the
+GNU Lesser General Public License along with the GNU MP Library. If not,
+see https://www.gnu.org/licenses/.
+*/
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* The gmp-mparam.h file (a string) the tune program should suggest updating.
+ */
+#define GMP_MPARAM_H_SUGGEST "./mpn/arm64/gmp-mparam.h"
+
+/* Define to 1 if you have the `alarm' function. */
+#define HAVE_ALARM 1
+
+/* Define to 1 if alloca() works (via gmp-impl.h). */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have and it should be used (not on Ultrix).
+ */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((const)) */
+#define HAVE_ATTRIBUTE_CONST 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((malloc)) */
+#define HAVE_ATTRIBUTE_MALLOC 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((mode (XX)))
+ */
+#define HAVE_ATTRIBUTE_MODE 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((noreturn)) */
+#define HAVE_ATTRIBUTE_NORETURN 1
+
+/* Define to 1 if you have the `attr_get' function. */
+/* #undef HAVE_ATTR_GET */
+
+/* Define to 1 if tests/libtests has calling conventions checking for the CPU
+ */
+/* #undef HAVE_CALLING_CONVENTIONS */
+
+/* Define to 1 if you have the `clock' function. */
+#define HAVE_CLOCK 1
+
+/* Define to 1 if you have the `clock_gettime' function */
+#define HAVE_CLOCK_GETTIME 1
+
+/* Define to 1 if you have the `cputime' function. */
+/* #undef HAVE_CPUTIME */
+
+/* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't.
+ */
+#define HAVE_DECL_FGETC 1
+
+/* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't.
+ */
+#define HAVE_DECL_FSCANF 1
+
+/* Define to 1 if you have the declaration of `optarg', and to 0 if you don't.
+ */
+#define HAVE_DECL_OPTARG 1
+
+/* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you
+ don't. */
+#define HAVE_DECL_SYS_ERRLIST 1
+
+/* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you
+ don't. */
+#define HAVE_DECL_SYS_NERR 1
+
+/* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't.
+ */
+#define HAVE_DECL_UNGETC 1
+
+/* Define to 1 if you have the declaration of `vfprintf', and to 0 if you
+ don't. */
+#define HAVE_DECL_VFPRINTF 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define one of the following to 1 for the format of a `double'.
+ If your format is not among these choices, or you don't know what it is,
+ then leave all undefined.
+ IEEE_LITTLE_SWAPPED means little endian, but with the two 4-byte halves
+ swapped, as used by ARM CPUs in little endian mode. */
+/* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */
+#define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1
+/* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */
+/* #undef HAVE_DOUBLE_VAX_D */
+/* #undef HAVE_DOUBLE_VAX_G */
+/* #undef HAVE_DOUBLE_CRAY_CFP */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getrusage' function. */
+#define HAVE_GETRUSAGE 1
+
+/* Define to 1 if you have the `getsysinfo' function. */
+/* #undef HAVE_GETSYSINFO */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((visibility))
+ and __attribute__ ((alias)) */
+#define HAVE_HIDDEN_ALIAS 1
+
+/* Define one of these to 1 for the host CPU family.
+ If your CPU is not in any of these families, leave all undefined.
+ For an AMD64 chip, define "x86" in ABI=32, but not in ABI=64. */
+/* #undef HAVE_HOST_CPU_FAMILY_alpha */
+/* #undef HAVE_HOST_CPU_FAMILY_m68k */
+/* #undef HAVE_HOST_CPU_FAMILY_power */
+/* #undef HAVE_HOST_CPU_FAMILY_powerpc */
+/* #undef HAVE_HOST_CPU_FAMILY_x86 */
+/* #undef HAVE_HOST_CPU_FAMILY_x86_64 */
+
+/* Define one of the following to 1 for the host CPU, as per the output of
+ ./config.guess. If your CPU is not listed here, leave all undefined. */
+/* #undef HAVE_HOST_CPU_alphaev67 */
+/* #undef HAVE_HOST_CPU_alphaev68 */
+/* #undef HAVE_HOST_CPU_alphaev7 */
+/* #undef HAVE_HOST_CPU_m68020 */
+/* #undef HAVE_HOST_CPU_m68030 */
+/* #undef HAVE_HOST_CPU_m68040 */
+/* #undef HAVE_HOST_CPU_m68060 */
+/* #undef HAVE_HOST_CPU_m68360 */
+/* #undef HAVE_HOST_CPU_powerpc604 */
+/* #undef HAVE_HOST_CPU_powerpc604e */
+/* #undef HAVE_HOST_CPU_powerpc750 */
+/* #undef HAVE_HOST_CPU_powerpc7400 */
+/* #undef HAVE_HOST_CPU_supersparc */
+/* #undef HAVE_HOST_CPU_i386 */
+/* #undef HAVE_HOST_CPU_i586 */
+/* #undef HAVE_HOST_CPU_i686 */
+/* #undef HAVE_HOST_CPU_pentium */
+/* #undef HAVE_HOST_CPU_pentiummmx */
+/* #undef HAVE_HOST_CPU_pentiumpro */
+/* #undef HAVE_HOST_CPU_pentium2 */
+/* #undef HAVE_HOST_CPU_pentium3 */
+/* #undef HAVE_HOST_CPU_pentium4 */
+/* #undef HAVE_HOST_CPU_core2 */
+/* #undef HAVE_HOST_CPU_nehalem */
+/* #undef HAVE_HOST_CPU_westmere */
+/* #undef HAVE_HOST_CPU_sandybridge */
+/* #undef HAVE_HOST_CPU_ivybridge */
+/* #undef HAVE_HOST_CPU_haswell */
+/* #undef HAVE_HOST_CPU_broadwell */
+/* #undef HAVE_HOST_CPU_skylake */
+/* #undef HAVE_HOST_CPU_silvermont */
+/* #undef HAVE_HOST_CPU_goldmont */
+/* #undef HAVE_HOST_CPU_k8 */
+/* #undef HAVE_HOST_CPU_k10 */
+/* #undef HAVE_HOST_CPU_bulldozer */
+/* #undef HAVE_HOST_CPU_piledriver */
+/* #undef HAVE_HOST_CPU_steamroller */
+/* #undef HAVE_HOST_CPU_excavator */
+/* #undef HAVE_HOST_CPU_zen */
+/* #undef HAVE_HOST_CPU_bobcat */
+/* #undef HAVE_HOST_CPU_jaguar */
+/* #undef HAVE_HOST_CPU_s390_z900 */
+/* #undef HAVE_HOST_CPU_s390_z990 */
+/* #undef HAVE_HOST_CPU_s390_z9 */
+/* #undef HAVE_HOST_CPU_s390_z10 */
+/* #undef HAVE_HOST_CPU_s390_z196 */
+
+/* Define to 1 iff we have a s390 with 64-bit registers. */
+/* #undef HAVE_HOST_CPU_s390_zarch */
+
+/* Define to 1 if the system has the type `intmax_t'. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if the system has the type `intptr_t'. */
+#define HAVE_INTPTR_T 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_INVENT_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_LANGINFO_H 1
+
+/* Define one of these to 1 for the endianness of `mp_limb_t'.
+ If the endianness is not a simple big or little, or you don't know what
+ it is, then leave both undefined. */
+/* #undef HAVE_LIMB_BIG_ENDIAN */
+#define HAVE_LIMB_LITTLE_ENDIAN 1
+
+/* Define to 1 if you have the `localeconv' function. */
+#define HAVE_LOCALECONV 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if the system has the type `long double'. */
+#define HAVE_LONG_DOUBLE 1
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_MACHINE_HAL_SYSINFO_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `memset' function. */
+#define HAVE_MEMSET 1
+
+/* Define to 1 if you have the `mmap' function. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the `mprotect' function. */
+#define HAVE_MPROTECT 1
+
+/* Define to 1 each of the following for which a native (ie. CPU specific)
+ implementation of the corresponding routine exists. */
+#define HAVE_NATIVE_mpn_add_n 1
+/* #undef HAVE_NATIVE_mpn_add_n_sub_n */
+#define HAVE_NATIVE_mpn_add_nc 1
+/* #undef HAVE_NATIVE_mpn_addaddmul_1msb0 */
+#define HAVE_NATIVE_mpn_addlsh1_n 1
+#define HAVE_NATIVE_mpn_addlsh2_n 1
+/* #undef HAVE_NATIVE_mpn_addlsh_n */
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addmul_1c */
+/* #undef HAVE_NATIVE_mpn_addmul_2 */
+/* #undef HAVE_NATIVE_mpn_addmul_3 */
+/* #undef HAVE_NATIVE_mpn_addmul_4 */
+/* #undef HAVE_NATIVE_mpn_addmul_5 */
+/* #undef HAVE_NATIVE_mpn_addmul_6 */
+/* #undef HAVE_NATIVE_mpn_addmul_7 */
+/* #undef HAVE_NATIVE_mpn_addmul_8 */
+/* #undef HAVE_NATIVE_mpn_addmul_2s */
+#define HAVE_NATIVE_mpn_and_n 1
+#define HAVE_NATIVE_mpn_andn_n 1
+#define HAVE_NATIVE_mpn_bdiv_dbm1c 1
+#define HAVE_NATIVE_mpn_bdiv_q_1 1
+#define HAVE_NATIVE_mpn_pi1_bdiv_q_1 1
+#define HAVE_NATIVE_mpn_cnd_add_n 1
+#define HAVE_NATIVE_mpn_cnd_sub_n 1
+#define HAVE_NATIVE_mpn_com 1
+#define HAVE_NATIVE_mpn_copyd 1
+#define HAVE_NATIVE_mpn_copyi 1
+/* #undef HAVE_NATIVE_mpn_div_qr_1n_pi1 */
+/* #undef HAVE_NATIVE_mpn_div_qr_2 */
+/* #undef HAVE_NATIVE_mpn_divexact_1 */
+/* #undef HAVE_NATIVE_mpn_divexact_by3c */
+/* #undef HAVE_NATIVE_mpn_divrem_1 */
+/* #undef HAVE_NATIVE_mpn_divrem_1c */
+/* #undef HAVE_NATIVE_mpn_divrem_2 */
+/* #undef HAVE_NATIVE_mpn_gcd_1 */
+#define HAVE_NATIVE_mpn_gcd_11 1
+#define HAVE_NATIVE_mpn_gcd_22 1
+#define HAVE_NATIVE_mpn_hamdist 1
+#define HAVE_NATIVE_mpn_invert_limb 1
+#define HAVE_NATIVE_mpn_ior_n 1
+#define HAVE_NATIVE_mpn_iorn_n 1
+#define HAVE_NATIVE_mpn_lshift 1
+#define HAVE_NATIVE_mpn_lshiftc 1
+/* #undef HAVE_NATIVE_mpn_lshsub_n */
+/* #undef HAVE_NATIVE_mpn_mod_1 */
+/* #undef HAVE_NATIVE_mpn_mod_1_1p */
+/* #undef HAVE_NATIVE_mpn_mod_1c */
+/* #undef HAVE_NATIVE_mpn_mod_1s_2p */
+/* #undef HAVE_NATIVE_mpn_mod_1s_4p */
+#define HAVE_NATIVE_mpn_mod_34lsub1 1
+/* #undef HAVE_NATIVE_mpn_modexact_1_odd */
+/* #undef HAVE_NATIVE_mpn_modexact_1c_odd */
+#define HAVE_NATIVE_mpn_mul_1 1
+#define HAVE_NATIVE_mpn_mul_1c 1
+/* #undef HAVE_NATIVE_mpn_mul_2 */
+/* #undef HAVE_NATIVE_mpn_mul_3 */
+/* #undef HAVE_NATIVE_mpn_mul_4 */
+/* #undef HAVE_NATIVE_mpn_mul_5 */
+/* #undef HAVE_NATIVE_mpn_mul_6 */
+/* #undef HAVE_NATIVE_mpn_mul_basecase */
+/* #undef HAVE_NATIVE_mpn_mullo_basecase */
+#define HAVE_NATIVE_mpn_nand_n 1
+#define HAVE_NATIVE_mpn_nior_n 1
+#define HAVE_NATIVE_mpn_popcount 1
+/* #undef HAVE_NATIVE_mpn_preinv_divrem_1 */
+/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */
+/* #undef HAVE_NATIVE_mpn_redc_1 */
+/* #undef HAVE_NATIVE_mpn_redc_2 */
+#define HAVE_NATIVE_mpn_rsblsh1_n 1
+#define HAVE_NATIVE_mpn_rsblsh2_n 1
+/* #undef HAVE_NATIVE_mpn_rsblsh_n */
+/* #undef HAVE_NATIVE_mpn_rsblsh1_nc */
+/* #undef HAVE_NATIVE_mpn_rsblsh2_nc */
+/* #undef HAVE_NATIVE_mpn_rsblsh_nc */
+#define HAVE_NATIVE_mpn_rsh1add_n 1
+/* #undef HAVE_NATIVE_mpn_rsh1add_nc */
+#define HAVE_NATIVE_mpn_rsh1sub_n 1
+/* #undef HAVE_NATIVE_mpn_rsh1sub_nc */
+#define HAVE_NATIVE_mpn_rshift 1
+/* #undef HAVE_NATIVE_mpn_sbpi1_bdiv_r */
+/* #undef HAVE_NATIVE_mpn_sqr_basecase */
+/* #undef HAVE_NATIVE_mpn_sqr_diagonal */
+#define HAVE_NATIVE_mpn_sqr_diag_addlsh1 1
+#define HAVE_NATIVE_mpn_sub_n 1
+#define HAVE_NATIVE_mpn_sub_nc 1
+#define HAVE_NATIVE_mpn_sublsh1_n 1
+#define HAVE_NATIVE_mpn_sublsh2_n 1
+/* #undef HAVE_NATIVE_mpn_sublsh_n */
+/* #undef HAVE_NATIVE_mpn_sublsh1_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh2_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh1_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh2_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh1_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh2_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_submul_1c */
+/* #undef HAVE_NATIVE_mpn_tabselect */
+/* #undef HAVE_NATIVE_mpn_udiv_qrnnd */
+/* #undef HAVE_NATIVE_mpn_udiv_qrnnd_r */
+/* #undef HAVE_NATIVE_mpn_umul_ppmm */
+/* #undef HAVE_NATIVE_mpn_umul_ppmm_r */
+#define HAVE_NATIVE_mpn_xor_n 1
+#define HAVE_NATIVE_mpn_xnor_n 1
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#define HAVE_NL_LANGINFO 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_NL_TYPES_H 1
+
+/* Define to 1 if you have the `obstack_vprintf' function. */
+#define HAVE_OBSTACK_VPRINTF 1
+
+/* Define to 1 if you have the `popen' function. */
+#define HAVE_POPEN 1
+
+/* Define to 1 if you have the `processor_info' function. */
+/* #undef HAVE_PROCESSOR_INFO */
+
+/* Define to 1 if `struct pst_processor' exists and contains
+ `psp_iticksperclktick'. */
+/* #undef HAVE_PSP_ITICKSPERCLKTICK */
+
+/* Define to 1 if you have the `pstat_getprocessor' function. */
+/* #undef HAVE_PSTAT_GETPROCESSOR */
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#define HAVE_PTRDIFF_T 1
+
+/* Define to 1 if the system has the type `quad_t'. */
+#define HAVE_QUAD_T 1
+
+/* Define to 1 if you have the `raise' function. */
+#define HAVE_RAISE 1
+
+/* Define to 1 if you have the `read_real_time' function. */
+/* #undef HAVE_READ_REAL_TIME */
+
+/* Define to 1 if you have the `sigaction' function. */
+#define HAVE_SIGACTION 1
+
+/* Define to 1 if you have the `sigaltstack' function. */
+#define HAVE_SIGALTSTACK 1
+
+/* Define to 1 if you have the `sigstack' function. */
+#define HAVE_SIGSTACK 1
+
+/* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */
+/* #undef HAVE_SPEED_CYCLECOUNTER */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SSTREAM 1
+
+/* Define to 1 if the system has the type `stack_t'. */
+#define HAVE_STACK_T 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if the system has the type `std::locale'. */
+#define HAVE_STD__LOCALE 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strnlen' function. */
+#define HAVE_STRNLEN 1
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if you have the `sysctl' function. */
+/* #undef HAVE_SYSCTL */
+
+/* Define to 1 if you have the `sysctlbyname' function. */
+/* #undef HAVE_SYSCTLBYNAME */
+
+/* Define to 1 if you have the `syssgi' function. */
+/* #undef HAVE_SYSSGI */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_ATTRIBUTES_H */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_IOGRAPH_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_PROCESSOR_H */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_PSTAT_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SYSCTL_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SYSINFO_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_SYSSGI_H */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_SYSTEMCFG_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TIMES_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `times' function. */
+#define HAVE_TIMES 1
+
+/* Define to 1 if the system has the type `uint_least32_t'. */
+#define HAVE_UINT_LEAST32_T 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `vsnprintf' function and it works properly. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 for Windos/64 */
+/* #undef HOST_DOS64 */
+
+/* Assembler local label prefix */
+#define LSYM_PREFIX ".L"
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 to disable the use of inline assembly */
+/* #undef NO_ASM */
+
+/* Name of package */
+#define PACKAGE "gmp"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "gmp-bugs@gmplib.org, see https://gmplib.org/manual/Reporting-Bugs.html"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "GNU MP"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "GNU MP 6.2.0"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "gmp"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL "http://www.gnu.org/software/gmp/"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "6.2.0"
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* The size of `mp_limb_t', as computed by sizeof. */
+#define SIZEOF_MP_LIMB_T 8
+
+/* The size of `unsigned', as computed by sizeof. */
+#define SIZEOF_UNSIGNED 4
+
+/* The size of `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 8
+
+/* The size of `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT 2
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 8
+
+/* Define to 1 if sscanf requires writable inputs */
+/* #undef SSCANF_WRITABLE_INPUT */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both and . */
+#define TIME_WITH_SYS_TIME 1
+
+/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */
+#define TUNE_SQR_TOOM2_MAX SQR_TOOM2_MAX_GENERIC
+
+/* Version number of package */
+#define VERSION "6.2.0"
+
+/* Define to 1 to enable ASSERT checking, per --enable-assert */
+/* #undef WANT_ASSERT */
+
+/* Define to 1 to enable GMP_CPU_TYPE faking cpuid, per --enable-fake-cpuid */
+/* #undef WANT_FAKE_CPUID */
+
+/* Define to 1 when building a fat binary. */
+/* #undef WANT_FAT_BINARY */
+
+/* Define to 1 to enable FFTs for multiplication, per --enable-fft */
+#define WANT_FFT 1
+
+/* Define to 1 to enable old mpn_mul_fft_full for multiplication, per
+ --enable-old-fft-full */
+/* #undef WANT_OLD_FFT_FULL */
+
+/* Define to 1 if --enable-profiling=gprof */
+/* #undef WANT_PROFILING_GPROF */
+
+/* Define to 1 if --enable-profiling=instrument */
+/* #undef WANT_PROFILING_INSTRUMENT */
+
+/* Define to 1 if --enable-profiling=prof */
+/* #undef WANT_PROFILING_PROF */
+
+/* Define one of these to 1 for the desired temporary memory allocation
+ method, per --enable-alloca. */
+#define WANT_TMP_ALLOCA 1
+/* #undef WANT_TMP_REENTRANT */
+/* #undef WANT_TMP_NOTREENTRANT */
+/* #undef WANT_TMP_DEBUG */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* # undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to 1 if the assembler understands the mulx instruction */
+/* #undef X86_ASM_MULX */
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+#define YYTEXT_POINTER 1
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+#define restrict __restrict
+/* Work around a bug in Sun C++: it does not support _Restrict or
+ __restrict__, even though the corresponding Sun C compiler ends up with
+ "#define restrict _Restrict" or "#define restrict __restrict__" in the
+ previous line. Perhaps some future version of Sun C++ will work with
+ restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+# define __restrict__
+#endif
+
+/* Define to empty if the keyword `volatile' does not work. Warning: valid
+ code using `volatile' can become incorrect without. Disable with care. */
+/* #undef volatile */
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/config/arm64/config.m4 b/modules/gmp/6.2.0.bcr.1/overlay/config/arm64/config.m4
new file mode 100644
index 00000000000..15a10dd1334
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/config/arm64/config.m4
@@ -0,0 +1,35 @@
+dnl config.m4. Generated automatically by configure.
+changequote(<,>)
+ifdef(<__CONFIG_M4_INCLUDED__>,,<
+define(,<`../.'>)
+define(,0)
+define(,<`no'>)
+define(,)
+define(, <.text>)
+define(, <.data>)
+define(, <:>)
+define(, <.globl>)
+define(, <>)
+define(, <>)
+define(, < .section .rodata>)
+define(, <.type $1,@$2>)
+define(, <.size $1,$2>)
+define(, <.L>)
+define(, <.long>)
+define(,)
+define(,<18>)
+define(,<40>)
+define(,<4>)
+define(,64)
+define(,0)
+define(,eval(GMP_LIMB_BITS-GMP_NAIL_BITS))
+>)
+changequote(`,')
+ifdef(`__CONFIG_M4_INCLUDED__',,`
+include(CONFIG_TOP_SRCDIR`/mpn/asm-defs.m4')
+define_not_for_expansion(`HAVE_HOST_CPU_aarch64')
+define_not_for_expansion(`HAVE_ABI_64')
+define_not_for_expansion(`HAVE_LIMB_LITTLE_ENDIAN')
+define_not_for_expansion(`HAVE_DOUBLE_IEEE_LITTLE_ENDIAN')
+')
+define(`__CONFIG_M4_INCLUDED__')
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/config/arm64/gmp.h b/modules/gmp/6.2.0.bcr.1/overlay/config/arm64/gmp.h
new file mode 100644
index 00000000000..133edc353bf
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/config/arm64/gmp.h
@@ -0,0 +1,2336 @@
+/* Definitions for GNU multiple precision functions. -*- mode: c -*-
+
+Copyright 1991, 1993-1997, 1999-2016, 2020 Free Software Foundation, Inc.
+
+This file is part of the GNU MP Library.
+
+The GNU MP Library is free software; you can redistribute it and/or modify
+it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+or
+
+ * the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any
+ later version.
+
+or both in parallel, as here.
+
+The GNU MP Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received copies of the GNU General Public License and the
+GNU Lesser General Public License along with the GNU MP Library. If not,
+see https://www.gnu.org/licenses/. */
+
+#ifndef __GMP_H__
+
+#if defined (__cplusplus)
+#include /* for std::istream, std::ostream, std::string */
+#include
+#endif
+
+
+/* Instantiated by configure. */
+#if ! defined (__GMP_WITHIN_CONFIGURE)
+#define __GMP_HAVE_HOST_CPU_FAMILY_power 0
+#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0
+#define GMP_LIMB_BITS 64
+#define GMP_NAIL_BITS 0
+#endif
+#define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS)
+#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS)
+#define GMP_NUMB_MAX GMP_NUMB_MASK
+#define GMP_NAIL_MASK (~ GMP_NUMB_MASK)
+
+
+#ifndef __GNU_MP__
+#define __GNU_MP__ 6
+
+#include /* for size_t */
+#include
+
+/* Instantiated by configure. */
+#if ! defined (__GMP_WITHIN_CONFIGURE)
+/* #undef _LONG_LONG_LIMB */
+#define __GMP_LIBGMP_DLL 0
+#endif
+
+
+/* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in
+ all other circumstances.
+
+ When compiling objects for libgmp, __GMP_DECLSPEC is an export directive,
+ or when compiling for an application it's an import directive. The two
+ cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles
+ (and not defined from an application).
+
+ __GMP_DECLSPEC_XX is similarly used for libgmpxx. __GMP_WITHIN_GMPXX
+ indicates when building libgmpxx, and in that case libgmpxx functions are
+ exports, but libgmp functions which might get called are imports.
+
+ Libtool DLL_EXPORT define is not used.
+
+ There's no attempt to support GMP built both static and DLL. Doing so
+ would mean applications would have to tell us which of the two is going
+ to be used when linking, and that seems very tedious and error prone if
+ using GMP by hand, and equally tedious from a package since autoconf and
+ automake don't give much help.
+
+ __GMP_DECLSPEC is required on all documented global functions and
+ variables, the various internals in gmp-impl.h etc can be left unadorned.
+ But internals used by the test programs or speed measuring programs
+ should have __GMP_DECLSPEC, and certainly constants or variables must
+ have it or the wrong address will be resolved.
+
+ In gcc __declspec can go at either the start or end of a prototype.
+
+ In Microsoft C __declspec must go at the start, or after the type like
+ void __declspec(...) *foo()". There's no __dllexport or anything to
+ guard against someone foolish #defining dllexport. _export used to be
+ available, but no longer.
+
+ In Borland C _export still exists, but needs to go after the type, like
+ "void _export foo();". Would have to change the __GMP_DECLSPEC syntax to
+ make use of that. Probably more trouble than it's worth. */
+
+#if defined (__GNUC__)
+#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__)
+#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__)
+#endif
+#if defined (_MSC_VER) || defined (__BORLANDC__)
+#define __GMP_DECLSPEC_EXPORT __declspec(dllexport)
+#define __GMP_DECLSPEC_IMPORT __declspec(dllimport)
+#endif
+#ifdef __WATCOMC__
+#define __GMP_DECLSPEC_EXPORT __export
+#define __GMP_DECLSPEC_IMPORT __import
+#endif
+#ifdef __IBMC__
+#define __GMP_DECLSPEC_EXPORT _Export
+#define __GMP_DECLSPEC_IMPORT _Import
+#endif
+
+#if __GMP_LIBGMP_DLL
+#ifdef __GMP_WITHIN_GMP
+/* compiling to go into a DLL libgmp */
+#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT
+#else
+/* compiling to go into an application which will link to a DLL libgmp */
+#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT
+#endif
+#else
+/* all other cases */
+#define __GMP_DECLSPEC
+#endif
+
+
+#ifdef __GMP_SHORT_LIMB
+typedef unsigned int mp_limb_t;
+typedef int mp_limb_signed_t;
+#else
+#ifdef _LONG_LONG_LIMB
+typedef unsigned long long int mp_limb_t;
+typedef long long int mp_limb_signed_t;
+#else
+typedef unsigned long int mp_limb_t;
+typedef long int mp_limb_signed_t;
+#endif
+#endif
+typedef unsigned long int mp_bitcnt_t;
+
+/* For reference, note that the name __mpz_struct gets into C++ mangled
+ function names, which means although the "__" suggests an internal, we
+ must leave this name for binary compatibility. */
+typedef struct
+{
+ int _mp_alloc; /* Number of *limbs* allocated and pointed
+ to by the _mp_d field. */
+ int _mp_size; /* abs(_mp_size) is the number of limbs the
+ last field points to. If _mp_size is
+ negative this is a negative number. */
+ mp_limb_t *_mp_d; /* Pointer to the limbs. */
+} __mpz_struct;
+
+#endif /* __GNU_MP__ */
+
+
+typedef __mpz_struct MP_INT; /* gmp 1 source compatibility */
+typedef __mpz_struct mpz_t[1];
+
+typedef mp_limb_t * mp_ptr;
+typedef const mp_limb_t * mp_srcptr;
+#if defined (_CRAY) && ! defined (_CRAYMPP)
+/* plain `int' is much faster (48 bits) */
+#define __GMP_MP_SIZE_T_INT 1
+typedef int mp_size_t;
+typedef int mp_exp_t;
+#else
+#define __GMP_MP_SIZE_T_INT 0
+typedef long int mp_size_t;
+typedef long int mp_exp_t;
+#endif
+
+typedef struct
+{
+ __mpz_struct _mp_num;
+ __mpz_struct _mp_den;
+} __mpq_struct;
+
+typedef __mpq_struct MP_RAT; /* gmp 1 source compatibility */
+typedef __mpq_struct mpq_t[1];
+
+typedef struct
+{
+ int _mp_prec; /* Max precision, in number of `mp_limb_t's.
+ Set by mpf_init and modified by
+ mpf_set_prec. The area pointed to by the
+ _mp_d field contains `prec' + 1 limbs. */
+ int _mp_size; /* abs(_mp_size) is the number of limbs the
+ last field points to. If _mp_size is
+ negative this is a negative number. */
+ mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */
+ mp_limb_t *_mp_d; /* Pointer to the limbs. */
+} __mpf_struct;
+
+/* typedef __mpf_struct MP_FLOAT; */
+typedef __mpf_struct mpf_t[1];
+
+/* Available random number generation algorithms. */
+typedef enum
+{
+ GMP_RAND_ALG_DEFAULT = 0,
+ GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */
+} gmp_randalg_t;
+
+/* Random state struct. */
+typedef struct
+{
+ mpz_t _mp_seed; /* _mp_d member points to state of the generator. */
+ gmp_randalg_t _mp_alg; /* Currently unused. */
+ union {
+ void *_mp_lc; /* Pointer to function pointers structure. */
+ } _mp_algdata;
+} __gmp_randstate_struct;
+typedef __gmp_randstate_struct gmp_randstate_t[1];
+
+/* Types for function declarations in gmp files. */
+/* ??? Should not pollute user name space with these ??? */
+typedef const __mpz_struct *mpz_srcptr;
+typedef __mpz_struct *mpz_ptr;
+typedef const __mpf_struct *mpf_srcptr;
+typedef __mpf_struct *mpf_ptr;
+typedef const __mpq_struct *mpq_srcptr;
+typedef __mpq_struct *mpq_ptr;
+
+
+#if __GMP_LIBGMP_DLL
+#ifdef __GMP_WITHIN_GMPXX
+/* compiling to go into a DLL libgmpxx */
+#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT
+#else
+/* compiling to go into a application which will link to a DLL libgmpxx */
+#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT
+#endif
+#else
+/* all other cases */
+#define __GMP_DECLSPEC_XX
+#endif
+
+
+#ifndef __MPN
+#define __MPN(x) __gmpn_##x
+#endif
+
+/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4,
+ defines EOF but not FILE. */
+#if defined (FILE) \
+ || defined (H_STDIO) \
+ || defined (_H_STDIO) /* AIX */ \
+ || defined (_STDIO_H) /* glibc, Sun, SCO */ \
+ || defined (_STDIO_H_) /* BSD, OSF */ \
+ || defined (__STDIO_H) /* Borland */ \
+ || defined (__STDIO_H__) /* IRIX */ \
+ || defined (_STDIO_INCLUDED) /* HPUX */ \
+ || defined (__dj_include_stdio_h_) /* DJGPP */ \
+ || defined (_FILE_DEFINED) /* Microsoft */ \
+ || defined (__STDIO__) /* Apple MPW MrC */ \
+ || defined (_MSL_STDIO_H) /* Metrowerks */ \
+ || defined (_STDIO_H_INCLUDED) /* QNX4 */ \
+ || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \
+ || defined (__STDIO_LOADED) /* VMS */ \
+ || defined (__DEFINED_FILE) /* musl */
+#define _GMP_H_HAVE_FILE 1
+#endif
+
+/* In ISO C, if a prototype involving "struct obstack *" is given without
+ that structure defined, then the struct is scoped down to just the
+ prototype, causing a conflict if it's subsequently defined for real. So
+ only give prototypes if we've got obstack.h. */
+#if defined (_OBSTACK_H) /* glibc */
+#define _GMP_H_HAVE_OBSTACK 1
+#endif
+
+/* The prototypes for gmp_vprintf etc are provided only if va_list is defined,
+ via an application having included . Usually va_list is a typedef
+ so can't be tested directly, but C99 specifies that va_start is a macro.
+
+ will define some sort of va_list for vprintf and vfprintf, but
+ let's not bother trying to use that since it's not standard and since
+ application uses for gmp_vprintf etc will almost certainly require the
+ whole anyway. */
+
+#ifdef va_start
+#define _GMP_H_HAVE_VA_LIST 1
+#endif
+
+/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
+#if defined (__GNUC__) && defined (__GNUC_MINOR__)
+#define __GMP_GNUC_PREREQ(maj, min) \
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+#define __GMP_GNUC_PREREQ(maj, min) 0
+#endif
+
+/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically
+ it means a function does nothing but examine its arguments and memory
+ (global or via arguments) to generate a return value, but changes nothing
+ and has no side-effects. __GMP_NO_ATTRIBUTE_CONST_PURE lets
+ tune/common.c etc turn this off when trying to write timing loops. */
+#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE)
+#define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+#define __GMP_ATTRIBUTE_PURE
+#endif
+
+
+/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean
+ to "g++ -Wold-style-cast".
+
+ Casts in "extern inline" code within an extern "C" block don't induce
+ these warnings, so __GMP_CAST only needs to be used on documented
+ macros. */
+
+#ifdef __cplusplus
+#define __GMP_CAST(type, expr) (static_cast (expr))
+#else
+#define __GMP_CAST(type, expr) ((type) (expr))
+#endif
+
+
+/* An empty "throw ()" means the function doesn't throw any C++ exceptions,
+ this can save some stack frame info in applications.
+
+ Currently it's given only on functions which never divide-by-zero etc,
+ don't allocate memory, and are expected to never need to allocate memory.
+ This leaves open the possibility of a C++ throw from a future GMP
+ exceptions scheme.
+
+ mpz_set_ui etc are omitted to leave open the lazy allocation scheme
+ described in doc/tasks.html. mpz_get_d etc are omitted to leave open
+ exceptions for float overflows.
+
+ Note that __GMP_NOTHROW must be given on any inlines the same as on their
+ prototypes (for g++ at least, where they're used together). Note also
+ that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like
+ __GMP_ATTRIBUTE_PURE. */
+
+#if defined (__cplusplus)
+#if __cplusplus >= 201103L
+#define __GMP_NOTHROW noexcept
+#else
+#define __GMP_NOTHROW throw ()
+#endif
+#else
+#define __GMP_NOTHROW
+#endif
+
+
+/* PORTME: What other compilers have a useful "extern inline"? "static
+ inline" would be an acceptable substitute if the compiler (or linker)
+ discards unused statics. */
+
+ /* gcc has __inline__ in all modes, including strict ansi. Give a prototype
+ for an inline too, so as to correctly specify "dllimport" on windows, in
+ case the function is called rather than inlined.
+ GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+ inline semantics, unless -fgnu89-inline is used. */
+#ifdef __GNUC__
+#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2) \
+ || (defined __GNUC_GNU_INLINE__ && defined __cplusplus)
+#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
+#else
+#define __GMP_EXTERN_INLINE extern __inline__
+#endif
+#define __GMP_INLINE_PROTOTYPES 1
+#endif
+
+/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1
+ strict ANSI mode. Inlining is done even when not optimizing (ie. -O0
+ mode, which is the default), but an unnecessary local copy of foo is
+ emitted unless -O is used. "extern __inline" is accepted, but the
+ "extern" appears to be ignored, ie. it becomes a plain global function
+ but which is inlined within its file. Don't know if all old versions of
+ DEC C supported __inline, but as a start let's do the right thing for
+ current versions. */
+#ifdef __DECC
+#define __GMP_EXTERN_INLINE static __inline
+#endif
+
+/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict
+ ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes
+ place under -O. Without -O "foo" seems to be emitted whether it's used
+ or not, which is wasteful. "extern inline foo()" isn't useful, the
+ "extern" is apparently ignored, so foo is inlined if possible but also
+ emitted as a global, which causes multiple definition errors when
+ building a shared libgmp. */
+#ifdef __SCO_VERSION__
+#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \
+ && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE static inline
+#endif
+#endif
+
+/* Microsoft's C compiler accepts __inline */
+#ifdef _MSC_VER
+#define __GMP_EXTERN_INLINE __inline
+#endif
+
+/* Recent enough Sun C compilers want "inline" */
+#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \
+ && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE inline
+#endif
+
+/* Somewhat older Sun C compilers want "static inline" */
+#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \
+ && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE static inline
+#endif
+
+
+/* C++ always has "inline" and since it's a normal feature the linker should
+ discard duplicate non-inlined copies, or if it doesn't then that's a
+ problem for everyone, not just GMP. */
+#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE inline
+#endif
+
+/* Don't do any inlining within a configure run, since if the compiler ends
+ up emitting copies of the code into the object file it can end up
+ demanding the various support routines (like mpn_popcount) for linking,
+ making the "alloca" test and perhaps others fail. And on hppa ia64 a
+ pre-release gcc 3.2 was seen not respecting the "extern" in "extern
+ __inline__", triggering this problem too. */
+#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE
+#undef __GMP_EXTERN_INLINE
+#endif
+
+/* By default, don't give a prototype when there's going to be an inline
+ version. Note in particular that Cray C++ objects to the combination of
+ prototype and inline. */
+#ifdef __GMP_EXTERN_INLINE
+#ifndef __GMP_INLINE_PROTOTYPES
+#define __GMP_INLINE_PROTOTYPES 0
+#endif
+#else
+#define __GMP_INLINE_PROTOTYPES 1
+#endif
+
+
+#define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x))
+#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i))
+
+
+/* __builtin_expect is in gcc 3.0, and not in 2.95. */
+#if __GMP_GNUC_PREREQ (3,0)
+#define __GMP_LIKELY(cond) __builtin_expect ((cond) != 0, 1)
+#define __GMP_UNLIKELY(cond) __builtin_expect ((cond) != 0, 0)
+#else
+#define __GMP_LIKELY(cond) (cond)
+#define __GMP_UNLIKELY(cond) (cond)
+#endif
+
+#ifdef _CRAY
+#define __GMP_CRAY_Pragma(str) _Pragma (str)
+#else
+#define __GMP_CRAY_Pragma(str)
+#endif
+
+
+/* Allow direct user access to numerator and denominator of an mpq_t object. */
+#define mpq_numref(Q) (&((Q)->_mp_num))
+#define mpq_denref(Q) (&((Q)->_mp_den))
+
+
+#if defined (__cplusplus)
+extern "C" {
+using std::FILE;
+#endif
+
+#define mp_set_memory_functions __gmp_set_memory_functions
+__GMP_DECLSPEC void mp_set_memory_functions (void *(*) (size_t),
+ void *(*) (void *, size_t, size_t),
+ void (*) (void *, size_t)) __GMP_NOTHROW;
+
+#define mp_get_memory_functions __gmp_get_memory_functions
+__GMP_DECLSPEC void mp_get_memory_functions (void *(**) (size_t),
+ void *(**) (void *, size_t, size_t),
+ void (**) (void *, size_t)) __GMP_NOTHROW;
+
+#define mp_bits_per_limb __gmp_bits_per_limb
+__GMP_DECLSPEC extern const int mp_bits_per_limb;
+
+#define gmp_errno __gmp_errno
+__GMP_DECLSPEC extern int gmp_errno;
+
+#define gmp_version __gmp_version
+__GMP_DECLSPEC extern const char * const gmp_version;
+
+
+/**************** Random number routines. ****************/
+
+/* obsolete */
+#define gmp_randinit __gmp_randinit
+__GMP_DECLSPEC void gmp_randinit (gmp_randstate_t, gmp_randalg_t, ...);
+
+#define gmp_randinit_default __gmp_randinit_default
+__GMP_DECLSPEC void gmp_randinit_default (gmp_randstate_t);
+
+#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp
+__GMP_DECLSPEC void gmp_randinit_lc_2exp (gmp_randstate_t, mpz_srcptr, unsigned long int, mp_bitcnt_t);
+
+#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size
+__GMP_DECLSPEC int gmp_randinit_lc_2exp_size (gmp_randstate_t, mp_bitcnt_t);
+
+#define gmp_randinit_mt __gmp_randinit_mt
+__GMP_DECLSPEC void gmp_randinit_mt (gmp_randstate_t);
+
+#define gmp_randinit_set __gmp_randinit_set
+__GMP_DECLSPEC void gmp_randinit_set (gmp_randstate_t, const __gmp_randstate_struct *);
+
+#define gmp_randseed __gmp_randseed
+__GMP_DECLSPEC void gmp_randseed (gmp_randstate_t, mpz_srcptr);
+
+#define gmp_randseed_ui __gmp_randseed_ui
+__GMP_DECLSPEC void gmp_randseed_ui (gmp_randstate_t, unsigned long int);
+
+#define gmp_randclear __gmp_randclear
+__GMP_DECLSPEC void gmp_randclear (gmp_randstate_t);
+
+#define gmp_urandomb_ui __gmp_urandomb_ui
+__GMP_DECLSPEC unsigned long gmp_urandomb_ui (gmp_randstate_t, unsigned long);
+
+#define gmp_urandomm_ui __gmp_urandomm_ui
+__GMP_DECLSPEC unsigned long gmp_urandomm_ui (gmp_randstate_t, unsigned long);
+
+
+/**************** Formatted output routines. ****************/
+
+#define gmp_asprintf __gmp_asprintf
+__GMP_DECLSPEC int gmp_asprintf (char **, const char *, ...);
+
+#define gmp_fprintf __gmp_fprintf
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC int gmp_fprintf (FILE *, const char *, ...);
+#endif
+
+#define gmp_obstack_printf __gmp_obstack_printf
+#if defined (_GMP_H_HAVE_OBSTACK)
+__GMP_DECLSPEC int gmp_obstack_printf (struct obstack *, const char *, ...);
+#endif
+
+#define gmp_obstack_vprintf __gmp_obstack_vprintf
+#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_obstack_vprintf (struct obstack *, const char *, va_list);
+#endif
+
+#define gmp_printf __gmp_printf
+__GMP_DECLSPEC int gmp_printf (const char *, ...);
+
+#define gmp_snprintf __gmp_snprintf
+__GMP_DECLSPEC int gmp_snprintf (char *, size_t, const char *, ...);
+
+#define gmp_sprintf __gmp_sprintf
+__GMP_DECLSPEC int gmp_sprintf (char *, const char *, ...);
+
+#define gmp_vasprintf __gmp_vasprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vasprintf (char **, const char *, va_list);
+#endif
+
+#define gmp_vfprintf __gmp_vfprintf
+#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vfprintf (FILE *, const char *, va_list);
+#endif
+
+#define gmp_vprintf __gmp_vprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vprintf (const char *, va_list);
+#endif
+
+#define gmp_vsnprintf __gmp_vsnprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vsnprintf (char *, size_t, const char *, va_list);
+#endif
+
+#define gmp_vsprintf __gmp_vsprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vsprintf (char *, const char *, va_list);
+#endif
+
+
+/**************** Formatted input routines. ****************/
+
+#define gmp_fscanf __gmp_fscanf
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC int gmp_fscanf (FILE *, const char *, ...);
+#endif
+
+#define gmp_scanf __gmp_scanf
+__GMP_DECLSPEC int gmp_scanf (const char *, ...);
+
+#define gmp_sscanf __gmp_sscanf
+__GMP_DECLSPEC int gmp_sscanf (const char *, const char *, ...);
+
+#define gmp_vfscanf __gmp_vfscanf
+#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vfscanf (FILE *, const char *, va_list);
+#endif
+
+#define gmp_vscanf __gmp_vscanf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vscanf (const char *, va_list);
+#endif
+
+#define gmp_vsscanf __gmp_vsscanf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vsscanf (const char *, const char *, va_list);
+#endif
+
+
+/**************** Integer (i.e. Z) routines. ****************/
+
+#define _mpz_realloc __gmpz_realloc
+#define mpz_realloc __gmpz_realloc
+__GMP_DECLSPEC void *_mpz_realloc (mpz_ptr, mp_size_t);
+
+#define mpz_abs __gmpz_abs
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs)
+__GMP_DECLSPEC void mpz_abs (mpz_ptr, mpz_srcptr);
+#endif
+
+#define mpz_add __gmpz_add
+__GMP_DECLSPEC void mpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_add_ui __gmpz_add_ui
+__GMP_DECLSPEC void mpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_addmul __gmpz_addmul
+__GMP_DECLSPEC void mpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_addmul_ui __gmpz_addmul_ui
+__GMP_DECLSPEC void mpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_and __gmpz_and
+__GMP_DECLSPEC void mpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_array_init __gmpz_array_init
+__GMP_DECLSPEC void mpz_array_init (mpz_ptr, mp_size_t, mp_size_t);
+
+#define mpz_bin_ui __gmpz_bin_ui
+__GMP_DECLSPEC void mpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_bin_uiui __gmpz_bin_uiui
+__GMP_DECLSPEC void mpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int);
+
+#define mpz_cdiv_q __gmpz_cdiv_q
+__GMP_DECLSPEC void mpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp
+__GMP_DECLSPEC void mpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_cdiv_qr __gmpz_cdiv_qr
+__GMP_DECLSPEC void mpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_cdiv_r __gmpz_cdiv_r
+__GMP_DECLSPEC void mpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp
+__GMP_DECLSPEC void mpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_cdiv_ui __gmpz_cdiv_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_clear __gmpz_clear
+__GMP_DECLSPEC void mpz_clear (mpz_ptr);
+
+#define mpz_clears __gmpz_clears
+__GMP_DECLSPEC void mpz_clears (mpz_ptr, ...);
+
+#define mpz_clrbit __gmpz_clrbit
+__GMP_DECLSPEC void mpz_clrbit (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_cmp __gmpz_cmp
+__GMP_DECLSPEC int mpz_cmp (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmp_d __gmpz_cmp_d
+__GMP_DECLSPEC int mpz_cmp_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE;
+
+#define _mpz_cmp_si __gmpz_cmp_si
+__GMP_DECLSPEC int _mpz_cmp_si (mpz_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define _mpz_cmp_ui __gmpz_cmp_ui
+__GMP_DECLSPEC int _mpz_cmp_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmpabs __gmpz_cmpabs
+__GMP_DECLSPEC int mpz_cmpabs (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmpabs_d __gmpz_cmpabs_d
+__GMP_DECLSPEC int mpz_cmpabs_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmpabs_ui __gmpz_cmpabs_ui
+__GMP_DECLSPEC int mpz_cmpabs_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_com __gmpz_com
+__GMP_DECLSPEC void mpz_com (mpz_ptr, mpz_srcptr);
+
+#define mpz_combit __gmpz_combit
+__GMP_DECLSPEC void mpz_combit (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_congruent_p __gmpz_congruent_p
+__GMP_DECLSPEC int mpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p
+__GMP_DECLSPEC int mpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_congruent_ui_p __gmpz_congruent_ui_p
+__GMP_DECLSPEC int mpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_divexact __gmpz_divexact
+__GMP_DECLSPEC void mpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_divexact_ui __gmpz_divexact_ui
+__GMP_DECLSPEC void mpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long);
+
+#define mpz_divisible_p __gmpz_divisible_p
+__GMP_DECLSPEC int mpz_divisible_p (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_divisible_ui_p __gmpz_divisible_ui_p
+__GMP_DECLSPEC int mpz_divisible_ui_p (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p
+__GMP_DECLSPEC int mpz_divisible_2exp_p (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_dump __gmpz_dump
+__GMP_DECLSPEC void mpz_dump (mpz_srcptr);
+
+#define mpz_export __gmpz_export
+__GMP_DECLSPEC void *mpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr);
+
+#define mpz_fac_ui __gmpz_fac_ui
+__GMP_DECLSPEC void mpz_fac_ui (mpz_ptr, unsigned long int);
+
+#define mpz_2fac_ui __gmpz_2fac_ui
+__GMP_DECLSPEC void mpz_2fac_ui (mpz_ptr, unsigned long int);
+
+#define mpz_mfac_uiui __gmpz_mfac_uiui
+__GMP_DECLSPEC void mpz_mfac_uiui (mpz_ptr, unsigned long int, unsigned long int);
+
+#define mpz_primorial_ui __gmpz_primorial_ui
+__GMP_DECLSPEC void mpz_primorial_ui (mpz_ptr, unsigned long int);
+
+#define mpz_fdiv_q __gmpz_fdiv_q
+__GMP_DECLSPEC void mpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp
+__GMP_DECLSPEC void mpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_fdiv_qr __gmpz_fdiv_qr
+__GMP_DECLSPEC void mpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_fdiv_r __gmpz_fdiv_r
+__GMP_DECLSPEC void mpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp
+__GMP_DECLSPEC void mpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_fdiv_ui __gmpz_fdiv_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fib_ui __gmpz_fib_ui
+__GMP_DECLSPEC void mpz_fib_ui (mpz_ptr, unsigned long int);
+
+#define mpz_fib2_ui __gmpz_fib2_ui
+__GMP_DECLSPEC void mpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int);
+
+#define mpz_fits_sint_p __gmpz_fits_sint_p
+__GMP_DECLSPEC int mpz_fits_sint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fits_slong_p __gmpz_fits_slong_p
+__GMP_DECLSPEC int mpz_fits_slong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fits_sshort_p __gmpz_fits_sshort_p
+__GMP_DECLSPEC int mpz_fits_sshort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fits_uint_p __gmpz_fits_uint_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p)
+__GMP_DECLSPEC int mpz_fits_uint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_fits_ulong_p __gmpz_fits_ulong_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p)
+__GMP_DECLSPEC int mpz_fits_ulong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_fits_ushort_p __gmpz_fits_ushort_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p)
+__GMP_DECLSPEC int mpz_fits_ushort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_gcd __gmpz_gcd
+__GMP_DECLSPEC void mpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_gcd_ui __gmpz_gcd_ui
+__GMP_DECLSPEC unsigned long int mpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_gcdext __gmpz_gcdext
+__GMP_DECLSPEC void mpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_get_d __gmpz_get_d
+__GMP_DECLSPEC double mpz_get_d (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_get_d_2exp __gmpz_get_d_2exp
+__GMP_DECLSPEC double mpz_get_d_2exp (signed long int *, mpz_srcptr);
+
+#define mpz_get_si __gmpz_get_si
+__GMP_DECLSPEC /* signed */ long int mpz_get_si (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_get_str __gmpz_get_str
+__GMP_DECLSPEC char *mpz_get_str (char *, int, mpz_srcptr);
+
+#define mpz_get_ui __gmpz_get_ui
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui)
+__GMP_DECLSPEC unsigned long int mpz_get_ui (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_getlimbn __gmpz_getlimbn
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn)
+__GMP_DECLSPEC mp_limb_t mpz_getlimbn (mpz_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_hamdist __gmpz_hamdist
+__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_import __gmpz_import
+__GMP_DECLSPEC void mpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *);
+
+#define mpz_init __gmpz_init
+__GMP_DECLSPEC void mpz_init (mpz_ptr) __GMP_NOTHROW;
+
+#define mpz_init2 __gmpz_init2
+__GMP_DECLSPEC void mpz_init2 (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_inits __gmpz_inits
+__GMP_DECLSPEC void mpz_inits (mpz_ptr, ...) __GMP_NOTHROW;
+
+#define mpz_init_set __gmpz_init_set
+__GMP_DECLSPEC void mpz_init_set (mpz_ptr, mpz_srcptr);
+
+#define mpz_init_set_d __gmpz_init_set_d
+__GMP_DECLSPEC void mpz_init_set_d (mpz_ptr, double);
+
+#define mpz_init_set_si __gmpz_init_set_si
+__GMP_DECLSPEC void mpz_init_set_si (mpz_ptr, signed long int);
+
+#define mpz_init_set_str __gmpz_init_set_str
+__GMP_DECLSPEC int mpz_init_set_str (mpz_ptr, const char *, int);
+
+#define mpz_init_set_ui __gmpz_init_set_ui
+__GMP_DECLSPEC void mpz_init_set_ui (mpz_ptr, unsigned long int);
+
+#define mpz_inp_raw __gmpz_inp_raw
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_inp_raw (mpz_ptr, FILE *);
+#endif
+
+#define mpz_inp_str __gmpz_inp_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_inp_str (mpz_ptr, FILE *, int);
+#endif
+
+#define mpz_invert __gmpz_invert
+__GMP_DECLSPEC int mpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_ior __gmpz_ior
+__GMP_DECLSPEC void mpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_jacobi __gmpz_jacobi
+__GMP_DECLSPEC int mpz_jacobi (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_kronecker mpz_jacobi /* alias */
+
+#define mpz_kronecker_si __gmpz_kronecker_si
+__GMP_DECLSPEC int mpz_kronecker_si (mpz_srcptr, long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_kronecker_ui __gmpz_kronecker_ui
+__GMP_DECLSPEC int mpz_kronecker_ui (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_si_kronecker __gmpz_si_kronecker
+__GMP_DECLSPEC int mpz_si_kronecker (long, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_ui_kronecker __gmpz_ui_kronecker
+__GMP_DECLSPEC int mpz_ui_kronecker (unsigned long, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_lcm __gmpz_lcm
+__GMP_DECLSPEC void mpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_lcm_ui __gmpz_lcm_ui
+__GMP_DECLSPEC void mpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long);
+
+#define mpz_legendre mpz_jacobi /* alias */
+
+#define mpz_lucnum_ui __gmpz_lucnum_ui
+__GMP_DECLSPEC void mpz_lucnum_ui (mpz_ptr, unsigned long int);
+
+#define mpz_lucnum2_ui __gmpz_lucnum2_ui
+__GMP_DECLSPEC void mpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int);
+
+#define mpz_millerrabin __gmpz_millerrabin
+__GMP_DECLSPEC int mpz_millerrabin (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_mod __gmpz_mod
+__GMP_DECLSPEC void mpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */
+
+#define mpz_mul __gmpz_mul
+__GMP_DECLSPEC void mpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_mul_2exp __gmpz_mul_2exp
+__GMP_DECLSPEC void mpz_mul_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_mul_si __gmpz_mul_si
+__GMP_DECLSPEC void mpz_mul_si (mpz_ptr, mpz_srcptr, long int);
+
+#define mpz_mul_ui __gmpz_mul_ui
+__GMP_DECLSPEC void mpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_neg __gmpz_neg
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg)
+__GMP_DECLSPEC void mpz_neg (mpz_ptr, mpz_srcptr);
+#endif
+
+#define mpz_nextprime __gmpz_nextprime
+__GMP_DECLSPEC void mpz_nextprime (mpz_ptr, mpz_srcptr);
+
+#define mpz_out_raw __gmpz_out_raw
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_out_raw (FILE *, mpz_srcptr);
+#endif
+
+#define mpz_out_str __gmpz_out_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr);
+#endif
+
+#define mpz_perfect_power_p __gmpz_perfect_power_p
+__GMP_DECLSPEC int mpz_perfect_power_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_perfect_square_p __gmpz_perfect_square_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p)
+__GMP_DECLSPEC int mpz_perfect_square_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_popcount __gmpz_popcount
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount)
+__GMP_DECLSPEC mp_bitcnt_t mpz_popcount (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_pow_ui __gmpz_pow_ui
+__GMP_DECLSPEC void mpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_powm __gmpz_powm
+__GMP_DECLSPEC void mpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_powm_sec __gmpz_powm_sec
+__GMP_DECLSPEC void mpz_powm_sec (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_powm_ui __gmpz_powm_ui
+__GMP_DECLSPEC void mpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr);
+
+#define mpz_probab_prime_p __gmpz_probab_prime_p
+__GMP_DECLSPEC int mpz_probab_prime_p (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_random __gmpz_random
+__GMP_DECLSPEC void mpz_random (mpz_ptr, mp_size_t);
+
+#define mpz_random2 __gmpz_random2
+__GMP_DECLSPEC void mpz_random2 (mpz_ptr, mp_size_t);
+
+#define mpz_realloc2 __gmpz_realloc2
+__GMP_DECLSPEC void mpz_realloc2 (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_remove __gmpz_remove
+__GMP_DECLSPEC mp_bitcnt_t mpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_root __gmpz_root
+__GMP_DECLSPEC int mpz_root (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_rootrem __gmpz_rootrem
+__GMP_DECLSPEC void mpz_rootrem (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_rrandomb __gmpz_rrandomb
+__GMP_DECLSPEC void mpz_rrandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t);
+
+#define mpz_scan0 __gmpz_scan0
+__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_scan1 __gmpz_scan1
+__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_set __gmpz_set
+__GMP_DECLSPEC void mpz_set (mpz_ptr, mpz_srcptr);
+
+#define mpz_set_d __gmpz_set_d
+__GMP_DECLSPEC void mpz_set_d (mpz_ptr, double);
+
+#define mpz_set_f __gmpz_set_f
+__GMP_DECLSPEC void mpz_set_f (mpz_ptr, mpf_srcptr);
+
+#define mpz_set_q __gmpz_set_q
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q)
+__GMP_DECLSPEC void mpz_set_q (mpz_ptr, mpq_srcptr);
+#endif
+
+#define mpz_set_si __gmpz_set_si
+__GMP_DECLSPEC void mpz_set_si (mpz_ptr, signed long int);
+
+#define mpz_set_str __gmpz_set_str
+__GMP_DECLSPEC int mpz_set_str (mpz_ptr, const char *, int);
+
+#define mpz_set_ui __gmpz_set_ui
+__GMP_DECLSPEC void mpz_set_ui (mpz_ptr, unsigned long int);
+
+#define mpz_setbit __gmpz_setbit
+__GMP_DECLSPEC void mpz_setbit (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_size __gmpz_size
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size)
+__GMP_DECLSPEC size_t mpz_size (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_sizeinbase __gmpz_sizeinbase
+__GMP_DECLSPEC size_t mpz_sizeinbase (mpz_srcptr, int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_sqrt __gmpz_sqrt
+__GMP_DECLSPEC void mpz_sqrt (mpz_ptr, mpz_srcptr);
+
+#define mpz_sqrtrem __gmpz_sqrtrem
+__GMP_DECLSPEC void mpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr);
+
+#define mpz_sub __gmpz_sub
+__GMP_DECLSPEC void mpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_sub_ui __gmpz_sub_ui
+__GMP_DECLSPEC void mpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_ui_sub __gmpz_ui_sub
+__GMP_DECLSPEC void mpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr);
+
+#define mpz_submul __gmpz_submul
+__GMP_DECLSPEC void mpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_submul_ui __gmpz_submul_ui
+__GMP_DECLSPEC void mpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_swap __gmpz_swap
+__GMP_DECLSPEC void mpz_swap (mpz_ptr, mpz_ptr) __GMP_NOTHROW;
+
+#define mpz_tdiv_ui __gmpz_tdiv_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_tdiv_q __gmpz_tdiv_q
+__GMP_DECLSPEC void mpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp
+__GMP_DECLSPEC void mpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_tdiv_qr __gmpz_tdiv_qr
+__GMP_DECLSPEC void mpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_tdiv_r __gmpz_tdiv_r
+__GMP_DECLSPEC void mpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp
+__GMP_DECLSPEC void mpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_tstbit __gmpz_tstbit
+__GMP_DECLSPEC int mpz_tstbit (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_ui_pow_ui __gmpz_ui_pow_ui
+__GMP_DECLSPEC void mpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int);
+
+#define mpz_urandomb __gmpz_urandomb
+__GMP_DECLSPEC void mpz_urandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t);
+
+#define mpz_urandomm __gmpz_urandomm
+__GMP_DECLSPEC void mpz_urandomm (mpz_ptr, gmp_randstate_t, mpz_srcptr);
+
+#define mpz_xor __gmpz_xor
+#define mpz_eor __gmpz_xor
+__GMP_DECLSPEC void mpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_limbs_read __gmpz_limbs_read
+__GMP_DECLSPEC mp_srcptr mpz_limbs_read (mpz_srcptr);
+
+#define mpz_limbs_write __gmpz_limbs_write
+__GMP_DECLSPEC mp_ptr mpz_limbs_write (mpz_ptr, mp_size_t);
+
+#define mpz_limbs_modify __gmpz_limbs_modify
+__GMP_DECLSPEC mp_ptr mpz_limbs_modify (mpz_ptr, mp_size_t);
+
+#define mpz_limbs_finish __gmpz_limbs_finish
+__GMP_DECLSPEC void mpz_limbs_finish (mpz_ptr, mp_size_t);
+
+#define mpz_roinit_n __gmpz_roinit_n
+__GMP_DECLSPEC mpz_srcptr mpz_roinit_n (mpz_ptr, mp_srcptr, mp_size_t);
+
+#define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }}
+
+/**************** Rational (i.e. Q) routines. ****************/
+
+#define mpq_abs __gmpq_abs
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs)
+__GMP_DECLSPEC void mpq_abs (mpq_ptr, mpq_srcptr);
+#endif
+
+#define mpq_add __gmpq_add
+__GMP_DECLSPEC void mpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_canonicalize __gmpq_canonicalize
+__GMP_DECLSPEC void mpq_canonicalize (mpq_ptr);
+
+#define mpq_clear __gmpq_clear
+__GMP_DECLSPEC void mpq_clear (mpq_ptr);
+
+#define mpq_clears __gmpq_clears
+__GMP_DECLSPEC void mpq_clears (mpq_ptr, ...);
+
+#define mpq_cmp __gmpq_cmp
+__GMP_DECLSPEC int mpq_cmp (mpq_srcptr, mpq_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define _mpq_cmp_si __gmpq_cmp_si
+__GMP_DECLSPEC int _mpq_cmp_si (mpq_srcptr, long, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define _mpq_cmp_ui __gmpq_cmp_ui
+__GMP_DECLSPEC int _mpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpq_cmp_z __gmpq_cmp_z
+__GMP_DECLSPEC int mpq_cmp_z (mpq_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpq_div __gmpq_div
+__GMP_DECLSPEC void mpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_div_2exp __gmpq_div_2exp
+__GMP_DECLSPEC void mpq_div_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t);
+
+#define mpq_equal __gmpq_equal
+__GMP_DECLSPEC int mpq_equal (mpq_srcptr, mpq_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpq_get_num __gmpq_get_num
+__GMP_DECLSPEC void mpq_get_num (mpz_ptr, mpq_srcptr);
+
+#define mpq_get_den __gmpq_get_den
+__GMP_DECLSPEC void mpq_get_den (mpz_ptr, mpq_srcptr);
+
+#define mpq_get_d __gmpq_get_d
+__GMP_DECLSPEC double mpq_get_d (mpq_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpq_get_str __gmpq_get_str
+__GMP_DECLSPEC char *mpq_get_str (char *, int, mpq_srcptr);
+
+#define mpq_init __gmpq_init
+__GMP_DECLSPEC void mpq_init (mpq_ptr);
+
+#define mpq_inits __gmpq_inits
+__GMP_DECLSPEC void mpq_inits (mpq_ptr, ...);
+
+#define mpq_inp_str __gmpq_inp_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpq_inp_str (mpq_ptr, FILE *, int);
+#endif
+
+#define mpq_inv __gmpq_inv
+__GMP_DECLSPEC void mpq_inv (mpq_ptr, mpq_srcptr);
+
+#define mpq_mul __gmpq_mul
+__GMP_DECLSPEC void mpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_mul_2exp __gmpq_mul_2exp
+__GMP_DECLSPEC void mpq_mul_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t);
+
+#define mpq_neg __gmpq_neg
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg)
+__GMP_DECLSPEC void mpq_neg (mpq_ptr, mpq_srcptr);
+#endif
+
+#define mpq_out_str __gmpq_out_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpq_out_str (FILE *, int, mpq_srcptr);
+#endif
+
+#define mpq_set __gmpq_set
+__GMP_DECLSPEC void mpq_set (mpq_ptr, mpq_srcptr);
+
+#define mpq_set_d __gmpq_set_d
+__GMP_DECLSPEC void mpq_set_d (mpq_ptr, double);
+
+#define mpq_set_den __gmpq_set_den
+__GMP_DECLSPEC void mpq_set_den (mpq_ptr, mpz_srcptr);
+
+#define mpq_set_f __gmpq_set_f
+__GMP_DECLSPEC void mpq_set_f (mpq_ptr, mpf_srcptr);
+
+#define mpq_set_num __gmpq_set_num
+__GMP_DECLSPEC void mpq_set_num (mpq_ptr, mpz_srcptr);
+
+#define mpq_set_si __gmpq_set_si
+__GMP_DECLSPEC void mpq_set_si (mpq_ptr, signed long int, unsigned long int);
+
+#define mpq_set_str __gmpq_set_str
+__GMP_DECLSPEC int mpq_set_str (mpq_ptr, const char *, int);
+
+#define mpq_set_ui __gmpq_set_ui
+__GMP_DECLSPEC void mpq_set_ui (mpq_ptr, unsigned long int, unsigned long int);
+
+#define mpq_set_z __gmpq_set_z
+__GMP_DECLSPEC void mpq_set_z (mpq_ptr, mpz_srcptr);
+
+#define mpq_sub __gmpq_sub
+__GMP_DECLSPEC void mpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_swap __gmpq_swap
+__GMP_DECLSPEC void mpq_swap (mpq_ptr, mpq_ptr) __GMP_NOTHROW;
+
+
+/**************** Float (i.e. F) routines. ****************/
+
+#define mpf_abs __gmpf_abs
+__GMP_DECLSPEC void mpf_abs (mpf_ptr, mpf_srcptr);
+
+#define mpf_add __gmpf_add
+__GMP_DECLSPEC void mpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_add_ui __gmpf_add_ui
+__GMP_DECLSPEC void mpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+#define mpf_ceil __gmpf_ceil
+__GMP_DECLSPEC void mpf_ceil (mpf_ptr, mpf_srcptr);
+
+#define mpf_clear __gmpf_clear
+__GMP_DECLSPEC void mpf_clear (mpf_ptr);
+
+#define mpf_clears __gmpf_clears
+__GMP_DECLSPEC void mpf_clears (mpf_ptr, ...);
+
+#define mpf_cmp __gmpf_cmp
+__GMP_DECLSPEC int mpf_cmp (mpf_srcptr, mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_z __gmpf_cmp_z
+__GMP_DECLSPEC int mpf_cmp_z (mpf_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_d __gmpf_cmp_d
+__GMP_DECLSPEC int mpf_cmp_d (mpf_srcptr, double) __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_si __gmpf_cmp_si
+__GMP_DECLSPEC int mpf_cmp_si (mpf_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_ui __gmpf_cmp_ui
+__GMP_DECLSPEC int mpf_cmp_ui (mpf_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_div __gmpf_div
+__GMP_DECLSPEC void mpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_div_2exp __gmpf_div_2exp
+__GMP_DECLSPEC void mpf_div_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t);
+
+#define mpf_div_ui __gmpf_div_ui
+__GMP_DECLSPEC void mpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_dump __gmpf_dump
+__GMP_DECLSPEC void mpf_dump (mpf_srcptr);
+
+#define mpf_eq __gmpf_eq
+__GMP_DECLSPEC int mpf_eq (mpf_srcptr, mpf_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_sint_p __gmpf_fits_sint_p
+__GMP_DECLSPEC int mpf_fits_sint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_slong_p __gmpf_fits_slong_p
+__GMP_DECLSPEC int mpf_fits_slong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_sshort_p __gmpf_fits_sshort_p
+__GMP_DECLSPEC int mpf_fits_sshort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_uint_p __gmpf_fits_uint_p
+__GMP_DECLSPEC int mpf_fits_uint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_ulong_p __gmpf_fits_ulong_p
+__GMP_DECLSPEC int mpf_fits_ulong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_ushort_p __gmpf_fits_ushort_p
+__GMP_DECLSPEC int mpf_fits_ushort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_floor __gmpf_floor
+__GMP_DECLSPEC void mpf_floor (mpf_ptr, mpf_srcptr);
+
+#define mpf_get_d __gmpf_get_d
+__GMP_DECLSPEC double mpf_get_d (mpf_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_d_2exp __gmpf_get_d_2exp
+__GMP_DECLSPEC double mpf_get_d_2exp (signed long int *, mpf_srcptr);
+
+#define mpf_get_default_prec __gmpf_get_default_prec
+__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec (void) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_prec __gmpf_get_prec
+__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_si __gmpf_get_si
+__GMP_DECLSPEC long mpf_get_si (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_str __gmpf_get_str
+__GMP_DECLSPEC char *mpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr);
+
+#define mpf_get_ui __gmpf_get_ui
+__GMP_DECLSPEC unsigned long mpf_get_ui (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_init __gmpf_init
+__GMP_DECLSPEC void mpf_init (mpf_ptr);
+
+#define mpf_init2 __gmpf_init2
+__GMP_DECLSPEC void mpf_init2 (mpf_ptr, mp_bitcnt_t);
+
+#define mpf_inits __gmpf_inits
+__GMP_DECLSPEC void mpf_inits (mpf_ptr, ...);
+
+#define mpf_init_set __gmpf_init_set
+__GMP_DECLSPEC void mpf_init_set (mpf_ptr, mpf_srcptr);
+
+#define mpf_init_set_d __gmpf_init_set_d
+__GMP_DECLSPEC void mpf_init_set_d (mpf_ptr, double);
+
+#define mpf_init_set_si __gmpf_init_set_si
+__GMP_DECLSPEC void mpf_init_set_si (mpf_ptr, signed long int);
+
+#define mpf_init_set_str __gmpf_init_set_str
+__GMP_DECLSPEC int mpf_init_set_str (mpf_ptr, const char *, int);
+
+#define mpf_init_set_ui __gmpf_init_set_ui
+__GMP_DECLSPEC void mpf_init_set_ui (mpf_ptr, unsigned long int);
+
+#define mpf_inp_str __gmpf_inp_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpf_inp_str (mpf_ptr, FILE *, int);
+#endif
+
+#define mpf_integer_p __gmpf_integer_p
+__GMP_DECLSPEC int mpf_integer_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_mul __gmpf_mul
+__GMP_DECLSPEC void mpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_mul_2exp __gmpf_mul_2exp
+__GMP_DECLSPEC void mpf_mul_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t);
+
+#define mpf_mul_ui __gmpf_mul_ui
+__GMP_DECLSPEC void mpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_neg __gmpf_neg
+__GMP_DECLSPEC void mpf_neg (mpf_ptr, mpf_srcptr);
+
+#define mpf_out_str __gmpf_out_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpf_out_str (FILE *, int, size_t, mpf_srcptr);
+#endif
+
+#define mpf_pow_ui __gmpf_pow_ui
+__GMP_DECLSPEC void mpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_random2 __gmpf_random2
+__GMP_DECLSPEC void mpf_random2 (mpf_ptr, mp_size_t, mp_exp_t);
+
+#define mpf_reldiff __gmpf_reldiff
+__GMP_DECLSPEC void mpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_set __gmpf_set
+__GMP_DECLSPEC void mpf_set (mpf_ptr, mpf_srcptr);
+
+#define mpf_set_d __gmpf_set_d
+__GMP_DECLSPEC void mpf_set_d (mpf_ptr, double);
+
+#define mpf_set_default_prec __gmpf_set_default_prec
+__GMP_DECLSPEC void mpf_set_default_prec (mp_bitcnt_t) __GMP_NOTHROW;
+
+#define mpf_set_prec __gmpf_set_prec
+__GMP_DECLSPEC void mpf_set_prec (mpf_ptr, mp_bitcnt_t);
+
+#define mpf_set_prec_raw __gmpf_set_prec_raw
+__GMP_DECLSPEC void mpf_set_prec_raw (mpf_ptr, mp_bitcnt_t) __GMP_NOTHROW;
+
+#define mpf_set_q __gmpf_set_q
+__GMP_DECLSPEC void mpf_set_q (mpf_ptr, mpq_srcptr);
+
+#define mpf_set_si __gmpf_set_si
+__GMP_DECLSPEC void mpf_set_si (mpf_ptr, signed long int);
+
+#define mpf_set_str __gmpf_set_str
+__GMP_DECLSPEC int mpf_set_str (mpf_ptr, const char *, int);
+
+#define mpf_set_ui __gmpf_set_ui
+__GMP_DECLSPEC void mpf_set_ui (mpf_ptr, unsigned long int);
+
+#define mpf_set_z __gmpf_set_z
+__GMP_DECLSPEC void mpf_set_z (mpf_ptr, mpz_srcptr);
+
+#define mpf_size __gmpf_size
+__GMP_DECLSPEC size_t mpf_size (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_sqrt __gmpf_sqrt
+__GMP_DECLSPEC void mpf_sqrt (mpf_ptr, mpf_srcptr);
+
+#define mpf_sqrt_ui __gmpf_sqrt_ui
+__GMP_DECLSPEC void mpf_sqrt_ui (mpf_ptr, unsigned long int);
+
+#define mpf_sub __gmpf_sub
+__GMP_DECLSPEC void mpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_sub_ui __gmpf_sub_ui
+__GMP_DECLSPEC void mpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_swap __gmpf_swap
+__GMP_DECLSPEC void mpf_swap (mpf_ptr, mpf_ptr) __GMP_NOTHROW;
+
+#define mpf_trunc __gmpf_trunc
+__GMP_DECLSPEC void mpf_trunc (mpf_ptr, mpf_srcptr);
+
+#define mpf_ui_div __gmpf_ui_div
+__GMP_DECLSPEC void mpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr);
+
+#define mpf_ui_sub __gmpf_ui_sub
+__GMP_DECLSPEC void mpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr);
+
+#define mpf_urandomb __gmpf_urandomb
+__GMP_DECLSPEC void mpf_urandomb (mpf_t, gmp_randstate_t, mp_bitcnt_t);
+
+
+/************ Low level positive-integer (i.e. N) routines. ************/
+
+/* This is ugly, but we need to make user calls reach the prefixed function. */
+
+#define mpn_add __MPN(add)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add)
+__GMP_DECLSPEC mp_limb_t mpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+#endif
+
+#define mpn_add_1 __MPN(add_1)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1)
+__GMP_DECLSPEC mp_limb_t mpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW;
+#endif
+
+#define mpn_add_n __MPN(add_n)
+__GMP_DECLSPEC mp_limb_t mpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_addmul_1 __MPN(addmul_1)
+__GMP_DECLSPEC mp_limb_t mpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_cmp __MPN(cmp)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp)
+__GMP_DECLSPEC int mpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpn_zero_p __MPN(zero_p)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_zero_p)
+__GMP_DECLSPEC int mpn_zero_p (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpn_divexact_1 __MPN(divexact_1)
+__GMP_DECLSPEC void mpn_divexact_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_divexact_by3(dst,src,size) \
+ mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0))
+
+#define mpn_divexact_by3c __MPN(divexact_by3c)
+__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_divmod_1(qp,np,nsize,dlimb) \
+ mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb)
+
+#define mpn_divrem __MPN(divrem)
+__GMP_DECLSPEC mp_limb_t mpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t);
+
+#define mpn_divrem_1 __MPN(divrem_1)
+__GMP_DECLSPEC mp_limb_t mpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_divrem_2 __MPN(divrem_2)
+__GMP_DECLSPEC mp_limb_t mpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr);
+
+#define mpn_div_qr_1 __MPN(div_qr_1)
+__GMP_DECLSPEC mp_limb_t mpn_div_qr_1 (mp_ptr, mp_limb_t *, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_div_qr_2 __MPN(div_qr_2)
+__GMP_DECLSPEC mp_limb_t mpn_div_qr_2 (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr);
+
+#define mpn_gcd __MPN(gcd)
+__GMP_DECLSPEC mp_size_t mpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
+
+#define mpn_gcd_11 __MPN(gcd_11)
+__GMP_DECLSPEC mp_limb_t mpn_gcd_11 (mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_gcd_1 __MPN(gcd_1)
+__GMP_DECLSPEC mp_limb_t mpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_gcdext_1 __MPN(gcdext_1)
+__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 (mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t);
+
+#define mpn_gcdext __MPN(gcdext)
+__GMP_DECLSPEC mp_size_t mpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
+
+#define mpn_get_str __MPN(get_str)
+__GMP_DECLSPEC size_t mpn_get_str (unsigned char *, int, mp_ptr, mp_size_t);
+
+#define mpn_hamdist __MPN(hamdist)
+__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpn_lshift __MPN(lshift)
+__GMP_DECLSPEC mp_limb_t mpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+
+#define mpn_mod_1 __MPN(mod_1)
+__GMP_DECLSPEC mp_limb_t mpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_mul __MPN(mul)
+__GMP_DECLSPEC mp_limb_t mpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+
+#define mpn_mul_1 __MPN(mul_1)
+__GMP_DECLSPEC mp_limb_t mpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_mul_n __MPN(mul_n)
+__GMP_DECLSPEC void mpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_sqr __MPN(sqr)
+__GMP_DECLSPEC void mpn_sqr (mp_ptr, mp_srcptr, mp_size_t);
+
+#define mpn_neg __MPN(neg)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg)
+__GMP_DECLSPEC mp_limb_t mpn_neg (mp_ptr, mp_srcptr, mp_size_t);
+#endif
+
+#define mpn_com __MPN(com)
+__GMP_DECLSPEC void mpn_com (mp_ptr, mp_srcptr, mp_size_t);
+
+#define mpn_perfect_square_p __MPN(perfect_square_p)
+__GMP_DECLSPEC int mpn_perfect_square_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_perfect_power_p __MPN(perfect_power_p)
+__GMP_DECLSPEC int mpn_perfect_power_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_popcount __MPN(popcount)
+__GMP_DECLSPEC mp_bitcnt_t mpn_popcount (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpn_pow_1 __MPN(pow_1)
+__GMP_DECLSPEC mp_size_t mpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+
+/* undocumented now, but retained here for upward compatibility */
+#define mpn_preinv_mod_1 __MPN(preinv_mod_1)
+__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_random __MPN(random)
+__GMP_DECLSPEC void mpn_random (mp_ptr, mp_size_t);
+
+#define mpn_random2 __MPN(random2)
+__GMP_DECLSPEC void mpn_random2 (mp_ptr, mp_size_t);
+
+#define mpn_rshift __MPN(rshift)
+__GMP_DECLSPEC mp_limb_t mpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+
+#define mpn_scan0 __MPN(scan0)
+__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_scan1 __MPN(scan1)
+__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_set_str __MPN(set_str)
+__GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);
+
+#define mpn_sizeinbase __MPN(sizeinbase)
+__GMP_DECLSPEC size_t mpn_sizeinbase (mp_srcptr, mp_size_t, int);
+
+#define mpn_sqrtrem __MPN(sqrtrem)
+__GMP_DECLSPEC mp_size_t mpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t);
+
+#define mpn_sub __MPN(sub)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub)
+__GMP_DECLSPEC mp_limb_t mpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+#endif
+
+#define mpn_sub_1 __MPN(sub_1)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1)
+__GMP_DECLSPEC mp_limb_t mpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW;
+#endif
+
+#define mpn_sub_n __MPN(sub_n)
+__GMP_DECLSPEC mp_limb_t mpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_submul_1 __MPN(submul_1)
+__GMP_DECLSPEC mp_limb_t mpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_tdiv_qr __MPN(tdiv_qr)
+__GMP_DECLSPEC void mpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+
+#define mpn_and_n __MPN(and_n)
+__GMP_DECLSPEC void mpn_and_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_andn_n __MPN(andn_n)
+__GMP_DECLSPEC void mpn_andn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_nand_n __MPN(nand_n)
+__GMP_DECLSPEC void mpn_nand_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_ior_n __MPN(ior_n)
+__GMP_DECLSPEC void mpn_ior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_iorn_n __MPN(iorn_n)
+__GMP_DECLSPEC void mpn_iorn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_nior_n __MPN(nior_n)
+__GMP_DECLSPEC void mpn_nior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_xor_n __MPN(xor_n)
+__GMP_DECLSPEC void mpn_xor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_xnor_n __MPN(xnor_n)
+__GMP_DECLSPEC void mpn_xnor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_copyi __MPN(copyi)
+__GMP_DECLSPEC void mpn_copyi (mp_ptr, mp_srcptr, mp_size_t);
+#define mpn_copyd __MPN(copyd)
+__GMP_DECLSPEC void mpn_copyd (mp_ptr, mp_srcptr, mp_size_t);
+#define mpn_zero __MPN(zero)
+__GMP_DECLSPEC void mpn_zero (mp_ptr, mp_size_t);
+
+#define mpn_cnd_add_n __MPN(cnd_add_n)
+__GMP_DECLSPEC mp_limb_t mpn_cnd_add_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_cnd_sub_n __MPN(cnd_sub_n)
+__GMP_DECLSPEC mp_limb_t mpn_cnd_sub_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_sec_add_1 __MPN(sec_add_1)
+__GMP_DECLSPEC mp_limb_t mpn_sec_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+#define mpn_sec_add_1_itch __MPN(sec_add_1_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_add_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_sub_1 __MPN(sec_sub_1)
+__GMP_DECLSPEC mp_limb_t mpn_sec_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+#define mpn_sec_sub_1_itch __MPN(sec_sub_1_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_sub_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_cnd_swap __MPN(cnd_swap)
+__GMP_DECLSPEC void mpn_cnd_swap (mp_limb_t, volatile mp_limb_t *, volatile mp_limb_t *, mp_size_t);
+
+#define mpn_sec_mul __MPN(sec_mul)
+__GMP_DECLSPEC void mpn_sec_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_mul_itch __MPN(sec_mul_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_mul_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_sqr __MPN(sec_sqr)
+__GMP_DECLSPEC void mpn_sec_sqr (mp_ptr, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_sqr_itch __MPN(sec_sqr_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_sqr_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_powm __MPN(sec_powm)
+__GMP_DECLSPEC void mpn_sec_powm (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_bitcnt_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_powm_itch __MPN(sec_powm_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_powm_itch (mp_size_t, mp_bitcnt_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_tabselect __MPN(sec_tabselect)
+__GMP_DECLSPEC void mpn_sec_tabselect (volatile mp_limb_t *, volatile const mp_limb_t *, mp_size_t, mp_size_t, mp_size_t);
+
+#define mpn_sec_div_qr __MPN(sec_div_qr)
+__GMP_DECLSPEC mp_limb_t mpn_sec_div_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_div_qr_itch __MPN(sec_div_qr_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_div_qr_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+#define mpn_sec_div_r __MPN(sec_div_r)
+__GMP_DECLSPEC void mpn_sec_div_r (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_div_r_itch __MPN(sec_div_r_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_div_r_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_invert __MPN(sec_invert)
+__GMP_DECLSPEC int mpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitcnt_t, mp_ptr);
+#define mpn_sec_invert_itch __MPN(sec_invert_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_invert_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+
+/**************** mpz inlines ****************/
+
+/* The following are provided as inlines where possible, but always exist as
+ library functions too, for binary compatibility.
+
+ Within gmp itself this inlining generally isn't relied on, since it
+ doesn't get done for all compilers, whereas if something is worth
+ inlining then it's worth arranging always.
+
+ There are two styles of inlining here. When the same bit of code is
+ wanted for the inline as for the library version, then __GMP_FORCE_foo
+ arranges for that code to be emitted and the __GMP_EXTERN_INLINE
+ directive suppressed, eg. mpz_fits_uint_p. When a different bit of code
+ is wanted for the inline than for the library version, then
+ __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs)
+__GMP_EXTERN_INLINE void
+mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpz_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size);
+}
+#endif
+
+#if GMP_NAIL_BITS == 0
+#define __GMPZ_FITS_UTYPE_P(z,maxval) \
+ mp_size_t __gmp_n = z->_mp_size; \
+ mp_ptr __gmp_p = z->_mp_d; \
+ return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval));
+#else
+#define __GMPZ_FITS_UTYPE_P(z,maxval) \
+ mp_size_t __gmp_n = z->_mp_size; \
+ mp_ptr __gmp_p = z->_mp_d; \
+ return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \
+ || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS)));
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p)
+#if ! defined (__GMP_FORCE_mpz_fits_uint_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ __GMPZ_FITS_UTYPE_P (__gmp_z, UINT_MAX);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p)
+#if ! defined (__GMP_FORCE_mpz_fits_ulong_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ __GMPZ_FITS_UTYPE_P (__gmp_z, ULONG_MAX);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p)
+#if ! defined (__GMP_FORCE_mpz_fits_ushort_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ __GMPZ_FITS_UTYPE_P (__gmp_z, USHRT_MAX);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui)
+#if ! defined (__GMP_FORCE_mpz_get_ui)
+__GMP_EXTERN_INLINE
+#endif
+unsigned long
+mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ mp_ptr __gmp_p = __gmp_z->_mp_d;
+ mp_size_t __gmp_n = __gmp_z->_mp_size;
+ mp_limb_t __gmp_l = __gmp_p[0];
+ /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings
+ about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland
+ C++ 6.0 warnings about condition always true for something like
+ "ULONG_MAX < GMP_NUMB_MASK". */
+#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB)
+ /* limb==long and no nails, or limb==longlong, one limb is enough */
+ return (__gmp_n != 0 ? __gmp_l : 0);
+#else
+ /* limb==long and nails, need two limbs when available */
+ __gmp_n = __GMP_ABS (__gmp_n);
+ if (__gmp_n <= 1)
+ return (__gmp_n != 0 ? __gmp_l : 0);
+ else
+ return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS);
+#endif
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn)
+#if ! defined (__GMP_FORCE_mpz_getlimbn)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW
+{
+ mp_limb_t __gmp_result = 0;
+ if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size)))
+ __gmp_result = __gmp_z->_mp_d[__gmp_n];
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg)
+__GMP_EXTERN_INLINE void
+mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpz_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_size = - __gmp_w->_mp_size;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p)
+#if ! defined (__GMP_FORCE_mpz_perfect_square_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_perfect_square_p (mpz_srcptr __gmp_a)
+{
+ mp_size_t __gmp_asize;
+ int __gmp_result;
+
+ __gmp_asize = __gmp_a->_mp_size;
+ __gmp_result = (__gmp_asize >= 0); /* zero is a square, negatives are not */
+ if (__GMP_LIKELY (__gmp_asize > 0))
+ __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount)
+#if ! defined (__GMP_FORCE_mpz_popcount)
+__GMP_EXTERN_INLINE
+#endif
+mp_bitcnt_t
+mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW
+{
+ mp_size_t __gmp_usize;
+ mp_bitcnt_t __gmp_result;
+
+ __gmp_usize = __gmp_u->_mp_size;
+ __gmp_result = (__gmp_usize < 0 ? ~ __GMP_CAST (mp_bitcnt_t, 0) : __GMP_CAST (mp_bitcnt_t, 0));
+ if (__GMP_LIKELY (__gmp_usize > 0))
+ __gmp_result = mpn_popcount (__gmp_u->_mp_d, __gmp_usize);
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q)
+#if ! defined (__GMP_FORCE_mpz_set_q)
+__GMP_EXTERN_INLINE
+#endif
+void
+mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u));
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size)
+#if ! defined (__GMP_FORCE_mpz_size)
+__GMP_EXTERN_INLINE
+#endif
+size_t
+mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ return __GMP_ABS (__gmp_z->_mp_size);
+}
+#endif
+
+
+/**************** mpq inlines ****************/
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs)
+__GMP_EXTERN_INLINE void
+mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpq_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg)
+__GMP_EXTERN_INLINE void
+mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpq_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
+}
+#endif
+
+
+/**************** mpn inlines ****************/
+
+/* The comments with __GMPN_ADD_1 below apply here too.
+
+ The test for FUNCTION returning 0 should predict well. If it's assumed
+ {yp,ysize} will usually have a random number of bits then the high limb
+ won't be full and a carry out will occur a good deal less than 50% of the
+ time.
+
+ ysize==0 isn't a documented feature, but is used internally in a few
+ places.
+
+ Producing cout last stops it using up a register during the main part of
+ the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))"
+ doesn't seem able to move the true and false legs of the conditional up
+ to the two places cout is generated. */
+
+#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x; \
+ \
+ /* ASSERT ((ysize) >= 0); */ \
+ /* ASSERT ((xsize) >= (ysize)); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \
+ \
+ __gmp_i = (ysize); \
+ if (__gmp_i != 0) \
+ { \
+ if (FUNCTION (wp, xp, yp, __gmp_i)) \
+ { \
+ do \
+ { \
+ if (__gmp_i >= (xsize)) \
+ { \
+ (cout) = 1; \
+ goto __gmp_done; \
+ } \
+ __gmp_x = (xp)[__gmp_i]; \
+ } \
+ while (TEST); \
+ } \
+ } \
+ if ((wp) != (xp)) \
+ __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \
+ (cout) = 0; \
+ __gmp_done: \
+ ; \
+ } while (0)
+
+#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \
+ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \
+ (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0))
+#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \
+ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \
+ (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0))
+
+
+/* The use of __gmp_i indexing is designed to ensure a compile time src==dst
+ remains nice and clear to the compiler, so that __GMPN_COPY_REST can
+ disappear, and the load/add/store gets a chance to become a
+ read-modify-write on CISC CPUs.
+
+ Alternatives:
+
+ Using a pair of pointers instead of indexing would be possible, but gcc
+ isn't able to recognise compile-time src==dst in that case, even when the
+ pointers are incremented more or less together. Other compilers would
+ very likely have similar difficulty.
+
+ gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or
+ similar to detect a compile-time src==dst. This works nicely on gcc
+ 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems
+ to be always false, for a pointer p. But the current code form seems
+ good enough for src==dst anyway.
+
+ gcc on x86 as usual doesn't give particularly good flags handling for the
+ carry/borrow detection. It's tempting to want some multi instruction asm
+ blocks to help it, and this was tried, but in truth there's only a few
+ instructions to save and any gain is all too easily lost by register
+ juggling setting up for the asm. */
+
+#if GMP_NAIL_BITS == 0
+#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x, __gmp_r; \
+ \
+ /* ASSERT ((n) >= 1); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \
+ \
+ __gmp_x = (src)[0]; \
+ __gmp_r = __gmp_x OP (v); \
+ (dst)[0] = __gmp_r; \
+ if (CB (__gmp_r, __gmp_x, (v))) \
+ { \
+ (cout) = 1; \
+ for (__gmp_i = 1; __gmp_i < (n);) \
+ { \
+ __gmp_x = (src)[__gmp_i]; \
+ __gmp_r = __gmp_x OP 1; \
+ (dst)[__gmp_i] = __gmp_r; \
+ ++__gmp_i; \
+ if (!CB (__gmp_r, __gmp_x, 1)) \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, __gmp_i); \
+ (cout) = 0; \
+ break; \
+ } \
+ } \
+ } \
+ else \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, 1); \
+ (cout) = 0; \
+ } \
+ } while (0)
+#endif
+
+#if GMP_NAIL_BITS >= 1
+#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x, __gmp_r; \
+ \
+ /* ASSERT ((n) >= 1); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \
+ \
+ __gmp_x = (src)[0]; \
+ __gmp_r = __gmp_x OP (v); \
+ (dst)[0] = __gmp_r & GMP_NUMB_MASK; \
+ if (__gmp_r >> GMP_NUMB_BITS != 0) \
+ { \
+ (cout) = 1; \
+ for (__gmp_i = 1; __gmp_i < (n);) \
+ { \
+ __gmp_x = (src)[__gmp_i]; \
+ __gmp_r = __gmp_x OP 1; \
+ (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \
+ ++__gmp_i; \
+ if (__gmp_r >> GMP_NUMB_BITS == 0) \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, __gmp_i); \
+ (cout) = 0; \
+ break; \
+ } \
+ } \
+ } \
+ else \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, 1); \
+ (cout) = 0; \
+ } \
+ } while (0)
+#endif
+
+#define __GMPN_ADDCB(r,x,y) ((r) < (y))
+#define __GMPN_SUBCB(r,x,y) ((x) < (y))
+
+#define __GMPN_ADD_1(cout, dst, src, n, v) \
+ __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB)
+#define __GMPN_SUB_1(cout, dst, src, n, v) \
+ __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB)
+
+
+/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or
+ negative. size==0 is allowed. On random data usually only one limb will
+ need to be examined to get a result, so it's worth having it inline. */
+#define __GMPN_CMP(result, xp, yp, size) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x, __gmp_y; \
+ \
+ /* ASSERT ((size) >= 0); */ \
+ \
+ (result) = 0; \
+ __gmp_i = (size); \
+ while (--__gmp_i >= 0) \
+ { \
+ __gmp_x = (xp)[__gmp_i]; \
+ __gmp_y = (yp)[__gmp_i]; \
+ if (__gmp_x != __gmp_y) \
+ { \
+ /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \
+ (result) = (__gmp_x > __gmp_y ? 1 : -1); \
+ break; \
+ } \
+ } \
+ } while (0)
+
+
+#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST)
+#define __GMPN_COPY_REST(dst, src, size, start) \
+ do { \
+ /* ASSERT ((start) >= 0); */ \
+ /* ASSERT ((start) <= (size)); */ \
+ __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \
+ } while (0)
+#endif
+
+/* Copy {src,size} to {dst,size}, starting at "start". This is designed to
+ keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1,
+ __GMPN_ADD, etc. */
+#if ! defined (__GMPN_COPY_REST)
+#define __GMPN_COPY_REST(dst, src, size, start) \
+ do { \
+ mp_size_t __gmp_j; \
+ /* ASSERT ((size) >= 0); */ \
+ /* ASSERT ((start) >= 0); */ \
+ /* ASSERT ((start) <= (size)); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \
+ __GMP_CRAY_Pragma ("_CRI ivdep"); \
+ for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \
+ (dst)[__gmp_j] = (src)[__gmp_j]; \
+ } while (0)
+#endif
+
+/* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use
+ mpn_copyi if there's a native version, and if we don't mind demanding
+ binary compatibility for it (on targets which use it). */
+
+#if ! defined (__GMPN_COPY)
+#define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0)
+#endif
+
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add)
+#if ! defined (__GMP_FORCE_mpn_add)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
+{
+ mp_limb_t __gmp_c;
+ __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1)
+#if ! defined (__GMP_FORCE_mpn_add_1)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
+{
+ mp_limb_t __gmp_c;
+ __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp)
+#if ! defined (__GMP_FORCE_mpn_cmp)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW
+{
+ int __gmp_result;
+ __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size);
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_zero_p)
+#if ! defined (__GMP_FORCE_mpn_zero_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpn_zero_p (mp_srcptr __gmp_p, mp_size_t __gmp_n) __GMP_NOTHROW
+{
+ /* if (__GMP_LIKELY (__gmp_n > 0)) */
+ do {
+ if (__gmp_p[--__gmp_n] != 0)
+ return 0;
+ } while (__gmp_n != 0);
+ return 1;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub)
+#if ! defined (__GMP_FORCE_mpn_sub)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
+{
+ mp_limb_t __gmp_c;
+ __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1)
+#if ! defined (__GMP_FORCE_mpn_sub_1)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
+{
+ mp_limb_t __gmp_c;
+ __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg)
+#if ! defined (__GMP_FORCE_mpn_neg)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
+{
+ while (*__gmp_up == 0) /* Low zero limbs are unchanged by negation. */
+ {
+ *__gmp_rp = 0;
+ if (!--__gmp_n) /* All zero */
+ return 0;
+ ++__gmp_up; ++__gmp_rp;
+ }
+
+ *__gmp_rp = (- *__gmp_up) & GMP_NUMB_MASK;
+
+ if (--__gmp_n) /* Higher limbs get complemented. */
+ mpn_com (++__gmp_rp, ++__gmp_up, __gmp_n);
+
+ return 1;
+}
+#endif
+
+#if defined (__cplusplus)
+}
+#endif
+
+
+/* Allow faster testing for negative, zero, and positive. */
+#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)
+#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)
+#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)
+
+/* When using GCC, optimize certain common comparisons. */
+#if defined (__GNUC__) && __GNUC__ >= 2
+#define mpz_cmp_ui(Z,UI) \
+ (__builtin_constant_p (UI) && (UI) == 0 \
+ ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI))
+#define mpz_cmp_si(Z,SI) \
+ (__builtin_constant_p ((SI) >= 0) && (SI) >= 0 \
+ ? mpz_cmp_ui (Z, __GMP_CAST (unsigned long, SI)) \
+ : _mpz_cmp_si (Z,SI))
+#define mpq_cmp_ui(Q,NUI,DUI) \
+ (__builtin_constant_p (NUI) && (NUI) == 0 ? mpq_sgn (Q) \
+ : __builtin_constant_p ((NUI) == (DUI)) && (NUI) == (DUI) \
+ ? mpz_cmp (mpq_numref (Q), mpq_denref (Q)) \
+ : _mpq_cmp_ui (Q,NUI,DUI))
+#define mpq_cmp_si(q,n,d) \
+ (__builtin_constant_p ((n) >= 0) && (n) >= 0 \
+ ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \
+ : _mpq_cmp_si (q, n, d))
+#else
+#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI)
+#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI)
+#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI)
+#define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d)
+#endif
+
+
+/* Using "&" rather than "&&" means these can come out branch-free. Every
+ mpz_t has at least one limb allocated, so fetching the low limb is always
+ allowed. */
+#define mpz_odd_p(z) (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0]))
+#define mpz_even_p(z) (! mpz_odd_p (z))
+
+
+/**************** C++ routines ****************/
+
+#ifdef __cplusplus
+__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);
+__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);
+__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);
+__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr);
+__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr);
+__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr);
+#endif
+
+
+/* Source-level compatibility with GMP 2 and earlier. */
+#define mpn_divmod(qp,np,nsize,dp,dsize) \
+ mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize)
+
+/* Source-level compatibility with GMP 1. */
+#define mpz_mdiv mpz_fdiv_q
+#define mpz_mdivmod mpz_fdiv_qr
+#define mpz_mmod mpz_fdiv_r
+#define mpz_mdiv_ui mpz_fdiv_q_ui
+#define mpz_mdivmod_ui(q,r,n,d) \
+ (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))
+#define mpz_mmod_ui(r,n,d) \
+ (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))
+
+/* Useful synonyms, but not quite compatible with GMP 1. */
+#define mpz_div mpz_fdiv_q
+#define mpz_divmod mpz_fdiv_qr
+#define mpz_div_ui mpz_fdiv_q_ui
+#define mpz_divmod_ui mpz_fdiv_qr_ui
+#define mpz_div_2exp mpz_fdiv_q_2exp
+#define mpz_mod_2exp mpz_fdiv_r_2exp
+
+enum
+{
+ GMP_ERROR_NONE = 0,
+ GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
+ GMP_ERROR_DIVISION_BY_ZERO = 2,
+ GMP_ERROR_SQRT_OF_NEGATIVE = 4,
+ GMP_ERROR_INVALID_ARGUMENT = 8
+};
+
+/* Define CC and CFLAGS which were used to build this version of GMP */
+#define __GMP_CC "gcc"
+#define __GMP_CFLAGS "-O2 -pedantic -march=armv8-a"
+
+/* Major version number is the value of __GNU_MP__ too, above. */
+#define __GNU_MP_VERSION 6
+#define __GNU_MP_VERSION_MINOR 2
+#define __GNU_MP_VERSION_PATCHLEVEL 0
+#define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL)
+
+#define __GMP_H__
+#endif /* __GMP_H__ */
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/config.h b/modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/config.h
new file mode 100644
index 00000000000..d7960e45775
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/config.h
@@ -0,0 +1,670 @@
+/* config.h. Generated from config.in by configure. */
+/* config.in. Generated from configure.ac by autoheader. */
+
+/*
+
+Copyright 1996-2020 Free Software Foundation, Inc.
+
+This file is part of the GNU MP Library.
+
+The GNU MP Library is free software; you can redistribute it and/or modify
+it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+or
+
+ * the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any
+ later version.
+
+or both in parallel, as here.
+
+The GNU MP Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received copies of the GNU General Public License and the
+GNU Lesser General Public License along with the GNU MP Library. If not,
+see https://www.gnu.org/licenses/.
+*/
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* The gmp-mparam.h file (a string) the tune program should suggest updating.
+ */
+#define GMP_MPARAM_H_SUGGEST "./mpn/x86_64/zen2/gmp-mparam.h"
+
+/* Define to 1 if you have the `alarm' function. */
+#define HAVE_ALARM 1
+
+/* Define to 1 if alloca() works (via gmp-impl.h). */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have and it should be used (not on Ultrix).
+ */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((const)) */
+#define HAVE_ATTRIBUTE_CONST 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((malloc)) */
+#define HAVE_ATTRIBUTE_MALLOC 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((mode (XX)))
+ */
+#define HAVE_ATTRIBUTE_MODE 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((noreturn)) */
+#define HAVE_ATTRIBUTE_NORETURN 1
+
+/* Define to 1 if you have the `attr_get' function. */
+/* #undef HAVE_ATTR_GET */
+
+/* Define to 1 if tests/libtests has calling conventions checking for the CPU
+ */
+#define HAVE_CALLING_CONVENTIONS 1
+
+/* Define to 1 if you have the `clock' function. */
+#define HAVE_CLOCK 1
+
+/* Define to 1 if you have the `clock_gettime' function */
+#define HAVE_CLOCK_GETTIME 1
+
+/* Define to 1 if you have the `cputime' function. */
+/* #undef HAVE_CPUTIME */
+
+/* Define to 1 if you have the declaration of `fgetc', and to 0 if you don't.
+ */
+#define HAVE_DECL_FGETC 1
+
+/* Define to 1 if you have the declaration of `fscanf', and to 0 if you don't.
+ */
+#define HAVE_DECL_FSCANF 1
+
+/* Define to 1 if you have the declaration of `optarg', and to 0 if you don't.
+ */
+#define HAVE_DECL_OPTARG 1
+
+/* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you
+ don't. */
+#define HAVE_DECL_SYS_ERRLIST 1
+
+/* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you
+ don't. */
+#define HAVE_DECL_SYS_NERR 1
+
+/* Define to 1 if you have the declaration of `ungetc', and to 0 if you don't.
+ */
+#define HAVE_DECL_UNGETC 1
+
+/* Define to 1 if you have the declaration of `vfprintf', and to 0 if you
+ don't. */
+#define HAVE_DECL_VFPRINTF 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define one of the following to 1 for the format of a `double'.
+ If your format is not among these choices, or you don't know what it is,
+ then leave all undefined.
+ IEEE_LITTLE_SWAPPED means little endian, but with the two 4-byte halves
+ swapped, as used by ARM CPUs in little endian mode. */
+/* #undef HAVE_DOUBLE_IEEE_BIG_ENDIAN */
+#define HAVE_DOUBLE_IEEE_LITTLE_ENDIAN 1
+/* #undef HAVE_DOUBLE_IEEE_LITTLE_SWAPPED */
+/* #undef HAVE_DOUBLE_VAX_D */
+/* #undef HAVE_DOUBLE_VAX_G */
+/* #undef HAVE_DOUBLE_CRAY_CFP */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getrusage' function. */
+#define HAVE_GETRUSAGE 1
+
+/* Define to 1 if you have the `getsysinfo' function. */
+/* #undef HAVE_GETSYSINFO */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if the compiler accepts gcc style __attribute__ ((visibility))
+ and __attribute__ ((alias)) */
+#define HAVE_HIDDEN_ALIAS 1
+
+/* Define one of these to 1 for the host CPU family.
+ If your CPU is not in any of these families, leave all undefined.
+ For an AMD64 chip, define "x86" in ABI=32, but not in ABI=64. */
+/* #undef HAVE_HOST_CPU_FAMILY_alpha */
+/* #undef HAVE_HOST_CPU_FAMILY_m68k */
+/* #undef HAVE_HOST_CPU_FAMILY_power */
+/* #undef HAVE_HOST_CPU_FAMILY_powerpc */
+/* #undef HAVE_HOST_CPU_FAMILY_x86 */
+#define HAVE_HOST_CPU_FAMILY_x86_64 1
+
+/* Define one of the following to 1 for the host CPU, as per the output of
+ ./config.guess. If your CPU is not listed here, leave all undefined. */
+/* #undef HAVE_HOST_CPU_alphaev67 */
+/* #undef HAVE_HOST_CPU_alphaev68 */
+/* #undef HAVE_HOST_CPU_alphaev7 */
+/* #undef HAVE_HOST_CPU_m68020 */
+/* #undef HAVE_HOST_CPU_m68030 */
+/* #undef HAVE_HOST_CPU_m68040 */
+/* #undef HAVE_HOST_CPU_m68060 */
+/* #undef HAVE_HOST_CPU_m68360 */
+/* #undef HAVE_HOST_CPU_powerpc604 */
+/* #undef HAVE_HOST_CPU_powerpc604e */
+/* #undef HAVE_HOST_CPU_powerpc750 */
+/* #undef HAVE_HOST_CPU_powerpc7400 */
+/* #undef HAVE_HOST_CPU_supersparc */
+/* #undef HAVE_HOST_CPU_i386 */
+/* #undef HAVE_HOST_CPU_i586 */
+/* #undef HAVE_HOST_CPU_i686 */
+/* #undef HAVE_HOST_CPU_pentium */
+/* #undef HAVE_HOST_CPU_pentiummmx */
+/* #undef HAVE_HOST_CPU_pentiumpro */
+/* #undef HAVE_HOST_CPU_pentium2 */
+/* #undef HAVE_HOST_CPU_pentium3 */
+/* #undef HAVE_HOST_CPU_pentium4 */
+/* #undef HAVE_HOST_CPU_core2 */
+/* #undef HAVE_HOST_CPU_nehalem */
+/* #undef HAVE_HOST_CPU_westmere */
+/* #undef HAVE_HOST_CPU_sandybridge */
+/* #undef HAVE_HOST_CPU_ivybridge */
+/* #undef HAVE_HOST_CPU_haswell */
+/* #undef HAVE_HOST_CPU_broadwell */
+/* #undef HAVE_HOST_CPU_skylake */
+/* #undef HAVE_HOST_CPU_silvermont */
+/* #undef HAVE_HOST_CPU_goldmont */
+/* #undef HAVE_HOST_CPU_k8 */
+/* #undef HAVE_HOST_CPU_k10 */
+/* #undef HAVE_HOST_CPU_bulldozer */
+/* #undef HAVE_HOST_CPU_piledriver */
+/* #undef HAVE_HOST_CPU_steamroller */
+/* #undef HAVE_HOST_CPU_excavator */
+/* #undef HAVE_HOST_CPU_zen */
+/* #undef HAVE_HOST_CPU_bobcat */
+/* #undef HAVE_HOST_CPU_jaguar */
+/* #undef HAVE_HOST_CPU_s390_z900 */
+/* #undef HAVE_HOST_CPU_s390_z990 */
+/* #undef HAVE_HOST_CPU_s390_z9 */
+/* #undef HAVE_HOST_CPU_s390_z10 */
+/* #undef HAVE_HOST_CPU_s390_z196 */
+
+/* Define to 1 iff we have a s390 with 64-bit registers. */
+/* #undef HAVE_HOST_CPU_s390_zarch */
+
+/* Define to 1 if the system has the type `intmax_t'. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if the system has the type `intptr_t'. */
+#define HAVE_INTPTR_T 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_INVENT_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_LANGINFO_H 1
+
+/* Define one of these to 1 for the endianness of `mp_limb_t'.
+ If the endianness is not a simple big or little, or you don't know what
+ it is, then leave both undefined. */
+/* #undef HAVE_LIMB_BIG_ENDIAN */
+#define HAVE_LIMB_LITTLE_ENDIAN 1
+
+/* Define to 1 if you have the `localeconv' function. */
+#define HAVE_LOCALECONV 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if the system has the type `long double'. */
+#define HAVE_LONG_DOUBLE 1
+
+/* Define to 1 if the system has the type `long long'. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_MACHINE_HAL_SYSINFO_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `memset' function. */
+#define HAVE_MEMSET 1
+
+/* Define to 1 if you have the `mmap' function. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the `mprotect' function. */
+#define HAVE_MPROTECT 1
+
+#if !NO_ASM
+/* Define to 1 each of the following for which a native (ie. CPU specific)
+ implementation of the corresponding routine exists. */
+#define HAVE_NATIVE_mpn_add_n 1
+/* #undef HAVE_NATIVE_mpn_add_n_sub_n */
+#define HAVE_NATIVE_mpn_add_nc 1
+#define HAVE_NATIVE_mpn_addaddmul_1msb0 1
+#define HAVE_NATIVE_mpn_addlsh1_n 1
+#define HAVE_NATIVE_mpn_addlsh2_n 1
+#define HAVE_NATIVE_mpn_addlsh_n 1
+#define HAVE_NATIVE_mpn_addlsh1_nc 1
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc */
+/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh_n_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh1_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */
+/* #undef HAVE_NATIVE_mpn_addmul_1c */
+/* #undef HAVE_NATIVE_mpn_addmul_2 */
+/* #undef HAVE_NATIVE_mpn_addmul_3 */
+/* #undef HAVE_NATIVE_mpn_addmul_4 */
+/* #undef HAVE_NATIVE_mpn_addmul_5 */
+/* #undef HAVE_NATIVE_mpn_addmul_6 */
+/* #undef HAVE_NATIVE_mpn_addmul_7 */
+/* #undef HAVE_NATIVE_mpn_addmul_8 */
+/* #undef HAVE_NATIVE_mpn_addmul_2s */
+#define HAVE_NATIVE_mpn_and_n 1
+#define HAVE_NATIVE_mpn_andn_n 1
+#define HAVE_NATIVE_mpn_bdiv_dbm1c 1
+#define HAVE_NATIVE_mpn_bdiv_q_1 1
+#define HAVE_NATIVE_mpn_pi1_bdiv_q_1 1
+#define HAVE_NATIVE_mpn_cnd_add_n 1
+#define HAVE_NATIVE_mpn_cnd_sub_n 1
+#define HAVE_NATIVE_mpn_com 1
+#define HAVE_NATIVE_mpn_copyd 1
+#define HAVE_NATIVE_mpn_copyi 1
+#define HAVE_NATIVE_mpn_div_qr_1n_pi1 1
+/* #undef HAVE_NATIVE_mpn_div_qr_2 */
+#define HAVE_NATIVE_mpn_divexact_1 1
+/* #undef HAVE_NATIVE_mpn_divexact_by3c */
+#define HAVE_NATIVE_mpn_divrem_1 1
+/* #undef HAVE_NATIVE_mpn_divrem_1c */
+#define HAVE_NATIVE_mpn_divrem_2 1
+/* #undef HAVE_NATIVE_mpn_gcd_1 */
+#define HAVE_NATIVE_mpn_gcd_11 1
+#define HAVE_NATIVE_mpn_gcd_22 1
+#define HAVE_NATIVE_mpn_hamdist 1
+#define HAVE_NATIVE_mpn_invert_limb 1
+#define HAVE_NATIVE_mpn_ior_n 1
+#define HAVE_NATIVE_mpn_iorn_n 1
+#define HAVE_NATIVE_mpn_lshift 1
+#define HAVE_NATIVE_mpn_lshiftc 1
+/* #undef HAVE_NATIVE_mpn_lshsub_n */
+/* #undef HAVE_NATIVE_mpn_mod_1 */
+#define HAVE_NATIVE_mpn_mod_1_1p 1
+/* #undef HAVE_NATIVE_mpn_mod_1c */
+#define HAVE_NATIVE_mpn_mod_1s_2p 1
+#define HAVE_NATIVE_mpn_mod_1s_4p 1
+#define HAVE_NATIVE_mpn_mod_34lsub1 1
+#define HAVE_NATIVE_mpn_modexact_1_odd 1
+#define HAVE_NATIVE_mpn_modexact_1c_odd 1
+#define HAVE_NATIVE_mpn_mul_1 1
+#define HAVE_NATIVE_mpn_mul_1c 1
+#define HAVE_NATIVE_mpn_mul_2 1
+/* #undef HAVE_NATIVE_mpn_mul_3 */
+/* #undef HAVE_NATIVE_mpn_mul_4 */
+/* #undef HAVE_NATIVE_mpn_mul_5 */
+/* #undef HAVE_NATIVE_mpn_mul_6 */
+#define HAVE_NATIVE_mpn_mul_basecase 1
+#define HAVE_NATIVE_mpn_mullo_basecase 1
+#define HAVE_NATIVE_mpn_nand_n 1
+#define HAVE_NATIVE_mpn_nior_n 1
+#define HAVE_NATIVE_mpn_popcount 1
+#define HAVE_NATIVE_mpn_preinv_divrem_1 1
+/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */
+/* #undef HAVE_NATIVE_mpn_redc_1 */
+/* #undef HAVE_NATIVE_mpn_redc_2 */
+#define HAVE_NATIVE_mpn_rsblsh1_n 1
+#define HAVE_NATIVE_mpn_rsblsh2_n 1
+#define HAVE_NATIVE_mpn_rsblsh_n 1
+#define HAVE_NATIVE_mpn_rsblsh1_nc 1
+/* #undef HAVE_NATIVE_mpn_rsblsh2_nc */
+/* #undef HAVE_NATIVE_mpn_rsblsh_nc */
+#define HAVE_NATIVE_mpn_rsh1add_n 1
+#define HAVE_NATIVE_mpn_rsh1add_nc 1
+#define HAVE_NATIVE_mpn_rsh1sub_n 1
+#define HAVE_NATIVE_mpn_rsh1sub_nc 1
+#define HAVE_NATIVE_mpn_rshift 1
+#define HAVE_NATIVE_mpn_sbpi1_bdiv_r 1
+#define HAVE_NATIVE_mpn_sqr_basecase 1
+/* #undef HAVE_NATIVE_mpn_sqr_diagonal */
+#define HAVE_NATIVE_mpn_sqr_diag_addlsh1 1
+#define HAVE_NATIVE_mpn_sub_n 1
+#define HAVE_NATIVE_mpn_sub_nc 1
+#define HAVE_NATIVE_mpn_sublsh1_n 1
+/* #undef HAVE_NATIVE_mpn_sublsh2_n */
+/* #undef HAVE_NATIVE_mpn_sublsh_n */
+#define HAVE_NATIVE_mpn_sublsh1_nc 1
+/* #undef HAVE_NATIVE_mpn_sublsh2_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh_nc */
+/* #undef HAVE_NATIVE_mpn_sublsh1_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh2_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh_n_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh1_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh2_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_sublsh_nc_ip1 */
+/* #undef HAVE_NATIVE_mpn_submul_1c */
+/* #undef HAVE_NATIVE_mpn_tabselect */
+/* #undef HAVE_NATIVE_mpn_udiv_qrnnd */
+/* #undef HAVE_NATIVE_mpn_udiv_qrnnd_r */
+/* #undef HAVE_NATIVE_mpn_umul_ppmm */
+/* #undef HAVE_NATIVE_mpn_umul_ppmm_r */
+#define HAVE_NATIVE_mpn_xor_n 1
+#define HAVE_NATIVE_mpn_xnor_n 1
+#endif // !NO_ASM
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#define HAVE_NL_LANGINFO 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_NL_TYPES_H 1
+
+/* Define to 1 if you have the `obstack_vprintf' function. */
+#define HAVE_OBSTACK_VPRINTF 1
+
+/* Define to 1 if you have the `popen' function. */
+#define HAVE_POPEN 1
+
+/* Define to 1 if you have the `processor_info' function. */
+/* #undef HAVE_PROCESSOR_INFO */
+
+/* Define to 1 if `struct pst_processor' exists and contains
+ `psp_iticksperclktick'. */
+/* #undef HAVE_PSP_ITICKSPERCLKTICK */
+
+/* Define to 1 if you have the `pstat_getprocessor' function. */
+/* #undef HAVE_PSTAT_GETPROCESSOR */
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#define HAVE_PTRDIFF_T 1
+
+/* Define to 1 if the system has the type `quad_t'. */
+#define HAVE_QUAD_T 1
+
+/* Define to 1 if you have the `raise' function. */
+#define HAVE_RAISE 1
+
+/* Define to 1 if you have the `read_real_time' function. */
+/* #undef HAVE_READ_REAL_TIME */
+
+/* Define to 1 if you have the `sigaction' function. */
+#define HAVE_SIGACTION 1
+
+/* Define to 1 if you have the `sigaltstack' function. */
+#define HAVE_SIGALTSTACK 1
+
+/* Define to 1 if you have the `sigstack' function. */
+#define HAVE_SIGSTACK 1
+
+/* Tune directory speed_cyclecounter, undef=none, 1=32bits, 2=64bits) */
+#define HAVE_SPEED_CYCLECOUNTER 2
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SSTREAM 1
+
+/* Define to 1 if the system has the type `stack_t'. */
+#define HAVE_STACK_T 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if the system has the type `std::locale'. */
+#define HAVE_STD__LOCALE 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strnlen' function. */
+#define HAVE_STRNLEN 1
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if you have the `sysctl' function. */
+#define HAVE_SYSCTL 1
+
+/* Define to 1 if you have the `sysctlbyname' function. */
+/* #undef HAVE_SYSCTLBYNAME */
+
+/* Define to 1 if you have the `syssgi' function. */
+/* #undef HAVE_SYSSGI */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_ATTRIBUTES_H */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_IOGRAPH_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_PROCESSOR_H */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_PSTAT_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SYSCTL_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SYSINFO_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_SYSSGI_H */
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SYS_SYSTEMCFG_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TIMES_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `times' function. */
+#define HAVE_TIMES 1
+
+/* Define to 1 if the system has the type `uint_least32_t'. */
+#define HAVE_UINT_LEAST32_T 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `vsnprintf' function and it works properly. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 for Windos/64 */
+/* #undef HOST_DOS64 */
+
+/* Assembler local label prefix */
+#define LSYM_PREFIX ".L"
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 to disable the use of inline assembly */
+/* #undef NO_ASM */
+
+/* Name of package */
+#define PACKAGE "gmp"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "gmp-bugs@gmplib.org, see https://gmplib.org/manual/Reporting-Bugs.html"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "GNU MP"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "GNU MP 6.2.0"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "gmp"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL "http://www.gnu.org/software/gmp/"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "6.2.0"
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* The size of `mp_limb_t', as computed by sizeof. */
+#define SIZEOF_MP_LIMB_T 8
+
+/* The size of `unsigned', as computed by sizeof. */
+#define SIZEOF_UNSIGNED 4
+
+/* The size of `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 8
+
+/* The size of `unsigned short', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_SHORT 2
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 8
+
+/* Define to 1 if sscanf requires writable inputs */
+/* #undef SSCANF_WRITABLE_INPUT */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both and . */
+#define TIME_WITH_SYS_TIME 1
+
+/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */
+/* #undef TUNE_SQR_TOOM2_MAX */
+
+/* Version number of package */
+#define VERSION "6.2.0"
+
+/* Define to 1 to enable ASSERT checking, per --enable-assert */
+/* #undef WANT_ASSERT */
+
+/* Define to 1 to enable GMP_CPU_TYPE faking cpuid, per --enable-fake-cpuid */
+/* #undef WANT_FAKE_CPUID */
+
+/* Define to 1 when building a fat binary. */
+/* #undef WANT_FAT_BINARY */
+
+/* Define to 1 to enable FFTs for multiplication, per --enable-fft */
+#define WANT_FFT 1
+
+/* Define to 1 to enable old mpn_mul_fft_full for multiplication, per
+ --enable-old-fft-full */
+/* #undef WANT_OLD_FFT_FULL */
+
+/* Define to 1 if --enable-profiling=gprof */
+/* #undef WANT_PROFILING_GPROF */
+
+/* Define to 1 if --enable-profiling=instrument */
+/* #undef WANT_PROFILING_INSTRUMENT */
+
+/* Define to 1 if --enable-profiling=prof */
+/* #undef WANT_PROFILING_PROF */
+
+/* Define one of these to 1 for the desired temporary memory allocation
+ method, per --enable-alloca. */
+#define WANT_TMP_ALLOCA 1
+/* #undef WANT_TMP_REENTRANT */
+/* #undef WANT_TMP_NOTREENTRANT */
+/* #undef WANT_TMP_DEBUG */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* # undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to 1 if the assembler understands the mulx instruction */
+#define X86_ASM_MULX 1
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+#define YYTEXT_POINTER 1
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+#define restrict __restrict
+/* Work around a bug in Sun C++: it does not support _Restrict or
+ __restrict__, even though the corresponding Sun C compiler ends up with
+ "#define restrict _Restrict" or "#define restrict __restrict__" in the
+ previous line. Perhaps some future version of Sun C++ will work with
+ restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+# define __restrict__
+#endif
+
+/* Define to empty if the keyword `volatile' does not work. Warning: valid
+ code using `volatile' can become incorrect without. Disable with care. */
+/* #undef volatile */
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/config.m4 b/modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/config.m4
new file mode 100644
index 00000000000..4b58a628d35
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/config.m4
@@ -0,0 +1,38 @@
+dnl config.m4. Generated automatically by configure.
+changequote(<,>)
+ifdef(<__CONFIG_M4_INCLUDED__>,,<
+define(,<`../.'>)
+define(,0)
+define(,<`no'>)
+define(,)
+define(, <.text>)
+define(, <.data>)
+define(, <:>)
+define(, <.globl>)
+define(, <>)
+define(, <>)
+define(, < .section .rodata,"a",@progbits>)
+define(, <.type $1,@$2>)
+define(, <.size $1,$2>)
+define(, <.L>)
+define(, <.long>)
+define(,)
+define(,)
+define(,1)
+define(,<30>)
+define(,<22>)
+define(,<4>)
+define(,64)
+define(,0)
+define(,eval(GMP_LIMB_BITS-GMP_NAIL_BITS))
+>)
+changequote(`,')
+ifdef(`__CONFIG_M4_INCLUDED__',,`
+include(CONFIG_TOP_SRCDIR`/mpn/asm-defs.m4')
+include_mpn(`x86_64/x86_64-defs.m4')
+define_not_for_expansion(`HAVE_HOST_CPU_zen2')
+define_not_for_expansion(`HAVE_ABI_64')
+define_not_for_expansion(`HAVE_LIMB_LITTLE_ENDIAN')
+define_not_for_expansion(`HAVE_DOUBLE_IEEE_LITTLE_ENDIAN')
+')
+define(`__CONFIG_M4_INCLUDED__')
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/gmp.h b/modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/gmp.h
new file mode 100644
index 00000000000..98c0bdd4f79
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/config/x86_64/gmp.h
@@ -0,0 +1,2336 @@
+/* Definitions for GNU multiple precision functions. -*- mode: c -*-
+
+Copyright 1991, 1993-1997, 1999-2016, 2020 Free Software Foundation, Inc.
+
+This file is part of the GNU MP Library.
+
+The GNU MP Library is free software; you can redistribute it and/or modify
+it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+or
+
+ * the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any
+ later version.
+
+or both in parallel, as here.
+
+The GNU MP Library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received copies of the GNU General Public License and the
+GNU Lesser General Public License along with the GNU MP Library. If not,
+see https://www.gnu.org/licenses/. */
+
+#ifndef __GMP_H__
+
+#if defined (__cplusplus)
+#include /* for std::istream, std::ostream, std::string */
+#include
+#endif
+
+
+/* Instantiated by configure. */
+#if ! defined (__GMP_WITHIN_CONFIGURE)
+#define __GMP_HAVE_HOST_CPU_FAMILY_power 0
+#define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0
+#define GMP_LIMB_BITS 64
+#define GMP_NAIL_BITS 0
+#endif
+#define GMP_NUMB_BITS (GMP_LIMB_BITS - GMP_NAIL_BITS)
+#define GMP_NUMB_MASK ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS)
+#define GMP_NUMB_MAX GMP_NUMB_MASK
+#define GMP_NAIL_MASK (~ GMP_NUMB_MASK)
+
+
+#ifndef __GNU_MP__
+#define __GNU_MP__ 6
+
+#include /* for size_t */
+#include
+
+/* Instantiated by configure. */
+#if ! defined (__GMP_WITHIN_CONFIGURE)
+/* #undef _LONG_LONG_LIMB */
+#define __GMP_LIBGMP_DLL 0
+#endif
+
+
+/* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in
+ all other circumstances.
+
+ When compiling objects for libgmp, __GMP_DECLSPEC is an export directive,
+ or when compiling for an application it's an import directive. The two
+ cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles
+ (and not defined from an application).
+
+ __GMP_DECLSPEC_XX is similarly used for libgmpxx. __GMP_WITHIN_GMPXX
+ indicates when building libgmpxx, and in that case libgmpxx functions are
+ exports, but libgmp functions which might get called are imports.
+
+ Libtool DLL_EXPORT define is not used.
+
+ There's no attempt to support GMP built both static and DLL. Doing so
+ would mean applications would have to tell us which of the two is going
+ to be used when linking, and that seems very tedious and error prone if
+ using GMP by hand, and equally tedious from a package since autoconf and
+ automake don't give much help.
+
+ __GMP_DECLSPEC is required on all documented global functions and
+ variables, the various internals in gmp-impl.h etc can be left unadorned.
+ But internals used by the test programs or speed measuring programs
+ should have __GMP_DECLSPEC, and certainly constants or variables must
+ have it or the wrong address will be resolved.
+
+ In gcc __declspec can go at either the start or end of a prototype.
+
+ In Microsoft C __declspec must go at the start, or after the type like
+ void __declspec(...) *foo()". There's no __dllexport or anything to
+ guard against someone foolish #defining dllexport. _export used to be
+ available, but no longer.
+
+ In Borland C _export still exists, but needs to go after the type, like
+ "void _export foo();". Would have to change the __GMP_DECLSPEC syntax to
+ make use of that. Probably more trouble than it's worth. */
+
+#if defined (__GNUC__)
+#define __GMP_DECLSPEC_EXPORT __declspec(__dllexport__)
+#define __GMP_DECLSPEC_IMPORT __declspec(__dllimport__)
+#endif
+#if defined (_MSC_VER) || defined (__BORLANDC__)
+#define __GMP_DECLSPEC_EXPORT __declspec(dllexport)
+#define __GMP_DECLSPEC_IMPORT __declspec(dllimport)
+#endif
+#ifdef __WATCOMC__
+#define __GMP_DECLSPEC_EXPORT __export
+#define __GMP_DECLSPEC_IMPORT __import
+#endif
+#ifdef __IBMC__
+#define __GMP_DECLSPEC_EXPORT _Export
+#define __GMP_DECLSPEC_IMPORT _Import
+#endif
+
+#if __GMP_LIBGMP_DLL
+#ifdef __GMP_WITHIN_GMP
+/* compiling to go into a DLL libgmp */
+#define __GMP_DECLSPEC __GMP_DECLSPEC_EXPORT
+#else
+/* compiling to go into an application which will link to a DLL libgmp */
+#define __GMP_DECLSPEC __GMP_DECLSPEC_IMPORT
+#endif
+#else
+/* all other cases */
+#define __GMP_DECLSPEC
+#endif
+
+
+#ifdef __GMP_SHORT_LIMB
+typedef unsigned int mp_limb_t;
+typedef int mp_limb_signed_t;
+#else
+#ifdef _LONG_LONG_LIMB
+typedef unsigned long long int mp_limb_t;
+typedef long long int mp_limb_signed_t;
+#else
+typedef unsigned long int mp_limb_t;
+typedef long int mp_limb_signed_t;
+#endif
+#endif
+typedef unsigned long int mp_bitcnt_t;
+
+/* For reference, note that the name __mpz_struct gets into C++ mangled
+ function names, which means although the "__" suggests an internal, we
+ must leave this name for binary compatibility. */
+typedef struct
+{
+ int _mp_alloc; /* Number of *limbs* allocated and pointed
+ to by the _mp_d field. */
+ int _mp_size; /* abs(_mp_size) is the number of limbs the
+ last field points to. If _mp_size is
+ negative this is a negative number. */
+ mp_limb_t *_mp_d; /* Pointer to the limbs. */
+} __mpz_struct;
+
+#endif /* __GNU_MP__ */
+
+
+typedef __mpz_struct MP_INT; /* gmp 1 source compatibility */
+typedef __mpz_struct mpz_t[1];
+
+typedef mp_limb_t * mp_ptr;
+typedef const mp_limb_t * mp_srcptr;
+#if defined (_CRAY) && ! defined (_CRAYMPP)
+/* plain `int' is much faster (48 bits) */
+#define __GMP_MP_SIZE_T_INT 1
+typedef int mp_size_t;
+typedef int mp_exp_t;
+#else
+#define __GMP_MP_SIZE_T_INT 0
+typedef long int mp_size_t;
+typedef long int mp_exp_t;
+#endif
+
+typedef struct
+{
+ __mpz_struct _mp_num;
+ __mpz_struct _mp_den;
+} __mpq_struct;
+
+typedef __mpq_struct MP_RAT; /* gmp 1 source compatibility */
+typedef __mpq_struct mpq_t[1];
+
+typedef struct
+{
+ int _mp_prec; /* Max precision, in number of `mp_limb_t's.
+ Set by mpf_init and modified by
+ mpf_set_prec. The area pointed to by the
+ _mp_d field contains `prec' + 1 limbs. */
+ int _mp_size; /* abs(_mp_size) is the number of limbs the
+ last field points to. If _mp_size is
+ negative this is a negative number. */
+ mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */
+ mp_limb_t *_mp_d; /* Pointer to the limbs. */
+} __mpf_struct;
+
+/* typedef __mpf_struct MP_FLOAT; */
+typedef __mpf_struct mpf_t[1];
+
+/* Available random number generation algorithms. */
+typedef enum
+{
+ GMP_RAND_ALG_DEFAULT = 0,
+ GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential. */
+} gmp_randalg_t;
+
+/* Random state struct. */
+typedef struct
+{
+ mpz_t _mp_seed; /* _mp_d member points to state of the generator. */
+ gmp_randalg_t _mp_alg; /* Currently unused. */
+ union {
+ void *_mp_lc; /* Pointer to function pointers structure. */
+ } _mp_algdata;
+} __gmp_randstate_struct;
+typedef __gmp_randstate_struct gmp_randstate_t[1];
+
+/* Types for function declarations in gmp files. */
+/* ??? Should not pollute user name space with these ??? */
+typedef const __mpz_struct *mpz_srcptr;
+typedef __mpz_struct *mpz_ptr;
+typedef const __mpf_struct *mpf_srcptr;
+typedef __mpf_struct *mpf_ptr;
+typedef const __mpq_struct *mpq_srcptr;
+typedef __mpq_struct *mpq_ptr;
+
+
+#if __GMP_LIBGMP_DLL
+#ifdef __GMP_WITHIN_GMPXX
+/* compiling to go into a DLL libgmpxx */
+#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_EXPORT
+#else
+/* compiling to go into a application which will link to a DLL libgmpxx */
+#define __GMP_DECLSPEC_XX __GMP_DECLSPEC_IMPORT
+#endif
+#else
+/* all other cases */
+#define __GMP_DECLSPEC_XX
+#endif
+
+
+#ifndef __MPN
+#define __MPN(x) __gmpn_##x
+#endif
+
+/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4,
+ defines EOF but not FILE. */
+#if defined (FILE) \
+ || defined (H_STDIO) \
+ || defined (_H_STDIO) /* AIX */ \
+ || defined (_STDIO_H) /* glibc, Sun, SCO */ \
+ || defined (_STDIO_H_) /* BSD, OSF */ \
+ || defined (__STDIO_H) /* Borland */ \
+ || defined (__STDIO_H__) /* IRIX */ \
+ || defined (_STDIO_INCLUDED) /* HPUX */ \
+ || defined (__dj_include_stdio_h_) /* DJGPP */ \
+ || defined (_FILE_DEFINED) /* Microsoft */ \
+ || defined (__STDIO__) /* Apple MPW MrC */ \
+ || defined (_MSL_STDIO_H) /* Metrowerks */ \
+ || defined (_STDIO_H_INCLUDED) /* QNX4 */ \
+ || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \
+ || defined (__STDIO_LOADED) /* VMS */ \
+ || defined (__DEFINED_FILE) /* musl */
+#define _GMP_H_HAVE_FILE 1
+#endif
+
+/* In ISO C, if a prototype involving "struct obstack *" is given without
+ that structure defined, then the struct is scoped down to just the
+ prototype, causing a conflict if it's subsequently defined for real. So
+ only give prototypes if we've got obstack.h. */
+#if defined (_OBSTACK_H) /* glibc */
+#define _GMP_H_HAVE_OBSTACK 1
+#endif
+
+/* The prototypes for gmp_vprintf etc are provided only if va_list is defined,
+ via an application having included . Usually va_list is a typedef
+ so can't be tested directly, but C99 specifies that va_start is a macro.
+
+ will define some sort of va_list for vprintf and vfprintf, but
+ let's not bother trying to use that since it's not standard and since
+ application uses for gmp_vprintf etc will almost certainly require the
+ whole anyway. */
+
+#ifdef va_start
+#define _GMP_H_HAVE_VA_LIST 1
+#endif
+
+/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */
+#if defined (__GNUC__) && defined (__GNUC_MINOR__)
+#define __GMP_GNUC_PREREQ(maj, min) \
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+#define __GMP_GNUC_PREREQ(maj, min) 0
+#endif
+
+/* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes". Basically
+ it means a function does nothing but examine its arguments and memory
+ (global or via arguments) to generate a return value, but changes nothing
+ and has no side-effects. __GMP_NO_ATTRIBUTE_CONST_PURE lets
+ tune/common.c etc turn this off when trying to write timing loops. */
+#if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE)
+#define __GMP_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+#define __GMP_ATTRIBUTE_PURE
+#endif
+
+
+/* __GMP_CAST allows us to use static_cast in C++, so our macros are clean
+ to "g++ -Wold-style-cast".
+
+ Casts in "extern inline" code within an extern "C" block don't induce
+ these warnings, so __GMP_CAST only needs to be used on documented
+ macros. */
+
+#ifdef __cplusplus
+#define __GMP_CAST(type, expr) (static_cast (expr))
+#else
+#define __GMP_CAST(type, expr) ((type) (expr))
+#endif
+
+
+/* An empty "throw ()" means the function doesn't throw any C++ exceptions,
+ this can save some stack frame info in applications.
+
+ Currently it's given only on functions which never divide-by-zero etc,
+ don't allocate memory, and are expected to never need to allocate memory.
+ This leaves open the possibility of a C++ throw from a future GMP
+ exceptions scheme.
+
+ mpz_set_ui etc are omitted to leave open the lazy allocation scheme
+ described in doc/tasks.html. mpz_get_d etc are omitted to leave open
+ exceptions for float overflows.
+
+ Note that __GMP_NOTHROW must be given on any inlines the same as on their
+ prototypes (for g++ at least, where they're used together). Note also
+ that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like
+ __GMP_ATTRIBUTE_PURE. */
+
+#if defined (__cplusplus)
+#if __cplusplus >= 201103L
+#define __GMP_NOTHROW noexcept
+#else
+#define __GMP_NOTHROW throw ()
+#endif
+#else
+#define __GMP_NOTHROW
+#endif
+
+
+/* PORTME: What other compilers have a useful "extern inline"? "static
+ inline" would be an acceptable substitute if the compiler (or linker)
+ discards unused statics. */
+
+ /* gcc has __inline__ in all modes, including strict ansi. Give a prototype
+ for an inline too, so as to correctly specify "dllimport" on windows, in
+ case the function is called rather than inlined.
+ GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+ inline semantics, unless -fgnu89-inline is used. */
+#ifdef __GNUC__
+#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2) \
+ || (defined __GNUC_GNU_INLINE__ && defined __cplusplus)
+#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
+#else
+#define __GMP_EXTERN_INLINE extern __inline__
+#endif
+#define __GMP_INLINE_PROTOTYPES 1
+#endif
+
+/* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1
+ strict ANSI mode. Inlining is done even when not optimizing (ie. -O0
+ mode, which is the default), but an unnecessary local copy of foo is
+ emitted unless -O is used. "extern __inline" is accepted, but the
+ "extern" appears to be ignored, ie. it becomes a plain global function
+ but which is inlined within its file. Don't know if all old versions of
+ DEC C supported __inline, but as a start let's do the right thing for
+ current versions. */
+#ifdef __DECC
+#define __GMP_EXTERN_INLINE static __inline
+#endif
+
+/* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict
+ ANSI mode (__STDC__ is 1 in that mode). Inlining only actually takes
+ place under -O. Without -O "foo" seems to be emitted whether it's used
+ or not, which is wasteful. "extern inline foo()" isn't useful, the
+ "extern" is apparently ignored, so foo is inlined if possible but also
+ emitted as a global, which causes multiple definition errors when
+ building a shared libgmp. */
+#ifdef __SCO_VERSION__
+#if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \
+ && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE static inline
+#endif
+#endif
+
+/* Microsoft's C compiler accepts __inline */
+#ifdef _MSC_VER
+#define __GMP_EXTERN_INLINE __inline
+#endif
+
+/* Recent enough Sun C compilers want "inline" */
+#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \
+ && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE inline
+#endif
+
+/* Somewhat older Sun C compilers want "static inline" */
+#if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \
+ && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE static inline
+#endif
+
+
+/* C++ always has "inline" and since it's a normal feature the linker should
+ discard duplicate non-inlined copies, or if it doesn't then that's a
+ problem for everyone, not just GMP. */
+#if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE)
+#define __GMP_EXTERN_INLINE inline
+#endif
+
+/* Don't do any inlining within a configure run, since if the compiler ends
+ up emitting copies of the code into the object file it can end up
+ demanding the various support routines (like mpn_popcount) for linking,
+ making the "alloca" test and perhaps others fail. And on hppa ia64 a
+ pre-release gcc 3.2 was seen not respecting the "extern" in "extern
+ __inline__", triggering this problem too. */
+#if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE
+#undef __GMP_EXTERN_INLINE
+#endif
+
+/* By default, don't give a prototype when there's going to be an inline
+ version. Note in particular that Cray C++ objects to the combination of
+ prototype and inline. */
+#ifdef __GMP_EXTERN_INLINE
+#ifndef __GMP_INLINE_PROTOTYPES
+#define __GMP_INLINE_PROTOTYPES 0
+#endif
+#else
+#define __GMP_INLINE_PROTOTYPES 1
+#endif
+
+
+#define __GMP_ABS(x) ((x) >= 0 ? (x) : -(x))
+#define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i))
+
+
+/* __builtin_expect is in gcc 3.0, and not in 2.95. */
+#if __GMP_GNUC_PREREQ (3,0)
+#define __GMP_LIKELY(cond) __builtin_expect ((cond) != 0, 1)
+#define __GMP_UNLIKELY(cond) __builtin_expect ((cond) != 0, 0)
+#else
+#define __GMP_LIKELY(cond) (cond)
+#define __GMP_UNLIKELY(cond) (cond)
+#endif
+
+#ifdef _CRAY
+#define __GMP_CRAY_Pragma(str) _Pragma (str)
+#else
+#define __GMP_CRAY_Pragma(str)
+#endif
+
+
+/* Allow direct user access to numerator and denominator of an mpq_t object. */
+#define mpq_numref(Q) (&((Q)->_mp_num))
+#define mpq_denref(Q) (&((Q)->_mp_den))
+
+
+#if defined (__cplusplus)
+extern "C" {
+using std::FILE;
+#endif
+
+#define mp_set_memory_functions __gmp_set_memory_functions
+__GMP_DECLSPEC void mp_set_memory_functions (void *(*) (size_t),
+ void *(*) (void *, size_t, size_t),
+ void (*) (void *, size_t)) __GMP_NOTHROW;
+
+#define mp_get_memory_functions __gmp_get_memory_functions
+__GMP_DECLSPEC void mp_get_memory_functions (void *(**) (size_t),
+ void *(**) (void *, size_t, size_t),
+ void (**) (void *, size_t)) __GMP_NOTHROW;
+
+#define mp_bits_per_limb __gmp_bits_per_limb
+__GMP_DECLSPEC extern const int mp_bits_per_limb;
+
+#define gmp_errno __gmp_errno
+__GMP_DECLSPEC extern int gmp_errno;
+
+#define gmp_version __gmp_version
+__GMP_DECLSPEC extern const char * const gmp_version;
+
+
+/**************** Random number routines. ****************/
+
+/* obsolete */
+#define gmp_randinit __gmp_randinit
+__GMP_DECLSPEC void gmp_randinit (gmp_randstate_t, gmp_randalg_t, ...);
+
+#define gmp_randinit_default __gmp_randinit_default
+__GMP_DECLSPEC void gmp_randinit_default (gmp_randstate_t);
+
+#define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp
+__GMP_DECLSPEC void gmp_randinit_lc_2exp (gmp_randstate_t, mpz_srcptr, unsigned long int, mp_bitcnt_t);
+
+#define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size
+__GMP_DECLSPEC int gmp_randinit_lc_2exp_size (gmp_randstate_t, mp_bitcnt_t);
+
+#define gmp_randinit_mt __gmp_randinit_mt
+__GMP_DECLSPEC void gmp_randinit_mt (gmp_randstate_t);
+
+#define gmp_randinit_set __gmp_randinit_set
+__GMP_DECLSPEC void gmp_randinit_set (gmp_randstate_t, const __gmp_randstate_struct *);
+
+#define gmp_randseed __gmp_randseed
+__GMP_DECLSPEC void gmp_randseed (gmp_randstate_t, mpz_srcptr);
+
+#define gmp_randseed_ui __gmp_randseed_ui
+__GMP_DECLSPEC void gmp_randseed_ui (gmp_randstate_t, unsigned long int);
+
+#define gmp_randclear __gmp_randclear
+__GMP_DECLSPEC void gmp_randclear (gmp_randstate_t);
+
+#define gmp_urandomb_ui __gmp_urandomb_ui
+__GMP_DECLSPEC unsigned long gmp_urandomb_ui (gmp_randstate_t, unsigned long);
+
+#define gmp_urandomm_ui __gmp_urandomm_ui
+__GMP_DECLSPEC unsigned long gmp_urandomm_ui (gmp_randstate_t, unsigned long);
+
+
+/**************** Formatted output routines. ****************/
+
+#define gmp_asprintf __gmp_asprintf
+__GMP_DECLSPEC int gmp_asprintf (char **, const char *, ...);
+
+#define gmp_fprintf __gmp_fprintf
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC int gmp_fprintf (FILE *, const char *, ...);
+#endif
+
+#define gmp_obstack_printf __gmp_obstack_printf
+#if defined (_GMP_H_HAVE_OBSTACK)
+__GMP_DECLSPEC int gmp_obstack_printf (struct obstack *, const char *, ...);
+#endif
+
+#define gmp_obstack_vprintf __gmp_obstack_vprintf
+#if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_obstack_vprintf (struct obstack *, const char *, va_list);
+#endif
+
+#define gmp_printf __gmp_printf
+__GMP_DECLSPEC int gmp_printf (const char *, ...);
+
+#define gmp_snprintf __gmp_snprintf
+__GMP_DECLSPEC int gmp_snprintf (char *, size_t, const char *, ...);
+
+#define gmp_sprintf __gmp_sprintf
+__GMP_DECLSPEC int gmp_sprintf (char *, const char *, ...);
+
+#define gmp_vasprintf __gmp_vasprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vasprintf (char **, const char *, va_list);
+#endif
+
+#define gmp_vfprintf __gmp_vfprintf
+#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vfprintf (FILE *, const char *, va_list);
+#endif
+
+#define gmp_vprintf __gmp_vprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vprintf (const char *, va_list);
+#endif
+
+#define gmp_vsnprintf __gmp_vsnprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vsnprintf (char *, size_t, const char *, va_list);
+#endif
+
+#define gmp_vsprintf __gmp_vsprintf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vsprintf (char *, const char *, va_list);
+#endif
+
+
+/**************** Formatted input routines. ****************/
+
+#define gmp_fscanf __gmp_fscanf
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC int gmp_fscanf (FILE *, const char *, ...);
+#endif
+
+#define gmp_scanf __gmp_scanf
+__GMP_DECLSPEC int gmp_scanf (const char *, ...);
+
+#define gmp_sscanf __gmp_sscanf
+__GMP_DECLSPEC int gmp_sscanf (const char *, const char *, ...);
+
+#define gmp_vfscanf __gmp_vfscanf
+#if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vfscanf (FILE *, const char *, va_list);
+#endif
+
+#define gmp_vscanf __gmp_vscanf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vscanf (const char *, va_list);
+#endif
+
+#define gmp_vsscanf __gmp_vsscanf
+#if defined (_GMP_H_HAVE_VA_LIST)
+__GMP_DECLSPEC int gmp_vsscanf (const char *, const char *, va_list);
+#endif
+
+
+/**************** Integer (i.e. Z) routines. ****************/
+
+#define _mpz_realloc __gmpz_realloc
+#define mpz_realloc __gmpz_realloc
+__GMP_DECLSPEC void *_mpz_realloc (mpz_ptr, mp_size_t);
+
+#define mpz_abs __gmpz_abs
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs)
+__GMP_DECLSPEC void mpz_abs (mpz_ptr, mpz_srcptr);
+#endif
+
+#define mpz_add __gmpz_add
+__GMP_DECLSPEC void mpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_add_ui __gmpz_add_ui
+__GMP_DECLSPEC void mpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_addmul __gmpz_addmul
+__GMP_DECLSPEC void mpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_addmul_ui __gmpz_addmul_ui
+__GMP_DECLSPEC void mpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_and __gmpz_and
+__GMP_DECLSPEC void mpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_array_init __gmpz_array_init
+__GMP_DECLSPEC void mpz_array_init (mpz_ptr, mp_size_t, mp_size_t);
+
+#define mpz_bin_ui __gmpz_bin_ui
+__GMP_DECLSPEC void mpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_bin_uiui __gmpz_bin_uiui
+__GMP_DECLSPEC void mpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int);
+
+#define mpz_cdiv_q __gmpz_cdiv_q
+__GMP_DECLSPEC void mpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp
+__GMP_DECLSPEC void mpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_cdiv_q_ui __gmpz_cdiv_q_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_cdiv_qr __gmpz_cdiv_qr
+__GMP_DECLSPEC void mpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_cdiv_r __gmpz_cdiv_r
+__GMP_DECLSPEC void mpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp
+__GMP_DECLSPEC void mpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_cdiv_r_ui __gmpz_cdiv_r_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_cdiv_ui __gmpz_cdiv_ui
+__GMP_DECLSPEC unsigned long int mpz_cdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_clear __gmpz_clear
+__GMP_DECLSPEC void mpz_clear (mpz_ptr);
+
+#define mpz_clears __gmpz_clears
+__GMP_DECLSPEC void mpz_clears (mpz_ptr, ...);
+
+#define mpz_clrbit __gmpz_clrbit
+__GMP_DECLSPEC void mpz_clrbit (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_cmp __gmpz_cmp
+__GMP_DECLSPEC int mpz_cmp (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmp_d __gmpz_cmp_d
+__GMP_DECLSPEC int mpz_cmp_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE;
+
+#define _mpz_cmp_si __gmpz_cmp_si
+__GMP_DECLSPEC int _mpz_cmp_si (mpz_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define _mpz_cmp_ui __gmpz_cmp_ui
+__GMP_DECLSPEC int _mpz_cmp_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmpabs __gmpz_cmpabs
+__GMP_DECLSPEC int mpz_cmpabs (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmpabs_d __gmpz_cmpabs_d
+__GMP_DECLSPEC int mpz_cmpabs_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_cmpabs_ui __gmpz_cmpabs_ui
+__GMP_DECLSPEC int mpz_cmpabs_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_com __gmpz_com
+__GMP_DECLSPEC void mpz_com (mpz_ptr, mpz_srcptr);
+
+#define mpz_combit __gmpz_combit
+__GMP_DECLSPEC void mpz_combit (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_congruent_p __gmpz_congruent_p
+__GMP_DECLSPEC int mpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_congruent_2exp_p __gmpz_congruent_2exp_p
+__GMP_DECLSPEC int mpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_congruent_ui_p __gmpz_congruent_ui_p
+__GMP_DECLSPEC int mpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_divexact __gmpz_divexact
+__GMP_DECLSPEC void mpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_divexact_ui __gmpz_divexact_ui
+__GMP_DECLSPEC void mpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long);
+
+#define mpz_divisible_p __gmpz_divisible_p
+__GMP_DECLSPEC int mpz_divisible_p (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_divisible_ui_p __gmpz_divisible_ui_p
+__GMP_DECLSPEC int mpz_divisible_ui_p (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_divisible_2exp_p __gmpz_divisible_2exp_p
+__GMP_DECLSPEC int mpz_divisible_2exp_p (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_dump __gmpz_dump
+__GMP_DECLSPEC void mpz_dump (mpz_srcptr);
+
+#define mpz_export __gmpz_export
+__GMP_DECLSPEC void *mpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr);
+
+#define mpz_fac_ui __gmpz_fac_ui
+__GMP_DECLSPEC void mpz_fac_ui (mpz_ptr, unsigned long int);
+
+#define mpz_2fac_ui __gmpz_2fac_ui
+__GMP_DECLSPEC void mpz_2fac_ui (mpz_ptr, unsigned long int);
+
+#define mpz_mfac_uiui __gmpz_mfac_uiui
+__GMP_DECLSPEC void mpz_mfac_uiui (mpz_ptr, unsigned long int, unsigned long int);
+
+#define mpz_primorial_ui __gmpz_primorial_ui
+__GMP_DECLSPEC void mpz_primorial_ui (mpz_ptr, unsigned long int);
+
+#define mpz_fdiv_q __gmpz_fdiv_q
+__GMP_DECLSPEC void mpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp
+__GMP_DECLSPEC void mpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_fdiv_q_ui __gmpz_fdiv_q_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_fdiv_qr __gmpz_fdiv_qr
+__GMP_DECLSPEC void mpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_fdiv_r __gmpz_fdiv_r
+__GMP_DECLSPEC void mpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp
+__GMP_DECLSPEC void mpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_fdiv_r_ui __gmpz_fdiv_r_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_fdiv_ui __gmpz_fdiv_ui
+__GMP_DECLSPEC unsigned long int mpz_fdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fib_ui __gmpz_fib_ui
+__GMP_DECLSPEC void mpz_fib_ui (mpz_ptr, unsigned long int);
+
+#define mpz_fib2_ui __gmpz_fib2_ui
+__GMP_DECLSPEC void mpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int);
+
+#define mpz_fits_sint_p __gmpz_fits_sint_p
+__GMP_DECLSPEC int mpz_fits_sint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fits_slong_p __gmpz_fits_slong_p
+__GMP_DECLSPEC int mpz_fits_slong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fits_sshort_p __gmpz_fits_sshort_p
+__GMP_DECLSPEC int mpz_fits_sshort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_fits_uint_p __gmpz_fits_uint_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p)
+__GMP_DECLSPEC int mpz_fits_uint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_fits_ulong_p __gmpz_fits_ulong_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p)
+__GMP_DECLSPEC int mpz_fits_ulong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_fits_ushort_p __gmpz_fits_ushort_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p)
+__GMP_DECLSPEC int mpz_fits_ushort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_gcd __gmpz_gcd
+__GMP_DECLSPEC void mpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_gcd_ui __gmpz_gcd_ui
+__GMP_DECLSPEC unsigned long int mpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_gcdext __gmpz_gcdext
+__GMP_DECLSPEC void mpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_get_d __gmpz_get_d
+__GMP_DECLSPEC double mpz_get_d (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_get_d_2exp __gmpz_get_d_2exp
+__GMP_DECLSPEC double mpz_get_d_2exp (signed long int *, mpz_srcptr);
+
+#define mpz_get_si __gmpz_get_si
+__GMP_DECLSPEC /* signed */ long int mpz_get_si (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_get_str __gmpz_get_str
+__GMP_DECLSPEC char *mpz_get_str (char *, int, mpz_srcptr);
+
+#define mpz_get_ui __gmpz_get_ui
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui)
+__GMP_DECLSPEC unsigned long int mpz_get_ui (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_getlimbn __gmpz_getlimbn
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn)
+__GMP_DECLSPEC mp_limb_t mpz_getlimbn (mpz_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_hamdist __gmpz_hamdist
+__GMP_DECLSPEC mp_bitcnt_t mpz_hamdist (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_import __gmpz_import
+__GMP_DECLSPEC void mpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *);
+
+#define mpz_init __gmpz_init
+__GMP_DECLSPEC void mpz_init (mpz_ptr) __GMP_NOTHROW;
+
+#define mpz_init2 __gmpz_init2
+__GMP_DECLSPEC void mpz_init2 (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_inits __gmpz_inits
+__GMP_DECLSPEC void mpz_inits (mpz_ptr, ...) __GMP_NOTHROW;
+
+#define mpz_init_set __gmpz_init_set
+__GMP_DECLSPEC void mpz_init_set (mpz_ptr, mpz_srcptr);
+
+#define mpz_init_set_d __gmpz_init_set_d
+__GMP_DECLSPEC void mpz_init_set_d (mpz_ptr, double);
+
+#define mpz_init_set_si __gmpz_init_set_si
+__GMP_DECLSPEC void mpz_init_set_si (mpz_ptr, signed long int);
+
+#define mpz_init_set_str __gmpz_init_set_str
+__GMP_DECLSPEC int mpz_init_set_str (mpz_ptr, const char *, int);
+
+#define mpz_init_set_ui __gmpz_init_set_ui
+__GMP_DECLSPEC void mpz_init_set_ui (mpz_ptr, unsigned long int);
+
+#define mpz_inp_raw __gmpz_inp_raw
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_inp_raw (mpz_ptr, FILE *);
+#endif
+
+#define mpz_inp_str __gmpz_inp_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_inp_str (mpz_ptr, FILE *, int);
+#endif
+
+#define mpz_invert __gmpz_invert
+__GMP_DECLSPEC int mpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_ior __gmpz_ior
+__GMP_DECLSPEC void mpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_jacobi __gmpz_jacobi
+__GMP_DECLSPEC int mpz_jacobi (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_kronecker mpz_jacobi /* alias */
+
+#define mpz_kronecker_si __gmpz_kronecker_si
+__GMP_DECLSPEC int mpz_kronecker_si (mpz_srcptr, long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_kronecker_ui __gmpz_kronecker_ui
+__GMP_DECLSPEC int mpz_kronecker_ui (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_si_kronecker __gmpz_si_kronecker
+__GMP_DECLSPEC int mpz_si_kronecker (long, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_ui_kronecker __gmpz_ui_kronecker
+__GMP_DECLSPEC int mpz_ui_kronecker (unsigned long, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_lcm __gmpz_lcm
+__GMP_DECLSPEC void mpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_lcm_ui __gmpz_lcm_ui
+__GMP_DECLSPEC void mpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long);
+
+#define mpz_legendre mpz_jacobi /* alias */
+
+#define mpz_lucnum_ui __gmpz_lucnum_ui
+__GMP_DECLSPEC void mpz_lucnum_ui (mpz_ptr, unsigned long int);
+
+#define mpz_lucnum2_ui __gmpz_lucnum2_ui
+__GMP_DECLSPEC void mpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int);
+
+#define mpz_millerrabin __gmpz_millerrabin
+__GMP_DECLSPEC int mpz_millerrabin (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_mod __gmpz_mod
+__GMP_DECLSPEC void mpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */
+
+#define mpz_mul __gmpz_mul
+__GMP_DECLSPEC void mpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_mul_2exp __gmpz_mul_2exp
+__GMP_DECLSPEC void mpz_mul_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_mul_si __gmpz_mul_si
+__GMP_DECLSPEC void mpz_mul_si (mpz_ptr, mpz_srcptr, long int);
+
+#define mpz_mul_ui __gmpz_mul_ui
+__GMP_DECLSPEC void mpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_neg __gmpz_neg
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg)
+__GMP_DECLSPEC void mpz_neg (mpz_ptr, mpz_srcptr);
+#endif
+
+#define mpz_nextprime __gmpz_nextprime
+__GMP_DECLSPEC void mpz_nextprime (mpz_ptr, mpz_srcptr);
+
+#define mpz_out_raw __gmpz_out_raw
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_out_raw (FILE *, mpz_srcptr);
+#endif
+
+#define mpz_out_str __gmpz_out_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr);
+#endif
+
+#define mpz_perfect_power_p __gmpz_perfect_power_p
+__GMP_DECLSPEC int mpz_perfect_power_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_perfect_square_p __gmpz_perfect_square_p
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p)
+__GMP_DECLSPEC int mpz_perfect_square_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_popcount __gmpz_popcount
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount)
+__GMP_DECLSPEC mp_bitcnt_t mpz_popcount (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_pow_ui __gmpz_pow_ui
+__GMP_DECLSPEC void mpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_powm __gmpz_powm
+__GMP_DECLSPEC void mpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_powm_sec __gmpz_powm_sec
+__GMP_DECLSPEC void mpz_powm_sec (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_powm_ui __gmpz_powm_ui
+__GMP_DECLSPEC void mpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr);
+
+#define mpz_probab_prime_p __gmpz_probab_prime_p
+__GMP_DECLSPEC int mpz_probab_prime_p (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_random __gmpz_random
+__GMP_DECLSPEC void mpz_random (mpz_ptr, mp_size_t);
+
+#define mpz_random2 __gmpz_random2
+__GMP_DECLSPEC void mpz_random2 (mpz_ptr, mp_size_t);
+
+#define mpz_realloc2 __gmpz_realloc2
+__GMP_DECLSPEC void mpz_realloc2 (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_remove __gmpz_remove
+__GMP_DECLSPEC mp_bitcnt_t mpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_root __gmpz_root
+__GMP_DECLSPEC int mpz_root (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_rootrem __gmpz_rootrem
+__GMP_DECLSPEC void mpz_rootrem (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_rrandomb __gmpz_rrandomb
+__GMP_DECLSPEC void mpz_rrandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t);
+
+#define mpz_scan0 __gmpz_scan0
+__GMP_DECLSPEC mp_bitcnt_t mpz_scan0 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_scan1 __gmpz_scan1
+__GMP_DECLSPEC mp_bitcnt_t mpz_scan1 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_set __gmpz_set
+__GMP_DECLSPEC void mpz_set (mpz_ptr, mpz_srcptr);
+
+#define mpz_set_d __gmpz_set_d
+__GMP_DECLSPEC void mpz_set_d (mpz_ptr, double);
+
+#define mpz_set_f __gmpz_set_f
+__GMP_DECLSPEC void mpz_set_f (mpz_ptr, mpf_srcptr);
+
+#define mpz_set_q __gmpz_set_q
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q)
+__GMP_DECLSPEC void mpz_set_q (mpz_ptr, mpq_srcptr);
+#endif
+
+#define mpz_set_si __gmpz_set_si
+__GMP_DECLSPEC void mpz_set_si (mpz_ptr, signed long int);
+
+#define mpz_set_str __gmpz_set_str
+__GMP_DECLSPEC int mpz_set_str (mpz_ptr, const char *, int);
+
+#define mpz_set_ui __gmpz_set_ui
+__GMP_DECLSPEC void mpz_set_ui (mpz_ptr, unsigned long int);
+
+#define mpz_setbit __gmpz_setbit
+__GMP_DECLSPEC void mpz_setbit (mpz_ptr, mp_bitcnt_t);
+
+#define mpz_size __gmpz_size
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size)
+__GMP_DECLSPEC size_t mpz_size (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpz_sizeinbase __gmpz_sizeinbase
+__GMP_DECLSPEC size_t mpz_sizeinbase (mpz_srcptr, int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_sqrt __gmpz_sqrt
+__GMP_DECLSPEC void mpz_sqrt (mpz_ptr, mpz_srcptr);
+
+#define mpz_sqrtrem __gmpz_sqrtrem
+__GMP_DECLSPEC void mpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr);
+
+#define mpz_sub __gmpz_sub
+__GMP_DECLSPEC void mpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_sub_ui __gmpz_sub_ui
+__GMP_DECLSPEC void mpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_ui_sub __gmpz_ui_sub
+__GMP_DECLSPEC void mpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr);
+
+#define mpz_submul __gmpz_submul
+__GMP_DECLSPEC void mpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_submul_ui __gmpz_submul_ui
+__GMP_DECLSPEC void mpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_swap __gmpz_swap
+__GMP_DECLSPEC void mpz_swap (mpz_ptr, mpz_ptr) __GMP_NOTHROW;
+
+#define mpz_tdiv_ui __gmpz_tdiv_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpz_tdiv_q __gmpz_tdiv_q
+__GMP_DECLSPEC void mpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp
+__GMP_DECLSPEC void mpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_tdiv_q_ui __gmpz_tdiv_q_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_tdiv_qr __gmpz_tdiv_qr
+__GMP_DECLSPEC void mpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_tdiv_r __gmpz_tdiv_r
+__GMP_DECLSPEC void mpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp
+__GMP_DECLSPEC void mpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);
+
+#define mpz_tdiv_r_ui __gmpz_tdiv_r_ui
+__GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+#define mpz_tstbit __gmpz_tstbit
+__GMP_DECLSPEC int mpz_tstbit (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpz_ui_pow_ui __gmpz_ui_pow_ui
+__GMP_DECLSPEC void mpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int);
+
+#define mpz_urandomb __gmpz_urandomb
+__GMP_DECLSPEC void mpz_urandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t);
+
+#define mpz_urandomm __gmpz_urandomm
+__GMP_DECLSPEC void mpz_urandomm (mpz_ptr, gmp_randstate_t, mpz_srcptr);
+
+#define mpz_xor __gmpz_xor
+#define mpz_eor __gmpz_xor
+__GMP_DECLSPEC void mpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+#define mpz_limbs_read __gmpz_limbs_read
+__GMP_DECLSPEC mp_srcptr mpz_limbs_read (mpz_srcptr);
+
+#define mpz_limbs_write __gmpz_limbs_write
+__GMP_DECLSPEC mp_ptr mpz_limbs_write (mpz_ptr, mp_size_t);
+
+#define mpz_limbs_modify __gmpz_limbs_modify
+__GMP_DECLSPEC mp_ptr mpz_limbs_modify (mpz_ptr, mp_size_t);
+
+#define mpz_limbs_finish __gmpz_limbs_finish
+__GMP_DECLSPEC void mpz_limbs_finish (mpz_ptr, mp_size_t);
+
+#define mpz_roinit_n __gmpz_roinit_n
+__GMP_DECLSPEC mpz_srcptr mpz_roinit_n (mpz_ptr, mp_srcptr, mp_size_t);
+
+#define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }}
+
+/**************** Rational (i.e. Q) routines. ****************/
+
+#define mpq_abs __gmpq_abs
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs)
+__GMP_DECLSPEC void mpq_abs (mpq_ptr, mpq_srcptr);
+#endif
+
+#define mpq_add __gmpq_add
+__GMP_DECLSPEC void mpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_canonicalize __gmpq_canonicalize
+__GMP_DECLSPEC void mpq_canonicalize (mpq_ptr);
+
+#define mpq_clear __gmpq_clear
+__GMP_DECLSPEC void mpq_clear (mpq_ptr);
+
+#define mpq_clears __gmpq_clears
+__GMP_DECLSPEC void mpq_clears (mpq_ptr, ...);
+
+#define mpq_cmp __gmpq_cmp
+__GMP_DECLSPEC int mpq_cmp (mpq_srcptr, mpq_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define _mpq_cmp_si __gmpq_cmp_si
+__GMP_DECLSPEC int _mpq_cmp_si (mpq_srcptr, long, unsigned long) __GMP_ATTRIBUTE_PURE;
+
+#define _mpq_cmp_ui __gmpq_cmp_ui
+__GMP_DECLSPEC int _mpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __GMP_ATTRIBUTE_PURE;
+
+#define mpq_cmp_z __gmpq_cmp_z
+__GMP_DECLSPEC int mpq_cmp_z (mpq_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpq_div __gmpq_div
+__GMP_DECLSPEC void mpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_div_2exp __gmpq_div_2exp
+__GMP_DECLSPEC void mpq_div_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t);
+
+#define mpq_equal __gmpq_equal
+__GMP_DECLSPEC int mpq_equal (mpq_srcptr, mpq_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpq_get_num __gmpq_get_num
+__GMP_DECLSPEC void mpq_get_num (mpz_ptr, mpq_srcptr);
+
+#define mpq_get_den __gmpq_get_den
+__GMP_DECLSPEC void mpq_get_den (mpz_ptr, mpq_srcptr);
+
+#define mpq_get_d __gmpq_get_d
+__GMP_DECLSPEC double mpq_get_d (mpq_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpq_get_str __gmpq_get_str
+__GMP_DECLSPEC char *mpq_get_str (char *, int, mpq_srcptr);
+
+#define mpq_init __gmpq_init
+__GMP_DECLSPEC void mpq_init (mpq_ptr);
+
+#define mpq_inits __gmpq_inits
+__GMP_DECLSPEC void mpq_inits (mpq_ptr, ...);
+
+#define mpq_inp_str __gmpq_inp_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpq_inp_str (mpq_ptr, FILE *, int);
+#endif
+
+#define mpq_inv __gmpq_inv
+__GMP_DECLSPEC void mpq_inv (mpq_ptr, mpq_srcptr);
+
+#define mpq_mul __gmpq_mul
+__GMP_DECLSPEC void mpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_mul_2exp __gmpq_mul_2exp
+__GMP_DECLSPEC void mpq_mul_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t);
+
+#define mpq_neg __gmpq_neg
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg)
+__GMP_DECLSPEC void mpq_neg (mpq_ptr, mpq_srcptr);
+#endif
+
+#define mpq_out_str __gmpq_out_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpq_out_str (FILE *, int, mpq_srcptr);
+#endif
+
+#define mpq_set __gmpq_set
+__GMP_DECLSPEC void mpq_set (mpq_ptr, mpq_srcptr);
+
+#define mpq_set_d __gmpq_set_d
+__GMP_DECLSPEC void mpq_set_d (mpq_ptr, double);
+
+#define mpq_set_den __gmpq_set_den
+__GMP_DECLSPEC void mpq_set_den (mpq_ptr, mpz_srcptr);
+
+#define mpq_set_f __gmpq_set_f
+__GMP_DECLSPEC void mpq_set_f (mpq_ptr, mpf_srcptr);
+
+#define mpq_set_num __gmpq_set_num
+__GMP_DECLSPEC void mpq_set_num (mpq_ptr, mpz_srcptr);
+
+#define mpq_set_si __gmpq_set_si
+__GMP_DECLSPEC void mpq_set_si (mpq_ptr, signed long int, unsigned long int);
+
+#define mpq_set_str __gmpq_set_str
+__GMP_DECLSPEC int mpq_set_str (mpq_ptr, const char *, int);
+
+#define mpq_set_ui __gmpq_set_ui
+__GMP_DECLSPEC void mpq_set_ui (mpq_ptr, unsigned long int, unsigned long int);
+
+#define mpq_set_z __gmpq_set_z
+__GMP_DECLSPEC void mpq_set_z (mpq_ptr, mpz_srcptr);
+
+#define mpq_sub __gmpq_sub
+__GMP_DECLSPEC void mpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+#define mpq_swap __gmpq_swap
+__GMP_DECLSPEC void mpq_swap (mpq_ptr, mpq_ptr) __GMP_NOTHROW;
+
+
+/**************** Float (i.e. F) routines. ****************/
+
+#define mpf_abs __gmpf_abs
+__GMP_DECLSPEC void mpf_abs (mpf_ptr, mpf_srcptr);
+
+#define mpf_add __gmpf_add
+__GMP_DECLSPEC void mpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_add_ui __gmpf_add_ui
+__GMP_DECLSPEC void mpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+#define mpf_ceil __gmpf_ceil
+__GMP_DECLSPEC void mpf_ceil (mpf_ptr, mpf_srcptr);
+
+#define mpf_clear __gmpf_clear
+__GMP_DECLSPEC void mpf_clear (mpf_ptr);
+
+#define mpf_clears __gmpf_clears
+__GMP_DECLSPEC void mpf_clears (mpf_ptr, ...);
+
+#define mpf_cmp __gmpf_cmp
+__GMP_DECLSPEC int mpf_cmp (mpf_srcptr, mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_z __gmpf_cmp_z
+__GMP_DECLSPEC int mpf_cmp_z (mpf_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_d __gmpf_cmp_d
+__GMP_DECLSPEC int mpf_cmp_d (mpf_srcptr, double) __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_si __gmpf_cmp_si
+__GMP_DECLSPEC int mpf_cmp_si (mpf_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_cmp_ui __gmpf_cmp_ui
+__GMP_DECLSPEC int mpf_cmp_ui (mpf_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_div __gmpf_div
+__GMP_DECLSPEC void mpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_div_2exp __gmpf_div_2exp
+__GMP_DECLSPEC void mpf_div_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t);
+
+#define mpf_div_ui __gmpf_div_ui
+__GMP_DECLSPEC void mpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_dump __gmpf_dump
+__GMP_DECLSPEC void mpf_dump (mpf_srcptr);
+
+#define mpf_eq __gmpf_eq
+__GMP_DECLSPEC int mpf_eq (mpf_srcptr, mpf_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_sint_p __gmpf_fits_sint_p
+__GMP_DECLSPEC int mpf_fits_sint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_slong_p __gmpf_fits_slong_p
+__GMP_DECLSPEC int mpf_fits_slong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_sshort_p __gmpf_fits_sshort_p
+__GMP_DECLSPEC int mpf_fits_sshort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_uint_p __gmpf_fits_uint_p
+__GMP_DECLSPEC int mpf_fits_uint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_ulong_p __gmpf_fits_ulong_p
+__GMP_DECLSPEC int mpf_fits_ulong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_fits_ushort_p __gmpf_fits_ushort_p
+__GMP_DECLSPEC int mpf_fits_ushort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_floor __gmpf_floor
+__GMP_DECLSPEC void mpf_floor (mpf_ptr, mpf_srcptr);
+
+#define mpf_get_d __gmpf_get_d
+__GMP_DECLSPEC double mpf_get_d (mpf_srcptr) __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_d_2exp __gmpf_get_d_2exp
+__GMP_DECLSPEC double mpf_get_d_2exp (signed long int *, mpf_srcptr);
+
+#define mpf_get_default_prec __gmpf_get_default_prec
+__GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec (void) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_prec __gmpf_get_prec
+__GMP_DECLSPEC mp_bitcnt_t mpf_get_prec (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_si __gmpf_get_si
+__GMP_DECLSPEC long mpf_get_si (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_get_str __gmpf_get_str
+__GMP_DECLSPEC char *mpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr);
+
+#define mpf_get_ui __gmpf_get_ui
+__GMP_DECLSPEC unsigned long mpf_get_ui (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_init __gmpf_init
+__GMP_DECLSPEC void mpf_init (mpf_ptr);
+
+#define mpf_init2 __gmpf_init2
+__GMP_DECLSPEC void mpf_init2 (mpf_ptr, mp_bitcnt_t);
+
+#define mpf_inits __gmpf_inits
+__GMP_DECLSPEC void mpf_inits (mpf_ptr, ...);
+
+#define mpf_init_set __gmpf_init_set
+__GMP_DECLSPEC void mpf_init_set (mpf_ptr, mpf_srcptr);
+
+#define mpf_init_set_d __gmpf_init_set_d
+__GMP_DECLSPEC void mpf_init_set_d (mpf_ptr, double);
+
+#define mpf_init_set_si __gmpf_init_set_si
+__GMP_DECLSPEC void mpf_init_set_si (mpf_ptr, signed long int);
+
+#define mpf_init_set_str __gmpf_init_set_str
+__GMP_DECLSPEC int mpf_init_set_str (mpf_ptr, const char *, int);
+
+#define mpf_init_set_ui __gmpf_init_set_ui
+__GMP_DECLSPEC void mpf_init_set_ui (mpf_ptr, unsigned long int);
+
+#define mpf_inp_str __gmpf_inp_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpf_inp_str (mpf_ptr, FILE *, int);
+#endif
+
+#define mpf_integer_p __gmpf_integer_p
+__GMP_DECLSPEC int mpf_integer_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_mul __gmpf_mul
+__GMP_DECLSPEC void mpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_mul_2exp __gmpf_mul_2exp
+__GMP_DECLSPEC void mpf_mul_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t);
+
+#define mpf_mul_ui __gmpf_mul_ui
+__GMP_DECLSPEC void mpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_neg __gmpf_neg
+__GMP_DECLSPEC void mpf_neg (mpf_ptr, mpf_srcptr);
+
+#define mpf_out_str __gmpf_out_str
+#ifdef _GMP_H_HAVE_FILE
+__GMP_DECLSPEC size_t mpf_out_str (FILE *, int, size_t, mpf_srcptr);
+#endif
+
+#define mpf_pow_ui __gmpf_pow_ui
+__GMP_DECLSPEC void mpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_random2 __gmpf_random2
+__GMP_DECLSPEC void mpf_random2 (mpf_ptr, mp_size_t, mp_exp_t);
+
+#define mpf_reldiff __gmpf_reldiff
+__GMP_DECLSPEC void mpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_set __gmpf_set
+__GMP_DECLSPEC void mpf_set (mpf_ptr, mpf_srcptr);
+
+#define mpf_set_d __gmpf_set_d
+__GMP_DECLSPEC void mpf_set_d (mpf_ptr, double);
+
+#define mpf_set_default_prec __gmpf_set_default_prec
+__GMP_DECLSPEC void mpf_set_default_prec (mp_bitcnt_t) __GMP_NOTHROW;
+
+#define mpf_set_prec __gmpf_set_prec
+__GMP_DECLSPEC void mpf_set_prec (mpf_ptr, mp_bitcnt_t);
+
+#define mpf_set_prec_raw __gmpf_set_prec_raw
+__GMP_DECLSPEC void mpf_set_prec_raw (mpf_ptr, mp_bitcnt_t) __GMP_NOTHROW;
+
+#define mpf_set_q __gmpf_set_q
+__GMP_DECLSPEC void mpf_set_q (mpf_ptr, mpq_srcptr);
+
+#define mpf_set_si __gmpf_set_si
+__GMP_DECLSPEC void mpf_set_si (mpf_ptr, signed long int);
+
+#define mpf_set_str __gmpf_set_str
+__GMP_DECLSPEC int mpf_set_str (mpf_ptr, const char *, int);
+
+#define mpf_set_ui __gmpf_set_ui
+__GMP_DECLSPEC void mpf_set_ui (mpf_ptr, unsigned long int);
+
+#define mpf_set_z __gmpf_set_z
+__GMP_DECLSPEC void mpf_set_z (mpf_ptr, mpz_srcptr);
+
+#define mpf_size __gmpf_size
+__GMP_DECLSPEC size_t mpf_size (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpf_sqrt __gmpf_sqrt
+__GMP_DECLSPEC void mpf_sqrt (mpf_ptr, mpf_srcptr);
+
+#define mpf_sqrt_ui __gmpf_sqrt_ui
+__GMP_DECLSPEC void mpf_sqrt_ui (mpf_ptr, unsigned long int);
+
+#define mpf_sub __gmpf_sub
+__GMP_DECLSPEC void mpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+#define mpf_sub_ui __gmpf_sub_ui
+__GMP_DECLSPEC void mpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+#define mpf_swap __gmpf_swap
+__GMP_DECLSPEC void mpf_swap (mpf_ptr, mpf_ptr) __GMP_NOTHROW;
+
+#define mpf_trunc __gmpf_trunc
+__GMP_DECLSPEC void mpf_trunc (mpf_ptr, mpf_srcptr);
+
+#define mpf_ui_div __gmpf_ui_div
+__GMP_DECLSPEC void mpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr);
+
+#define mpf_ui_sub __gmpf_ui_sub
+__GMP_DECLSPEC void mpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr);
+
+#define mpf_urandomb __gmpf_urandomb
+__GMP_DECLSPEC void mpf_urandomb (mpf_t, gmp_randstate_t, mp_bitcnt_t);
+
+
+/************ Low level positive-integer (i.e. N) routines. ************/
+
+/* This is ugly, but we need to make user calls reach the prefixed function. */
+
+#define mpn_add __MPN(add)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add)
+__GMP_DECLSPEC mp_limb_t mpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+#endif
+
+#define mpn_add_1 __MPN(add_1)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1)
+__GMP_DECLSPEC mp_limb_t mpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW;
+#endif
+
+#define mpn_add_n __MPN(add_n)
+__GMP_DECLSPEC mp_limb_t mpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_addmul_1 __MPN(addmul_1)
+__GMP_DECLSPEC mp_limb_t mpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_cmp __MPN(cmp)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp)
+__GMP_DECLSPEC int mpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpn_zero_p __MPN(zero_p)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_zero_p)
+__GMP_DECLSPEC int mpn_zero_p (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+#endif
+
+#define mpn_divexact_1 __MPN(divexact_1)
+__GMP_DECLSPEC void mpn_divexact_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_divexact_by3(dst,src,size) \
+ mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0))
+
+#define mpn_divexact_by3c __MPN(divexact_by3c)
+__GMP_DECLSPEC mp_limb_t mpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_divmod_1(qp,np,nsize,dlimb) \
+ mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb)
+
+#define mpn_divrem __MPN(divrem)
+__GMP_DECLSPEC mp_limb_t mpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t);
+
+#define mpn_divrem_1 __MPN(divrem_1)
+__GMP_DECLSPEC mp_limb_t mpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_divrem_2 __MPN(divrem_2)
+__GMP_DECLSPEC mp_limb_t mpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr);
+
+#define mpn_div_qr_1 __MPN(div_qr_1)
+__GMP_DECLSPEC mp_limb_t mpn_div_qr_1 (mp_ptr, mp_limb_t *, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_div_qr_2 __MPN(div_qr_2)
+__GMP_DECLSPEC mp_limb_t mpn_div_qr_2 (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr);
+
+#define mpn_gcd __MPN(gcd)
+__GMP_DECLSPEC mp_size_t mpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
+
+#define mpn_gcd_11 __MPN(gcd_11)
+__GMP_DECLSPEC mp_limb_t mpn_gcd_11 (mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_gcd_1 __MPN(gcd_1)
+__GMP_DECLSPEC mp_limb_t mpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_gcdext_1 __MPN(gcdext_1)
+__GMP_DECLSPEC mp_limb_t mpn_gcdext_1 (mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t);
+
+#define mpn_gcdext __MPN(gcdext)
+__GMP_DECLSPEC mp_size_t mpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
+
+#define mpn_get_str __MPN(get_str)
+__GMP_DECLSPEC size_t mpn_get_str (unsigned char *, int, mp_ptr, mp_size_t);
+
+#define mpn_hamdist __MPN(hamdist)
+__GMP_DECLSPEC mp_bitcnt_t mpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpn_lshift __MPN(lshift)
+__GMP_DECLSPEC mp_limb_t mpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+
+#define mpn_mod_1 __MPN(mod_1)
+__GMP_DECLSPEC mp_limb_t mpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_mul __MPN(mul)
+__GMP_DECLSPEC mp_limb_t mpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+
+#define mpn_mul_1 __MPN(mul_1)
+__GMP_DECLSPEC mp_limb_t mpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_mul_n __MPN(mul_n)
+__GMP_DECLSPEC void mpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_sqr __MPN(sqr)
+__GMP_DECLSPEC void mpn_sqr (mp_ptr, mp_srcptr, mp_size_t);
+
+#define mpn_neg __MPN(neg)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg)
+__GMP_DECLSPEC mp_limb_t mpn_neg (mp_ptr, mp_srcptr, mp_size_t);
+#endif
+
+#define mpn_com __MPN(com)
+__GMP_DECLSPEC void mpn_com (mp_ptr, mp_srcptr, mp_size_t);
+
+#define mpn_perfect_square_p __MPN(perfect_square_p)
+__GMP_DECLSPEC int mpn_perfect_square_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_perfect_power_p __MPN(perfect_power_p)
+__GMP_DECLSPEC int mpn_perfect_power_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_popcount __MPN(popcount)
+__GMP_DECLSPEC mp_bitcnt_t mpn_popcount (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;
+
+#define mpn_pow_1 __MPN(pow_1)
+__GMP_DECLSPEC mp_size_t mpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+
+/* undocumented now, but retained here for upward compatibility */
+#define mpn_preinv_mod_1 __MPN(preinv_mod_1)
+__GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_random __MPN(random)
+__GMP_DECLSPEC void mpn_random (mp_ptr, mp_size_t);
+
+#define mpn_random2 __MPN(random2)
+__GMP_DECLSPEC void mpn_random2 (mp_ptr, mp_size_t);
+
+#define mpn_rshift __MPN(rshift)
+__GMP_DECLSPEC mp_limb_t mpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+
+#define mpn_scan0 __MPN(scan0)
+__GMP_DECLSPEC mp_bitcnt_t mpn_scan0 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_scan1 __MPN(scan1)
+__GMP_DECLSPEC mp_bitcnt_t mpn_scan1 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_set_str __MPN(set_str)
+__GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);
+
+#define mpn_sizeinbase __MPN(sizeinbase)
+__GMP_DECLSPEC size_t mpn_sizeinbase (mp_srcptr, mp_size_t, int);
+
+#define mpn_sqrtrem __MPN(sqrtrem)
+__GMP_DECLSPEC mp_size_t mpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t);
+
+#define mpn_sub __MPN(sub)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub)
+__GMP_DECLSPEC mp_limb_t mpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+#endif
+
+#define mpn_sub_1 __MPN(sub_1)
+#if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1)
+__GMP_DECLSPEC mp_limb_t mpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW;
+#endif
+
+#define mpn_sub_n __MPN(sub_n)
+__GMP_DECLSPEC mp_limb_t mpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_submul_1 __MPN(submul_1)
+__GMP_DECLSPEC mp_limb_t mpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+#define mpn_tdiv_qr __MPN(tdiv_qr)
+__GMP_DECLSPEC void mpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+
+#define mpn_and_n __MPN(and_n)
+__GMP_DECLSPEC void mpn_and_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_andn_n __MPN(andn_n)
+__GMP_DECLSPEC void mpn_andn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_nand_n __MPN(nand_n)
+__GMP_DECLSPEC void mpn_nand_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_ior_n __MPN(ior_n)
+__GMP_DECLSPEC void mpn_ior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_iorn_n __MPN(iorn_n)
+__GMP_DECLSPEC void mpn_iorn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_nior_n __MPN(nior_n)
+__GMP_DECLSPEC void mpn_nior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_xor_n __MPN(xor_n)
+__GMP_DECLSPEC void mpn_xor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_xnor_n __MPN(xnor_n)
+__GMP_DECLSPEC void mpn_xnor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_copyi __MPN(copyi)
+__GMP_DECLSPEC void mpn_copyi (mp_ptr, mp_srcptr, mp_size_t);
+#define mpn_copyd __MPN(copyd)
+__GMP_DECLSPEC void mpn_copyd (mp_ptr, mp_srcptr, mp_size_t);
+#define mpn_zero __MPN(zero)
+__GMP_DECLSPEC void mpn_zero (mp_ptr, mp_size_t);
+
+#define mpn_cnd_add_n __MPN(cnd_add_n)
+__GMP_DECLSPEC mp_limb_t mpn_cnd_add_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+#define mpn_cnd_sub_n __MPN(cnd_sub_n)
+__GMP_DECLSPEC mp_limb_t mpn_cnd_sub_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+#define mpn_sec_add_1 __MPN(sec_add_1)
+__GMP_DECLSPEC mp_limb_t mpn_sec_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+#define mpn_sec_add_1_itch __MPN(sec_add_1_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_add_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_sub_1 __MPN(sec_sub_1)
+__GMP_DECLSPEC mp_limb_t mpn_sec_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+#define mpn_sec_sub_1_itch __MPN(sec_sub_1_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_sub_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_cnd_swap __MPN(cnd_swap)
+__GMP_DECLSPEC void mpn_cnd_swap (mp_limb_t, volatile mp_limb_t *, volatile mp_limb_t *, mp_size_t);
+
+#define mpn_sec_mul __MPN(sec_mul)
+__GMP_DECLSPEC void mpn_sec_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_mul_itch __MPN(sec_mul_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_mul_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_sqr __MPN(sec_sqr)
+__GMP_DECLSPEC void mpn_sec_sqr (mp_ptr, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_sqr_itch __MPN(sec_sqr_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_sqr_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_powm __MPN(sec_powm)
+__GMP_DECLSPEC void mpn_sec_powm (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_bitcnt_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_powm_itch __MPN(sec_powm_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_powm_itch (mp_size_t, mp_bitcnt_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_tabselect __MPN(sec_tabselect)
+__GMP_DECLSPEC void mpn_sec_tabselect (volatile mp_limb_t *, volatile const mp_limb_t *, mp_size_t, mp_size_t, mp_size_t);
+
+#define mpn_sec_div_qr __MPN(sec_div_qr)
+__GMP_DECLSPEC mp_limb_t mpn_sec_div_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_div_qr_itch __MPN(sec_div_qr_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_div_qr_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+#define mpn_sec_div_r __MPN(sec_div_r)
+__GMP_DECLSPEC void mpn_sec_div_r (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);
+#define mpn_sec_div_r_itch __MPN(sec_div_r_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_div_r_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+#define mpn_sec_invert __MPN(sec_invert)
+__GMP_DECLSPEC int mpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitcnt_t, mp_ptr);
+#define mpn_sec_invert_itch __MPN(sec_invert_itch)
+__GMP_DECLSPEC mp_size_t mpn_sec_invert_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
+
+
+/**************** mpz inlines ****************/
+
+/* The following are provided as inlines where possible, but always exist as
+ library functions too, for binary compatibility.
+
+ Within gmp itself this inlining generally isn't relied on, since it
+ doesn't get done for all compilers, whereas if something is worth
+ inlining then it's worth arranging always.
+
+ There are two styles of inlining here. When the same bit of code is
+ wanted for the inline as for the library version, then __GMP_FORCE_foo
+ arranges for that code to be emitted and the __GMP_EXTERN_INLINE
+ directive suppressed, eg. mpz_fits_uint_p. When a different bit of code
+ is wanted for the inline than for the library version, then
+ __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs. */
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs)
+__GMP_EXTERN_INLINE void
+mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpz_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size);
+}
+#endif
+
+#if GMP_NAIL_BITS == 0
+#define __GMPZ_FITS_UTYPE_P(z,maxval) \
+ mp_size_t __gmp_n = z->_mp_size; \
+ mp_ptr __gmp_p = z->_mp_d; \
+ return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval));
+#else
+#define __GMPZ_FITS_UTYPE_P(z,maxval) \
+ mp_size_t __gmp_n = z->_mp_size; \
+ mp_ptr __gmp_p = z->_mp_d; \
+ return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval) \
+ || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS)));
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p)
+#if ! defined (__GMP_FORCE_mpz_fits_uint_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ __GMPZ_FITS_UTYPE_P (__gmp_z, UINT_MAX);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p)
+#if ! defined (__GMP_FORCE_mpz_fits_ulong_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ __GMPZ_FITS_UTYPE_P (__gmp_z, ULONG_MAX);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p)
+#if ! defined (__GMP_FORCE_mpz_fits_ushort_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ __GMPZ_FITS_UTYPE_P (__gmp_z, USHRT_MAX);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui)
+#if ! defined (__GMP_FORCE_mpz_get_ui)
+__GMP_EXTERN_INLINE
+#endif
+unsigned long
+mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ mp_ptr __gmp_p = __gmp_z->_mp_d;
+ mp_size_t __gmp_n = __gmp_z->_mp_size;
+ mp_limb_t __gmp_l = __gmp_p[0];
+ /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings
+ about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland
+ C++ 6.0 warnings about condition always true for something like
+ "ULONG_MAX < GMP_NUMB_MASK". */
+#if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB)
+ /* limb==long and no nails, or limb==longlong, one limb is enough */
+ return (__gmp_n != 0 ? __gmp_l : 0);
+#else
+ /* limb==long and nails, need two limbs when available */
+ __gmp_n = __GMP_ABS (__gmp_n);
+ if (__gmp_n <= 1)
+ return (__gmp_n != 0 ? __gmp_l : 0);
+ else
+ return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS);
+#endif
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn)
+#if ! defined (__GMP_FORCE_mpz_getlimbn)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW
+{
+ mp_limb_t __gmp_result = 0;
+ if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size)))
+ __gmp_result = __gmp_z->_mp_d[__gmp_n];
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg)
+__GMP_EXTERN_INLINE void
+mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpz_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_size = - __gmp_w->_mp_size;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p)
+#if ! defined (__GMP_FORCE_mpz_perfect_square_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpz_perfect_square_p (mpz_srcptr __gmp_a)
+{
+ mp_size_t __gmp_asize;
+ int __gmp_result;
+
+ __gmp_asize = __gmp_a->_mp_size;
+ __gmp_result = (__gmp_asize >= 0); /* zero is a square, negatives are not */
+ if (__GMP_LIKELY (__gmp_asize > 0))
+ __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount)
+#if ! defined (__GMP_FORCE_mpz_popcount)
+__GMP_EXTERN_INLINE
+#endif
+mp_bitcnt_t
+mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW
+{
+ mp_size_t __gmp_usize;
+ mp_bitcnt_t __gmp_result;
+
+ __gmp_usize = __gmp_u->_mp_size;
+ __gmp_result = (__gmp_usize < 0 ? ~ __GMP_CAST (mp_bitcnt_t, 0) : __GMP_CAST (mp_bitcnt_t, 0));
+ if (__GMP_LIKELY (__gmp_usize > 0))
+ __gmp_result = mpn_popcount (__gmp_u->_mp_d, __gmp_usize);
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q)
+#if ! defined (__GMP_FORCE_mpz_set_q)
+__GMP_EXTERN_INLINE
+#endif
+void
+mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u));
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size)
+#if ! defined (__GMP_FORCE_mpz_size)
+__GMP_EXTERN_INLINE
+#endif
+size_t
+mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW
+{
+ return __GMP_ABS (__gmp_z->_mp_size);
+}
+#endif
+
+
+/**************** mpq inlines ****************/
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs)
+__GMP_EXTERN_INLINE void
+mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpq_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size);
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg)
+__GMP_EXTERN_INLINE void
+mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ mpq_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
+}
+#endif
+
+
+/**************** mpn inlines ****************/
+
+/* The comments with __GMPN_ADD_1 below apply here too.
+
+ The test for FUNCTION returning 0 should predict well. If it's assumed
+ {yp,ysize} will usually have a random number of bits then the high limb
+ won't be full and a carry out will occur a good deal less than 50% of the
+ time.
+
+ ysize==0 isn't a documented feature, but is used internally in a few
+ places.
+
+ Producing cout last stops it using up a register during the main part of
+ the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))"
+ doesn't seem able to move the true and false legs of the conditional up
+ to the two places cout is generated. */
+
+#define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x; \
+ \
+ /* ASSERT ((ysize) >= 0); */ \
+ /* ASSERT ((xsize) >= (ysize)); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */ \
+ \
+ __gmp_i = (ysize); \
+ if (__gmp_i != 0) \
+ { \
+ if (FUNCTION (wp, xp, yp, __gmp_i)) \
+ { \
+ do \
+ { \
+ if (__gmp_i >= (xsize)) \
+ { \
+ (cout) = 1; \
+ goto __gmp_done; \
+ } \
+ __gmp_x = (xp)[__gmp_i]; \
+ } \
+ while (TEST); \
+ } \
+ } \
+ if ((wp) != (xp)) \
+ __GMPN_COPY_REST (wp, xp, xsize, __gmp_i); \
+ (cout) = 0; \
+ __gmp_done: \
+ ; \
+ } while (0)
+
+#define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize) \
+ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n, \
+ (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0))
+#define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize) \
+ __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n, \
+ (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0))
+
+
+/* The use of __gmp_i indexing is designed to ensure a compile time src==dst
+ remains nice and clear to the compiler, so that __GMPN_COPY_REST can
+ disappear, and the load/add/store gets a chance to become a
+ read-modify-write on CISC CPUs.
+
+ Alternatives:
+
+ Using a pair of pointers instead of indexing would be possible, but gcc
+ isn't able to recognise compile-time src==dst in that case, even when the
+ pointers are incremented more or less together. Other compilers would
+ very likely have similar difficulty.
+
+ gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or
+ similar to detect a compile-time src==dst. This works nicely on gcc
+ 2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems
+ to be always false, for a pointer p. But the current code form seems
+ good enough for src==dst anyway.
+
+ gcc on x86 as usual doesn't give particularly good flags handling for the
+ carry/borrow detection. It's tempting to want some multi instruction asm
+ blocks to help it, and this was tried, but in truth there's only a few
+ instructions to save and any gain is all too easily lost by register
+ juggling setting up for the asm. */
+
+#if GMP_NAIL_BITS == 0
+#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x, __gmp_r; \
+ \
+ /* ASSERT ((n) >= 1); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \
+ \
+ __gmp_x = (src)[0]; \
+ __gmp_r = __gmp_x OP (v); \
+ (dst)[0] = __gmp_r; \
+ if (CB (__gmp_r, __gmp_x, (v))) \
+ { \
+ (cout) = 1; \
+ for (__gmp_i = 1; __gmp_i < (n);) \
+ { \
+ __gmp_x = (src)[__gmp_i]; \
+ __gmp_r = __gmp_x OP 1; \
+ (dst)[__gmp_i] = __gmp_r; \
+ ++__gmp_i; \
+ if (!CB (__gmp_r, __gmp_x, 1)) \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, __gmp_i); \
+ (cout) = 0; \
+ break; \
+ } \
+ } \
+ } \
+ else \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, 1); \
+ (cout) = 0; \
+ } \
+ } while (0)
+#endif
+
+#if GMP_NAIL_BITS >= 1
+#define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x, __gmp_r; \
+ \
+ /* ASSERT ((n) >= 1); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */ \
+ \
+ __gmp_x = (src)[0]; \
+ __gmp_r = __gmp_x OP (v); \
+ (dst)[0] = __gmp_r & GMP_NUMB_MASK; \
+ if (__gmp_r >> GMP_NUMB_BITS != 0) \
+ { \
+ (cout) = 1; \
+ for (__gmp_i = 1; __gmp_i < (n);) \
+ { \
+ __gmp_x = (src)[__gmp_i]; \
+ __gmp_r = __gmp_x OP 1; \
+ (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK; \
+ ++__gmp_i; \
+ if (__gmp_r >> GMP_NUMB_BITS == 0) \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, __gmp_i); \
+ (cout) = 0; \
+ break; \
+ } \
+ } \
+ } \
+ else \
+ { \
+ if ((src) != (dst)) \
+ __GMPN_COPY_REST (dst, src, n, 1); \
+ (cout) = 0; \
+ } \
+ } while (0)
+#endif
+
+#define __GMPN_ADDCB(r,x,y) ((r) < (y))
+#define __GMPN_SUBCB(r,x,y) ((x) < (y))
+
+#define __GMPN_ADD_1(cout, dst, src, n, v) \
+ __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB)
+#define __GMPN_SUB_1(cout, dst, src, n, v) \
+ __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB)
+
+
+/* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or
+ negative. size==0 is allowed. On random data usually only one limb will
+ need to be examined to get a result, so it's worth having it inline. */
+#define __GMPN_CMP(result, xp, yp, size) \
+ do { \
+ mp_size_t __gmp_i; \
+ mp_limb_t __gmp_x, __gmp_y; \
+ \
+ /* ASSERT ((size) >= 0); */ \
+ \
+ (result) = 0; \
+ __gmp_i = (size); \
+ while (--__gmp_i >= 0) \
+ { \
+ __gmp_x = (xp)[__gmp_i]; \
+ __gmp_y = (yp)[__gmp_i]; \
+ if (__gmp_x != __gmp_y) \
+ { \
+ /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */ \
+ (result) = (__gmp_x > __gmp_y ? 1 : -1); \
+ break; \
+ } \
+ } \
+ } while (0)
+
+
+#if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST)
+#define __GMPN_COPY_REST(dst, src, size, start) \
+ do { \
+ /* ASSERT ((start) >= 0); */ \
+ /* ASSERT ((start) <= (size)); */ \
+ __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \
+ } while (0)
+#endif
+
+/* Copy {src,size} to {dst,size}, starting at "start". This is designed to
+ keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1,
+ __GMPN_ADD, etc. */
+#if ! defined (__GMPN_COPY_REST)
+#define __GMPN_COPY_REST(dst, src, size, start) \
+ do { \
+ mp_size_t __gmp_j; \
+ /* ASSERT ((size) >= 0); */ \
+ /* ASSERT ((start) >= 0); */ \
+ /* ASSERT ((start) <= (size)); */ \
+ /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */ \
+ __GMP_CRAY_Pragma ("_CRI ivdep"); \
+ for (__gmp_j = (start); __gmp_j < (size); __gmp_j++) \
+ (dst)[__gmp_j] = (src)[__gmp_j]; \
+ } while (0)
+#endif
+
+/* Enhancement: Use some of the smarter code from gmp-impl.h. Maybe use
+ mpn_copyi if there's a native version, and if we don't mind demanding
+ binary compatibility for it (on targets which use it). */
+
+#if ! defined (__GMPN_COPY)
+#define __GMPN_COPY(dst, src, size) __GMPN_COPY_REST (dst, src, size, 0)
+#endif
+
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add)
+#if ! defined (__GMP_FORCE_mpn_add)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
+{
+ mp_limb_t __gmp_c;
+ __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1)
+#if ! defined (__GMP_FORCE_mpn_add_1)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
+{
+ mp_limb_t __gmp_c;
+ __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp)
+#if ! defined (__GMP_FORCE_mpn_cmp)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW
+{
+ int __gmp_result;
+ __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size);
+ return __gmp_result;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_zero_p)
+#if ! defined (__GMP_FORCE_mpn_zero_p)
+__GMP_EXTERN_INLINE
+#endif
+int
+mpn_zero_p (mp_srcptr __gmp_p, mp_size_t __gmp_n) __GMP_NOTHROW
+{
+ /* if (__GMP_LIKELY (__gmp_n > 0)) */
+ do {
+ if (__gmp_p[--__gmp_n] != 0)
+ return 0;
+ } while (__gmp_n != 0);
+ return 1;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub)
+#if ! defined (__GMP_FORCE_mpn_sub)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
+{
+ mp_limb_t __gmp_c;
+ __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1)
+#if ! defined (__GMP_FORCE_mpn_sub_1)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW
+{
+ mp_limb_t __gmp_c;
+ __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);
+ return __gmp_c;
+}
+#endif
+
+#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg)
+#if ! defined (__GMP_FORCE_mpn_neg)
+__GMP_EXTERN_INLINE
+#endif
+mp_limb_t
+mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
+{
+ while (*__gmp_up == 0) /* Low zero limbs are unchanged by negation. */
+ {
+ *__gmp_rp = 0;
+ if (!--__gmp_n) /* All zero */
+ return 0;
+ ++__gmp_up; ++__gmp_rp;
+ }
+
+ *__gmp_rp = (- *__gmp_up) & GMP_NUMB_MASK;
+
+ if (--__gmp_n) /* Higher limbs get complemented. */
+ mpn_com (++__gmp_rp, ++__gmp_up, __gmp_n);
+
+ return 1;
+}
+#endif
+
+#if defined (__cplusplus)
+}
+#endif
+
+
+/* Allow faster testing for negative, zero, and positive. */
+#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)
+#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)
+#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)
+
+/* When using GCC, optimize certain common comparisons. */
+#if defined (__GNUC__) && __GNUC__ >= 2
+#define mpz_cmp_ui(Z,UI) \
+ (__builtin_constant_p (UI) && (UI) == 0 \
+ ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI))
+#define mpz_cmp_si(Z,SI) \
+ (__builtin_constant_p ((SI) >= 0) && (SI) >= 0 \
+ ? mpz_cmp_ui (Z, __GMP_CAST (unsigned long, SI)) \
+ : _mpz_cmp_si (Z,SI))
+#define mpq_cmp_ui(Q,NUI,DUI) \
+ (__builtin_constant_p (NUI) && (NUI) == 0 ? mpq_sgn (Q) \
+ : __builtin_constant_p ((NUI) == (DUI)) && (NUI) == (DUI) \
+ ? mpz_cmp (mpq_numref (Q), mpq_denref (Q)) \
+ : _mpq_cmp_ui (Q,NUI,DUI))
+#define mpq_cmp_si(q,n,d) \
+ (__builtin_constant_p ((n) >= 0) && (n) >= 0 \
+ ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \
+ : _mpq_cmp_si (q, n, d))
+#else
+#define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI)
+#define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI)
+#define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI)
+#define mpq_cmp_si(q,n,d) _mpq_cmp_si(q,n,d)
+#endif
+
+
+/* Using "&" rather than "&&" means these can come out branch-free. Every
+ mpz_t has at least one limb allocated, so fetching the low limb is always
+ allowed. */
+#define mpz_odd_p(z) (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0]))
+#define mpz_even_p(z) (! mpz_odd_p (z))
+
+
+/**************** C++ routines ****************/
+
+#ifdef __cplusplus
+__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);
+__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);
+__GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);
+__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr);
+__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr);
+__GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr);
+#endif
+
+
+/* Source-level compatibility with GMP 2 and earlier. */
+#define mpn_divmod(qp,np,nsize,dp,dsize) \
+ mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize)
+
+/* Source-level compatibility with GMP 1. */
+#define mpz_mdiv mpz_fdiv_q
+#define mpz_mdivmod mpz_fdiv_qr
+#define mpz_mmod mpz_fdiv_r
+#define mpz_mdiv_ui mpz_fdiv_q_ui
+#define mpz_mdivmod_ui(q,r,n,d) \
+ (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))
+#define mpz_mmod_ui(r,n,d) \
+ (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))
+
+/* Useful synonyms, but not quite compatible with GMP 1. */
+#define mpz_div mpz_fdiv_q
+#define mpz_divmod mpz_fdiv_qr
+#define mpz_div_ui mpz_fdiv_q_ui
+#define mpz_divmod_ui mpz_fdiv_qr_ui
+#define mpz_div_2exp mpz_fdiv_q_2exp
+#define mpz_mod_2exp mpz_fdiv_r_2exp
+
+enum
+{
+ GMP_ERROR_NONE = 0,
+ GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
+ GMP_ERROR_DIVISION_BY_ZERO = 2,
+ GMP_ERROR_SQRT_OF_NEGATIVE = 4,
+ GMP_ERROR_INVALID_ARGUMENT = 8
+};
+
+/* Define CC and CFLAGS which were used to build this version of GMP */
+#define __GMP_CC "clang"
+#define __GMP_CFLAGS "-O2 -pedantic -fomit-frame-pointer -m64 -mtune=znver2 -march=znver1"
+
+/* Major version number is the value of __GNU_MP__ too, above. */
+#define __GNU_MP_VERSION 6
+#define __GNU_MP_VERSION_MINOR 2
+#define __GNU_MP_VERSION_PATCHLEVEL 0
+#define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL)
+
+#define __GMP_H__
+#endif /* __GMP_H__ */
diff --git a/modules/gmp/6.2.0.bcr.1/overlay/mpn.bzl b/modules/gmp/6.2.0.bcr.1/overlay/mpn.bzl
new file mode 100644
index 00000000000..d94a884a366
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/overlay/mpn.bzl
@@ -0,0 +1,207 @@
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("@rules_m4//m4:m4.bzl", "M4_TOOLCHAIN_TYPE", "m4_toolchain")
+
+alternatives = {
+ "add_err1_n": ["aors_err1_n"],
+ "add_err2_n": ["aors_err2_n"],
+ "add_err3_n": ["aors_err3_n"],
+ "add_n": ["aors_n"],
+ "addlsh1_n": ["aorslsh1_n", "aorrlsh1_n", "aorsorrlsh1_n"],
+ "addlsh2_n": ["aorslsh2_n", "aorrlsh2_n", "aorsorrlsh2_n"],
+ "addlsh_n": ["aorslsh_n", "aorrlsh_n", "aorsorrlsh_n"],
+ "addmul_1": ["aorsmul_1"],
+ "addmul_2": ["aormul_2"],
+ "addmul_3": ["aormul_3"],
+ "addmul_4": ["aormul_4"],
+ "and_n": ["logops_n"],
+ "andn_n": ["logops_n"],
+ "cnd_add_n": ["cnd_aors_n"],
+ "cnd_sub_n": ["cnd_aors_n"],
+ "hamdist": ["popham"],
+ "ior_n": ["logops_n"],
+ "iorn_n": ["logops_n"],
+ "lshift": ["lorrshift"],
+ "mul_2": ["aormul_2"],
+ "mul_3": ["aormul_3"],
+ "mul_4": ["aormul_4"],
+ "nand_n": ["logops_n"],
+ "nior_n": ["logops_n"],
+ "popcount": ["popham"],
+ "rsblsh1_n": ["aorrlsh1_n", "sorrlsh1_n", "aorsorrlsh1_n"],
+ "rsblsh2_n": ["aorrlsh2_n", "sorrlsh2_n", "aorsorrlsh2_n"],
+ "rsblsh_n": ["aorrlsh_n", "sorrlsh_n", "aorsorrlsh_n"],
+ "rsh1add_n": ["rsh1aors_n"],
+ "rsh1sub_n": ["rsh1aors_n"],
+ "rshift": ["lorrshift"],
+ "sec_add_1": ["sec_aors_1"],
+ "sec_div_qr": ["sec_div"],
+ "sec_div_r": ["sec_div"],
+ "sec_pi1_div_qr": ["sec_pi1_div"],
+ "sec_pi1_div_r": ["sec_pi1_div"],
+ "sec_sub_1": ["sec_aors_1"],
+ "sub_err1_n": ["aors_err1_n"],
+ "sub_err2_n": ["aors_err2_n"],
+ "sub_err3_n": ["aors_err3_n"],
+ "sub_n": ["aors_n"],
+ "sublsh1_n": ["aorslsh1_n", "sorrlsh1_n", "aorsorrlsh1_n"],
+ "sublsh2_n": ["aorslsh2_n", "sorrlsh2_n", "aorsorrlsh2_n"],
+ "sublsh_n": ["aorslsh_n", "sorrlsh_n", "aorsorrlsh_n"],
+ "submul_1": ["aorsmul_1"],
+ "xnor_n": ["logops_n"],
+ "xor_n": ["logops_n"],
+}
+
+def current_directory():
+ repo_name = native.repository_name()
+ if repo_name.startswith("@@"):
+ repo_name = repo_name[2:]
+ elif repo_name.startswith("@"):
+ repo_name = repo_name[1:]
+
+ if repo_name == "":
+ return native.package_name()
+ else:
+ return "external/" + repo_name + "/" + native.package_name()
+
+def mpn_cc_library(
+ name,
+ srcs,
+ hdrs = [],
+ copts = [],
+ deps = [],
+ target_compatible_with = None):
+ cc_library(
+ name = name,
+ srcs = srcs,
+ hdrs = hdrs,
+ copts = copts + [
+ "-DHAVE_CONFIG_H",
+ "-I" + current_directory() + "/mpn",
+ "-I" + current_directory(),
+ "-I$(GENDIR)/" + current_directory(),
+ "-D__GMP_WITHIN_GMP",
+ "-DOPERATION_" + name,
+ ],
+ deps = deps,
+ target_compatible_with = target_compatible_with,
+ )
+
+def _m4_mpn_function_impl(ctx):
+ m4 = m4_toolchain(ctx)
+ if len(ctx.files.files) == 0:
+ out = ctx.actions.declare_file("mpn/" + ctx.attr.operation + ".c")
+ ctx.actions.write(out, "")
+ return DefaultInfo(files = depset([out]))
+
+ if ctx.files.files[0].extension == "c":
+ out = ctx.actions.declare_file("mpn/" + ctx.attr.operation + ".c")
+ ctx.actions.run_shell(
+ inputs = [ctx.files.files[0]],
+ outputs = [out],
+ progress_message = "Generating " + out.short_path,
+ command = "(echo '#define OPERATION_" + ctx.attr.operation + " 1'; cat " + ctx.files.files[0].path + ") > " + out.path,
+ )
+ return DefaultInfo(files = depset([out]))
+
+ out = ctx.actions.declare_file("mpn/" + ctx.attr.operation + ".s")
+
+ ruledir = ctx.label.workspace_root + "/" + ctx.label.package
+ ctx.actions.run_shell(
+ inputs = [ctx.files.files[0]] + ctx.files.deps,
+ outputs = [out],
+ progress_message = "Generating " + out.short_path,
+ tools = [m4.m4_tool],
+ env = m4.m4_env,
+ command = " && ".join([
+ "ROOT=$(pwd)",
+ "cd ./" + ruledir + "/mpn",
+ "echo '#define OPERATION_" + ctx.attr.operation + " 1' > ${ROOT}/" + out.path,
+ "${ROOT}/" + m4.m4_tool.executable.path + " -I ${ROOT}/" + ctx.var["GENDIR"] + "/" + ruledir + "/mpn" +
+ " -DHAVE_CONFIG_H -D__GMP_WITHIN_GMP -DOPERATION_" + ctx.attr.operation +
+ " -DPIC ${ROOT}/" + ctx.files.files[0].path + " >> ${ROOT}/" + out.path,
+ ]),
+ )
+
+ return DefaultInfo(files = depset([out]))
+
+_m4_mpn_function = rule(
+ attrs = {
+ "deps": attr.label_list(
+ mandatory = True,
+ allow_files = True,
+ ),
+ "files": attr.label_list(
+ allow_files = True,
+ ),
+ "operation": attr.string(
+ mandatory = True,
+ ),
+ },
+ implementation = _m4_mpn_function_impl,
+ toolchains = [M4_TOOLCHAIN_TYPE],
+)
+
+def mparam_path(architecture_paths):
+ result = dict()
+ for key in architecture_paths:
+ value = architecture_paths[key]
+ globs = []
+ for p in value:
+ globs += native.glob([
+ "mpn/" + p + "/gmp-mparam.h",
+ ], allow_empty = True)
+ result[key] = [globs[0]] if globs else []
+
+ return select(result)
+
+def architecture_includes(architecture_paths):
+ result = dict()
+ for key in architecture_paths:
+ result[key] = ["-I" + current_directory() + "/mpn/" + p for p in architecture_paths[key]]
+ return select(result)
+
+def file_from_architecture(architecture_paths, f):
+ result = dict()
+ for key in architecture_paths:
+ result[key] = ["config/" + architecture_paths[key][0] + "/" + f]
+ return select(result)
+
+def config_include_from_architecture(architecture_paths):
+ result = dict()
+ for key in architecture_paths:
+ result[key] = ["-I" + current_directory() + "/config/" + architecture_paths[key][0] + "/"]
+ return select(result)
+
+def _file_globs(path, use_asm):
+ if use_asm:
+ return native.glob([
+ path + ".asm",
+ path + ".c",
+ ], allow_empty = True)
+ else:
+ return native.glob([
+ path + ".c",
+ ], allow_empty = True)
+
+def mpn_m4_cc_library(name, architecture_paths, target_compatible_with = None):
+ # Search architecture_paths in order from 0 to N.
+ # From there, search starting with the main name, then start looking at the alternatives.
+ # And then look for .c or .asm
+ architecture_globs = dict()
+ for key in architecture_paths:
+ value = architecture_paths[key]
+ globs = []
+ for p in value:
+ globs += _file_globs("mpn/" + p + "/" + name, "msan" not in key)
+ if name in alternatives:
+ for alternative in alternatives[name]:
+ globs += _file_globs("mpn/" + p + "/" + alternative, "msan" not in key)
+ architecture_globs[key] = globs
+
+ _m4_mpn_function(
+ name = name,
+ operation = name,
+ files = select(architecture_globs),
+ deps = native.glob(["**/*.m4", "**/*.asm"]) + ["config.m4"],
+ target_compatible_with = target_compatible_with,
+ )
diff --git a/modules/gmp/6.2.0.bcr.1/presubmit.yml b/modules/gmp/6.2.0.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..b86d1608b66
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/presubmit.yml
@@ -0,0 +1,10 @@
+matrix:
+ platform:
+ - ubuntu2204
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: 8.x
+ build_targets:
+ - //...
diff --git a/modules/gmp/6.2.0.bcr.1/source.json b/modules/gmp/6.2.0.bcr.1/source.json
new file mode 100644
index 00000000000..544525044ce
--- /dev/null
+++ b/modules/gmp/6.2.0.bcr.1/source.json
@@ -0,0 +1,19 @@
+{
+ "type": "archive",
+ "url": "https://gmplib.org/download/gmp/gmp-6.2.0.tar.xz",
+ "integrity": "sha256-JY5s1Rs/vfwYXHFtVfgsCK/1ffDG+9FDz27VYSZ6FSY=",
+ "strip_prefix": "gmp-6.2.0",
+ "overlay": {
+ "BUILD.bazel": "sha256-xdsBrJrN/pbIxyFyQLz9PSv3qdD+JJXn8kI1UMZDLAc=",
+ "config/arm/v7a/cora9/config.h": "sha256-vNk5d9K0AVpjteopXZOZwtsnxAi3WTig4UgHwdZQb9E=",
+ "config/arm/v7a/cora9/config.m4": "sha256-lO7RNd5mnnum79PpVVRTmgt1XzXSil2xD4WNJMJ8fZc=",
+ "config/arm/v7a/cora9/gmp.h": "sha256-XV4+8YNNSHOE2MmxyVXUR0S2IHhcR3D8romBWkU3mXo=",
+ "config/arm64/config.h": "sha256-ZLwoWf9F6OdjYrA9fc2DU3WmzxxK5dAa545SrATY4Vw=",
+ "config/arm64/config.m4": "sha256-+x6aJjDyyfyGRd2ppcbm0JfJLVIPYdupR7Ykoinx5MA=",
+ "config/arm64/gmp.h": "sha256-+JKCkj5d/81K6BZrPL3EMEyhhpOZlxbvWtnUP7G8oj8=",
+ "config/x86_64/config.h": "sha256-okelTx7L8RervE6ZUUxHvm31RvZa3sixmtfUY/oqKNE=",
+ "config/x86_64/config.m4": "sha256-RS+IS04rKhtKvaY0A1GsGj81hhJy1xtisD4XPLGUze8=",
+ "config/x86_64/gmp.h": "sha256-BSoIvDtvvktMh9Vzh+NEPNNtiWRJ5lXYvPFIOsPBC18=",
+ "mpn.bzl": "sha256-T7T6QTZPeAMwMd8SWhIo9QvjBkmhlADXAAmvvfmskoI="
+ }
+}
diff --git a/modules/gmp/metadata.json b/modules/gmp/metadata.json
index 03eead36cc0..6833886a719 100644
--- a/modules/gmp/metadata.json
+++ b/modules/gmp/metadata.json
@@ -12,7 +12,8 @@
"https://gmplib.org/"
],
"versions": [
- "6.2.0"
+ "6.2.0",
+ "6.2.0.bcr.1"
],
"yanked_versions": {}
}
From e9dec7b71012a07551539e52812f9556ca21ef59 Mon Sep 17 00:00:00 2001
From: dominic <510002+dmah42@users.noreply.github.com>
Date: Thu, 22 Jan 2026 08:48:39 +0000
Subject: [PATCH 078/367] add google_benchmark release 1.9.5 (#7238)
---
modules/google_benchmark/1.9.5/MODULE.bazel | 41 ++++++++++++++++++++
modules/google_benchmark/1.9.5/presubmit.yml | 18 +++++++++
modules/google_benchmark/1.9.5/source.json | 5 +++
modules/google_benchmark/metadata.json | 3 +-
4 files changed, 66 insertions(+), 1 deletion(-)
create mode 100644 modules/google_benchmark/1.9.5/MODULE.bazel
create mode 100644 modules/google_benchmark/1.9.5/presubmit.yml
create mode 100644 modules/google_benchmark/1.9.5/source.json
diff --git a/modules/google_benchmark/1.9.5/MODULE.bazel b/modules/google_benchmark/1.9.5/MODULE.bazel
new file mode 100644
index 00000000000..c162d05313b
--- /dev/null
+++ b/modules/google_benchmark/1.9.5/MODULE.bazel
@@ -0,0 +1,41 @@
+module(
+ name = "google_benchmark",
+ version = "1.9.5",
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.7.1")
+bazel_dep(name = "platforms", version = "0.0.10")
+bazel_dep(name = "rules_cc", version = "0.0.9")
+
+bazel_dep(name = "rules_python", version = "1.0.0", dev_dependency = True)
+bazel_dep(name = "googletest", version = "1.14.0", dev_dependency = True, repo_name = "com_google_googletest")
+
+bazel_dep(name = "libpfm", version = "4.11.0.bcr.1")
+
+# Register a toolchain for Python 3.9 to be able to build numpy. Python
+# versions >=3.10 are problematic.
+# A second reason for this is to be able to build Python hermetically instead
+# of relying on the changing default version from rules_python.
+
+python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True)
+python.toolchain(python_version = "3.8")
+python.toolchain(python_version = "3.9")
+python.toolchain(python_version = "3.10")
+python.toolchain(python_version = "3.11")
+python.toolchain(
+ is_default = True,
+ python_version = "3.12",
+)
+python.toolchain(python_version = "3.13")
+
+pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = True)
+pip.parse(
+ hub_name = "tools_pip_deps",
+ python_version = "3.9",
+ requirements_lock = "//tools:requirements.txt",
+)
+use_repo(pip, "tools_pip_deps")
+
+# -- bazel_dep definitions -- #
+
+bazel_dep(name = "nanobind_bazel", version = "2.9.2", dev_dependency = True)
diff --git a/modules/google_benchmark/1.9.5/presubmit.yml b/modules/google_benchmark/1.9.5/presubmit.yml
new file mode 100644
index 00000000000..9b1e8b7827a
--- /dev/null
+++ b/modules/google_benchmark/1.9.5/presubmit.yml
@@ -0,0 +1,18 @@
+matrix:
+ bazel: [7.x, 8.x, rolling]
+ platform:
+ - debian10
+ - debian11
+ - macos
+ - macos_arm64
+ - ubuntu2004
+ - ubuntu2204
+ - ubuntu2404
+ - windows
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@google_benchmark//:all'
diff --git a/modules/google_benchmark/1.9.5/source.json b/modules/google_benchmark/1.9.5/source.json
new file mode 100644
index 00000000000..95f6101fdc0
--- /dev/null
+++ b/modules/google_benchmark/1.9.5/source.json
@@ -0,0 +1,5 @@
+{
+ "url": "https://github.com/google/benchmark/archive/refs/tags/v1.9.5.tar.gz",
+ "integrity": "sha256-ljE0HIK6xKKIvvlR+LJrQfaQIXlBhOzpafhHOXfqo0A=",
+ "strip_prefix": "benchmark-1.9.5"
+}
diff --git a/modules/google_benchmark/metadata.json b/modules/google_benchmark/metadata.json
index b54ec266da7..0df2cc1749c 100644
--- a/modules/google_benchmark/metadata.json
+++ b/modules/google_benchmark/metadata.json
@@ -20,7 +20,8 @@
"1.9.1",
"1.9.2",
"1.9.3",
- "1.9.4"
+ "1.9.4",
+ "1.9.5"
],
"yanked_versions": {}
}
From b6a4937fee288123a3f1b4e540f1b4608babd89d Mon Sep 17 00:00:00 2001
From: Martin Altenburg <2737351+martin4861@users.noreply.github.com>
Date: Thu, 22 Jan 2026 14:01:10 +0100
Subject: [PATCH 079/367] Add tclap@1.2.5.bcr.1 (#7265)
Provide Bazel 9 compatibility
---
modules/tclap/1.2.5.bcr.1/MODULE.bazel | 8 ++++++++
modules/tclap/1.2.5.bcr.1/overlay/BUILD.bazel | 8 ++++++++
modules/tclap/1.2.5.bcr.1/presubmit.yml | 18 ++++++++++++++++++
modules/tclap/1.2.5.bcr.1/source.json | 9 +++++++++
modules/tclap/metadata.json | 5 +++--
5 files changed, 46 insertions(+), 2 deletions(-)
create mode 100644 modules/tclap/1.2.5.bcr.1/MODULE.bazel
create mode 100644 modules/tclap/1.2.5.bcr.1/overlay/BUILD.bazel
create mode 100644 modules/tclap/1.2.5.bcr.1/presubmit.yml
create mode 100644 modules/tclap/1.2.5.bcr.1/source.json
diff --git a/modules/tclap/1.2.5.bcr.1/MODULE.bazel b/modules/tclap/1.2.5.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..961d1894c93
--- /dev/null
+++ b/modules/tclap/1.2.5.bcr.1/MODULE.bazel
@@ -0,0 +1,8 @@
+module(
+ name = "tclap",
+ version = "1.2.5.bcr.1",
+ compatibility_level = 1,
+ bazel_compatibility = [">=7.2.1"],
+)
+
+bazel_dep(name = "rules_cc", version = "0.2.0")
diff --git a/modules/tclap/1.2.5.bcr.1/overlay/BUILD.bazel b/modules/tclap/1.2.5.bcr.1/overlay/BUILD.bazel
new file mode 100644
index 00000000000..3247cbbec8a
--- /dev/null
+++ b/modules/tclap/1.2.5.bcr.1/overlay/BUILD.bazel
@@ -0,0 +1,8 @@
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+
+cc_library(
+ name = "tclap",
+ hdrs = glob(["include/tclap/*.h"]),
+ includes = ["include"],
+ visibility = ["//visibility:public"],
+)
diff --git a/modules/tclap/1.2.5.bcr.1/presubmit.yml b/modules/tclap/1.2.5.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..351ddd33180
--- /dev/null
+++ b/modules/tclap/1.2.5.bcr.1/presubmit.yml
@@ -0,0 +1,18 @@
+matrix:
+ platform:
+ - debian10
+ - ubuntu2004
+ - macos
+ - macos_arm64
+ - windows
+ bazel:
+ - 9.x
+ - 8.x
+ - 7.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@tclap//:tclap'
diff --git a/modules/tclap/1.2.5.bcr.1/source.json b/modules/tclap/1.2.5.bcr.1/source.json
new file mode 100644
index 00000000000..a0cf6b55b7f
--- /dev/null
+++ b/modules/tclap/1.2.5.bcr.1/source.json
@@ -0,0 +1,9 @@
+{
+ "url": "https://github.com/mirror/tclap/archive/refs/tags/v1.2.5.tar.gz",
+ "integrity": "sha256-fofRNzQHb6T2JvYUTOmgJxcZiz8FQ0GmiG4hB7BIsjU=",
+ "strip_prefix": "tclap-1.2.5",
+ "patch_strip": 0,
+ "overlay": {
+ "BUILD.bazel": "sha256-gezEtNBEU/RTCFBYpz4sQcMw+KtmOjg+eiKEQ7mgQKc="
+ }
+}
diff --git a/modules/tclap/metadata.json b/modules/tclap/metadata.json
index 5c3f64eded9..e6bb1c5a097 100644
--- a/modules/tclap/metadata.json
+++ b/modules/tclap/metadata.json
@@ -10,7 +10,8 @@
"github:mirror/tclap"
],
"versions": [
- "1.2.5"
+ "1.2.5",
+ "1.2.5.bcr.1"
],
"yanked_versions": {}
-}
\ No newline at end of file
+}
From 35073de507df53a69c5244c5abd467d4a49bb401 Mon Sep 17 00:00:00 2001
From: Rob Mohr
Date: Thu, 22 Jan 2026 05:05:32 -0800
Subject: [PATCH 080/367] rules_libusb: Add maintainers (#7259)
---
modules/rules_libusb/metadata.json | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/modules/rules_libusb/metadata.json b/modules/rules_libusb/metadata.json
index 7877fb4158b..9688f0c1395 100644
--- a/modules/rules_libusb/metadata.json
+++ b/modules/rules_libusb/metadata.json
@@ -16,6 +16,16 @@
"name": "Taylor Cramer",
"github_user_id": 5963049
},
+ {
+ "github": "mohrr",
+ "name": "Rob Mohr",
+ "github_user_id": 56699
+ },
+ {
+ "github": "255",
+ "name": "Wyatt Hepler",
+ "github_user_id": 4406396
+ },
{
"email": "pigweed-team@googlegroups.com",
"name": "The Pigweed Team"
From 87dc6d3b5aacc4cff0371590250eb5c84c8bc422 Mon Sep 17 00:00:00 2001
From: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com>
Date: Thu, 22 Jan 2026 22:23:53 +0900
Subject: [PATCH 081/367] fix: add openssl 3.5.4.bcr.1 (#7126)
```
(15:59:47) ERROR: C:/b/tfes37s3/external/openssl+/BUILD.bazel:405:11: Compiling engines/e_capi_err.c failed: undeclared inclusion(s) in rule '@@openssl+//:crypto':
--
this rule is missing dependency declarations for the following files included by 'engines/e_capi_err.c':
'external/openssl+/include/openssl/opensslconf.h'
```
To fix this error with bazel >= 9 on windows
---------
Signed-off-by: wep21
---
modules/openssl/3.5.4.bcr.1/MODULE.bazel | 23 +
.../openssl/3.5.4.bcr.1/overlay/BUILD.bazel | 624 ++++++++++++++++++
.../3.5.4.bcr.1/overlay/configs/BUILD.bazel | 53 ++
.../overlay/test_bazel_build/BUILD.bazel | 42 ++
.../overlay/test_bazel_build/build_test.cc | 1 +
.../overlay/test_bazel_build/sha256_test.cc | 89 +++
modules/openssl/3.5.4.bcr.1/overlay/utils.bzl | 97 +++
modules/openssl/3.5.4.bcr.1/presubmit.yml | 23 +
modules/openssl/3.5.4.bcr.1/source.json | 13 +
modules/openssl/metadata.json | 59 +-
10 files changed, 995 insertions(+), 29 deletions(-)
create mode 100644 modules/openssl/3.5.4.bcr.1/MODULE.bazel
create mode 100644 modules/openssl/3.5.4.bcr.1/overlay/BUILD.bazel
create mode 100644 modules/openssl/3.5.4.bcr.1/overlay/configs/BUILD.bazel
create mode 100644 modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/BUILD.bazel
create mode 100644 modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/build_test.cc
create mode 100644 modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/sha256_test.cc
create mode 100644 modules/openssl/3.5.4.bcr.1/overlay/utils.bzl
create mode 100644 modules/openssl/3.5.4.bcr.1/presubmit.yml
create mode 100644 modules/openssl/3.5.4.bcr.1/source.json
diff --git a/modules/openssl/3.5.4.bcr.1/MODULE.bazel b/modules/openssl/3.5.4.bcr.1/MODULE.bazel
new file mode 100644
index 00000000000..8da6d0df3b8
--- /dev/null
+++ b/modules/openssl/3.5.4.bcr.1/MODULE.bazel
@@ -0,0 +1,23 @@
+module(
+ name = "openssl",
+ version = "3.5.4.bcr.1",
+ # We use overlay, which requires at least 7.2.1
+ bazel_compatibility = [">=7.2.1"],
+ # Note: This should rarely change. For now, we hold it as a constant.
+ # Realistically, we should only change it if the major version of openssl changes.
+ # When that happens, we probably want to change this to a single-digit number representing that version number.
+ compatibility_level = 3030100,
+)
+
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.4")
+bazel_dep(name = "rules_perl", version = "0.5.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+
+http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+http_archive(
+ name = "openssl-generated-overlay",
+ integrity = "sha256-vKSZUhkkLQJhYw9gTiJGS/t0isgFSwrpvcgjQTKDmcc=",
+ url = "https://github.com/raccoons-build/bazel-openssl-cc/releases/download/3.5.4.bcr.0/bazel-openssl-cc-3.5.4.bcr.0.tar.gz",
+)
diff --git a/modules/openssl/3.5.4.bcr.1/overlay/BUILD.bazel b/modules/openssl/3.5.4.bcr.1/overlay/BUILD.bazel
new file mode 100644
index 00000000000..01b0ed233cd
--- /dev/null
+++ b/modules/openssl/3.5.4.bcr.1/overlay/BUILD.bazel
@@ -0,0 +1,624 @@
+# This code is heavily based on the implementation in `dbx_build_tools`:
+# Ref: https://github.com/dropbox/dbx_build_tools/blob/master/thirdparty/openssl/BUILD.openssl.tail
+
+load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
+load("@bazel_skylib//rules:write_file.bzl", "write_file")
+load("@openssl-generated-overlay//:collate_into_directory.bzl", "collate_into_directory")
+load(
+ "@openssl-generated-overlay//:constants-darwin64-arm64-cc.bzl",
+ _DARWIN_ARM64_COMMON_GENERATED_FILES = "COMMON_GENERATED_FILES",
+ _DARWIN_ARM64_GEN_FILES = "GEN_FILES",
+ _DARWIN_ARM64_LIBCRYPTO_DEFINES = "LIBCRYPTO_DEFINES",
+ _DARWIN_ARM64_LIBCRYPTO_HDRS = "LIBCRYPTO_HDRS",
+ _DARWIN_ARM64_LIBCRYPTO_SRCS = "LIBCRYPTO_SRCS",
+ _DARWIN_ARM64_LIBSSL_DEFINES = "LIBSSL_DEFINES",
+ _DARWIN_ARM64_LIBSSL_HDRS = "LIBSSL_HDRS",
+ _DARWIN_ARM64_LIBSSL_SRCS = "LIBSSL_SRCS",
+ _DARWIN_ARM64_OPENSSL_APP_DEFINES = "LIBSSL_DEFINES",
+ _DARWIN_ARM64_OPENSSL_APP_HDRS = "OPENSSL_APP_HDRS",
+ _DARWIN_ARM64_OPENSSL_APP_SRCS = "OPENSSL_APP_SRCS",
+ _DARWIN_ARM64_OPENSSL_DEFINES = "OPENSSL_DEFINES",
+ _NIX_ARM64_PERLASM_GEN = "PERLASM_GEN",
+)
+load(
+ "@openssl-generated-overlay//:constants-darwin64-x86_64-cc.bzl",
+ _DARWIN_X86_64_COMMON_GENERATED_FILES = "COMMON_GENERATED_FILES",
+ _DARWIN_X86_64_GEN_FILES = "GEN_FILES",
+ _DARWIN_X86_64_LIBCRYPTO_DEFINES = "LIBCRYPTO_DEFINES",
+ _DARWIN_X86_64_LIBCRYPTO_HDRS = "LIBCRYPTO_HDRS",
+ _DARWIN_X86_64_LIBCRYPTO_SRCS = "LIBCRYPTO_SRCS",
+ _DARWIN_X86_64_LIBSSL_DEFINES = "LIBSSL_DEFINES",
+ _DARWIN_X86_64_LIBSSL_HDRS = "LIBSSL_HDRS",
+ _DARWIN_X86_64_LIBSSL_SRCS = "LIBSSL_SRCS",
+ _DARWIN_X86_64_OPENSSL_APP_DEFINES = "LIBSSL_DEFINES",
+ _DARWIN_X86_64_OPENSSL_APP_HDRS = "OPENSSL_APP_HDRS",
+ _DARWIN_X86_64_OPENSSL_APP_SRCS = "OPENSSL_APP_SRCS",
+ _DARWIN_X86_64_OPENSSL_DEFINES = "OPENSSL_DEFINES",
+)
+load(
+ "@openssl-generated-overlay//:constants-linux-aarch64.bzl",
+ _LINUX_ARM64_COMMON_GENERATED_FILES = "COMMON_GENERATED_FILES",
+ _LINUX_ARM64_GEN_FILES = "GEN_FILES",
+ _LINUX_ARM64_LIBCRYPTO_DEFINES = "LIBCRYPTO_DEFINES",
+ _LINUX_ARM64_LIBCRYPTO_HDRS = "LIBCRYPTO_HDRS",
+ _LINUX_ARM64_LIBCRYPTO_SRCS = "LIBCRYPTO_SRCS",
+ _LINUX_ARM64_LIBSSL_DEFINES = "LIBSSL_DEFINES",
+ _LINUX_ARM64_LIBSSL_HDRS = "LIBSSL_HDRS",
+ _LINUX_ARM64_LIBSSL_SRCS = "LIBSSL_SRCS",
+ _LINUX_ARM64_OPENSSL_APP_DEFINES = "LIBSSL_DEFINES",
+ _LINUX_ARM64_OPENSSL_APP_HDRS = "OPENSSL_APP_HDRS",
+ _LINUX_ARM64_OPENSSL_APP_SRCS = "OPENSSL_APP_SRCS",
+ _LINUX_ARM64_OPENSSL_DEFINES = "OPENSSL_DEFINES",
+)
+load(
+ "@openssl-generated-overlay//:constants-linux-x86_64-clang.bzl",
+ _LINUX_X86_64_COMMON_GENERATED_FILES = "COMMON_GENERATED_FILES",
+ _LINUX_X86_64_GEN_FILES = "GEN_FILES",
+ _LINUX_X86_64_LIBCRYPTO_DEFINES = "LIBCRYPTO_DEFINES",
+ _LINUX_X86_64_LIBCRYPTO_HDRS = "LIBCRYPTO_HDRS",
+ _LINUX_X86_64_LIBCRYPTO_SRCS = "LIBCRYPTO_SRCS",
+ _LINUX_X86_64_LIBSSL_DEFINES = "LIBSSL_DEFINES",
+ _LINUX_X86_64_LIBSSL_HDRS = "LIBSSL_HDRS",
+ _LINUX_X86_64_LIBSSL_SRCS = "LIBSSL_SRCS",
+ _LINUX_X86_64_OPENSSL_APP_DEFINES = "LIBSSL_DEFINES",
+ _LINUX_X86_64_OPENSSL_APP_HDRS = "OPENSSL_APP_HDRS",
+ _LINUX_X86_64_OPENSSL_APP_SRCS = "OPENSSL_APP_SRCS",
+ _LINUX_X86_64_OPENSSL_DEFINES = "OPENSSL_DEFINES",
+ _NIX_X86_64_PERLASM_GEN = "PERLASM_GEN",
+)
+load(
+ "@openssl-generated-overlay//:constants-VC-WIN64-CLANGASM-ARM.bzl",
+ _WINDOWS_ARM64_COMMON_GENERATED_FILES = "COMMON_GENERATED_FILES",
+ _WINDOWS_ARM64_GEN_FILES = "GEN_FILES",
+ _WINDOWS_ARM64_LIBCRYPTO_DEFINES = "LIBCRYPTO_DEFINES",
+ _WINDOWS_ARM64_LIBCRYPTO_HDRS = "LIBCRYPTO_HDRS",
+ _WINDOWS_ARM64_LIBCRYPTO_SRCS = "LIBCRYPTO_SRCS",
+ _WINDOWS_ARM64_LIBSSL_DEFINES = "LIBSSL_DEFINES",
+ _WINDOWS_ARM64_LIBSSL_HDRS = "LIBSSL_HDRS",
+ _WINDOWS_ARM64_LIBSSL_SRCS = "LIBSSL_SRCS",
+ _WINDOWS_ARM64_OPENSSL_APP_DEFINES = "LIBSSL_DEFINES",
+ _WINDOWS_ARM64_OPENSSL_APP_HDRS = "OPENSSL_APP_HDRS",
+ _WINDOWS_ARM64_OPENSSL_APP_SRCS = "OPENSSL_APP_SRCS",
+ _WINDOWS_ARM64_OPENSSL_DEFINES = "OPENSSL_DEFINES",
+ _WINDOWS_ARM64_PERLASM_GEN = "PERLASM_GEN",
+)
+load(
+ "@openssl-generated-overlay//:constants-VC-WIN64A-masm.bzl",
+ _WINDOWS_X86_64_COMMON_GENERATED_FILES = "COMMON_GENERATED_FILES",
+ _WINDOWS_X86_64_GEN_FILES = "GEN_FILES",
+ _WINDOWS_X86_64_LIBCRYPTO_DEFINES = "LIBCRYPTO_DEFINES",
+ _WINDOWS_X86_64_LIBCRYPTO_HDRS = "LIBCRYPTO_HDRS",
+ _WINDOWS_X86_64_LIBCRYPTO_SRCS = "LIBCRYPTO_SRCS",
+ _WINDOWS_X86_64_LIBSSL_DEFINES = "LIBSSL_DEFINES",
+ _WINDOWS_X86_64_LIBSSL_HDRS = "LIBSSL_HDRS",
+ _WINDOWS_X86_64_LIBSSL_SRCS = "LIBSSL_SRCS",
+ _WINDOWS_X86_64_OPENSSL_APP_DEFINES = "LIBSSL_DEFINES",
+ _WINDOWS_X86_64_OPENSSL_APP_HDRS = "OPENSSL_APP_HDRS",
+ _WINDOWS_X86_64_OPENSSL_APP_SRCS = "OPENSSL_APP_SRCS",
+ _WINDOWS_X86_64_OPENSSL_DEFINES = "OPENSSL_DEFINES",
+ _WINDOWS_X86_64_PERLASM_GEN = "PERLASM_GEN",
+)
+load("@openssl-generated-overlay//:perl_genrule.bzl", "perl_genrule")
+load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("//:utils.bzl", "get_repo_name", "parse_perlasm_gen", "remove_dupes")
+
+DARWIN_ARM64_COMMON_GENERATED_FILES = {
+ src: "@openssl-generated-overlay//:{}".format(src)
+ for src in _DARWIN_ARM64_COMMON_GENERATED_FILES
+}
+
+DARWIN_X86_64_COMMON_GENERATED_FILES = {
+ src: "@openssl-generated-overlay//:{}".format(src)
+ for src in _DARWIN_X86_64_COMMON_GENERATED_FILES
+}
+
+LINUX_ARM64_COMMON_GENERATED_FILES = {
+ src: "@openssl-generated-overlay//:{}".format(src)
+ for src in _LINUX_ARM64_COMMON_GENERATED_FILES
+}
+
+LINUX_X86_64_COMMON_GENERATED_FILES = {
+ src: "@openssl-generated-overlay//:{}".format(src)
+ for src in _LINUX_X86_64_COMMON_GENERATED_FILES
+}
+
+WINDOWS_ARM64_COMMON_GENERATED_FILES = {
+ src: "@openssl-generated-overlay//:{}".format(src)
+ for src in _WINDOWS_ARM64_COMMON_GENERATED_FILES
+}
+
+WINDOWS_X86_64_COMMON_GENERATED_FILES = {
+ src: "@openssl-generated-overlay//:{}".format(src)
+ for src in _WINDOWS_X86_64_COMMON_GENERATED_FILES
+}
+
+_COMMON_GENERATED_FILES_COMBINED = (
+ DARWIN_ARM64_COMMON_GENERATED_FILES | DARWIN_X86_64_COMMON_GENERATED_FILES | LINUX_ARM64_COMMON_GENERATED_FILES | LINUX_X86_64_COMMON_GENERATED_FILES | WINDOWS_ARM64_COMMON_GENERATED_FILES | WINDOWS_X86_64_COMMON_GENERATED_FILES
+).keys()
+
+_REPO_NAME = get_repo_name()
+
+CRYPTO_TEXTUAL_HDRS = [
+ "crypto/des/ncbc_enc.c",
+] + glob(
+ # There are some .c files that are conditionally included textually, we want them to be
+ # available
+ include = ["providers/implementations/**/*.c"],
+ exclude = _COMMON_GENERATED_FILES_COMBINED,
+) + select({
+ "@platforms//os:windows": [
+ "crypto/LPdir_win.c",
+ "crypto/LPdir_win32.c",
+ "crypto/LPdir_wince.c",
+ "ms/applink.c",
+ "ms/uplink.h",
+ ],
+ "//conditions:default": ["crypto/LPdir_unix.c"],
+})
+
+COMMON_OPENSSL_APP_HDRS = glob(
+ include = [
+ "apps/*.h",
+ "apps/include/*.h",
+ "include/internal/*.h",
+ "include/openssl/*.h",
+ ],
+ exclude = _COMMON_GENERATED_FILES_COMBINED,
+)
+
+# Some source files are missing from OpenSSL metadata so we never pick them up.
+MISSING_OPENSSL_WINDOWS_SRCS = ["apps/lib/win32_init.c"]
+
+ALL_OPENSSL_APP_HDRS = COMMON_OPENSSL_APP_HDRS + select({
+ "//configs:darwin_arm64": _DARWIN_ARM64_OPENSSL_APP_HDRS,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_OPENSSL_APP_HDRS,
+ "//configs:linux_aarch64": _LINUX_ARM64_OPENSSL_APP_HDRS,
+ "//configs:linux_x86_64": _LINUX_X86_64_OPENSSL_APP_HDRS,
+ "//configs:windows_arm64": _WINDOWS_ARM64_OPENSSL_APP_HDRS,
+ "//configs:windows_x64": _WINDOWS_X86_64_OPENSSL_APP_HDRS,
+})
+
+ALL_OPENSSL_APP_SRCS = select({
+ "//configs:darwin_arm64": _DARWIN_ARM64_OPENSSL_APP_SRCS,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_OPENSSL_APP_SRCS,
+ "//configs:linux_aarch64": _LINUX_ARM64_OPENSSL_APP_SRCS,
+ "//configs:linux_x86_64": _LINUX_X86_64_OPENSSL_APP_SRCS,
+ "//configs:windows_arm64": _WINDOWS_ARM64_OPENSSL_APP_SRCS + MISSING_OPENSSL_WINDOWS_SRCS,
+ "//configs:windows_x64": _WINDOWS_X86_64_OPENSSL_APP_SRCS + MISSING_OPENSSL_WINDOWS_SRCS,
+})
+
+OPENSSL_APP_NIX_COPTS = [
+]
+
+OPENSSL_APP_WINDOWS_COPTS = [
+]
+
+OPENSSL_APP_INCLUDES = [
+ "apps",
+ "apps/include",
+]
+
+OPENSSL_APP_NIX_LINKOPTS = [
+]
+
+OPENSSL_APP_WINDOWS_LINKOPTS = [
+ "-defaultlib:ws2_32.lib",
+ "-defaultlib:advapi32.lib",
+ "-defaultlib:user32.lib",
+ "-defaultlib:crypt32.lib",
+]
+
+COMMON_OPENSSL_WINDOWS_DEFINES = [
+ "_WINSOCKAPI_",
+ "OPENSSL_SYS_WINCE",
+ "WIN32_LEAN_AND_MEAN",
+]
+
+COMMON_OPENSSL_DEFINES = select({
+ "//configs:windows_arm64": COMMON_OPENSSL_WINDOWS_DEFINES,
+ "//configs:windows_x64": COMMON_OPENSSL_WINDOWS_DEFINES,
+ "//conditions:default": [],
+})
+
+COMMON_OPENSSL_COPTS = [
+ # This hardcoded path into the system mean we will find the system certs. Note Debian sets
+ # OPENSSLDIR=/usr/lib/ssl, but /usr/lib/ssl mostly consists of symlinks into /etc/ssl. We
+ # must set /etc/ssl here because some environments (e.g., YSS root filesystems) don't have
+ # /usr/lib/ssl at all.
+ "-DOPENSSLDIR=\\\"/etc/ssl\\\"",
+ # This is basically a no-op, since we've disabled dynamic loading of engines.
+ '-DENGINESDIR=\\"/usr/lib/engines-3.0\\"',
+ # also basically a no-op
+ "-DMODULESDIR=\\\"/dev/null\\\"",
+ "-DL_ENDIAN",
+ "-DOPENSSL_USE_NODELETE",
+] + select({
+ "//configs:linux_aarch64": ["-mno-outline-atomics"],
+ "//conditions:default": [],
+}) + select({
+ "//configs:windows_arm64": [
+ # Windows-specific flags can go here if needed
+ ],
+ "//configs:windows_x64": [
+ # Windows-specific flags can go here if needed
+ ],
+ "//conditions:default": [
+ # As described in https://github.com/openssl/openssl/issues/4575, OpenSSL doesn't mark its
+ # assembly files as not requiring an executable stack. Pass --noexecstack to the assembler
+ # to do this.
+ "-Wa,--noexecstack",
+ "-Wno-unused-command-line-argument",
+
+ # If someone wants to link with -fPIC, the objects they're linking need to have been built with it.
+ # Add this flag so that people can choose to link that way if they want to.
+ "-fPIC",
+ ],
+})
+
+cc_binary(
+ name = "openssl",
+ srcs = ALL_OPENSSL_APP_SRCS + ALL_OPENSSL_APP_HDRS,
+ copts = COMMON_OPENSSL_COPTS + select({
+ "//configs:darwin_arm64": _DARWIN_ARM64_OPENSSL_APP_DEFINES,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_OPENSSL_APP_DEFINES,
+ "//configs:linux_aarch64": _LINUX_ARM64_OPENSSL_APP_DEFINES,
+ "//configs:linux_x86_64": _LINUX_X86_64_OPENSSL_APP_DEFINES,
+ "//configs:windows_arm64": _WINDOWS_ARM64_OPENSSL_APP_DEFINES,
+ "//configs:windows_x64": _WINDOWS_X86_64_OPENSSL_APP_DEFINES,
+ }) + select({
+ "//configs:windows_arm64": OPENSSL_APP_WINDOWS_COPTS,
+ "//configs:windows_x64": OPENSSL_APP_WINDOWS_COPTS,
+ "//conditions:default": OPENSSL_APP_NIX_COPTS,
+ }),
+ defines = COMMON_OPENSSL_DEFINES,
+ includes = OPENSSL_APP_INCLUDES,
+ linkopts = select({
+ "//configs:windows_arm64": OPENSSL_APP_WINDOWS_LINKOPTS,
+ "//configs:windows_x64": OPENSSL_APP_WINDOWS_LINKOPTS,
+ "//conditions:default": OPENSSL_APP_NIX_LINKOPTS,
+ }),
+ visibility = ["//visibility:public"],
+ deps = [":ssl"],
+)
+
+NIX_ARM64_PERLASM_TOOLS_AND_OUTS, NIX_ARM64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT = parse_perlasm_gen(_NIX_ARM64_PERLASM_GEN)
+
+NIX_X86_64_PERLASM_TOOLS_AND_OUTS, NIX_X86_64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT = parse_perlasm_gen(_NIX_X86_64_PERLASM_GEN)
+
+WINDOWS_ARM64_PERLASM_TOOLS_AND_OUTS, WINDOWS_ARM64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT = parse_perlasm_gen(_WINDOWS_ARM64_PERLASM_GEN)
+
+WINDOWS_X86_64_PERLASM_TOOLS_AND_OUTS, WINDOWS_X86_64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT = parse_perlasm_gen(_WINDOWS_X86_64_PERLASM_GEN)
+
+PERLASM_TOOLS = glob(["crypto/perlasm/*.pl"])
+
+perl_genrule(
+ name = "perlasm_genfiles",
+ additional_srcs = PERLASM_TOOLS + ["crypto/ec/ecp_nistz256_table.c"],
+ assembly_flavor = select({
+ "//configs:darwin_arm64": "ios64",
+ "//configs:darwin_x86_64": "macosx",
+ "//configs:linux_aarch64": "linux64",
+ "//configs:linux_x86_64": "elf",
+ "//configs:windows_arm64": "win64",
+ "//configs:windows_x64": "masm",
+ }),
+ srcs_to_outs = select({
+ "//configs:darwin_arm64": NIX_ARM64_PERLASM_TOOLS_AND_OUTS,
+ "//configs:darwin_x86_64": NIX_X86_64_PERLASM_TOOLS_AND_OUTS,
+ "//configs:linux_aarch64": NIX_ARM64_PERLASM_TOOLS_AND_OUTS,
+ "//configs:linux_x86_64": NIX_X86_64_PERLASM_TOOLS_AND_OUTS,
+ "//configs:windows_arm64": WINDOWS_ARM64_PERLASM_TOOLS_AND_OUTS,
+ "//configs:windows_x64": WINDOWS_X86_64_PERLASM_TOOLS_AND_OUTS,
+ }),
+ srcs_to_outs_dupes = select({
+ "//configs:darwin_arm64": NIX_ARM64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT,
+ "//configs:darwin_x86_64": NIX_X86_64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT,
+ "//configs:linux_aarch64": NIX_ARM64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT,
+ "//configs:linux_x86_64": NIX_X86_64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT,
+ "//configs:windows_arm64": WINDOWS_ARM64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT,
+ "//configs:windows_x64": WINDOWS_X86_64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT,
+ }),
+)
+
+COMMON_LIBCRYPTO_HDRS = glob(
+ include = [
+ "crypto/**/*.h",
+ "crypto/*.h",
+ "include/crypto/**/*.h",
+ "include/internal/*.h",
+ "include/openssl/*.h",
+ "providers/**/*.h",
+ "providers/*.inc",
+ "providers/implementations/**/*.inc",
+ ],
+ exclude = _COMMON_GENERATED_FILES_COMBINED,
+)
+
+# We miss some sources and headers when doing the normal extraction
+OTHER_LIBCRYPTO_WINDOWS_HDRS = [
+ "engines/e_capi_err.h",
+]
+
+OTHER_LIBCRYPTO_WINDOWS_SRCS = [
+ "engines/e_capi_err.c",
+]
+
+ALL_LIBCRYPTO_HDRS = COMMON_LIBCRYPTO_HDRS + select({
+ "//configs:darwin_arm64": _DARWIN_ARM64_LIBCRYPTO_HDRS,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_LIBCRYPTO_HDRS,
+ "//configs:linux_aarch64": _LINUX_ARM64_LIBCRYPTO_HDRS,
+ "//configs:linux_x86_64": _LINUX_X86_64_LIBCRYPTO_HDRS,
+ "//configs:windows_arm64": _WINDOWS_ARM64_LIBCRYPTO_HDRS + OTHER_LIBCRYPTO_WINDOWS_HDRS,
+ "//configs:windows_x64": _WINDOWS_X86_64_LIBCRYPTO_HDRS + OTHER_LIBCRYPTO_WINDOWS_HDRS,
+})
+
+ALL_LIBCRYPTO_SRCS = select({
+ "//configs:darwin_arm64": remove_dupes(
+ _DARWIN_ARM64_LIBCRYPTO_SRCS,
+ NIX_ARM64_PERLASM_TOOLS_AND_OUTS.values() + NIX_ARM64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT.values(),
+ ),
+ "//configs:darwin_x86_64": remove_dupes(
+ _DARWIN_X86_64_LIBCRYPTO_SRCS,
+ NIX_X86_64_PERLASM_TOOLS_AND_OUTS.values() + NIX_X86_64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT.values(),
+ ),
+ "//configs:linux_aarch64": remove_dupes(
+ _LINUX_ARM64_LIBCRYPTO_SRCS,
+ NIX_ARM64_PERLASM_TOOLS_AND_OUTS.values() + NIX_ARM64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT.values(),
+ ),
+ "//configs:linux_x86_64": remove_dupes(
+ _LINUX_X86_64_LIBCRYPTO_SRCS,
+ NIX_X86_64_PERLASM_TOOLS_AND_OUTS.values() + NIX_X86_64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT.values(),
+ ),
+ "//configs:windows_arm64": remove_dupes(
+ _WINDOWS_ARM64_LIBCRYPTO_SRCS,
+ WINDOWS_ARM64_PERLASM_TOOLS_AND_OUTS.values() + WINDOWS_ARM64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT.values(),
+ ) + OTHER_LIBCRYPTO_WINDOWS_SRCS,
+ "//configs:windows_x64": remove_dupes(
+ _WINDOWS_X86_64_LIBCRYPTO_SRCS,
+ WINDOWS_X86_64_PERLASM_TOOLS_AND_OUTS.values() + WINDOWS_X86_64_PERLASM_TOOLS_AND_OUTS_DUPES_DICT.values(),
+ ) + OTHER_LIBCRYPTO_WINDOWS_SRCS,
+})
+
+LIBCRYPTO_NIX_COPTS = [
+]
+
+LIBCRYPTO_WINDOWS_COPTS = [
+]
+
+LIBCRYPTO_INCLUDES = [
+ "providers/implementations/macs",
+ "providers/implementations/include",
+ "providers/common/include",
+ "providers/fips/include",
+ "crypto",
+]
+
+# Windows needs some additional include directories.
+LIBCRYPTO_WINDOWS_INCLUDES = [
+ "ms",
+ "engines",
+ "crypto/bn",
+ "crypto",
+]
+
+cc_library(
+ name = "crypto",
+ # Some of the srcs are duplicated because we have to glob over the directories with missing files
+ # as only some of them are picked up.
+ srcs = ALL_LIBCRYPTO_SRCS + [":perlasm_genfiles"],
+ hdrs = ALL_LIBCRYPTO_HDRS,
+ # To make sure downstream targets add the right copts to be able to include the headers.
+ copts = COMMON_OPENSSL_COPTS + select({
+ "//configs:darwin_arm64": _DARWIN_ARM64_OPENSSL_DEFINES,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_OPENSSL_DEFINES,
+ "//configs:linux_aarch64": _LINUX_ARM64_OPENSSL_DEFINES,
+ "//configs:linux_x86_64": _LINUX_X86_64_OPENSSL_DEFINES,
+ "//configs:windows_arm64": _WINDOWS_ARM64_OPENSSL_DEFINES,
+ "//configs:windows_x64": _WINDOWS_X86_64_OPENSSL_DEFINES,
+ }) + select({
+ "//configs:darwin_arm64": _DARWIN_ARM64_LIBCRYPTO_DEFINES,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_LIBCRYPTO_DEFINES,
+ "//configs:linux_aarch64": _LINUX_ARM64_LIBCRYPTO_DEFINES,
+ "//configs:linux_x86_64": _LINUX_X86_64_LIBCRYPTO_DEFINES,
+ "//configs:windows_arm64": _WINDOWS_ARM64_LIBCRYPTO_DEFINES,
+ "//configs:windows_x64": _WINDOWS_X86_64_LIBCRYPTO_DEFINES,
+ }) + select({
+ "//configs:windows_arm64": LIBCRYPTO_WINDOWS_COPTS,
+ "//configs:windows_x64": LIBCRYPTO_WINDOWS_COPTS,
+ "//conditions:default": LIBCRYPTO_NIX_COPTS,
+ }),
+ defines = COMMON_OPENSSL_DEFINES,
+ includes = [
+ "include",
+ ] + LIBCRYPTO_INCLUDES + select({
+ "//configs:windows_arm64": LIBCRYPTO_WINDOWS_INCLUDES,
+ "//configs:windows_x64": LIBCRYPTO_WINDOWS_INCLUDES,
+ "//conditions:default": [],
+ }),
+ linkopts = [
+ "-lc",
+ "-pthread",
+ ],
+ textual_hdrs = CRYPTO_TEXTUAL_HDRS,
+ features = select({
+ "//configs:windows_arm64": ["system_include_paths"],
+ "//configs:windows_x64": ["system_include_paths"],
+ "//conditions:default": [],
+ }),
+ visibility = ["//visibility:public"],
+)
+
+COMMON_LIBSSL_HDRS = glob(
+ include = ["ssl/**/*.h"],
+ exclude = _COMMON_GENERATED_FILES_COMBINED,
+)
+
+ALL_LIBSSL_HDRS = COMMON_LIBSSL_HDRS + select({
+ "//configs:darwin_arm64": _DARWIN_ARM64_LIBSSL_HDRS,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_LIBSSL_HDRS,
+ "//configs:linux_aarch64": _LINUX_ARM64_LIBSSL_HDRS,
+ "//configs:linux_x86_64": _LINUX_X86_64_LIBSSL_HDRS,
+ "//configs:windows_arm64": _WINDOWS_ARM64_LIBSSL_HDRS,
+ "//configs:windows_x64": _WINDOWS_X86_64_LIBSSL_HDRS,
+})
+
+ALL_LIBSSL_SRCS = select({
+ "//configs:darwin_arm64": _DARWIN_ARM64_LIBSSL_SRCS,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_LIBSSL_SRCS,
+ "//configs:linux_aarch64": _LINUX_ARM64_LIBSSL_SRCS,
+ "//configs:linux_x86_64": _LINUX_X86_64_LIBSSL_SRCS,
+ "//configs:windows_arm64": _WINDOWS_ARM64_LIBSSL_SRCS,
+ "//configs:windows_x64": _WINDOWS_X86_64_LIBSSL_SRCS,
+})
+
+cc_library(
+ name = "ssl",
+ srcs = ALL_LIBSSL_SRCS,
+ hdrs = ALL_LIBSSL_HDRS,
+ copts = COMMON_OPENSSL_COPTS + select({
+ "//configs:darwin_arm64": _DARWIN_ARM64_OPENSSL_DEFINES,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_OPENSSL_DEFINES,
+ "//configs:linux_aarch64": _LINUX_ARM64_OPENSSL_DEFINES,
+ "//configs:linux_x86_64": _LINUX_X86_64_OPENSSL_DEFINES,
+ "//configs:windows_arm64": _WINDOWS_ARM64_OPENSSL_DEFINES,
+ "//configs:windows_x64": _WINDOWS_X86_64_OPENSSL_DEFINES,
+ }) + select({
+ "//configs:darwin_arm64": _DARWIN_ARM64_LIBSSL_DEFINES,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_LIBSSL_DEFINES,
+ "//configs:linux_aarch64": _LINUX_ARM64_LIBSSL_DEFINES,
+ "//configs:linux_x86_64": _LINUX_X86_64_LIBSSL_DEFINES,
+ "//configs:windows_arm64": _WINDOWS_ARM64_LIBSSL_DEFINES,
+ "//configs:windows_x64": _WINDOWS_X86_64_LIBSSL_DEFINES,
+ }),
+ defines = COMMON_OPENSSL_DEFINES,
+ # To make sure downstream targets add the right copts to be able to include the headers.
+ includes = ["include"],
+ linkopts = ["-lc"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":crypto",
+ ],
+)
+
+# Keep this filegroup for gen_dir target
+filegroup(
+ name = "generated-headers",
+ srcs = select({
+ "//configs:darwin_arm64": depset([
+ f
+ for f in _DARWIN_ARM64_LIBCRYPTO_HDRS + _DARWIN_ARM64_LIBSSL_HDRS + _DARWIN_ARM64_OPENSSL_APP_HDRS
+ if f.startswith(":")
+ ]).to_list(),
+ "//configs:darwin_x86_64": depset([
+ f
+ for f in _DARWIN_X86_64_LIBCRYPTO_HDRS + _DARWIN_X86_64_LIBSSL_HDRS + _DARWIN_X86_64_OPENSSL_APP_HDRS
+ if f.startswith(":")
+ ]).to_list(),
+ "//configs:linux_aarch64": depset([
+ f
+ for f in _LINUX_ARM64_LIBCRYPTO_HDRS + _LINUX_ARM64_LIBSSL_HDRS + _LINUX_ARM64_OPENSSL_APP_HDRS
+ if f.startswith(":")
+ ]).to_list(),
+ "//configs:linux_x86_64": depset([
+ f
+ for f in _LINUX_X86_64_LIBCRYPTO_HDRS + _LINUX_X86_64_LIBSSL_HDRS + _LINUX_X86_64_OPENSSL_APP_HDRS
+ if f.startswith(":")
+ ]).to_list(),
+ "//configs:windows_arm64": depset([
+ f
+ for f in _WINDOWS_ARM64_LIBCRYPTO_HDRS + _WINDOWS_ARM64_LIBSSL_HDRS + _WINDOWS_ARM64_OPENSSL_APP_HDRS
+ if f.startswith(":")
+ ]).to_list(),
+ "//configs:windows_x64": depset([
+ f
+ for f in _WINDOWS_X86_64_LIBCRYPTO_HDRS + _WINDOWS_X86_64_LIBSSL_HDRS + _WINDOWS_X86_64_OPENSSL_APP_HDRS
+ if f.startswith(":")
+ ]).to_list(),
+ }),
+)
+
+write_file(
+ name = "unused",
+ out = "unused.h",
+ content = [],
+ newline = "unix",
+ target_compatible_with = ["@platforms//:incompatible"],
+)
+
+[
+ copy_file(
+ name = "copy_generated_{}".format(src),
+ src = select({
+ "//configs:darwin_arm64": DARWIN_ARM64_COMMON_GENERATED_FILES.get(src, ":unused"),
+ "//configs:darwin_x86_64": DARWIN_X86_64_COMMON_GENERATED_FILES.get(src, ":unused"),
+ "//configs:linux_aarch64": LINUX_ARM64_COMMON_GENERATED_FILES.get(src, ":unused"),
+ "//configs:linux_x86_64": LINUX_X86_64_COMMON_GENERATED_FILES.get(src, ":unused"),
+ "//configs:windows_arm64": WINDOWS_ARM64_COMMON_GENERATED_FILES.get(src, ":unused"),
+ "//configs:windows_x64": WINDOWS_X86_64_COMMON_GENERATED_FILES.get(src, ":unused"),
+ }),
+ out = src,
+ )
+ for src in _COMMON_GENERATED_FILES_COMBINED
+]
+
+_PLATFORM_FILES = {
+ "//configs:darwin_arm64": _DARWIN_ARM64_GEN_FILES,
+ "//configs:darwin_x86_64": _DARWIN_X86_64_GEN_FILES,
+ "//configs:linux_aarch64": _LINUX_ARM64_GEN_FILES,
+ "//configs:linux_x86_64": _LINUX_X86_64_GEN_FILES,
+ "//configs:windows_arm64": _WINDOWS_ARM64_GEN_FILES,
+ "//configs:windows_x64": _WINDOWS_X86_64_GEN_FILES,
+}
+
+# Flatten all filenames into a set by collecting them into a dict
+_PLATFORM_ALL_FILE_NAMES = {
+ v: None
+ for inner in _PLATFORM_FILES.values()
+ for v in inner.keys()
+}.keys()
+
+[
+ write_file(
+ name = "gen_{}".format(
+ fname.replace("/", "_"),
+ ),
+ out = fname,
+ content = select({
+ cfg: [mapping.get(fname, "")]
+ for cfg, mapping in _PLATFORM_FILES.items()
+ }),
+ newline = "unix",
+ )
+ for fname in _PLATFORM_ALL_FILE_NAMES
+]
+
+filegroup(
+ name = "generate-platform-specific-files",
+ srcs = select({
+ cfg: [fname for fname in mapping.keys()]
+ for cfg, mapping in _PLATFORM_FILES.items()
+ }),
+)
+
+collate_into_directory(
+ name = "gen_dir",
+ outs_prefix_map = {
+ ":crypto": "lib/",
+ ":openssl": "bin/",
+ ":ssl": "lib/",
+ },
+ srcs_prefix_map = {
+ ":crypto": "external/{}".format(_REPO_NAME),
+ ":generated-headers": "external/{}".format(_REPO_NAME),
+ ":openssl": "external/{}".format(_REPO_NAME),
+ ":ssl": "external/{}".format(_REPO_NAME),
+ } | {
+ k: "external/{}".format(_REPO_NAME)
+ for k in glob(
+ include = ["include/openssl/*.h"],
+ exclude = _COMMON_GENERATED_FILES_COMBINED,
+ )
+ },
+ visibility = ["//visibility:public"],
+)
diff --git a/modules/openssl/3.5.4.bcr.1/overlay/configs/BUILD.bazel b/modules/openssl/3.5.4.bcr.1/overlay/configs/BUILD.bazel
new file mode 100644
index 00000000000..39942e2ce4a
--- /dev/null
+++ b/modules/openssl/3.5.4.bcr.1/overlay/configs/BUILD.bazel
@@ -0,0 +1,53 @@
+config_setting(
+ name = "darwin_arm64",
+ constraint_values = [
+ "@@platforms//os:macos",
+ "@@platforms//cpu:arm64",
+ ],
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "darwin_x86_64",
+ constraint_values = [
+ "@@platforms//os:macos",
+ "@@platforms//cpu:x86_64",
+ ],
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "linux_aarch64",
+ constraint_values = [
+ "@@platforms//os:linux",
+ "@@platforms//cpu:aarch64",
+ ],
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "linux_x86_64",
+ constraint_values = [
+ "@@platforms//os:linux",
+ "@@platforms//cpu:x86_64",
+ ],
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "windows_arm64",
+ constraint_values = [
+ "@@platforms//os:windows",
+ "@@platforms//cpu:arm64",
+ ],
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "windows_x64",
+ constraint_values = [
+ "@@platforms//os:windows",
+ "@@platforms//cpu:x86_64",
+ ],
+ visibility = ["//visibility:public"],
+)
diff --git a/modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/BUILD.bazel b/modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/BUILD.bazel
new file mode 100644
index 00000000000..49c1f664b74
--- /dev/null
+++ b/modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/BUILD.bazel
@@ -0,0 +1,42 @@
+load("@bazel_skylib//rules:write_file.bzl", "write_file")
+load("@rules_cc//cc:cc_library.bzl", "cc_library")
+load("@rules_cc//cc:cc_test.bzl", "cc_test")
+
+cc_test(
+ name = "sha256_test",
+ srcs = ["sha256_test.cc"],
+ copts = select({
+ "//configs:windows_arm64": ["/std:c++17"],
+ "//configs:windows_x64": ["/std:c++17"],
+ "//conditions:default": ["-std=c++17"],
+ }),
+ data = ["@openssl"],
+ env = {
+ "OPENSSL": "$(rlocationpath @openssl)",
+ },
+ deps = ["@rules_cc//cc/runfiles"],
+)
+
+cc_test(
+ name = "build_test",
+ srcs = ["build_test.cc"],
+ deps = [
+ ":includes_bn",
+ ],
+)
+
+cc_library(
+ name = "includes_bn",
+ srcs = [":includes_bh.cpp"],
+ deps = ["@openssl//:ssl"],
+)
+
+write_file(
+ name = "generate_includes_bh",
+ out = "includes_bh.cpp",
+ content = [
+ "#include ",
+ "",
+ ],
+ newline = "unix",
+)
diff --git a/modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/build_test.cc b/modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/build_test.cc
new file mode 100644
index 00000000000..78f2de106c9
--- /dev/null
+++ b/modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/build_test.cc
@@ -0,0 +1 @@
+int main(void) { return 0; }
diff --git a/modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/sha256_test.cc b/modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/sha256_test.cc
new file mode 100644
index 00000000000..a8cdec0eb6d
--- /dev/null
+++ b/modules/openssl/3.5.4.bcr.1/overlay/test_bazel_build/sha256_test.cc
@@ -0,0 +1,89 @@
+#include
+
+#include
+#include
+#include
+#include
+
+#include "rules_cc/cc/runfiles/runfiles.h"
+
+#ifndef BAZEL_CURRENT_REPOSITORY
+#define BAZEL_CURRENT_REPOSITORY "_main"
+#endif
+
+using rules_cc::cc::runfiles::Runfiles;
+
+int main(void) {
+ std::string error = {};
+ std::unique_ptr runfiles(
+ Runfiles::CreateForTest(BAZEL_CURRENT_REPOSITORY, &error));
+
+ if (runfiles == nullptr) {
+ std::cerr << "Failed to locate runfiles" << error << std::endl;
+ return 1;
+ }
+
+ const char* env_var = std::getenv("OPENSSL");
+ if (!env_var) {
+ std::cerr << "No OPENSSL env var set." << std::endl;
+ return 1;
+ }
+
+ std::string rlocationpath = {env_var};
+ std::string openssl = runfiles->Rlocation(rlocationpath);
+
+ if (openssl.empty()) {
+ std::cerr << "Could not find runfile: " << rlocationpath << std::endl;
+ return 1;
+ }
+
+ std::filesystem::path tmpdir(std::getenv("TEST_TMPDIR"));
+ std::filesystem::path basename("testdata.txt");
+ std::filesystem::path tmpfilePath = tmpdir / basename;
+
+ std::cerr << "Writing temprory file to hash to " << tmpfilePath
+ << std::endl;
+
+ std::ofstream tmpfile;
+ tmpfile.open(tmpfilePath);
+ tmpfile << "European Burmese";
+ tmpfile.close();
+
+ std::stringstream command;
+ command << openssl << " dgst -sha256 ";
+ command << tmpfilePath;
+
+ FILE* outputStream;
+#ifdef _WIN32
+ outputStream = _popen(command.str().c_str(), "r");
+#else
+ outputStream = popen(command.str().c_str(), "r");
+#endif
+ if (!outputStream) {
+ std::cerr << "Failed to run command" << std::endl;
+ return 1;
+ }
+
+ const int MAX_BUFFER = 1024;
+ char buffer[MAX_BUFFER];
+
+ std::stringstream output;
+
+ while (!feof(outputStream)) {
+ if (fgets(buffer, MAX_BUFFER, outputStream) != NULL) {
+ output << buffer;
+ }
+ }
+
+ std::string sha256(output.str().substr(output.str().length() - 65, 64));
+ std::string wantSha256(
+ "693d8db7b05e99c6b7a7c0616456039d89c555029026936248085193559a0b5d");
+
+ if (sha256 != wantSha256) {
+ std::cerr << "Wrong sha256 - want " << wantSha256 << " got " << sha256
+ << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/modules/openssl/3.5.4.bcr.1/overlay/utils.bzl b/modules/openssl/3.5.4.bcr.1/overlay/utils.bzl
new file mode 100644
index 00000000000..e9777afeab4
--- /dev/null
+++ b/modules/openssl/3.5.4.bcr.1/overlay/utils.bzl
@@ -0,0 +1,97 @@
+"""utils for the BUILD files.
+"""
+
+def get_repo_name():
+ return Label("//:BUILD.bazel").workspace_name
+
+def remove_extra_chars(str):
+ return str.replace(")", "").replace(";", "").replace("\r", "")
+
+def parse_perlasm_gen(perlasm_gen):
+ """Take a perlasm gen string and parse it.
+
+ Args:
+ perlasm_gen: The perlasm generation string
+ Returns:
+ Two dictionaries. The first has the keys and values that are not dupes or the first instances of dupes.
+ The second has the remaining keys and values that are dupes. Keys are tools and values are outs.
+ """
+ perlasm_outs = []
+ perlasm_tools = []
+
+ perlasm_gen_split_by_line = perlasm_gen.split("\n")
+ for line in perlasm_gen_split_by_line:
+ split_by_space = line.split(" ")
+
+ # When you split by new line you get an empty string at points.
+ if not split_by_space:
+ continue
+ elif not split_by_space[0]:
+ continue
+ # On arm we get carriage returns
+
+ elif split_by_space[0] == "\r\r":
+ continue
+ elif len(split_by_space) != 6:
+ fail("Line {} not six parts".format(line))
+ tool = remove_extra_chars(split_by_space[2])
+ out = remove_extra_chars(split_by_space[5])
+ perlasm_tools.append(tool)
+ perlasm_outs.append(out)
+
+ return dedupe_and_ret_dicts(perlasm_tools, perlasm_outs)
+
+def dedupe_and_ret_dicts(lst_one, lst_two):
+ """Dedupe a list and make two dictionaries with that and another list
+
+ Args:
+ lst_one: First list. We dedupe this and use as keys.
+ lst_two: Second list. We don't dedupe this and use as values.
+ Returns:
+ Two dictionaries. The first has the keys and values that are not dupes or the first instances of dupes.
+ The second has the remaining keys and values that are dupes.
+ """
+ if len(lst_one) != len(lst_two):
+ fail("Lists are not the same length: {} with len {} and {} with len {}".format(lst_one, len(lst_one), lst_two, len(lst_two)))
+ dict_one = {}
+ dict_two = {}
+
+ for i in range(len(lst_one)):
+ one_i = lst_one[i]
+ two_i = lst_two[i]
+ if one_i in dict_one.keys():
+ if one_i in dict_two.keys():
+ pass
+ else:
+ dict_two[one_i] = two_i
+ else:
+ dict_one[one_i] = two_i
+ return dict_one, dict_two
+
+def dedupe(lst):
+ """Dedupe a list
+
+ Args:
+ lst: A list of things
+ Returns:
+ The deuped list.
+ """
+ final_lst = []
+ for thing in lst:
+ if thing in final_lst:
+ continue
+ else:
+ final_lst.append(thing)
+
+ return final_lst
+
+def remove_dupes(lst_one, lst_two):
+ """Remove dupes from list one that exist in list two
+
+ Args:
+ lst_one: The first list
+ lst_two: The second list
+ Returns:
+ list one without dupes
+ """
+ return [item for item in lst_one if item not in lst_two]
diff --git a/modules/openssl/3.5.4.bcr.1/presubmit.yml b/modules/openssl/3.5.4.bcr.1/presubmit.yml
new file mode 100644
index 00000000000..f94f7689360
--- /dev/null
+++ b/modules/openssl/3.5.4.bcr.1/presubmit.yml
@@ -0,0 +1,23 @@
+matrix:
+ platform:
+ - ubuntu2004
+ - ubuntu2004_arm64
+ - ubuntu2404
+ - macos
+ - macos_arm64
+ - windows
+ - windows_arm64
+ bazel:
+ - 7.x
+ - 8.x
+ - 9.*
+ - rolling
+tasks:
+ verify_targets:
+ name: Build and test
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - "@openssl//..."
+ test_targets:
+ - "@openssl//test_bazel_build/..."
diff --git a/modules/openssl/3.5.4.bcr.1/source.json b/modules/openssl/3.5.4.bcr.1/source.json
new file mode 100644
index 00000000000..811eb5ed6bb
--- /dev/null
+++ b/modules/openssl/3.5.4.bcr.1/source.json
@@ -0,0 +1,13 @@
+{
+ "integrity": "sha256-lnMR+ElVMWlpvbHY1LmDcY70IzhjnGIexMNP3e81Xpk=",
+ "overlay": {
+ "BUILD.bazel": "sha256-7fogP06wWrvr7iETRtQCkOHeXclnUHQtn71zHBvxvEY=",
+ "configs/BUILD.bazel": "sha256-wXuvhZjHSa+9hnv+wh8X771CgCk+eYmFGWC9ukLtlWE=",
+ "test_bazel_build/BUILD.bazel": "sha256-LIfPSeobexedZm0S/2P5OaQaOo8a+VYnNpeVKb1Z14E=",
+ "test_bazel_build/build_test.cc": "sha256-KtddlWYFY4h9jT8dCuHc8YwjecvYOlxy9asnY1HuaUk=",
+ "test_bazel_build/sha256_test.cc": "sha256-gDQadZlTklSR1XQFcxmC+BU90YNgnkDqwE2Jbk8EASI=",
+ "utils.bzl": "sha256-f/3BFECnyhmxADqorwvdP3UZiL/YAchv0RsIqy8L7Q8="
+ },
+ "strip_prefix": "openssl-3.5.4",
+ "url": "https://github.com/openssl/openssl/releases/download/openssl-3.5.4/openssl-3.5.4.tar.gz"
+}
diff --git a/modules/openssl/metadata.json b/modules/openssl/metadata.json
index cb162d377aa..2f210cafdb6 100644
--- a/modules/openssl/metadata.json
+++ b/modules/openssl/metadata.json
@@ -1,31 +1,32 @@
{
- "homepage": "https://www.openssl.org/",
- "maintainers": [
- {
- "email": "dawagner@gmail.com",
- "github": "illicitonion",
- "github_user_id": 1131704,
- "name": "Daniel Wagner-Hall"
- },
- {
- "email": "26427366+UebelAndre@users.noreply.github.com",
- "github": "UebelAndre",
- "github_user_id": 26427366,
- "name": "UebelAndre"
- }
- ],
- "repository": [
- "github:openssl/openssl"
- ],
- "versions": [
- "3.3.1.bcr.0",
- "3.3.1.bcr.1",
- "3.3.1.bcr.2",
- "3.3.1.bcr.3",
- "3.3.1.bcr.6",
- "3.3.1.bcr.7",
- "3.3.1.bcr.8",
- "3.3.1.bcr.9",
- "3.5.4.bcr.0"
- ]
+ "homepage": "https://www.openssl.org/",
+ "maintainers": [
+ {
+ "email": "dawagner@gmail.com",
+ "github": "illicitonion",
+ "github_user_id": 1131704,
+ "name": "Daniel Wagner-Hall"
+ },
+ {
+ "email": "26427366+UebelAndre@users.noreply.github.com",
+ "github": "UebelAndre",
+ "github_user_id": 26427366,
+ "name": "UebelAndre"
+ }
+ ],
+ "repository": [
+ "github:openssl/openssl"
+ ],
+ "versions": [
+ "3.3.1.bcr.0",
+ "3.3.1.bcr.1",
+ "3.3.1.bcr.2",
+ "3.3.1.bcr.3",
+ "3.3.1.bcr.6",
+ "3.3.1.bcr.7",
+ "3.3.1.bcr.8",
+ "3.3.1.bcr.9",
+ "3.5.4.bcr.0",
+ "3.5.4.bcr.1"
+ ]
}
From ab2cd8a41d601e0940d1c01617262b41f14f1013 Mon Sep 17 00:00:00 2001
From: Machine account for bazel-contrib
Date: Thu, 22 Jan 2026 11:17:34 -0800
Subject: [PATCH 082/367] rules_distroless@0.6.2 (#7270)
Release:
https://github.com/bazel-contrib/rules_distroless/releases/tag/v0.6.2
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: thesayyn <20563340+thesayyn@users.noreply.github.com>
---
modules/rules_distroless/0.6.2/MODULE.bazel | 110 ++++++++++++++++++
.../rules_distroless/0.6.2/attestations.json | 17 +++
.../patches/module_dot_bazel_version.patch | 13 +++
modules/rules_distroless/0.6.2/presubmit.yml | 12 ++
modules/rules_distroless/0.6.2/source.json | 10 ++
modules/rules_distroless/metadata.json | 3 +-
6 files changed, 164 insertions(+), 1 deletion(-)
create mode 100644 modules/rules_distroless/0.6.2/MODULE.bazel
create mode 100644 modules/rules_distroless/0.6.2/attestations.json
create mode 100644 modules/rules_distroless/0.6.2/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_distroless/0.6.2/presubmit.yml
create mode 100644 modules/rules_distroless/0.6.2/source.json
diff --git a/modules/rules_distroless/0.6.2/MODULE.bazel b/modules/rules_distroless/0.6.2/MODULE.bazel
new file mode 100644
index 00000000000..08895edca47
--- /dev/null
+++ b/modules/rules_distroless/0.6.2/MODULE.bazel
@@ -0,0 +1,110 @@
+"Bazel dependencies"
+
+module(
+ name = "rules_distroless",
+ compatibility_level = 1,
+ version = "0.6.2",
+)
+
+bazel_dep(name = "platforms", version = "0.0.10")
+bazel_dep(name = "bazel_features", version = "1.20.0")
+bazel_dep(name = "bazel_lib", version = "3.0.0-rc.0")
+bazel_dep(name = "bazel_skylib", version = "1.5.0")
+bazel_dep(name = "rules_java", version = "8.8.0")
+bazel_dep(name = "rules_shell", version = "0.4.1")
+bazel_dep(name = "gawk", version = "5.3.2.bcr.3")
+bazel_dep(name = "tar.bzl", version = "0.6.0")
+bazel_dep(name = "yq.bzl", version = "0.3.1")
+
+yq_toolchains = use_extension("@yq.bzl//yq:extensions.bzl", "yq")
+use_repo(yq_toolchains, "yq_darwin_amd64")
+use_repo(yq_toolchains, "yq_darwin_arm64")
+use_repo(yq_toolchains, "yq_linux_amd64")
+use_repo(yq_toolchains, "yq_linux_arm64")
+use_repo(yq_toolchains, "yq_linux_ppc64le")
+use_repo(yq_toolchains, "yq_linux_s390x")
+use_repo(yq_toolchains, "yq_windows_amd64")
+
+bazel_lib_toolchains = use_extension("@bazel_lib//lib:extensions.bzl", "toolchains")
+use_repo(bazel_lib_toolchains, "zstd_toolchains")
+
+tar_toolchains = use_extension("@tar.bzl//tar:extensions.bzl", "toolchains")
+use_repo(tar_toolchains, "bsd_tar_toolchains")
+
+# Dev dependencies
+bazel_dep(name = "gazelle", version = "0.34.0", dev_dependency = True, repo_name = "bazel_gazelle")
+bazel_dep(name = "bazel_skylib_gazelle_plugin", version = "1.5.0", dev_dependency = True)
+bazel_dep(name = "buildifier_prebuilt", version = "8.0.1", dev_dependency = True)
+bazel_dep(name = "rules_oci", version = "2.0.0", dev_dependency = True)
+bazel_dep(name = "container_structure_test", version = "1.21.1", dev_dependency = True)
+bazel_dep(name = "jq.bzl", version = "0.4.0", dev_dependency = True)
+
+http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+http_archive(
+ name = "example-bullseye-ca-certificates",
+ build_file_content = 'exports_files(["data.tar.xz", "control.tar.xz"])',
+ sha256 = "b2d488ad4d8d8adb3ba319fc9cb2cf9909fc42cb82ad239a26c570a2e749c389",
+ urls = ["https://snapshot.debian.org/archive/debian/20231106T210201Z/pool/main/c/ca-certificates/ca-certificates_20210119_all.deb"],
+)
+
+http_archive(
+ name = "example-bullseye-libc-bin",
+ build_file_content = 'exports_files(["data.tar.xz"])',
+ sha256 = "8b048ab5c7e9f5b7444655541230e689631fd9855c384e8c4a802586d9bbc65a",
+ urls = ["https://snapshot.debian.org/archive/debian-security/20231106T230332Z/pool/updates/main/g/glibc/libc-bin_2.31-13+deb11u7_amd64.deb"],
+)
+
+http_archive(
+ name = "example-bookworm-libc-bin",
+ build_file_content = 'exports_files(["data.tar.xz"])',
+ sha256 = "38c44247c5b3e864d6db2877edd9c9a0555fc4e23ae271b73d7f527802616df5",
+ urls = ["https://snapshot.debian.org/archive/debian-security/20231106T230332Z/pool/updates/main/g/glibc/libc-bin_2.36-9+deb12u3_armhf.deb"],
+)
+
+apt = use_extension(
+ "@rules_distroless//apt:extensions.bzl",
+ "apt",
+ dev_dependency = True,
+)
+apt.install(
+ name = "bullseye",
+ lock = "//examples/debian_snapshot:bullseye.lock.json",
+ manifest = "//examples/debian_snapshot:bullseye.yaml",
+)
+apt.install(
+ name = "bullseye_nolock",
+ manifest = "//examples/debian_snapshot:bullseye.yaml",
+ nolock = True,
+)
+apt.install(
+ name = "noble",
+ lock = "//examples/ubuntu_snapshot:noble.lock.json",
+ manifest = "//examples/ubuntu_snapshot:noble.yaml",
+)
+apt.install(
+ name = "resolution_test",
+ manifest = "apt/tests/resolution/security.yaml",
+ nolock = True,
+)
+apt.install(
+ name = "resolution_test_empty_lock",
+ lock = "//apt/tests/resolution:empty.lock.json",
+ manifest = "apt/tests/resolution/security.yaml",
+)
+apt.install(
+ name = "arch_all_test",
+ manifest = "apt/tests/resolution/arch_all.yaml",
+ nolock = True,
+)
+apt.install(
+ name = "unique_dependencies",
+ manifest = "//apt/tests/resolution:dependencies.yaml",
+ nolock = True,
+)
+apt.install(
+ name = "clang",
+ manifest = "apt/tests/resolution/clang.yaml",
+ nolock = True,
+)
+use_repo(apt, "arch_all_test", "arch_all_test_resolve", "bullseye", "bullseye_nolock", "clang", "noble", "resolution_test", "resolution_test_empty_lock_resolve", "resolution_test_resolve", "unique_dependencies_resolve")
diff --git a/modules/rules_distroless/0.6.2/attestations.json b/modules/rules_distroless/0.6.2/attestations.json
new file mode 100644
index 00000000000..72e9c6c488a
--- /dev/null
+++ b/modules/rules_distroless/0.6.2/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/bazel-contrib/rules_distroless/releases/download/v0.6.2/source.json.intoto.jsonl",
+ "integrity": "sha256-Urx34dQ0wgAFxdVF6viuuUhyQ2nbDYup4qXpLrNMwac="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/bazel-contrib/rules_distroless/releases/download/v0.6.2/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-iJ7MpWlvvW0MrPQPgZMlCBZHvB3pOeeu1iFC4BDE5Vo="
+ },
+ "rules_distroless-v0.6.2.tar.gz": {
+ "url": "https://github.com/bazel-contrib/rules_distroless/releases/download/v0.6.2/rules_distroless-v0.6.2.tar.gz.intoto.jsonl",
+ "integrity": "sha256-qWj5zabvZC66XXp9Q08kDOqsdeMjoMGgWBuAmrH/gZQ="
+ }
+ }
+}
diff --git a/modules/rules_distroless/0.6.2/patches/module_dot_bazel_version.patch b/modules/rules_distroless/0.6.2/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..ee313c2782c
--- /dev/null
+++ b/modules/rules_distroless/0.6.2/patches/module_dot_bazel_version.patch
@@ -0,0 +1,13 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -2,8 +2,9 @@
+
+ module(
+ name = "rules_distroless",
+ compatibility_level = 1,
++ version = "0.6.2",
+ )
+
+ bazel_dep(name = "platforms", version = "0.0.10")
+ bazel_dep(name = "bazel_features", version = "1.20.0")
diff --git a/modules/rules_distroless/0.6.2/presubmit.yml b/modules/rules_distroless/0.6.2/presubmit.yml
new file mode 100644
index 00000000000..17f88e8a96d
--- /dev/null
+++ b/modules/rules_distroless/0.6.2/presubmit.yml
@@ -0,0 +1,12 @@
+bcr_test_module:
+ module_path: "e2e/smoke"
+ matrix:
+ platform: ["debian10", "macos", "ubuntu2004"]
+ bazel: [7.x, 8.x]
+ tasks:
+ run_tests:
+ name: "Run test module"
+ bazel: ${{ bazel }}
+ platform: ${{ platform }}
+ test_targets:
+ - "//..."
diff --git a/modules/rules_distroless/0.6.2/source.json b/modules/rules_distroless/0.6.2/source.json
new file mode 100644
index 00000000000..f4ca8428b5f
--- /dev/null
+++ b/modules/rules_distroless/0.6.2/source.json
@@ -0,0 +1,10 @@
+{
+ "integrity": "sha256-9QiDHzBpRffWXGISH5LitFQpHkZeueeZGOTigVdBYlU=",
+ "strip_prefix": "rules_distroless-0.6.2",
+ "docs_url": "https://github.com/bazel-contrib/rules_distroless/releases/download/v0.6.2/rules_distroless-v0.6.2.docs.tar.gz",
+ "url": "https://github.com/bazel-contrib/rules_distroless/releases/download/v0.6.2/rules_distroless-v0.6.2.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-EUUQtgd36tCJtnpccWlrbqmkZoObffdirlVKRm7dzO8="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_distroless/metadata.json b/modules/rules_distroless/metadata.json
index ce99045eb90..2b6d8df2536 100644
--- a/modules/rules_distroless/metadata.json
+++ b/modules/rules_distroless/metadata.json
@@ -34,7 +34,8 @@
"0.4.2",
"0.5.1",
"0.5.3",
- "0.6.1"
+ "0.6.1",
+ "0.6.2"
],
"yanked_versions": {}
}
From 9affc230ec0e3143a386d78a5434705336417b93 Mon Sep 17 00:00:00 2001
From: "publish-to-bcr-bot[bot]"
<112732530+publish-to-bcr-bot[bot]@users.noreply.github.com>
Date: Fri, 23 Jan 2026 03:28:59 +0100
Subject: [PATCH 083/367] rules_robolectric@4.16.1 (#7276)
:warning: The Publish to BCR GitHub app will be discontinued after June
30, 2026. Please migrate to the GitHub Actions [reusable
workflow](https://github.com/bazel-contrib/publish-to-bcr?tab=readme-ov-file#setup)
before then.
Release:
https://github.com/robolectric/robolectric-bazel/releases/tag/v4.16.1
_Automated by [Publish to BCR](https://github.com/apps/publish-to-bcr)_
Co-authored-by: Ben Lee
---
modules/rules_robolectric/4.16.1/MODULE.bazel | 36 +++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 14 ++++++++
.../rules_robolectric/4.16.1/presubmit.yml | 11 ++++++
modules/rules_robolectric/4.16.1/source.json | 9 +++++
modules/rules_robolectric/metadata.json | 3 +-
5 files changed, 72 insertions(+), 1 deletion(-)
create mode 100644 modules/rules_robolectric/4.16.1/MODULE.bazel
create mode 100644 modules/rules_robolectric/4.16.1/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_robolectric/4.16.1/presubmit.yml
create mode 100644 modules/rules_robolectric/4.16.1/source.json
diff --git a/modules/rules_robolectric/4.16.1/MODULE.bazel b/modules/rules_robolectric/4.16.1/MODULE.bazel
new file mode 100644
index 00000000000..872c8efac18
--- /dev/null
+++ b/modules/rules_robolectric/4.16.1/MODULE.bazel
@@ -0,0 +1,36 @@
+"Bazel dependencies"
+
+module(
+ name = "rules_robolectric",
+ # Note: the publish-to-BCR app will patch this line to stamp the version being published.
+ version = "4.16.1",
+ bazel_compatibility = [">=6.0.0"],
+ compatibility_level = 1,
+)
+
+robolectric_repository_extensions = use_extension("//bazel:extensions.bzl", "robolectric_repository_extensions")
+use_repo(
+ robolectric_repository_extensions,
+ "org_robolectric_android_all_instrumented_10_robolectric_5803371_i7",
+ "org_robolectric_android_all_instrumented_11_robolectric_6757853_i7",
+ "org_robolectric_android_all_instrumented_12_1_robolectric_8229987_i7",
+ "org_robolectric_android_all_instrumented_12_robolectric_7732740_i7",
+ "org_robolectric_android_all_instrumented_13_robolectric_9030017_i7",
+ "org_robolectric_android_all_instrumented_14_robolectric_10818077_i7",
+ "org_robolectric_android_all_instrumented_15_robolectric_13954326_i7",
+ "org_robolectric_android_all_instrumented_16_robolectric_13921718_i7",
+ "org_robolectric_android_all_instrumented_5_0_2_r3_robolectric_r0_i7",
+ "org_robolectric_android_all_instrumented_5_1_1_r9_robolectric_r2_i7",
+ "org_robolectric_android_all_instrumented_6_0_1_r3_robolectric_r1_i7",
+ "org_robolectric_android_all_instrumented_7_0_0_r1_robolectric_r1_i7",
+ "org_robolectric_android_all_instrumented_7_1_0_r7_robolectric_r1_i7",
+ "org_robolectric_android_all_instrumented_8_0_0_r4_robolectric_r1_i7",
+ "org_robolectric_android_all_instrumented_8_1_0_robolectric_4611349_i7",
+ "org_robolectric_android_all_instrumented_9_robolectric_4913185_2_i7",
+)
+
+bazel_dep(name = "rules_java", version = "8.6.0")
+bazel_dep(name = "bazel_skylib", version = "1.6.1")
+bazel_dep(name = "rules_python", version = "0.37.2")
+
+bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True)
diff --git a/modules/rules_robolectric/4.16.1/patches/module_dot_bazel_version.patch b/modules/rules_robolectric/4.16.1/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..dc800ec6265
--- /dev/null
+++ b/modules/rules_robolectric/4.16.1/patches/module_dot_bazel_version.patch
@@ -0,0 +1,14 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -2,9 +2,9 @@
+
+ module(
+ name = "rules_robolectric",
+ # Note: the publish-to-BCR app will patch this line to stamp the version being published.
+- version = "0.0.0",
++ version = "4.16.1",
+ bazel_compatibility = [">=6.0.0"],
+ compatibility_level = 1,
+ )
+
diff --git a/modules/rules_robolectric/4.16.1/presubmit.yml b/modules/rules_robolectric/4.16.1/presubmit.yml
new file mode 100644
index 00000000000..0e93c5af196
--- /dev/null
+++ b/modules/rules_robolectric/4.16.1/presubmit.yml
@@ -0,0 +1,11 @@
+matrix:
+ platform: ["macos", "ubuntu2004"]
+ bazel: ["6.x", "7.x", "8.x"]
+
+tasks:
+ verify_targets:
+ name: "Verify build targets"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - "@rules_robolectric//bazel:android-all"
diff --git a/modules/rules_robolectric/4.16.1/source.json b/modules/rules_robolectric/4.16.1/source.json
new file mode 100644
index 00000000000..cb120a9bb31
--- /dev/null
+++ b/modules/rules_robolectric/4.16.1/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-T7rojU05+BgW2IY837aAlPtl3cS7Hav+ByuGPk7qric=",
+ "strip_prefix": "robolectric-bazel-v4.16.1",
+ "url": "https://github.com/robolectric/robolectric-bazel/releases/download/v4.16.1/robolectric-bazel-v4.16.1.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-gRZoFnFSXf02HAKGsdUwgD2nTLOa3g4cD2Dik6Rzs0E="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_robolectric/metadata.json b/modules/rules_robolectric/metadata.json
index 87c3a9dd5a2..753450c3ed2 100644
--- a/modules/rules_robolectric/metadata.json
+++ b/modules/rules_robolectric/metadata.json
@@ -27,7 +27,8 @@
"4.15-beta-1",
"4.15",
"4.15.1",
- "4.16"
+ "4.16",
+ "4.16.1"
],
"yanked_versions": {}
}
From f23d00502bc5ff1f4e459385be2f0990d2866bc3 Mon Sep 17 00:00:00 2001
From: Machine account for bazel-contrib
Date: Thu, 22 Jan 2026 21:55:51 -0800
Subject: [PATCH 084/367] bazelrc-preset.bzl@1.9.2 (#7260)
Release:
https://github.com/bazel-contrib/bazelrc-preset.bzl/releases/tag/v1.9.2
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: alexeagle <47395+alexeagle@users.noreply.github.com>
---
modules/bazelrc-preset.bzl/1.9.2/MODULE.bazel | 12 ++++++++++++
.../bazelrc-preset.bzl/1.9.2/attestations.json | 17 +++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 ++++++++++++
modules/bazelrc-preset.bzl/1.9.2/presubmit.yml | 11 +++++++++++
modules/bazelrc-preset.bzl/1.9.2/source.json | 10 ++++++++++
modules/bazelrc-preset.bzl/metadata.json | 3 ++-
6 files changed, 64 insertions(+), 1 deletion(-)
create mode 100644 modules/bazelrc-preset.bzl/1.9.2/MODULE.bazel
create mode 100644 modules/bazelrc-preset.bzl/1.9.2/attestations.json
create mode 100644 modules/bazelrc-preset.bzl/1.9.2/patches/module_dot_bazel_version.patch
create mode 100644 modules/bazelrc-preset.bzl/1.9.2/presubmit.yml
create mode 100644 modules/bazelrc-preset.bzl/1.9.2/source.json
diff --git a/modules/bazelrc-preset.bzl/1.9.2/MODULE.bazel b/modules/bazelrc-preset.bzl/1.9.2/MODULE.bazel
new file mode 100644
index 00000000000..fb90af48ce5
--- /dev/null
+++ b/modules/bazelrc-preset.bzl/1.9.2/MODULE.bazel
@@ -0,0 +1,12 @@
+module(name = "bazelrc-preset.bzl",
+ version = "1.9.2",
+)
+
+# Lower-bound of dependency versions
+bazel_dep(name = "bazel_lib", version = "3.0.0")
+bazel_dep(name = "bazel_features", version = "1.0.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.1")
+
+# TODO(Alex/Fabian): avoid reaching into //private
+version = use_extension("@bazel_features//private:extensions.bzl", "version_extension")
+use_repo(version, "bazel_features_globals", "bazel_features_version")
diff --git a/modules/bazelrc-preset.bzl/1.9.2/attestations.json b/modules/bazelrc-preset.bzl/1.9.2/attestations.json
new file mode 100644
index 00000000000..7eb66d0e5c3
--- /dev/null
+++ b/modules/bazelrc-preset.bzl/1.9.2/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/bazel-contrib/bazelrc-preset.bzl/releases/download/v1.9.2/source.json.intoto.jsonl",
+ "integrity": "sha256-1Pmef7dMCibVspqiS375U6g71zC79q5FlMP3Y3NVpRg="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/bazel-contrib/bazelrc-preset.bzl/releases/download/v1.9.2/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-rp2mrAC5/KFPK8GQMhRQH53/HLYaFGnGGjTVv2Intog="
+ },
+ "bazelrc-preset.bzl-v1.9.2.tar.gz": {
+ "url": "https://github.com/bazel-contrib/bazelrc-preset.bzl/releases/download/v1.9.2/bazelrc-preset.bzl-v1.9.2.tar.gz.intoto.jsonl",
+ "integrity": "sha256-YXGgbVhWYcAt6I6Kd7vXsZjY+OJVP2VhroPTHrkTAEo="
+ }
+ }
+}
diff --git a/modules/bazelrc-preset.bzl/1.9.2/patches/module_dot_bazel_version.patch b/modules/bazelrc-preset.bzl/1.9.2/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..9bbab65f483
--- /dev/null
+++ b/modules/bazelrc-preset.bzl/1.9.2/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,5 +1,7 @@
+-module(name = "bazelrc-preset.bzl")
++module(name = "bazelrc-preset.bzl",
++ version = "1.9.2",
++)
+
+ # Lower-bound of dependency versions
+ bazel_dep(name = "bazel_lib", version = "3.0.0")
+ bazel_dep(name = "bazel_features", version = "1.0.0")
diff --git a/modules/bazelrc-preset.bzl/1.9.2/presubmit.yml b/modules/bazelrc-preset.bzl/1.9.2/presubmit.yml
new file mode 100644
index 00000000000..eec0a114cb1
--- /dev/null
+++ b/modules/bazelrc-preset.bzl/1.9.2/presubmit.yml
@@ -0,0 +1,11 @@
+matrix:
+ platform:
+ - ubuntu2204
+ bazel: [6.*, 7.*, 8.*, 9.*]
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@bazelrc-preset.bzl//...'
diff --git a/modules/bazelrc-preset.bzl/1.9.2/source.json b/modules/bazelrc-preset.bzl/1.9.2/source.json
new file mode 100644
index 00000000000..35a6a31a36a
--- /dev/null
+++ b/modules/bazelrc-preset.bzl/1.9.2/source.json
@@ -0,0 +1,10 @@
+{
+ "docs_url": "https://github.com/bazel-contrib/bazelrc-preset.bzl/releases/download/v1.9.2/bazelrc-preset.bzl-v1.9.2.docs.tar.gz",
+ "integrity": "sha256-rxBT+1IkxphD6uVcEVls2amHIA+Utg7gNnl8mgIsnAw=",
+ "strip_prefix": "bazelrc-preset.bzl-1.9.2",
+ "url": "https://github.com/bazel-contrib/bazelrc-preset.bzl/releases/download/v1.9.2/bazelrc-preset.bzl-v1.9.2.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-ATTP9KZJZTuvC65Yumb4Sg5uijUA5zMrLTMBsLHgC5w="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/bazelrc-preset.bzl/metadata.json b/modules/bazelrc-preset.bzl/metadata.json
index 1d347982d7e..086db38b926 100644
--- a/modules/bazelrc-preset.bzl/metadata.json
+++ b/modules/bazelrc-preset.bzl/metadata.json
@@ -40,7 +40,8 @@
"1.5.1",
"1.6.0",
"1.7.0",
- "1.8.0"
+ "1.8.0",
+ "1.9.2"
],
"yanked_versions": {}
}
From b066f8da2535021e6e879f7df110f8c7cb07e229 Mon Sep 17 00:00:00 2001
From: "publish-to-bcr-bot[bot]"
<112732530+publish-to-bcr-bot[bot]@users.noreply.github.com>
Date: Fri, 23 Jan 2026 16:35:41 +0100
Subject: [PATCH 085/367] maliput@1.13.0 (#7282)
:warning: The Publish to BCR GitHub app will be discontinued after June
30, 2026. Please migrate to the GitHub Actions [reusable
workflow](https://github.com/bazel-contrib/publish-to-bcr?tab=readme-ov-file#setup)
before then.
Release: https://github.com/maliput/maliput/releases/tag/1.13.0
_Automated by [Publish to BCR](https://github.com/apps/publish-to-bcr)_
Co-authored-by: Daniel Stonier
---
modules/maliput/1.13.0/MODULE.bazel | 14 ++++++++++++++
modules/maliput/1.13.0/presubmit.yml | 25 +++++++++++++++++++++++++
modules/maliput/1.13.0/source.json | 5 +++++
modules/maliput/metadata.json | 3 ++-
4 files changed, 46 insertions(+), 1 deletion(-)
create mode 100644 modules/maliput/1.13.0/MODULE.bazel
create mode 100644 modules/maliput/1.13.0/presubmit.yml
create mode 100644 modules/maliput/1.13.0/source.json
diff --git a/modules/maliput/1.13.0/MODULE.bazel b/modules/maliput/1.13.0/MODULE.bazel
new file mode 100644
index 00000000000..ea55b757460
--- /dev/null
+++ b/modules/maliput/1.13.0/MODULE.bazel
@@ -0,0 +1,14 @@
+"""
+Welcome to Maliput!
+"""
+
+module(
+ name = "maliput",
+ compatibility_level = 1,
+ version = "1.13.0",
+)
+
+bazel_dep(name = "rules_cc", version = "0.0.9")
+bazel_dep(name = "eigen", version = "3.4.0.bcr.1.1")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "yaml-cpp", version = "0.8.0")
diff --git a/modules/maliput/1.13.0/presubmit.yml b/modules/maliput/1.13.0/presubmit.yml
new file mode 100644
index 00000000000..c1f05fad6c5
--- /dev/null
+++ b/modules/maliput/1.13.0/presubmit.yml
@@ -0,0 +1,25 @@
+matrix:
+ bazel: [6.x, 7.x]
+ platform: ["ubuntu2004"] # "debian10", "macos", "windows"
+tasks:
+ verify_targets:
+ name: Verify Build Targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_targets:
+ - '@maliput//:common'
+ - '@maliput//:math'
+ - '@maliput//:base'
+ - '@maliput//:geometry_base'
+ - '@maliput//:api'
+ - '@maliput//:plugin'
+ - '@maliput//:routing'
+ - '@maliput//:utility'
+ - '@maliput//:drake'
+ - '@maliput//:test_utilities'
+ # TODO(stonier): no tests yet...
+ # run_tests:
+ # name: "Run test module"
+ # platform: ${{ platform }}
+ # test_targets:
+ # - "//..."
diff --git a/modules/maliput/1.13.0/source.json b/modules/maliput/1.13.0/source.json
new file mode 100644
index 00000000000..f828ea318db
--- /dev/null
+++ b/modules/maliput/1.13.0/source.json
@@ -0,0 +1,5 @@
+{
+ "integrity": "sha256-f5TUcvo2DWp7mROEKlTmuPZAuQKJovq919BZa+WJMoE=",
+ "strip_prefix": "maliput-1.13.0",
+ "url": "https://github.com/maliput/maliput/releases/download/1.13.0/maliput-1.13.0.tar.gz"
+}
diff --git a/modules/maliput/metadata.json b/modules/maliput/metadata.json
index 8b81d6f8771..324c5578d38 100644
--- a/modules/maliput/metadata.json
+++ b/modules/maliput/metadata.json
@@ -49,7 +49,8 @@
"1.10.0",
"1.11.0",
"1.11.1",
- "1.12.0"
+ "1.12.0",
+ "1.13.0"
],
"yanked_versions": {}
}
From ff38e9a629cf563bbeaa21b4916e510837232e6d Mon Sep 17 00:00:00 2001
From: "publish-to-bcr-bot[bot]"
<112732530+publish-to-bcr-bot[bot]@users.noreply.github.com>
Date: Fri, 23 Jan 2026 16:56:40 +0100
Subject: [PATCH 086/367] maliput_malidrive@0.18.0 (#7283)
:warning: The Publish to BCR GitHub app will be discontinued after June
30, 2026. Please migrate to the GitHub Actions [reusable
workflow](https://github.com/bazel-contrib/publish-to-bcr?tab=readme-ov-file#setup)
before then.
Release:
https://github.com/maliput/maliput_malidrive/releases/tag/0.18.0
_Automated by [Publish to BCR](https://github.com/apps/publish-to-bcr)_
Co-authored-by: Daniel Stonier
---
modules/maliput_malidrive/0.18.0/MODULE.bazel | 18 +++++++++++++
.../maliput_malidrive/0.18.0/presubmit.yml | 25 +++++++++++++++++++
modules/maliput_malidrive/0.18.0/source.json | 5 ++++
modules/maliput_malidrive/metadata.json | 3 ++-
4 files changed, 50 insertions(+), 1 deletion(-)
create mode 100644 modules/maliput_malidrive/0.18.0/MODULE.bazel
create mode 100644 modules/maliput_malidrive/0.18.0/presubmit.yml
create mode 100644 modules/maliput_malidrive/0.18.0/source.json
diff --git a/modules/maliput_malidrive/0.18.0/MODULE.bazel b/modules/maliput_malidrive/0.18.0/MODULE.bazel
new file mode 100644
index 00000000000..7800833e5ea
--- /dev/null
+++ b/modules/maliput_malidrive/0.18.0/MODULE.bazel
@@ -0,0 +1,18 @@
+"""
+Welcome to Maliput Malidrive!
+"""
+
+module(
+ name = "maliput_malidrive",
+ compatibility_level = 1,
+ version = "0.18.0",
+)
+
+bazel_dep(name = "rules_cc", version = "0.0.9")
+
+bazel_dep(name = "eigen", version = "3.4.0.bcr.1.1")
+bazel_dep(name = "gflags", version = "2.2.2")
+bazel_dep(name = "maliput", version = "1.13.0")
+bazel_dep(name = "tinyxml2", version = "9.0.0")
+
+bazel_dep(name = "googletest", version = "1.14.0", dev_dependency = True)
diff --git a/modules/maliput_malidrive/0.18.0/presubmit.yml b/modules/maliput_malidrive/0.18.0/presubmit.yml
new file mode 100644
index 00000000000..3fcfb7b68b7
--- /dev/null
+++ b/modules/maliput_malidrive/0.18.0/presubmit.yml
@@ -0,0 +1,25 @@
+matrix:
+ bazel: [6.x, 7.x, 8.x]
+ platform: ["ubuntu2004"] # "debian10", "macos", "windows"
+tasks:
+ verify_targets:
+ name: Verify Build Targets
+ bazel: ${{ bazel }}
+ platform: ${{ platform }}
+ build_flags:
+ - '--process_headers_in_dependencies'
+ build_targets:
+ - '@maliput_malidrive//:maliput_malidrive'
+
+bcr_test_module:
+ module_path: "."
+ matrix:
+ bazel: [6.x, 7.x, 8.x]
+ platform: ["ubuntu2004"] # "debian10", "macos", "windows"
+ tasks:
+ run_tests:
+ name: "Run test module"
+ bazel: ${{ bazel }}
+ platform: ${{ platform }}
+ test_targets:
+ - "//..."
diff --git a/modules/maliput_malidrive/0.18.0/source.json b/modules/maliput_malidrive/0.18.0/source.json
new file mode 100644
index 00000000000..d07e0307371
--- /dev/null
+++ b/modules/maliput_malidrive/0.18.0/source.json
@@ -0,0 +1,5 @@
+{
+ "integrity": "sha256-AyJe4M4XEllp5+wmd+TUIX0kqbUi+uLn2VF8/MtMjhs=",
+ "strip_prefix": "maliput_malidrive-0.18.0",
+ "url": "https://github.com/maliput/maliput_malidrive/releases/download/0.18.0/maliput_malidrive-0.18.0.tar.gz"
+}
diff --git a/modules/maliput_malidrive/metadata.json b/modules/maliput_malidrive/metadata.json
index 018146e354d..9b957595b43 100644
--- a/modules/maliput_malidrive/metadata.json
+++ b/modules/maliput_malidrive/metadata.json
@@ -60,7 +60,8 @@
"0.16.0",
"0.17.0",
"0.17.1",
- "0.17.2"
+ "0.17.2",
+ "0.18.0"
],
"yanked_versions": {}
}
From 54c95cd1b62852d23f58b879b39589622183dac4 Mon Sep 17 00:00:00 2001
From: Michael Carroll
Date: Fri, 23 Jan 2026 11:16:00 -0600
Subject: [PATCH 087/367] gz-common@7.0.1 (#7243)
Release:
https://github.com/gazebosim/gz-common/releases/tag/gz-common7_7.0.1
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: shameekganguly <2412842+shameekganguly@users.noreply.github.com>
---
modules/gz-common/7.0.1/MODULE.bazel | 23 +++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 +++++++++
modules/gz-common/7.0.1/presubmit.yml | 25 +++++++++++++++++++
modules/gz-common/7.0.1/source.json | 9 +++++++
modules/gz-common/metadata.json | 3 ++-
5 files changed, 71 insertions(+), 1 deletion(-)
create mode 100644 modules/gz-common/7.0.1/MODULE.bazel
create mode 100644 modules/gz-common/7.0.1/patches/module_dot_bazel_version.patch
create mode 100644 modules/gz-common/7.0.1/presubmit.yml
create mode 100644 modules/gz-common/7.0.1/source.json
diff --git a/modules/gz-common/7.0.1/MODULE.bazel b/modules/gz-common/7.0.1/MODULE.bazel
new file mode 100644
index 00000000000..03feba2892c
--- /dev/null
+++ b/modules/gz-common/7.0.1/MODULE.bazel
@@ -0,0 +1,23 @@
+module(
+ name = "gz-common",
+ compatibility_level = 6,
+ version = "7.0.1",
+)
+
+bazel_dep(name = "bazel_skylib", version = "1.7.1")
+bazel_dep(name = "assimp", version = "5.4.3.bcr.3")
+bazel_dep(name = "buildifier_prebuilt", version = "8.2.1")
+bazel_dep(name = "cdt", version = "1.4.0")
+bazel_dep(name = "freeimage", version = "3.19.10.bcr.4")
+bazel_dep(name = "googletest", version = "1.15.2")
+bazel_dep(name = "remotery", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.14")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "spdlog", version = "1.15.3")
+bazel_dep(name = "tinyxml2", version = "10.0.0")
+bazel_dep(name = "libuuid", version = "2.39.3.bcr.1")
+
+# Gazebo Dependencies
+bazel_dep(name = "rules_gazebo", version = "0.0.6")
+bazel_dep(name = "gz-utils", version = "4.0.0")
+bazel_dep(name = "gz-math", version = "9.0.0")
diff --git a/modules/gz-common/7.0.1/patches/module_dot_bazel_version.patch b/modules/gz-common/7.0.1/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..21df9d38fe1
--- /dev/null
+++ b/modules/gz-common/7.0.1/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,8 @@
+ module(
+ name = "gz-common",
+ compatibility_level = 6,
++ version = "7.0.1",
+ )
+
+ bazel_dep(name = "bazel_skylib", version = "1.7.1")
+ bazel_dep(name = "assimp", version = "5.4.3.bcr.3")
diff --git a/modules/gz-common/7.0.1/presubmit.yml b/modules/gz-common/7.0.1/presubmit.yml
new file mode 100644
index 00000000000..22c2d8e64f9
--- /dev/null
+++ b/modules/gz-common/7.0.1/presubmit.yml
@@ -0,0 +1,25 @@
+matrix:
+ platform:
+ - debian11
+ - ubuntu2204
+ - macos
+ - macos_arm64
+ bazel:
+ - 8.x
+ - 7.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - '--cxxopt=-std=c++17'
+ - '--host_cxxopt=-std=c++17'
+ build_targets:
+ - '@gz-common'
+ - '@gz-common//events:events'
+ - '@gz-common//geospatial:geospatial'
+ - '@gz-common//graphics:graphics'
+ - '@gz-common//io:io'
+ - '@gz-common//profiler:profiler'
+ - '@gz-common//testing:testing'
diff --git a/modules/gz-common/7.0.1/source.json b/modules/gz-common/7.0.1/source.json
new file mode 100644
index 00000000000..9fbc277b0ec
--- /dev/null
+++ b/modules/gz-common/7.0.1/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-Rk3fb0p7v3jyNKTcHpjCdpClQZ2qsY4hi5SAFUV76GQ=",
+ "strip_prefix": "gz-common-gz-common7_7.0.1",
+ "url": "https://github.com/gazebosim/gz-common/archive/refs/tags/gz-common7_7.0.1.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-RC/5Gekj4odbnAcPbsmOk5IPP6C72XnNHcNK15joD54="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/gz-common/metadata.json b/modules/gz-common/metadata.json
index 18a02141263..81615ec6dce 100644
--- a/modules/gz-common/metadata.json
+++ b/modules/gz-common/metadata.json
@@ -22,7 +22,8 @@
"6.2.0",
"6.2.1",
"7.0.0-pre1",
- "7.0.0"
+ "7.0.0",
+ "7.0.1"
],
"yanked_versions": {}
}
From b6a85ab7a4fe9dd0c6153155a7b8b8f5a53010a4 Mon Sep 17 00:00:00 2001
From: Michael Carroll
Date: Fri, 23 Jan 2026 11:16:05 -0600
Subject: [PATCH 088/367] gz-msgs@12.0.1 (#7242)
Release:
https://github.com/gazebosim/gz-msgs/releases/tag/gz-msgs12_12.0.1
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: shameekganguly <2412842+shameekganguly@users.noreply.github.com>
---
modules/gz-msgs/12.0.1/MODULE.bazel | 19 ++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 +++++++++++
modules/gz-msgs/12.0.1/presubmit.yml | 20 +++++++++++++++++++
modules/gz-msgs/12.0.1/source.json | 9 +++++++++
modules/gz-msgs/metadata.json | 3 ++-
5 files changed, 62 insertions(+), 1 deletion(-)
create mode 100644 modules/gz-msgs/12.0.1/MODULE.bazel
create mode 100644 modules/gz-msgs/12.0.1/patches/module_dot_bazel_version.patch
create mode 100644 modules/gz-msgs/12.0.1/presubmit.yml
create mode 100644 modules/gz-msgs/12.0.1/source.json
diff --git a/modules/gz-msgs/12.0.1/MODULE.bazel b/modules/gz-msgs/12.0.1/MODULE.bazel
new file mode 100644
index 00000000000..bb6e8d42285
--- /dev/null
+++ b/modules/gz-msgs/12.0.1/MODULE.bazel
@@ -0,0 +1,19 @@
+module(
+ name = "gz-msgs",
+ compatibility_level = 11,
+ version = "12.0.1",
+)
+
+bazel_dep(name = "buildifier_prebuilt", version = "8.2.1")
+bazel_dep(name = "googletest", version = "1.15.2")
+bazel_dep(name = "protobuf", version = "30.1", repo_name = "com_google_protobuf")
+bazel_dep(name = "rules_cc", version = "0.2.14")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "rules_proto", version = "7.1.0")
+bazel_dep(name = "rules_python", version = "1.0.0")
+bazel_dep(name = "tinyxml2", version = "10.0.0")
+
+# Gazebo Dependencies
+bazel_dep(name = "rules_gazebo", version = "0.0.6")
+bazel_dep(name = "gz-math", version = "9.0.0")
+bazel_dep(name = "gz-utils", version = "4.0.0")
diff --git a/modules/gz-msgs/12.0.1/patches/module_dot_bazel_version.patch b/modules/gz-msgs/12.0.1/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..061a7602479
--- /dev/null
+++ b/modules/gz-msgs/12.0.1/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,8 @@
+ module(
+ name = "gz-msgs",
+ compatibility_level = 11,
++ version = "12.0.1",
+ )
+
+ bazel_dep(name = "buildifier_prebuilt", version = "8.2.1")
+ bazel_dep(name = "googletest", version = "1.15.2")
diff --git a/modules/gz-msgs/12.0.1/presubmit.yml b/modules/gz-msgs/12.0.1/presubmit.yml
new file mode 100644
index 00000000000..b6b7de9c709
--- /dev/null
+++ b/modules/gz-msgs/12.0.1/presubmit.yml
@@ -0,0 +1,20 @@
+matrix:
+ platform:
+ - ubuntu2004
+ - macos
+ - macos_arm64
+ bazel:
+ - 8.x
+ - 7.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - '--cxxopt=-std=c++17'
+ - '--host_cxxopt=-std=c++17'
+ build_targets:
+ - '@gz-msgs'
+ - '@gz-msgs//:cmd-gz-msgs'
+ - '@gz-msgs//:gzmsgs_cc_proto'
diff --git a/modules/gz-msgs/12.0.1/source.json b/modules/gz-msgs/12.0.1/source.json
new file mode 100644
index 00000000000..69e07206011
--- /dev/null
+++ b/modules/gz-msgs/12.0.1/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-CdNXklHMingGlk+/kZDFlrWmKu7Fw/np5B8/VXi9C3w=",
+ "strip_prefix": "gz-msgs-gz-msgs12_12.0.1",
+ "url": "https://github.com/gazebosim/gz-msgs/archive/refs/tags/gz-msgs12_12.0.1.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-8jFjUAJUF2V0MPGbKUT1/6PKONbNAc1msXUrZpNgWqo="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/gz-msgs/metadata.json b/modules/gz-msgs/metadata.json
index 32554ed2ae9..5eb21eb2cd5 100644
--- a/modules/gz-msgs/metadata.json
+++ b/modules/gz-msgs/metadata.json
@@ -22,7 +22,8 @@
"11.1.0.bcr.1",
"11.1.0.bcr.2",
"12.0.0-pre1",
- "12.0.0"
+ "12.0.0",
+ "12.0.1"
],
"yanked_versions": {}
}
From e844449aefc94e2d8adb2615b8823fa16178387b Mon Sep 17 00:00:00 2001
From: Michael Carroll
Date: Fri, 23 Jan 2026 11:16:11 -0600
Subject: [PATCH 089/367] sdformat@16.0.1 (#7241)
Release:
https://github.com/gazebosim/sdformat/releases/tag/sdformat16_16.0.1
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: shameekganguly <2412842+shameekganguly@users.noreply.github.com>
---
modules/sdformat/16.0.1/MODULE.bazel | 17 +++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 ++++++++++++
modules/sdformat/16.0.1/presubmit.yml | 19 +++++++++++++++++++
modules/sdformat/16.0.1/source.json | 9 +++++++++
modules/sdformat/metadata.json | 3 ++-
5 files changed, 59 insertions(+), 1 deletion(-)
create mode 100644 modules/sdformat/16.0.1/MODULE.bazel
create mode 100644 modules/sdformat/16.0.1/patches/module_dot_bazel_version.patch
create mode 100644 modules/sdformat/16.0.1/presubmit.yml
create mode 100644 modules/sdformat/16.0.1/source.json
diff --git a/modules/sdformat/16.0.1/MODULE.bazel b/modules/sdformat/16.0.1/MODULE.bazel
new file mode 100644
index 00000000000..b879174c3f9
--- /dev/null
+++ b/modules/sdformat/16.0.1/MODULE.bazel
@@ -0,0 +1,17 @@
+module(
+ name = "sdformat",
+ compatibility_level = 0,
+ version = "16.0.1",
+)
+
+bazel_dep(name = "buildifier_prebuilt", version = "8.2.1")
+bazel_dep(name = "googletest", version = "1.14.0.bcr.1")
+bazel_dep(name = "rules_cc", version = "0.1.1")
+bazel_dep(name = "rules_python", version = "0.40.0")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(name = "tinyxml2", version = "10.0.0")
+
+# Gazebo Dependencies
+bazel_dep(name = "rules_gazebo", version = "0.0.6")
+bazel_dep(name = "gz-utils", version = "4.0.0")
+bazel_dep(name = "gz-math", version = "9.0.0")
diff --git a/modules/sdformat/16.0.1/patches/module_dot_bazel_version.patch b/modules/sdformat/16.0.1/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..5a9b48d827b
--- /dev/null
+++ b/modules/sdformat/16.0.1/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,8 @@
+ module(
+ name = "sdformat",
+ compatibility_level = 0,
++ version = "16.0.1",
+ )
+
+ bazel_dep(name = "buildifier_prebuilt", version = "8.2.1")
+ bazel_dep(name = "googletest", version = "1.14.0.bcr.1")
diff --git a/modules/sdformat/16.0.1/presubmit.yml b/modules/sdformat/16.0.1/presubmit.yml
new file mode 100644
index 00000000000..745cb8fd4e7
--- /dev/null
+++ b/modules/sdformat/16.0.1/presubmit.yml
@@ -0,0 +1,19 @@
+matrix:
+ platform:
+ - ubuntu2004
+ - macos
+ - macos_arm64
+ bazel:
+ - 8.x
+ - 7.x
+tasks:
+ verify_targets:
+ name: Verify build targets
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ build_flags:
+ - '--cxxopt=-std=c++17'
+ - '--host_cxxopt=-std=c++17'
+ build_targets:
+ - '@sdformat'
+ - '@sdformat//:urdf_parser'
diff --git a/modules/sdformat/16.0.1/source.json b/modules/sdformat/16.0.1/source.json
new file mode 100644
index 00000000000..14990f74466
--- /dev/null
+++ b/modules/sdformat/16.0.1/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-T6yJhwCvspU69fisawIh5Nm8HkYKrG1Lelw2mcRWEmw=",
+ "strip_prefix": "sdformat-sdformat16_16.0.1",
+ "url": "https://github.com/gazebosim/sdformat/archive/refs/tags/sdformat16_16.0.1.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-bDZH9PegopdABpXpW10sRh/03Zgfky47dvxohZgLARk="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/sdformat/metadata.json b/modules/sdformat/metadata.json
index c6856268083..e6ffb84c163 100644
--- a/modules/sdformat/metadata.json
+++ b/modules/sdformat/metadata.json
@@ -23,7 +23,8 @@
"15.3.0.bcr.1",
"15.3.0.bcr.2",
"16.0.0-pre2",
- "16.0.0"
+ "16.0.0",
+ "16.0.1"
],
"yanked_versions": {}
}
From fb4452b526a44566568acf4888a341c858ed64c0 Mon Sep 17 00:00:00 2001
From: Chuck Grindel
Date: Fri, 23 Jan 2026 10:58:47 -0700
Subject: [PATCH 090/367] rules_swift_package_manager@1.12.0 (#7285)
Release:
https://github.com/cgrindel/rules_swift_package_manager/releases/tag/v1.12.0
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: Chuck Grindel
---
.../1.12.0/MODULE.bazel | 90 +++++++++++++++++++
.../patches/module_dot_bazel_version.patch | 12 +++
.../1.12.0/presubmit.yml | 14 +++
.../1.12.0/source.json | 9 ++
.../rules_swift_package_manager/metadata.json | 3 +-
5 files changed, 127 insertions(+), 1 deletion(-)
create mode 100644 modules/rules_swift_package_manager/1.12.0/MODULE.bazel
create mode 100644 modules/rules_swift_package_manager/1.12.0/patches/module_dot_bazel_version.patch
create mode 100644 modules/rules_swift_package_manager/1.12.0/presubmit.yml
create mode 100644 modules/rules_swift_package_manager/1.12.0/source.json
diff --git a/modules/rules_swift_package_manager/1.12.0/MODULE.bazel b/modules/rules_swift_package_manager/1.12.0/MODULE.bazel
new file mode 100644
index 00000000000..771859d8fb6
--- /dev/null
+++ b/modules/rules_swift_package_manager/1.12.0/MODULE.bazel
@@ -0,0 +1,90 @@
+module(
+ name = "rules_swift_package_manager",
+ version = "1.12.0",
+)
+
+# MARK: - Runtime Dependencies
+
+bazel_dep(name = "cgrindel_bazel_starlib", version = "0.28.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "rules_license", version = "1.0.0")
+bazel_dep(
+ name = "rules_go",
+ version = "0.59.0",
+ repo_name = "io_bazel_rules_go",
+)
+bazel_dep(name = "rules_shell", version = "0.6.1")
+
+# The apple_support bazel_dep must come before the rules_cc.
+# https://github.com/bazelbuild/apple_support#incompatible-toolchain-resolution
+bazel_dep(name = "apple_support", version = "1.24.2")
+bazel_dep(name = "rules_cc", version = "0.2.14")
+bazel_dep(name = "platforms", version = "1.0.0")
+
+# With bzlmod enabled, any dependencies for repositories generated by
+# rules_swift_package_manager _must_ be a runtime dependency of rules_swift_package_manager.
+bazel_dep(
+ name = "rules_swift",
+ version = "3.4.1",
+ max_compatibility_level = 3,
+ repo_name = "build_bazel_rules_swift",
+)
+bazel_dep(
+ name = "rules_apple",
+ version = "4.3.3",
+ repo_name = "build_bazel_rules_apple",
+)
+bazel_dep(
+ name = "gazelle",
+ version = "0.44.0",
+ repo_name = "bazel_gazelle",
+)
+
+apple_cc_configure = use_extension(
+ "@apple_support//crosstool:setup.bzl",
+ "apple_cc_configure_extension",
+)
+use_repo(apple_cc_configure, "local_config_apple_cc")
+
+go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk")
+go_sdk.download(version = "1.24.0")
+
+go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps")
+go_deps.from_file(go_mod = "//:go.mod")
+use_repo(
+ go_deps,
+ "com_github_bazelbuild_buildtools",
+ "com_github_creasty_defaults",
+ "com_github_deckarep_golang_set_v2",
+ "com_github_spf13_cobra",
+ "com_github_stretchr_testify",
+ "in_gopkg_yaml_v3",
+ "org_golang_x_exp",
+ "org_golang_x_text",
+)
+
+# MARK: - Dev Dependencies
+
+bazel_dep(
+ name = "rules_bazel_integration_test",
+ version = "0.33.2",
+ dev_dependency = True,
+)
+bazel_dep(
+ name = "bazel_skylib_gazelle_plugin",
+ version = "1.4.1",
+ dev_dependency = True,
+)
+
+bazel_binaries = use_extension(
+ "@rules_bazel_integration_test//:extensions.bzl",
+ "bazel_binaries",
+ dev_dependency = True,
+)
+bazel_binaries.download(version_file = "//:.bazelversion")
+use_repo(
+ bazel_binaries,
+ "bazel_binaries",
+ "bazel_binaries_bazelisk",
+ "build_bazel_bazel_.bazelversion",
+)
diff --git a/modules/rules_swift_package_manager/1.12.0/patches/module_dot_bazel_version.patch b/modules/rules_swift_package_manager/1.12.0/patches/module_dot_bazel_version.patch
new file mode 100644
index 00000000000..c61e0544796
--- /dev/null
+++ b/modules/rules_swift_package_manager/1.12.0/patches/module_dot_bazel_version.patch
@@ -0,0 +1,12 @@
+===================================================================
+--- a/MODULE.bazel
++++ b/MODULE.bazel
+@@ -1,7 +1,7 @@
+ module(
+ name = "rules_swift_package_manager",
+- version = "0.0.0",
++ version = "1.12.0",
+ )
+
+ # MARK: - Runtime Dependencies
+
diff --git a/modules/rules_swift_package_manager/1.12.0/presubmit.yml b/modules/rules_swift_package_manager/1.12.0/presubmit.yml
new file mode 100644
index 00000000000..4890f9a994d
--- /dev/null
+++ b/modules/rules_swift_package_manager/1.12.0/presubmit.yml
@@ -0,0 +1,14 @@
+bcr_test_module:
+ module_path: ""
+ matrix:
+ platform: ["macos"]
+ bazel:
+ # This needs to exactly match the value used in .bazelversion at the root.
+ - 7.5.0
+ tasks:
+ run_tests:
+ name: "Run test module"
+ platform: ${{ platform }}
+ bazel: ${{ bazel }}
+ test_targets:
+ - "//bzlmod:e2e_test"
diff --git a/modules/rules_swift_package_manager/1.12.0/source.json b/modules/rules_swift_package_manager/1.12.0/source.json
new file mode 100644
index 00000000000..78a6281d898
--- /dev/null
+++ b/modules/rules_swift_package_manager/1.12.0/source.json
@@ -0,0 +1,9 @@
+{
+ "integrity": "sha256-kMYeRIsWOKffdWJ9cJ7WWjkO5A876Fs9Px2et6HHnYw=",
+ "strip_prefix": "",
+ "url": "https://github.com/cgrindel/rules_swift_package_manager/releases/download/v1.12.0/rules_swift_package_manager.v1.12.0.tar.gz",
+ "patches": {
+ "module_dot_bazel_version.patch": "sha256-mYe8NWfJkgPhHwjWf3K0PCtaHMZZcGxmuqJw8lBmGH0="
+ },
+ "patch_strip": 1
+}
diff --git a/modules/rules_swift_package_manager/metadata.json b/modules/rules_swift_package_manager/metadata.json
index 6d8316fad37..6512320d98b 100644
--- a/modules/rules_swift_package_manager/metadata.json
+++ b/modules/rules_swift_package_manager/metadata.json
@@ -78,7 +78,8 @@
"1.10.0",
"1.11.0",
"1.11.1",
- "1.11.3"
+ "1.11.3",
+ "1.12.0"
],
"yanked_versions": {}
}
From d63291398111130897865b94275b2fa25f7e9f9a Mon Sep 17 00:00:00 2001
From: Corentin Kerisit
Date: Fri, 23 Jan 2026 19:34:14 +0100
Subject: [PATCH 091/367] Publish toolchains_llvm_bootstrapped@0.4.1 (#7288)
Release:
https://github.com/cerisier/toolchains_llvm_bootstrapped/releases/tag/0.4.1
_Automated by [Publish to
BCR](https://github.com/bazel-contrib/publish-to-bcr)_
Co-authored-by: cerisier <1126594+cerisier@users.noreply.github.com>
---
.../0.4.1/MODULE.bazel | 176 ++++++++++++++++++
.../0.4.1/attestations.json | 17 ++
.../0.4.1/presubmit.yml | 13 ++
.../0.4.1/source.json | 5 +
.../metadata.json | 9 +-
5 files changed, 219 insertions(+), 1 deletion(-)
create mode 100644 modules/toolchains_llvm_bootstrapped/0.4.1/MODULE.bazel
create mode 100644 modules/toolchains_llvm_bootstrapped/0.4.1/attestations.json
create mode 100644 modules/toolchains_llvm_bootstrapped/0.4.1/presubmit.yml
create mode 100644 modules/toolchains_llvm_bootstrapped/0.4.1/source.json
diff --git a/modules/toolchains_llvm_bootstrapped/0.4.1/MODULE.bazel b/modules/toolchains_llvm_bootstrapped/0.4.1/MODULE.bazel
new file mode 100644
index 00000000000..cd39f81b739
--- /dev/null
+++ b/modules/toolchains_llvm_bootstrapped/0.4.1/MODULE.bazel
@@ -0,0 +1,176 @@
+module(
+ name = "toolchains_llvm_bootstrapped",
+ version = "0.4.1",
+ bazel_compatibility = [">=7.4.0"],
+ compatibility_level = 0,
+)
+
+bazel_dep(name = "bazel_lib", version = "3.0.0")
+bazel_dep(name = "bazel_skylib", version = "1.8.2")
+bazel_dep(name = "bazel_features", version = "1.34.0")
+bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "rules_cc", version = "0.2.16")
+bazel_dep(name = "rules_shell", version = "0.6.1")
+bazel_dep(name = "with_cfg.bzl", version = "0.12.0")
+bazel_dep(name = "tar.bzl", version = "0.6.0")
+
+bazel_dep(name = "buildifier_prebuilt", version = "8.2.1", dev_dependency = True)
+bazel_dep(name = "bazelrc-preset.bzl", version = "1.6.0", dev_dependency = True)
+
+http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+LLVM_VERSION = "21.1.8"
+PREBUILT_LLVM_SUFFIX = "-3"
+
+LLVM_TOOLCHAIN_MINIMAL_SHA256 = {
+ "darwin-arm64": "680ac53e1b0e47b39970a92351f719e2c6608dbe767ab9aaa011cc69f21a2e69",
+ "linux-amd64-musl": "69ace4e9c71ce74d827b4cf182a3c886d8abad48dbf0acceba20397b5d100a26",
+ "linux-arm64-musl": "8cdb101e50585371498b1215eaa76d90d953c6ae27ab17936037ee21f365c533",
+ "windows-amd64": "bdbe6a839f05af341e5f2a82d3248f7b9055d1e6987f766f2b25c1119498390b",
+ "windows-arm64": "f24b0527c1de96877725e90ed4707d39de200641136a982196dc35fe02a1b3b1",
+}
+
+[
+ http_archive(
+ name = "llvm-toolchain-minimal-{llvm_version}-{target}".format(
+ llvm_version = LLVM_VERSION,
+ target = target.replace("-musl", "").replace("-gnu", ""),
+ ),
+ build_file = "//toolchain/llvm:BUILD.llvm_release.tpl" if "windows" not in target else "//toolchain/llvm:BUILD.llvm_release_windows.tpl",
+ sha256 = sha256,
+ urls = ["https://github.com/cerisier/toolchains_llvm_bootstrapped/releases/download/llvm-{llvm_version}{prebuilt_llvm_suffix}/llvm-toolchain-minimal-{llvm_version}-{target}.tar.zst".format(
+ llvm_version = LLVM_VERSION,
+ prebuilt_llvm_suffix = PREBUILT_LLVM_SUFFIX,
+ target = target,
+ )],
+ )
+ for (target, sha256) in LLVM_TOOLCHAIN_MINIMAL_SHA256.items()
+]
+
+LLVM_TOOLCHAIN_EXTRAS_SHA256 = {
+ "darwin-arm64": "a50386d09cf70ea6c6a9b30b8d04be48de96d97ca73e5cbe2320dfad93b77efd",
+ "linux-amd64-musl": "034044d9284e3142604d793e8b20dffdd8a46af42db9094d5043b802748902cb",
+ "linux-arm64-musl": "98357273d7bc7e6b4d04648e9a7bdd6220b11e129ad2eca581a7c7b8d980ed1e",
+ "windows-amd64-gnu": "39782cb163129e20faf26a1e52391b4c97999e2d59cfdb7a09873117855143e2",
+ "windows-arm64-gnu": "c5b7188a7c6582292a2c2800089cbdb2b4b240c6ad790b4d0074b3507457f0d9",
+}
+
+VERSION = "20251219"
+
+[
+ http_archive(
+ name = "prebuilts-extras-toolchain-artifacts-{target}".format(target = target.replace("-musl", "").replace("-gnu", "")),
+ build_file = "//prebuilt/extras:BUILD.extras.tpl",
+ sha256 = sha256,
+ urls = ["https://github.com/cerisier/toolchains_llvm_bootstrapped/releases/download/prebuilts-extras-{version}/toolchain-extra-prebuilts-{version}-{target}.tar.zst".format(
+ target = target,
+ version = VERSION,
+ )],
+ )
+ for (target, sha256) in LLVM_TOOLCHAIN_EXTRAS_SHA256.items()
+]
+
+LLVM_RELEASE_ASSETS_SHA256 = {
+ "compiler-rt": "dd54ae21aee1780fac59445b51ebff601ad016b31ac3a7de3b21126fd3ccb229",
+ "libcxx": "6422a58a5c29b7f4fda224cfdc07842be8a208a61301bbba7a219116e3351809",
+ "libcxxabi": "709c9a63bde1e36a80d8675becc38073b85f0fa1b4111e34542b885c9e1239da",
+ "libunwind": "03e8adc6c3bdde657dcaedc94886ea70d1f7d551d622fcd8a36a8300e5c36cbc",
+}
+
+[
+ http_archive(
+ name = name,
+ build_file = "//third_party/llvm-project/20.x/{name}:BUILD.tpl".format(name = name),
+ patch_args = ["-p1"],
+ patches = ["//third_party/llvm-project/20.x/libcxx:lgamma_r.patch"] if name == "libcxx" else [],
+ sha256 = sha256,
+ strip_prefix = "{name}-{llvm_version}.src".format(
+ name = name,
+ llvm_version = LLVM_VERSION,
+ ),
+ urls = ["https://github.com/llvm/llvm-project/releases/download/llvmorg-{llvm_version}/{name}-{llvm_version}.src.tar.xz".format(
+ name = name,
+ llvm_version = LLVM_VERSION,
+ )],
+ )
+ for (name, sha256) in LLVM_RELEASE_ASSETS_SHA256.items()
+]
+
+musl = use_extension("//runtimes/musl/extension:musl.bzl", "musl")
+use_repo(musl, "musl_libc")
+
+mingw = use_extension("//runtimes/mingw/extension:mingw.bzl", "mingw")
+use_repo(mingw, "mingw")
+
+osx = use_extension("//toolchain/extension:osx.bzl", "osx")
+use_repo(osx, "macosx15.4.sdk")
+
+glibc = use_extension("//runtimes/glibc/extension:glibc.bzl", "glibc")
+
+# https://cerisier.github.io/glibc-headers/index.json
+glibc.index(file = "//runtimes/glibc/extension:glibc_headers_index.json")
+use_repo(glibc, "glibc")
+
+kernel_headers = use_extension("//kernel/extension:kernel_headers.bzl", "kernel_headers")
+
+# https://cerisier.github.io/kernel-headers/index.json
+kernel_headers.index(file = "//kernel/extension:kernel_headers_index.json")
+use_repo(kernel_headers, "kernel_headers")
+
+## DEV DEPENDENCIES
+GLIBC_STUBS_GENERATOR_COMMIT = "33276300351d5a3cbedd308f4d21669b8e8ef83d"
+
+bazel_dep(name = "glibc-stubs-generator", version = "2.0.1", dev_dependency = True)
+archive_override(
+ module_name = "glibc-stubs-generator",
+ integrity = "sha256-q7bwGW3nRigiGuXj/2kIZMi/LFCHZpVbMD/kRdllLCg=",
+ strip_prefix = "glibc-stubs-generator-{}".format(GLIBC_STUBS_GENERATOR_COMMIT),
+ urls = ["https://github.com/cerisier/glibc-stubs-generator/archive/{}.tar.gz".format(GLIBC_STUBS_GENERATOR_COMMIT)],
+)
+
+LIBSTDCXX_STUBS_GENERATOR_COMMIT = "ed896a140ef8466140c3bcfd066e710a80a41ebe"
+
+bazel_dep(name = "libstdcxx-stubs-generator", version = "0.0.1", dev_dependency = True)
+archive_override(
+ module_name = "libstdcxx-stubs-generator",
+ integrity = "sha256-OAZfeifniTQmKit60qHpZanOLLIJVyYEiMlpN5Q7Fjw=",
+ strip_prefix = "libstdcxx-stubs-generator-{}".format(LIBSTDCXX_STUBS_GENERATOR_COMMIT),
+ urls = ["https://github.com/cerisier/libstdcxx-stubs-generator/archive/{}.tar.gz".format(LIBSTDCXX_STUBS_GENERATOR_COMMIT)],
+)
+
+llvm_raw = use_extension("//:llvm_raw.bzl", "llvm_raw")
+use_repo(llvm_raw, "llvm-raw", "llvm_zlib", "llvm_zstd")
+
+llvm = use_extension("//:llvm.bzl", "llvm")
+llvm.configure(
+ targets = [
+ "AArch64",
+ "X86",
+ "WebAssembly",
+ ],
+)
+use_repo(llvm, "llvm-project")
+
+## OVERRIDES PORTS FROM DEPENDENCIES
+
+RULES_ZIG_COMMIT = "b9739c615ce62b64ee595ac4bcd9ee7cc06b0422" # branch=zml
+
+bazel_dep(name = "rules_zig", version = "0.12.2", dev_dependency = True)
+
+zig = use_extension("@rules_zig//zig:extensions.bzl", "zig", dev_dependency = True)
+zig.index(file = "//:zig_index.json")
+zig.toolchain(zig_version = "0.14.0")
+zig.mirrors(urls = [
+ "https://mirror.zml.ai/zig",
+])
+use_repo(zig, "zig_toolchains")
+
+register_toolchains(
+ "@rules_zig//zig/target:all",
+ dev_dependency = True,
+)
+
+register_toolchains(
+ "@zig_toolchains//:all",
+ dev_dependency = True,
+)
diff --git a/modules/toolchains_llvm_bootstrapped/0.4.1/attestations.json b/modules/toolchains_llvm_bootstrapped/0.4.1/attestations.json
new file mode 100644
index 00000000000..380fc5a8ac9
--- /dev/null
+++ b/modules/toolchains_llvm_bootstrapped/0.4.1/attestations.json
@@ -0,0 +1,17 @@
+{
+ "mediaType": "application/vnd.build.bazel.registry.attestation+json;version=1.0.0",
+ "attestations": {
+ "source.json": {
+ "url": "https://github.com/cerisier/toolchains_llvm_bootstrapped/releases/download/0.4.1/source.json.intoto.jsonl",
+ "integrity": "sha256-hANljy3MCm8OMkzhxMkSTunkkhSBByDK26gNBviw9SI="
+ },
+ "MODULE.bazel": {
+ "url": "https://github.com/cerisier/toolchains_llvm_bootstrapped/releases/download/0.4.1/MODULE.bazel.intoto.jsonl",
+ "integrity": "sha256-oQBhsTHojw5TspywJGPfr8R8MWeLpPNWr6bp6wlvWYM="
+ },
+ "toolchains_llvm_bootstrapped-0.4.1.tar.gz": {
+ "url": "https://github.com/cerisier/toolchains_llvm_bootstrapped/releases/download/0.4.1/toolchains_llvm_bootstrapped-0.4.1.tar.gz.intoto.jsonl",
+ "integrity": "sha256-+y2ESj6Y96daX+m0i7fOpdl8Lz9tk7LCMhfp4VmXOlc="
+ }
+ }
+}
diff --git a/modules/toolchains_llvm_bootstrapped/0.4.1/presubmit.yml b/modules/toolchains_llvm_bootstrapped/0.4.1/presubmit.yml
new file mode 100644
index 00000000000..5c711cfec15
--- /dev/null
+++ b/modules/toolchains_llvm_bootstrapped/0.4.1/presubmit.yml
@@ -0,0 +1,13 @@
+bcr_test_module:
+ module_path: .
+ matrix:
+ bazel: [8.x, 9.*]
+ # Add macos_arm64 back when we support sdk discovery
+ platform: [debian11, ubuntu2004]
+ tasks:
+ run_test_module:
+ name: Run test module
+ bazel: ${{ bazel }}
+ platform: ${{ platform }}
+ build_targets:
+ - //:all
diff --git a/modules/toolchains_llvm_bootstrapped/0.4.1/source.json b/modules/toolchains_llvm_bootstrapped/0.4.1/source.json
new file mode 100644
index 00000000000..793f747d1fa
--- /dev/null
+++ b/modules/toolchains_llvm_bootstrapped/0.4.1/source.json
@@ -0,0 +1,5 @@
+{
+ "integrity": "sha256-BFwsXnqm+ddbJXxTjYFtj3wCGUk6ighzx7di92gT6Ac=",
+ "strip_prefix": "toolchains_llvm_bootstrapped-0.4.1",
+ "url": "https://github.com/cerisier/toolchains_llvm_bootstrapped/releases/download/0.4.1/toolchains_llvm_bootstrapped-0.4.1.tar.gz"
+}
diff --git a/modules/toolchains_llvm_bootstrapped/metadata.json b/modules/toolchains_llvm_bootstrapped/metadata.json
index 07541658776..5a1e08db182 100644
--- a/modules/toolchains_llvm_bootstrapped/metadata.json
+++ b/modules/toolchains_llvm_bootstrapped/metadata.json
@@ -6,6 +6,12 @@
"email": "corentin.kerisit@gmail.com",
"github": "cerisier",
"github_user_id": 1126594
+ },
+ {
+ "name": "David Zbarsky",
+ "email": "dzbarsky@gmail.com",
+ "github": "dzbarsky",
+ "github_user_id": 1565842
}
],
"repository": [
@@ -18,7 +24,8 @@
"0.2.3",
"0.2.4",
"0.2.5",
- "0.3.1"
+ "0.3.1",
+ "0.4.1"
],
"yanked_versions": {}
}
From 4457d106032e0cb5f7ea4dfd1f8dead5d8afb6f6 Mon Sep 17 00:00:00 2001
From: Marcel
Date: Fri, 23 Jan 2026 19:49:24 +0100
Subject: [PATCH 092/367] Update roboticslibrary.rl for boost 1.89.0.bcr.2
(#7287)
---
.../0.0.0-20250723-5bbd773.bcr.4/MODULE.bazel | 17 ++
.../overlay/BUILD.bazel | 237 ++++++++++++++++++
.../overlay/MODULE.bazel | 17 ++
.../patches/clamp_dot_bzl.patch | 17 ++
.../patches/fixed_size_vector_dot_bzl.patch | 26 ++
.../presubmit.yml | 41 +++
.../0.0.0-20250723-5bbd773.bcr.4/source.json | 14 ++
modules/roboticslibrary.rl/metadata.json | 3 +-
8 files changed, 371 insertions(+), 1 deletion(-)
create mode 100644 modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/MODULE.bazel
create mode 100644 modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/overlay/BUILD.bazel
create mode 100644 modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/overlay/MODULE.bazel
create mode 100644 modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/patches/clamp_dot_bzl.patch
create mode 100644 modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/patches/fixed_size_vector_dot_bzl.patch
create mode 100644 modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/presubmit.yml
create mode 100644 modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/source.json
diff --git a/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/MODULE.bazel b/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/MODULE.bazel
new file mode 100644
index 00000000000..24ae4235bfe
--- /dev/null
+++ b/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/MODULE.bazel
@@ -0,0 +1,17 @@
+module(
+ name = "roboticslibrary.rl",
+ version = "0.0.0-20250723-5bbd773.bcr.4",
+ bazel_compatibility = [">=7.2.1"],
+ compatibility_level = 0,
+)
+
+bazel_dep(name = "abseil-cpp", version = "20250127.1")
+bazel_dep(name = "boost.algorithm", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.dynamic_bitset", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.graph", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.iostreams", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.lexical_cast", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.optional", version = "1.89.0.bcr.2")
+bazel_dep(name = "eigen", version = "3.4.0.bcr.3")
+bazel_dep(name = "rules_cc", version = "0.2.4")
+bazel_dep(name = "rules_license", version = "1.0.0")
diff --git a/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/overlay/BUILD.bazel b/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/overlay/BUILD.bazel
new file mode 100644
index 00000000000..0d2fdaf1d69
--- /dev/null
+++ b/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/overlay/BUILD.bazel
@@ -0,0 +1,237 @@
+load("@rules_cc//cc:cc_test.bzl", "cc_test")
+load("@rules_cc//cc:defs.bzl", "cc_library")
+load("@rules_license//rules:license.bzl", "license")
+
+package(
+ default_applicable_licenses = [":license"],
+ default_visibility = ["//visibility:public"],
+)
+
+exports_files(["LICENSE"])
+
+licenses(["notice"])
+
+license(
+ name = "license",
+ package_name = "roboticslibrary",
+ license_kinds = [
+ "@rules_license//licenses/spdx:BSD-2-Clause",
+ ],
+ license_text = "LICENSE",
+)
+
+cc_library(
+ name = "math",
+ hdrs = glob(
+ ["src/rl/math/**/*.h*"],
+ exclude = [
+ "src/rl/math/*Addons.h",
+ "src/rl/math/metrics/*.h",
+ "src/rl/math/spatial/*.hxx",
+ ],
+ ),
+ copts = [
+ "-Wno-unused-variable",
+ "-fexceptions",
+ ],
+ includes = ["src"],
+ textual_hdrs = glob(["src/rl/math/**/*.h*"]),
+ deps = [
+ "@boost.optional",
+ "@eigen",
+ ],
+)
+
+cc_library(
+ name = "util",
+ srcs = glob(["src/rl/util/*.cpp"]),
+ hdrs = glob(["src/rl/util/*.h"]),
+ copts = ["-fexceptions"],
+ includes = ["src"],
+)
+
+cc_library(
+ name = "hal",
+ srcs = glob(
+ ["src/rl/hal/*.cpp"],
+ exclude = [
+ "src/rl/hal/Ati.cpp",
+ "src/rl/hal/HilscherCifx.cpp",
+ "src/rl/hal/Comedi.cpp",
+ "src/rl/hal/Jr3.cpp",
+ "src/rl/hal/Dc1394Camera.cpp",
+ ],
+ ),
+ hdrs = glob(
+ ["src/rl/hal/*.h"],
+ exclude = [
+ "src/rl/hal/Ati.h",
+ "src/rl/hal/HilscherCifx.h",
+ "src/rl/hal/Comedi.h",
+ "src/rl/hal/Jr3.h",
+ "src/rl/hal/Dc1394Camera.h",
+ ],
+ ),
+ copts = [
+ "-Wno-return-type",
+ "-Wno-sign-compare",
+ "-Wno-unused-variable",
+ "-Wno-overloaded-virtual",
+ "-Wno-implicit-fallthrough",
+ "-DHAVE_LITTLE_ENDIAN", # We assume x86.
+ "-fexceptions",
+ ],
+ includes = ["src"],
+ deps = [
+ ":math",
+ "@boost.algorithm",
+ "@boost.dynamic_bitset",
+ "@boost.iostreams",
+ "@boost.lexical_cast",
+ "@boost.optional",
+ ],
+)
+
+cc_library(
+ name = "mdl",
+ srcs = glob(
+ ["src/rl/mdl/*.cpp"],
+ exclude = [
+ "src/rl/mdl/NloptInverseKinematics.cpp",
+ "src/rl/mdl/XmlFactory.cpp",
+ "src/rl/mdl/UrdfFactory.cpp",
+ ],
+ ),
+ hdrs = glob(
+ ["src/rl/mdl/*.h"],
+ exclude = [
+ "src/rl/mdl/NloptInverseKinematics.h",
+ "src/rl/mdl/XmlFactory.h",
+ "src/rl/mdl/UrdfFactory.h",
+ ],
+ ),
+ copts = [
+ "-Wno-sign-compare",
+ "-fexceptions",
+ ],
+ defines = ["RL_BUILD_MDL_NLOPT=0"],
+ includes = ["src"],
+ deps = [
+ ":math",
+ "@abseil-cpp//absl/container:node_hash_map",
+ "@abseil-cpp//absl/container:node_hash_set",
+ "@abseil-cpp//absl/log",
+ "@boost.algorithm",
+ "@boost.graph",
+ "@boost.lexical_cast",
+ ],
+)
+
+# Functionality Tests
+cc_test(
+ name = "rlCircularTest",
+ srcs = ["tests/rlCircularTest/rlCircularTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlMathDeltaTest",
+ srcs = ["tests/rlMathDeltaTest/rlMathDeltaTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlEuclideanCrossProductTest",
+ srcs = ["tests/rlSpatialTest/rlEuclideanCrossProductTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlSpatialArticulatedBodyInertiaTest",
+ srcs = ["tests/rlSpatialTest/rlSpatialArticulatedBodyInertiaTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlSpatialCrossProductTest",
+ srcs = ["tests/rlSpatialTest/rlSpatialCrossProductTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlSpatialDotProductTest",
+ srcs = ["tests/rlSpatialTest/rlSpatialDotProductTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlSpatialForceVectorTest",
+ srcs = ["tests/rlSpatialTest/rlSpatialForceVectorTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlSpatialMotionVectorTest",
+ srcs = ["tests/rlSpatialTest/rlSpatialMotionVectorTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlSpatialPlueckerTransformTest",
+ srcs = ["tests/rlSpatialTest/rlSpatialPlueckerTransformTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlSpatialRigidBodyInertiaTest",
+ srcs = ["tests/rlSpatialTest/rlSpatialRigidBodyInertiaTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlPolynomialExtremaTest",
+ srcs = ["tests/rlSplineTest/rlPolynomialExtremaTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlPolynomialTest",
+ srcs = ["tests/rlSplineTest/rlPolynomialTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlQuarticLinearQuarticTest",
+ srcs = ["tests/rlSplineTest/rlQuarticLinearQuarticTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlSexticLinearSexticTest",
+ srcs = ["tests/rlSplineTest/rlSexticLinearSexticTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlSplineScaleTest",
+ srcs = ["tests/rlSplineTest/rlSplineScaleTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlSplineTest",
+ srcs = ["tests/rlSplineTest/rlSplineTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlTrapezoidalAccelerationTest",
+ srcs = ["tests/rlSplineTest/rlTrapezoidalAccelerationTest.cpp"],
+ deps = [":math"],
+)
+
+cc_test(
+ name = "rlHalEndianTest",
+ srcs = ["tests/rlHalEndianTest/rlHalEndianTest.cpp"],
+ deps = [":hal"],
+)
diff --git a/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/overlay/MODULE.bazel b/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/overlay/MODULE.bazel
new file mode 100644
index 00000000000..24ae4235bfe
--- /dev/null
+++ b/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/overlay/MODULE.bazel
@@ -0,0 +1,17 @@
+module(
+ name = "roboticslibrary.rl",
+ version = "0.0.0-20250723-5bbd773.bcr.4",
+ bazel_compatibility = [">=7.2.1"],
+ compatibility_level = 0,
+)
+
+bazel_dep(name = "abseil-cpp", version = "20250127.1")
+bazel_dep(name = "boost.algorithm", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.dynamic_bitset", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.graph", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.iostreams", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.lexical_cast", version = "1.89.0.bcr.2")
+bazel_dep(name = "boost.optional", version = "1.89.0.bcr.2")
+bazel_dep(name = "eigen", version = "3.4.0.bcr.3")
+bazel_dep(name = "rules_cc", version = "0.2.4")
+bazel_dep(name = "rules_license", version = "1.0.0")
diff --git a/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/patches/clamp_dot_bzl.patch b/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/patches/clamp_dot_bzl.patch
new file mode 100644
index 00000000000..10ba21af594
--- /dev/null
+++ b/modules/roboticslibrary.rl/0.0.0-20250723-5bbd773.bcr.4/patches/clamp_dot_bzl.patch
@@ -0,0 +1,17 @@
+--- src/rl/math/algorithm.h
++++ src/rl/math/algorithm.h
+@@ -58,10 +58,10 @@ namespace rl
+ template
+ inline const T& clamp(const T& v, const T& lo, const T& hi)
+ {
+- return clamp(v, lo, hi, ::std::less());
+- }
+-
+- template
++ return ::rl::math::clamp(v, lo, hi, ::std::less