Skip to content

Commit a4f15f5

Browse files
authored
Migrated nix example to bzlmod. (#3208)
1 parent 9351834 commit a4f15f5

File tree

8 files changed

+185
-165
lines changed

8 files changed

+185
-165
lines changed
+160-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,162 @@
1+
module(
2+
name = "rules_rust_examples_nix",
3+
version = "0.0.0",
4+
)
5+
16
###############################################################################
2-
# Bazel now uses Bzlmod by default to manage external dependencies.
3-
# Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel.
4-
#
5-
# For more details, please check https://github.com/bazelbuild/bazel/issues/18958
7+
# B A Z E L C E N T R A L R E G I S T R Y # https://registry.bazel.build/
68
###############################################################################
9+
10+
# https://github.com/bazelbuild/rules_rust/releases
11+
bazel_dep(name = "rules_rust", version = "0.0.0")
12+
local_path_override(
13+
module_name = "rules_rust",
14+
path = "../..",
15+
)
16+
17+
bazel_dep(name = "rules_nixpkgs_core", version = "0.12.0")
18+
19+
internal = use_extension("//bazel:nix_repositories.bzl", "internal_ext")
20+
use_repo(
21+
internal,
22+
"nix_config",
23+
"nix_rust",
24+
)
25+
26+
nix_repo = use_extension("//extensions:repository.bzl", "nix_repo")
27+
nix_repo.default(name = "nixpkgs")
28+
use_repo(nix_repo, "nixpkgs")
29+
30+
###############################################################################
31+
# T O O L C H A I N S
32+
###############################################################################
33+
34+
# Rust toolchain
35+
rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
36+
rust.toolchain(
37+
extra_target_triples = [
38+
"aarch64-apple-darwin",
39+
"aarch64-apple-ios",
40+
"aarch64-linux-android",
41+
"aarch64-unknown-linux-gnu",
42+
"wasm32-unknown-unknown",
43+
"wasm32-wasip1",
44+
"x86_64-apple-darwin",
45+
"x86_64-pc-windows-msvc",
46+
"x86_64-unknown-linux-gnu",
47+
"x86_64-unknown-nixos-gnu",
48+
],
49+
)
50+
use_repo(rust, "rust_toolchains")
51+
52+
register_toolchains(
53+
"@rust_toolchains//:all",
54+
"//bazel/toolchains/cc/aarch64-apple-darwin:toolchain",
55+
"//bazel/toolchains/cc/aarch64-apple-ios:toolchain",
56+
"//bazel/toolchains/cc/aarch64-linux-android:toolchain",
57+
"//bazel/toolchains/cc/aarch64-unknown-linux-gnu:toolchain",
58+
"//bazel/toolchains/cc/wasm32-unknown-unknown:toolchain",
59+
"//bazel/toolchains/cc/wasm32-wasip1:toolchain",
60+
"//bazel/toolchains/cc/x86_64-apple-darwin:toolchain",
61+
"//bazel/toolchains/cc/x86_64-pc-windows-msvc:toolchain",
62+
"//bazel/toolchains/cc/x86_64-unknown-linux-gnu:toolchain",
63+
"//bazel/toolchains/cc/x86_64-unknown-nixos-gnu:toolchain",
64+
"//bazel/toolchains/rust/aarch64-apple-darwin:toolchain",
65+
"//bazel/toolchains/rust/aarch64-apple-ios:toolchain",
66+
"//bazel/toolchains/rust/aarch64-linux-android:toolchain",
67+
"//bazel/toolchains/rust/aarch64-unknown-linux-gnu:toolchain",
68+
"//bazel/toolchains/rust/wasm32-unknown-unknown:toolchain",
69+
"//bazel/toolchains/rust/wasm32-wasip1:toolchain",
70+
"//bazel/toolchains/rust/x86_64-apple-darwin:toolchain",
71+
"//bazel/toolchains/rust/x86_64-pc-windows-msvc:toolchain",
72+
"//bazel/toolchains/rust/x86_64-unknown-linux-gnu:toolchain",
73+
"//bazel/toolchains/rust/x86_64-unknown-nixos-gnu:toolchain",
74+
)
75+
76+
###############################################################################
77+
# C R A T E S
78+
###############################################################################
79+
80+
crates = use_extension("@rules_rust//crate_universe:extensions.bzl", "crate")
81+
crates.spec(
82+
package = "anyhow",
83+
version = "1.0.75",
84+
)
85+
crates.spec(
86+
features = [
87+
"full",
88+
],
89+
package = "tokio",
90+
version = "1.34.0",
91+
)
92+
crates.annotation(
93+
crate = "libc",
94+
rustc_flags = [
95+
"--cfg=freebsd11",
96+
"--cfg=libc_priv_mod_use",
97+
"--cfg=libc_union",
98+
"--cfg=libc_const_size_of",
99+
"--cfg=libc_align",
100+
"--cfg=libc_int128",
101+
"--cfg=libc_core_cvoid",
102+
"--cfg=libc_packedN",
103+
"--cfg=libc_cfg_target_vendor",
104+
"--cfg=libc_non_exhaustive",
105+
"--cfg=libc_long_array",
106+
"--cfg=libc_ptr_addr_of",
107+
"--cfg=libc_underscore_const_names",
108+
"--cfg=libc_const_extern_fn",
109+
],
110+
)
111+
crates.annotation(
112+
crate = "proc-macro2",
113+
rustc_flags = [
114+
"--cfg=proc_macro_span",
115+
"--cfg=span_locations",
116+
"--cfg=use_proc_macro",
117+
"--cfg=wrap_proc_macro",
118+
],
119+
)
120+
crates.annotation(
121+
crate = "syn",
122+
crate_features = [
123+
"clone-impls",
124+
"derive",
125+
"extra-traits",
126+
"fold",
127+
"full",
128+
"parsing",
129+
"printing",
130+
"proc-macro",
131+
"visit-mut",
132+
"visit",
133+
],
134+
)
135+
crates.render_config(
136+
default_alias_rule_name = "opt",
137+
)
138+
crates.splicing_config(
139+
resolver_version = "2",
140+
)
141+
crates.from_specs(
142+
name = "crate_index",
143+
cargo_lockfile = "//bazel/cargo:Cargo.lock",
144+
generate_build_scripts = False,
145+
lockfile = "//bazel/cargo:cargo-bazel-lock.json",
146+
supported_platform_triples = [
147+
"aarch64-apple-darwin",
148+
"aarch64-apple-ios",
149+
"aarch64-linux-android",
150+
"aarch64-unknown-linux-gnu",
151+
"wasm32-unknown-unknown",
152+
"wasm32-wasip1",
153+
"x86_64-apple-darwin",
154+
"x86_64-pc-windows-msvc",
155+
"x86_64-unknown-linux-gnu",
156+
"x86_64-unknown-nixos-gnu",
157+
],
158+
)
159+
use_repo(
160+
crates,
161+
"crate_index",
162+
)
+1-94
Original file line numberDiff line numberDiff line change
@@ -1,94 +1 @@
1-
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
2-
3-
# Nix
4-
http_archive(
5-
name = "io_tweag_rules_nixpkgs",
6-
sha256 = "532634d78c35a42745bc1ceb02193c1505e676ed55746947061c2b6bb37b85fb",
7-
strip_prefix = "rules_nixpkgs-c871abcedf5734513f7ab731ea6ba541636f4df6",
8-
urls = ["https://github.com/tweag/rules_nixpkgs/archive/c871abcedf5734513f7ab731ea6ba541636f4df6.tar.gz"],
9-
)
10-
11-
load("@io_tweag_rules_nixpkgs//nixpkgs:repositories.bzl", "rules_nixpkgs_dependencies")
12-
13-
rules_nixpkgs_dependencies()
14-
15-
load("//bazel:nix_repositories.bzl", "nix_repositories")
16-
17-
nix_repositories()
18-
19-
# Toolchains
20-
register_toolchains(
21-
"//bazel/toolchains/cc/aarch64-apple-darwin:toolchain",
22-
"//bazel/toolchains/cc/aarch64-apple-ios:toolchain",
23-
"//bazel/toolchains/cc/aarch64-linux-android:toolchain",
24-
"//bazel/toolchains/cc/aarch64-unknown-linux-gnu:toolchain",
25-
"//bazel/toolchains/cc/wasm32-unknown-unknown:toolchain",
26-
"//bazel/toolchains/cc/wasm32-wasip1:toolchain",
27-
"//bazel/toolchains/cc/x86_64-apple-darwin:toolchain",
28-
"//bazel/toolchains/cc/x86_64-pc-windows-msvc:toolchain",
29-
"//bazel/toolchains/cc/x86_64-unknown-linux-gnu:toolchain",
30-
"//bazel/toolchains/cc/x86_64-unknown-nixos-gnu:toolchain",
31-
"//bazel/toolchains/rust/aarch64-apple-darwin:toolchain",
32-
"//bazel/toolchains/rust/aarch64-apple-ios:toolchain",
33-
"//bazel/toolchains/rust/aarch64-linux-android:toolchain",
34-
"//bazel/toolchains/rust/aarch64-unknown-linux-gnu:toolchain",
35-
"//bazel/toolchains/rust/wasm32-unknown-unknown:toolchain",
36-
"//bazel/toolchains/rust/wasm32-wasip1:toolchain",
37-
"//bazel/toolchains/rust/x86_64-apple-darwin:toolchain",
38-
"//bazel/toolchains/rust/x86_64-pc-windows-msvc:toolchain",
39-
"//bazel/toolchains/rust/x86_64-unknown-linux-gnu:toolchain",
40-
"//bazel/toolchains/rust/x86_64-unknown-nixos-gnu:toolchain",
41-
)
42-
43-
# Rust
44-
local_repository(
45-
name = "rules_rust",
46-
path = "../..",
47-
)
48-
49-
load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains")
50-
51-
rules_rust_dependencies()
52-
53-
rust_register_toolchains(
54-
edition = "2021",
55-
)
56-
57-
load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")
58-
59-
crate_universe_dependencies(bootstrap = True)
60-
61-
load("@rules_rust//crate_universe:defs.bzl", "crates_repository", "render_config", "splicing_config")
62-
load("//bazel/cargo:crates_repository.bzl", CARGO_ANNOTATIONS = "ANNOTATIONS", CARGO_PACKAGES = "PACKAGES")
63-
64-
crates_repository(
65-
name = "crate_index",
66-
annotations = CARGO_ANNOTATIONS,
67-
cargo_lockfile = "//bazel/cargo:Cargo.lock",
68-
generate_build_scripts = False,
69-
generator = "@cargo_bazel_bootstrap//:cargo-bazel",
70-
lockfile = "//bazel/cargo:cargo-bazel-lock.json",
71-
packages = CARGO_PACKAGES,
72-
render_config = render_config(
73-
default_alias_rule = "opt",
74-
),
75-
splicing_config = splicing_config(
76-
resolver_version = "2",
77-
),
78-
supported_platform_triples = [
79-
"aarch64-apple-darwin",
80-
"aarch64-apple-ios",
81-
"aarch64-linux-android",
82-
"aarch64-unknown-linux-gnu",
83-
"wasm32-unknown-unknown",
84-
"wasm32-wasip1",
85-
"x86_64-apple-darwin",
86-
"x86_64-pc-windows-msvc",
87-
"x86_64-unknown-linux-gnu",
88-
"x86_64-unknown-nixos-gnu",
89-
],
90-
)
91-
92-
load("@crate_index//:defs.bzl", "crate_repositories")
93-
94-
crate_repositories()
1+
workspace(name = "rules_rust_examples_nix")

examples/nix_cross_compiling/bazel/cargo/cargo-bazel-lock.json

+2-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/nix_cross_compiling/bazel/cargo/crates/BUILD.bazel

Whitespace-only changes.

examples/nix_cross_compiling/bazel/cargo/crates/libc.bzl

-30
This file was deleted.

examples/nix_cross_compiling/bazel/cargo/crates/proc_macro2.bzl

-12
This file was deleted.

examples/nix_cross_compiling/bazel/cargo/crates/syn.bzl

-18
This file was deleted.

examples/nix_cross_compiling/bazel/nix_repositories.bzl

+22-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
""" Nix Repositories """
22

3-
load("@io_tweag_rules_nixpkgs//nixpkgs:nixpkgs.bzl", "nixpkgs_flake_package")
3+
load("@rules_nixpkgs_core//:nixpkgs.bzl", "nixpkgs_flake_package")
44

55
_CONFIG_BUILD_FILE_CONTENT = """
66
package(default_visibility = ["//visibility:public"])
@@ -217,3 +217,24 @@ def nix_repositories():
217217
package = "bazel.rust",
218218
build_file_content = _RUST_BUILD_FILE_CONTENT,
219219
)
220+
221+
def _internal_ext_impl(module_ctx):
222+
nix_repositories()
223+
224+
deps = [
225+
struct(repo = "nix_config"),
226+
struct(repo = "nix_rust"),
227+
]
228+
229+
# is_dev_dep is ignored here. It's not relevant for internal_deps, as dev
230+
# dependencies are only relevant for module extensions that can be used
231+
# by other MODULES.
232+
return module_ctx.extension_metadata(
233+
root_module_direct_deps = [repo.repo for repo in deps],
234+
root_module_direct_dev_deps = [],
235+
)
236+
237+
internal_ext = module_extension(
238+
doc = "Development dependencies for the rules_rust nix example.",
239+
implementation = _internal_ext_impl,
240+
)

0 commit comments

Comments
 (0)