From c7df923af546490d0335696e0136e80665bc29a3 Mon Sep 17 00:00:00 2001 From: Zac Codiamat Date: Mon, 15 Dec 2025 13:35:26 -0600 Subject: [PATCH] SERVER-114734 Add extension_options configurations to archive-dist-test tarball (#45207) GitOrigin-RevId: 6c0384d3ce0c9951acda90fdc98a3be7ce358956 --- BUILD.bazel | 6 +++ .../db/extension/test_examples/BUILD.bazel | 38 +++++++++++++++++++ .../aggregation_stage_fallback_parsers.json | 0 .../db/extension/test_examples/gen_conf.py | 20 ++++++++++ 4 files changed, 64 insertions(+) mode change 100644 => 100755 src/mongo/db/extension/test_examples/aggregation_stage_fallback_parsers.json create mode 100644 src/mongo/db/extension/test_examples/gen_conf.py diff --git a/BUILD.bazel b/BUILD.bazel index 37c2e18998b..5b98306624f 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -313,6 +313,12 @@ mongo_install( "//src/mongo/db/shard_role/lock_manager:lock_gdb_test.py": "//src/mongo/db:mongod", "//src/mongo/db/query/stage_builder/sbe/abt:optimizer_gdb_test.py": "//src/mongo/db/query/stage_builder/sbe/abt:optimizer_gdb_test_program", }, + root_files = select({ + "@platforms//os:linux": { + "//src/mongo/db/extension/test_examples:extension_options_configs": "etc/mongo/extensions", + }, + "//conditions:default": {}, + }), try_zstd = True, deps = [ "//src/mongo/db/modules/enterprise:dist-test", diff --git a/src/mongo/db/extension/test_examples/BUILD.bazel b/src/mongo/db/extension/test_examples/BUILD.bazel index 3c16e0f8362..e03e686482c 100644 --- a/src/mongo/db/extension/test_examples/BUILD.bazel +++ b/src/mongo/db/extension/test_examples/BUILD.bazel @@ -1,5 +1,6 @@ load("//bazel/install_rules:install_rules.bzl", "extensions_with_config") load("//bazel:mongo_src_rules.bzl", "mongo_cc_extension_shared_library") +load("@poetry//:dependencies.bzl", "dependency") package(default_visibility = ["//visibility:public"]) @@ -91,6 +92,43 @@ pkg_name = "//" + package_name() + "/" ] ] +py_binary( + name = "gen_conf", + srcs = [":gen_conf.py"], + data = ["configurations.yml"], + deps = [ + dependency( + "pyyaml", + group = "core", + ), + ], +) + +[ + genrule( + name = extension_name + "_conf", + srcs = ["configurations.yml"], + outs = [extension_name + ".conf"], + cmd = "$(location :gen_conf) $(OUTS) $(SRCS) " + extension_name, + tools = [":gen_conf"], + ) + for extension_name in [ + "test_options", + "parse_options", + "toaster", + ] +] + +filegroup( + name = "extension_options_configs", + srcs = [ + "parse_options_conf", + "test_options_conf", + "toaster_conf", + ":aggregation_stage_fallback_parsers.json", + ], +) + # Extensions under test_examples/extension_options/ [ mongo_cc_extension_shared_library( diff --git a/src/mongo/db/extension/test_examples/aggregation_stage_fallback_parsers.json b/src/mongo/db/extension/test_examples/aggregation_stage_fallback_parsers.json old mode 100644 new mode 100755 diff --git a/src/mongo/db/extension/test_examples/gen_conf.py b/src/mongo/db/extension/test_examples/gen_conf.py new file mode 100644 index 00000000000..d93d1cd97a2 --- /dev/null +++ b/src/mongo/db/extension/test_examples/gen_conf.py @@ -0,0 +1,20 @@ +import sys + +import yaml + + +def get_extension_confs(file_path, extension_name): + with open(file_path, "r") as file: + data = yaml.safe_load(file) + return data["extensions"][extension_name] + + +if __name__ == "__main__": + output = sys.argv[1] + conf_file = sys.argv[2] + extension_name = sys.argv[3] + conf_data = get_extension_confs(conf_file, extension_name) + new_conf = dict(conf_data) + new_conf["sharedLibraryPath"] = f"lib/lib{extension_name}_mongo_extension.so" + with open(output, "w") as stream: + yaml.dump(new_conf, stream)