From 178a00309e47f3d639ae2aa52cc57266d6320b2a Mon Sep 17 00:00:00 2001 From: yuanweiz Date: Tue, 23 Dec 2025 12:10:06 -0800 Subject: [PATCH] [bzlmod] Add check to ensure requested versions match selected versions. (#41244) Bzlmod uses Minimal Version Selection algorithm for building dependency graph (see https://bazel.build/external/module#version-selection) which can cause resolved version number to be higher than requested versions. This may lead to nuanced bugs and hide behavioral differences between WORKSPACE and MODULE.bazel settings. This PR does a few things: * explicitly turn on --check_direct_dependencies=error for bzlmod tests, so version mismatch will now be an error * Bump versions in MODULE.bazel to fix tests in `tools/bazelify_tests/test/bazel_build_with_bzlmod_linux.sh`. * update bzl extensions accordingly to minimize the difference between workspace and bzlmod settings. Closes #41244 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/41244 from yuanweiz:direct_deps dd43d3007e8c88be1fc59cc895d832e430421d97 PiperOrigin-RevId: 848257936 --- MODULE.bazel | 8 ++++---- bazel/grpc_deps.bzl | 20 ++++++++++---------- templates/MODULE.bazel.inja | 8 ++++---- tools/remote_build/linux_bzlmod.bazelrc | 1 + 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 677cb79cc4..5cee8fff87 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -24,7 +24,7 @@ module( bazel_dep(name = "abseil-cpp", version = "20250512.1", repo_name = "com_google_absl") bazel_dep(name = "apple_support", version = "1.17.1", repo_name = "build_bazel_apple_support") -bazel_dep(name = "bazel_skylib", version = "1.7.1") +bazel_dep(name = "bazel_skylib", version = "1.8.1") bazel_dep(name = "boringssl", version = "0.20241024.0") # mistmatched 20241211 bazel_dep(name = "c-ares", version = "1.19.1", repo_name = "com_github_cares_cares") bazel_dep(name = "envoy_api", version = "0.0.0-20250128-4de3c74") @@ -33,12 +33,12 @@ bazel_dep(name = "googletest", version = "1.17.0", repo_name = "com_google_googl bazel_dep(name = "opencensus-cpp", version = "0.0.0-20230502-50eb5de.bcr.2", repo_name = "io_opencensus_cpp") bazel_dep(name = "openssl", version = "3.3.1.bcr.1") bazel_dep(name = "opentelemetry-cpp", version = "1.19.0", repo_name = "io_opentelemetry_cpp") -bazel_dep(name = "platforms", version = "0.0.10") +bazel_dep(name = "platforms", version = "0.0.11") bazel_dep(name = "protobuf", version = "31.1", repo_name = "com_google_protobuf") bazel_dep(name = "protoc-gen-validate", version = "1.2.1.bcr.1", repo_name = "com_envoyproxy_protoc_gen_validate") # Not needed directly -bazel_dep(name = "re2", version = "2024-07-02", repo_name = "com_googlesource_code_re2") # mistmached 2022-04-01 +bazel_dep(name = "re2", version = "2024-07-02.bcr.1", repo_name = "com_googlesource_code_re2") # mistmached 2022-04-01 bazel_dep(name = "rules_apple", version = "3.16.0", repo_name = "build_bazel_rules_apple") -bazel_dep(name = "rules_cc", version = "0.0.17") +bazel_dep(name = "rules_cc", version = "0.1.1") bazel_dep(name = "rules_proto", version = "7.0.2") bazel_dep(name = "xds", version = "0.0.0-20240423-555b57e", repo_name = "com_github_cncf_xds") # mismatched 20231116 bazel_dep(name = "zlib", version = "1.3.1.bcr.5") diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl index ede415fde4..858d4c6499 100644 --- a/bazel/grpc_deps.bzl +++ b/bazel/grpc_deps.bzl @@ -23,10 +23,10 @@ def grpc_deps(): if "platforms" not in native.existing_rules(): http_archive( name = "platforms", - sha256 = "218efe8ee736d26a3572663b374a253c012b716d8af0c07e842e82f238a0a7ee", + integrity = "sha256-KXQuhydYCbXlmNwvBNhpYMx6VbMGfZciHJq7yZJr/w8=", urls = [ - "https://storage.googleapis.com/grpc-bazel-mirror/github.com/bazelbuild/platforms/releases/download/0.0.10/platforms-0.0.10.tar.gz", - "https://github.com/bazelbuild/platforms/releases/download/0.0.10/platforms-0.0.10.tar.gz", + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/bazelbuild/platforms/releases/download/0.0.11/platforms-0.0.11.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.11/platforms-0.0.11.tar.gz", ], ) @@ -106,11 +106,11 @@ def grpc_deps(): if "rules_cc" not in native.existing_rules(): http_archive( name = "rules_cc", - sha256 = "abc605dd850f813bb37004b77db20106a19311a96b2da1c92b789da529d28fe1", - strip_prefix = "rules_cc-0.0.17", + integrity = "sha256-cS13hosxUt1hjE1k+q3e/MWWX5D13m5t0dXdzQvoLUI=", + strip_prefix = "rules_cc-0.1.1", urls = [ - "https://storage.googleapis.com/grpc-bazel-mirror/github.com/bazelbuild/rules_cc/releases/download/0.0.17/rules_cc-0.0.17.tar.gz", - "https://github.com/bazelbuild/rules_cc/releases/download/0.0.17/rules_cc-0.0.17.tar.gz", + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/bazelbuild/rules_cc/releases/download/0.1.1/rules_cc-0.1.1.tar.gz", + "https://github.com/bazelbuild/rules_cc/releases/download/0.1.1/rules_cc-0.1.1.tar.gz", ], ) @@ -178,11 +178,11 @@ def grpc_deps(): if "bazel_skylib" not in native.existing_rules(): http_archive( name = "bazel_skylib", + integrity = "sha256-UbUQWnYLNTdz+QTSu8XmZNCYf7ryImUWTeZdQ+kQ2Kw=", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz", - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.8.1/bazel-skylib-1.8.1.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.8.1/bazel-skylib-1.8.1.tar.gz", ], - sha256 = "bc283cdfcd526a52c3201279cda4bc298652efa898b10b4db0837dc51652756f", ) if "bazel_compdb" not in native.existing_rules(): diff --git a/templates/MODULE.bazel.inja b/templates/MODULE.bazel.inja index 53108d9382..ae564864de 100644 --- a/templates/MODULE.bazel.inja +++ b/templates/MODULE.bazel.inja @@ -24,7 +24,7 @@ module( bazel_dep(name = "abseil-cpp", version = "20250512.1", repo_name = "com_google_absl") bazel_dep(name = "apple_support", version = "1.17.1", repo_name = "build_bazel_apple_support") -bazel_dep(name = "bazel_skylib", version = "1.7.1") +bazel_dep(name = "bazel_skylib", version = "1.8.1") bazel_dep(name = "boringssl", version = "0.20241024.0") # mistmatched 20241211 bazel_dep(name = "c-ares", version = "1.19.1", repo_name = "com_github_cares_cares") bazel_dep(name = "envoy_api", version = "0.0.0-20250128-4de3c74") @@ -33,12 +33,12 @@ bazel_dep(name = "googletest", version = "1.17.0", repo_name = "com_google_googl bazel_dep(name = "opencensus-cpp", version = "0.0.0-20230502-50eb5de.bcr.2", repo_name = "io_opencensus_cpp") bazel_dep(name = "openssl", version = "3.3.1.bcr.1") bazel_dep(name = "opentelemetry-cpp", version = "1.19.0", repo_name = "io_opentelemetry_cpp") -bazel_dep(name = "platforms", version = "0.0.10") +bazel_dep(name = "platforms", version = "0.0.11") bazel_dep(name = "protobuf", version = "31.1", repo_name = "com_google_protobuf") bazel_dep(name = "protoc-gen-validate", version = "1.2.1.bcr.1", repo_name = "com_envoyproxy_protoc_gen_validate") # Not needed directly -bazel_dep(name = "re2", version = "2024-07-02", repo_name = "com_googlesource_code_re2") # mistmached 2022-04-01 +bazel_dep(name = "re2", version = "2024-07-02.bcr.1", repo_name = "com_googlesource_code_re2") # mistmached 2022-04-01 bazel_dep(name = "rules_apple", version = "3.16.0", repo_name = "build_bazel_rules_apple") -bazel_dep(name = "rules_cc", version = "0.0.17") +bazel_dep(name = "rules_cc", version = "0.1.1") bazel_dep(name = "rules_proto", version = "7.0.2") bazel_dep(name = "xds", version = "0.0.0-20240423-555b57e", repo_name = "com_github_cncf_xds") # mismatched 20231116 bazel_dep(name = "zlib", version = "1.3.1.bcr.5") diff --git a/tools/remote_build/linux_bzlmod.bazelrc b/tools/remote_build/linux_bzlmod.bazelrc index f4bf6d07a5..4b32dd3393 100644 --- a/tools/remote_build/linux_bzlmod.bazelrc +++ b/tools/remote_build/linux_bzlmod.bazelrc @@ -19,6 +19,7 @@ import %workspace%/tools/remote_build/include/test_config_common.bazelrc common --enable_bzlmod=true common --enable_workspace=false +common --check_direct_dependencies=error common --ignore_dev_dependency build --jobs=200 -- 2.43.0