From 0d7bf7e8a76c5247909784e2128e83028d3836dd Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 22 Jan 2025 01:53:46 +0100 Subject: [PATCH] Add support for Bzlmod (#8494) --- .gitignore | 1 - BUILD.bazel | 1 + MODULE.bazel | 78 +++++++++++++++++-- extensions.bzl | 19 +++++ .../ts/bazel_repository_test_dir/MODULE.bazel | 24 ++++++ 5 files changed, 116 insertions(+), 7 deletions(-) create mode 100644 extensions.bzl create mode 100644 tests/ts/bazel_repository_test_dir/MODULE.bazel diff --git a/.gitignore b/.gitignore index 56203cde2..0296f8fac 100644 --- a/.gitignore +++ b/.gitignore @@ -153,7 +153,6 @@ cmake-build-debug/ _deps/ **/.gradle/** kotlin/**/generated -MODULE.bazel MODULE.bazel.lock # Ignore the generated docs diff --git a/BUILD.bazel b/BUILD.bazel index 98990f8a8..0f9983955 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -31,6 +31,7 @@ filegroup( ".bazelignore", ".npmrc", "BUILD.bazel", + "MODULE.bazel", "WORKSPACE", "build_defs.bzl", "package.json", diff --git a/MODULE.bazel b/MODULE.bazel index 00bb18361..eaa36c6e2 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -1,6 +1,72 @@ -############################################################################### -# 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 = "flatbuffers", + version = "24.3.25", + compatibility_level = 1, + repo_name = "com_github_google_flatbuffers", +) + +bazel_dep( + name = "aspect_bazel_lib", + version = "1.40.0", +) +bazel_dep( + name = "aspect_rules_esbuild", + version = "0.15.0", +) +bazel_dep( + name = "aspect_rules_js", + version = "1.34.1", +) +bazel_dep( + name = "aspect_rules_ts", + version = "1.4.5", +) +bazel_dep( + name = "grpc", + version = "1.48.1", + repo_name = "com_github_grpc_grpc", +) +bazel_dep( + name = "platforms", + version = "0.0.7", +) +bazel_dep( + name = "rules_cc", + version = "0.0.9", +) +bazel_dep( + name = "rules_go", + version = "0.41.0", + repo_name = "io_bazel_rules_go", +) +bazel_dep( + name = "rules_nodejs", + version = "5.8.3", +) +bazel_dep( + name = "rules_swift", + version = "1.2.0", + repo_name = "build_bazel_rules_swift", +) + +npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm") +npm.npm_translate_lock( + name = "npm", + npmrc = "//:.npmrc", + pnpm_lock = "//:pnpm-lock.yaml", + verify_node_modules_ignored = "//:.bazelignore", +) +use_repo(npm, "npm") + +node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") +use_repo(node, "nodejs_linux_amd64") + +rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext", dev_dependency = True) +rules_ts_ext.deps() +use_repo(rules_ts_ext, "npm_typescript") + +non_module_dependencies = use_extension("//:extensions.bzl", "non_module_dependencies", dev_dependency = True) +use_repo( + non_module_dependencies, + "bazel_linux_x86_64", +) diff --git a/extensions.bzl b/extensions.bzl new file mode 100644 index 000000000..c5865af29 --- /dev/null +++ b/extensions.bzl @@ -0,0 +1,19 @@ +"""Bzlmod extensions""" + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") + +def _non_module_dependencies_impl(_ctx): + """Non module dependencies""" + http_file( + name = "bazel_linux_x86_64", + downloaded_file_path = "bazel", + executable = True, + sha256 = "e78fc3394deae5408d6f49a15c7b1e615901969ecf6e50d55ef899996b0b8458", + urls = [ + "https://github.com/bazelbuild/bazel/releases/download/6.3.2/bazel-6.3.2-linux-x86_64", + ], + ) + +non_module_dependencies = module_extension( + implementation = _non_module_dependencies_impl, +) diff --git a/tests/ts/bazel_repository_test_dir/MODULE.bazel b/tests/ts/bazel_repository_test_dir/MODULE.bazel new file mode 100644 index 000000000..5aae272be --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/MODULE.bazel @@ -0,0 +1,24 @@ +module(name = "bazel_repository_test") + +bazel_dep(name = "flatbuffers", repo_name = "com_github_google_flatbuffers") + +local_path_override( + module_name = "com_github_google_flatbuffers", + path = "../../../", +) + +npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm") +npm.npm_translate_lock( + name = "npm", + npmrc = "//:.npmrc", + pnpm_lock = "//:pnpm-lock.yaml", + verify_node_modules_ignored = "//:.bazelignore", +) +use_repo(npm, "npm") + +node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") +use_repo(node, "nodejs_linux_amd64") + +rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext", dev_dependency = True) +rules_ts_ext.deps() +use_repo(rules_ts_ext, "npm_typescript")