Skip to content

Commit f329c0c

Browse files
authored
Marked various extensions as reproducible to reduce bzlmod lock size (#3164)
1 parent b6c9468 commit f329c0c

15 files changed

+122
-30
lines changed

MODULE.bazel

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ use_repo(
126126
"cargo_bazel.buildifier-linux-arm64",
127127
"cargo_bazel.buildifier-linux-s390x",
128128
"cargo_bazel.buildifier-windows-amd64.exe",
129-
"cargo_bazel_bootstrap",
130129
"cui",
131130
"cui__anyhow-1.0.89",
132131
"cui__camino-1.1.9",
@@ -162,6 +161,15 @@ use_repo(
162161
"cui__walkdir-2.5.0",
163162
)
164163

164+
crate_universe_internal_non_repro_deps = use_extension(
165+
"//crate_universe/private:internal_extensions.bzl",
166+
"cu_nr",
167+
)
168+
use_repo(
169+
crate_universe_internal_non_repro_deps,
170+
"cargo_bazel_bootstrap",
171+
)
172+
165173
crate_universe_internal_dev_deps = use_extension(
166174
"//crate_universe/private:internal_extensions.bzl",
167175
"cu_dev",

crate_universe/private/internal_extensions.bzl

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Bzlmod module extensions that are only used internally"""
22

3+
load("@bazel_features//:features.bzl", "bazel_features")
34
load("//crate_universe:deps_bootstrap.bzl", "cargo_bazel_bootstrap")
45
load("//crate_universe:repositories.bzl", "crate_universe_dependencies")
56
load("//crate_universe/tools/cross_installer:cross_installer_deps.bzl", "cross_installer_deps")
@@ -8,6 +9,31 @@ def _internal_deps_impl(module_ctx):
89
direct_deps = []
910

1011
direct_deps.extend(crate_universe_dependencies())
12+
13+
# is_dev_dep is ignored here. It's not relevant for internal_deps, as dev
14+
# dependencies are only relevant for module extensions that can be used
15+
# by other MODULES.
16+
metadata_kwargs = {
17+
"root_module_direct_deps": [repo.repo for repo in direct_deps],
18+
"root_module_direct_dev_deps": [],
19+
}
20+
21+
if bazel_features.external_deps.extension_metadata_has_reproducible:
22+
metadata_kwargs["reproducible"] = True
23+
24+
return module_ctx.extension_metadata(**metadata_kwargs)
25+
26+
# This is named a single character to reduce the size of path names when running build scripts, to reduce the chance
27+
# of hitting the 260 character windows path name limit.
28+
# TODO: https://github.com/bazelbuild/rules_rust/issues/1120
29+
cu = module_extension(
30+
doc = "Dependencies for crate_universe.",
31+
implementation = _internal_deps_impl,
32+
)
33+
34+
def _internal_non_reproducible_deps_impl(module_ctx):
35+
direct_deps = []
36+
1137
direct_deps.extend(cargo_bazel_bootstrap(
1238
rust_toolchain_cargo_template = "@rust_host_tools//:bin/{tool}",
1339
rust_toolchain_rustc_template = "@rust_host_tools//:bin/{tool}",
@@ -25,9 +51,9 @@ def _internal_deps_impl(module_ctx):
2551
# This is named a single character to reduce the size of path names when running build scripts, to reduce the chance
2652
# of hitting the 260 character windows path name limit.
2753
# TODO: https://github.com/bazelbuild/rules_rust/issues/1120
28-
cu = module_extension(
29-
doc = "Dependencies for crate_universe.",
30-
implementation = _internal_deps_impl,
54+
cu_nr = module_extension(
55+
doc = "Dependencies for crate_universe (non reproducible).",
56+
implementation = _internal_non_reproducible_deps_impl,
3157
)
3258

3359
def _internal_dev_deps_impl(module_ctx):

extensions/bindgen/MODULE.bazel

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ bazel_dep(
99
name = "rules_rust",
1010
version = "0.56.0",
1111
)
12+
bazel_dep(
13+
name = "bazel_features",
14+
version = "1.21.0",
15+
)
1216
bazel_dep(
1317
name = "bazel_skylib",
1418
version = "1.7.1",
@@ -30,6 +34,7 @@ rust_ext = use_extension("//:extensions.bzl", "rust_ext")
3034
use_repo(
3135
rust_ext,
3236
"rules_rust_bindgen__bindgen-cli-0.70.1",
37+
"rules_rust_bindgen_deps",
3338
"rules_rust_bindgen_deps__bindgen-0.70.1",
3439
"rules_rust_bindgen_deps__clang-sys-1.8.1",
3540
"rules_rust_bindgen_deps__clap-4.5.17",

extensions/bindgen/extensions.bzl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Bzlmod module extensions"""
22

3+
load("@bazel_features//:features.bzl", "bazel_features")
34
load("//:repositories.bzl", "rust_bindgen_dependencies")
45

56
def _rust_ext_impl(module_ctx):
@@ -12,10 +13,15 @@ def _rust_ext_impl(module_ctx):
1213
# is_dev_dep is ignored here. It's not relevant for internal_deps, as dev
1314
# dependencies are only relevant for module extensions that can be used
1415
# by other MODULES.
15-
return module_ctx.extension_metadata(
16-
root_module_direct_deps = [repo.repo for repo in direct_deps],
17-
root_module_direct_dev_deps = [],
18-
)
16+
metadata_kwargs = {
17+
"root_module_direct_deps": [repo.repo for repo in direct_deps],
18+
"root_module_direct_dev_deps": [],
19+
}
20+
21+
if bazel_features.external_deps.extension_metadata_has_reproducible:
22+
metadata_kwargs["reproducible"] = True
23+
24+
return module_ctx.extension_metadata(**metadata_kwargs)
1925

2026
rust_ext = module_extension(
2127
doc = "Dependencies for the rules_rust_bindgen extension.",

extensions/bindgen/repositories.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
1818
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
19-
load("//3rdparty/crates:defs.bzl", "crate_repositories")
19+
load("//3rdparty/crates:crates.bzl", "crate_repositories")
2020

2121
BINDGEN_VERSION = "0.70.1"
2222

extensions/mdbook/MODULE.bazel

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ bazel_dep(
1313
name = "rules_cc",
1414
version = "0.0.17",
1515
)
16+
bazel_dep(
17+
name = "bazel_features",
18+
version = "1.21.0",
19+
)
1620
bazel_dep(
1721
name = "bazel_skylib",
1822
version = "1.7.1",

extensions/mdbook/extensions.bzl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Bzlmod module extensions"""
22

3+
load("@bazel_features//:features.bzl", "bazel_features")
34
load("//:repositories.bzl", "mdbook_register_toolchains")
45
load("//private/3rdparty/crates:crates.bzl", "crate_repositories")
56

@@ -14,10 +15,15 @@ def _rust_ext_impl(module_ctx):
1415
# is_dev_dep is ignored here. It's not relevant for internal_deps, as dev
1516
# dependencies are only relevant for module extensions that can be used
1617
# by other MODULES.
17-
return module_ctx.extension_metadata(
18-
root_module_direct_deps = [repo.repo for repo in direct_deps],
19-
root_module_direct_dev_deps = [],
20-
)
18+
metadata_kwargs = {
19+
"root_module_direct_deps": [repo.repo for repo in direct_deps],
20+
"root_module_direct_dev_deps": [],
21+
}
22+
23+
if bazel_features.external_deps.extension_metadata_has_reproducible:
24+
metadata_kwargs["reproducible"] = True
25+
26+
return module_ctx.extension_metadata(**metadata_kwargs)
2127

2228
rust_ext = module_extension(
2329
doc = "Dependencies for the rules_rust mdbook extension.",

extensions/prost/MODULE.bazel

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ bazel_dep(
1313
name = "platforms",
1414
version = "0.0.10",
1515
)
16+
bazel_dep(
17+
name = "bazel_features",
18+
version = "1.21.0",
19+
)
1620
bazel_dep(
1721
name = "bazel_skylib",
1822
version = "1.7.1",

extensions/prost/extensions.bzl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Bzlmod module extensions"""
22

3+
load("@bazel_features//:features.bzl", "bazel_features")
34
load("//:repositories.bzl", "rust_prost_dependencies")
45

56
def _rust_ext_impl(module_ctx):
@@ -12,10 +13,15 @@ def _rust_ext_impl(module_ctx):
1213
# is_dev_dep is ignored here. It's not relevant for internal_deps, as dev
1314
# dependencies are only relevant for module extensions that can be used
1415
# by other MODULES.
15-
return module_ctx.extension_metadata(
16-
root_module_direct_deps = [repo.repo for repo in direct_deps],
17-
root_module_direct_dev_deps = [],
18-
)
16+
metadata_kwargs = {
17+
"root_module_direct_deps": [repo.repo for repo in direct_deps],
18+
"root_module_direct_dev_deps": [],
19+
}
20+
21+
if bazel_features.external_deps.extension_metadata_has_reproducible:
22+
metadata_kwargs["reproducible"] = True
23+
24+
return module_ctx.extension_metadata(**metadata_kwargs)
1925

2026
rust_ext = module_extension(
2127
doc = "Dependencies for the rules_rust prost extension.",

extensions/protobuf/MODULE.bazel

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ bazel_dep(
99
name = "rules_rust",
1010
version = "0.56.0",
1111
)
12+
bazel_dep(
13+
name = "bazel_features",
14+
version = "1.21.0",
15+
)
1216
bazel_dep(
1317
name = "bazel_skylib",
1418
version = "1.7.1",
@@ -40,6 +44,7 @@ bazel_dep(
4044
rust_ext = use_extension("//:extensions.bzl", "rust_ext")
4145
use_repo(
4246
rust_ext,
47+
"rules_rust_protobuf_deps",
4348
"rules_rust_protobuf_deps__grpc-0.6.2",
4449
"rules_rust_protobuf_deps__grpc-compiler-0.6.2",
4550
"rules_rust_protobuf_deps__log-0.4.17",

extensions/protobuf/extensions.bzl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Bzlmod module extensions"""
22

3+
load("@bazel_features//:features.bzl", "bazel_features")
34
load("//:repositories.bzl", "rust_proto_protobuf_dependencies")
45

56
def _rust_ext_impl(module_ctx):
@@ -12,10 +13,15 @@ def _rust_ext_impl(module_ctx):
1213
# is_dev_dep is ignored here. It's not relevant for internal_deps, as dev
1314
# dependencies are only relevant for module extensions that can be used
1415
# by other MODULES.
15-
return module_ctx.extension_metadata(
16-
root_module_direct_deps = [repo.repo for repo in direct_deps],
17-
root_module_direct_dev_deps = [],
18-
)
16+
metadata_kwargs = {
17+
"root_module_direct_deps": [repo.repo for repo in direct_deps],
18+
"root_module_direct_dev_deps": [],
19+
}
20+
21+
if bazel_features.external_deps.extension_metadata_has_reproducible:
22+
metadata_kwargs["reproducible"] = True
23+
24+
return module_ctx.extension_metadata(**metadata_kwargs)
1925

2026
rust_ext = module_extension(
2127
doc = "Dependencies for the rules_rust protobuf extension.",

extensions/protobuf/repositories.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
1818
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
19-
load("//3rdparty/crates:defs.bzl", "crate_repositories")
19+
load("//3rdparty/crates:crates.bzl", "crate_repositories")
2020

2121
def rust_proto_protobuf_dependencies(bzlmod = False):
2222
"""Sets up dependencies for rules_rust's proto support.

extensions/wasm_bindgen/MODULE.bazel

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ bazel_dep(
99
name = "rules_rust",
1010
version = "0.56.0",
1111
)
12+
bazel_dep(
13+
name = "bazel_features",
14+
version = "1.21.0",
15+
)
1216
bazel_dep(
1317
name = "bazel_skylib",
1418
version = "1.7.1",

extensions/wasm_bindgen/extensions.bzl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Bzlmod module extensions"""
22

3+
load("@bazel_features//:features.bzl", "bazel_features")
34
load("//:repositories.bzl", "rust_wasm_bindgen_dependencies")
45

56
def _rust_ext_impl(module_ctx):
@@ -12,10 +13,15 @@ def _rust_ext_impl(module_ctx):
1213
# is_dev_dep is ignored here. It's not relevant for internal_deps, as dev
1314
# dependencies are only relevant for module extensions that can be used
1415
# by other MODULES.
15-
return module_ctx.extension_metadata(
16-
root_module_direct_deps = [repo.repo for repo in direct_deps],
17-
root_module_direct_dev_deps = [],
18-
)
16+
metadata_kwargs = {
17+
"root_module_direct_deps": [repo.repo for repo in direct_deps],
18+
"root_module_direct_dev_deps": [],
19+
}
20+
21+
if bazel_features.external_deps.extension_metadata_has_reproducible:
22+
metadata_kwargs["reproducible"] = True
23+
24+
return module_ctx.extension_metadata(**metadata_kwargs)
1925

2026
rust_ext = module_extension(
2127
doc = "Dependencies for the rules_rust wasm_bindgen extension.",

rust/private/internal_extensions.bzl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Bzlmod module extensions that are only used internally"""
22

3+
load("@bazel_features//:features.bzl", "bazel_features")
34
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
45
load("//rust/private:repository_utils.bzl", "TINYJSON_KWARGS")
56
load("//tools/rust_analyzer:deps.bzl", "rust_analyzer_dependencies")
@@ -18,10 +19,15 @@ def _internal_deps_impl(module_ctx):
1819
# is_dev_dep is ignored here. It's not relevant for internal_deps, as dev
1920
# dependencies are only relevant for module extensions that can be used
2021
# by other MODULES.
21-
return module_ctx.extension_metadata(
22-
root_module_direct_deps = [repo.repo for repo in direct_deps],
23-
root_module_direct_dev_deps = [],
24-
)
22+
metadata_kwargs = {
23+
"root_module_direct_deps": [repo.repo for repo in direct_deps],
24+
"root_module_direct_dev_deps": [],
25+
}
26+
27+
if bazel_features.external_deps.extension_metadata_has_reproducible:
28+
metadata_kwargs["reproducible"] = True
29+
30+
return module_ctx.extension_metadata(**metadata_kwargs)
2531

2632
# This is named a single character to reduce the size of path names when running build scripts, to reduce the chance
2733
# of hitting the 260 character windows path name limit.

0 commit comments

Comments
 (0)