xref: /aosp_15_r20/external/bazelbuild-rules_rust/examples/WORKSPACE.bazel (revision d4726bddaa87cc4778e7472feed243fa4b6c267f)
1workspace(name = "examples")
2
3# Users of `rules_rust` will commonly be unable to load it
4# using a `local_repository`. Instead, to setup the rules,
5# please see https://bazelbuild.github.io/rules_rust/#setup
6local_repository(
7    name = "rules_rust",
8    path = "..",
9)
10
11load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains")
12
13rules_rust_dependencies()
14
15rust_register_toolchains(
16    edition = "2018",
17)
18
19load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies")
20
21crate_universe_dependencies(bootstrap = True)
22
23load("@rules_rust//tools/rust_analyzer:deps.bzl", "rust_analyzer_dependencies")
24
25rust_analyzer_dependencies()
26
27load("@rules_rust//bindgen:repositories.bzl", "rust_bindgen_dependencies", "rust_bindgen_register_toolchains")
28
29rust_bindgen_dependencies()
30
31rust_bindgen_register_toolchains()
32
33load("@rules_rust//bindgen:transitive_repositories.bzl", "rust_bindgen_transitive_dependencies")
34
35rust_bindgen_transitive_dependencies()
36
37load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
38
39# We need to load rules_java before anything proto-related happens because otherwise it will pull in its own rules_java which isn't compatible with rules_jvm_external.
40http_archive(
41    name = "rules_java",
42    sha256 = "f8ae9ed3887df02f40de9f4f7ac3873e6dd7a471f9cddf63952538b94b59aeb3",
43    urls = [
44        "https://github.com/bazelbuild/rules_java/releases/download/7.6.1/rules_java-7.6.1.tar.gz",
45    ],
46)
47
48load("@rules_rust//proto/protobuf:repositories.bzl", "rust_proto_protobuf_dependencies", "rust_proto_protobuf_register_toolchains")
49
50rust_proto_protobuf_dependencies()
51
52rust_proto_protobuf_register_toolchains()
53
54load("@rules_rust//proto/protobuf:transitive_repositories.bzl", "rust_proto_protobuf_transitive_repositories")
55
56rust_proto_protobuf_transitive_repositories()
57
58load("@rules_rust//wasm_bindgen:repositories.bzl", "rust_wasm_bindgen_dependencies", "rust_wasm_bindgen_register_toolchains")
59
60rust_wasm_bindgen_dependencies()
61
62rust_wasm_bindgen_register_toolchains()
63
64load("@rules_rust//wasm_bindgen/rules_nodejs:repositories.bzl", "nodejs_rust_wasm_bindgen_dependencies")
65
66nodejs_rust_wasm_bindgen_dependencies()
67
68load("@rules_rust//wasm_bindgen/rules_js:repositories.bzl", "js_rust_wasm_bindgen_dependencies")
69
70js_rust_wasm_bindgen_dependencies()
71
72###############################################################################
73# Workspace examples
74###############################################################################
75
76# buildifier: disable=same-origin-load
77load("@rules_rust//rust:repositories.bzl", "rust_repository_set")
78
79# `rust_repository_set` is the core repository rule for downloading and defining
80# a rust_toolchain. Should there be a need for a customized toolchain, this macro can
81# be used to define and register one.
82rust_repository_set(
83    name = "fake_toolchain_for_test_of_sha256",
84    edition = "2018",
85    exec_triple = "x86_64-unknown-linux-gnu",
86    extra_target_triples = [],
87    sha256s = {
88        "rust-1.46.0-x86_64-unknown-linux-gnu": "e3b98bc3440fe92817881933f9564389eccb396f5f431f33d48b979fa2fbdcf5",
89        "rust-std-1.46.0-x86_64-unknown-linux-gnu": "ac04aef80423f612c0079829b504902de27a6997214eb58ab0765d02f7ec1dbc",
90        "rustfmt-1.4.12-x86_64-unknown-linux-gnu": "1894e76913303d66bf40885a601462844eec15fca9e76a6d13c390d7000d64b0",
91    },
92    versions = ["1.46.0"],
93)
94
95###############################################################################
96# Examples dependencies
97###############################################################################
98
99http_archive(
100    name = "build_bazel_rules_nodejs",
101    sha256 = "709cc0dcb51cf9028dd57c268066e5bc8f03a119ded410a13b5c3925d6e43c48",
102    urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.8.4/rules_nodejs-5.8.4.tar.gz"],
103)
104
105load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories")
106
107node_repositories()
108
109load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies")
110
111rules_js_dependencies()
112
113load("@rules_nodejs//nodejs:repositories.bzl", "DEFAULT_NODE_VERSION", "nodejs_register_toolchains")
114
115nodejs_register_toolchains(
116    name = "nodejs",
117    node_version = DEFAULT_NODE_VERSION,
118)
119
120load("@bazel_features//:deps.bzl", "bazel_features_deps")
121
122bazel_features_deps()
123
124http_archive(
125    name = "rules_foreign_cc",
126    sha256 = "69023642d5781c68911beda769f91fcbc8ca48711db935a75da7f6536b65047f",
127    strip_prefix = "rules_foreign_cc-0.6.0",
128    url = "https://github.com/bazelbuild/rules_foreign_cc/archive/0.6.0.tar.gz",
129)
130
131load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")
132
133rules_foreign_cc_dependencies()
134
135load("//sys:sys_deps.bzl", "sys_deps")
136
137sys_deps()
138
139local_repository(
140    name = "rules_rust_example_cargo_manifest_dir",
141    path = "cargo_manifest_dir/external_crate",
142)
143
144_LIBC_BUILD_FILE_CONTENT = """\
145load("@rules_rust//rust:defs.bzl", "rust_library")
146
147rust_library(
148    name = "libc",
149    srcs = glob(["src/**/*.rs"]),
150    edition = "2015",
151    rustc_flags = [
152        # In most cases, warnings in 3rd party crates are not interesting as
153        # they're out of the control of consumers. The flag here silences
154        # warnings. For more details see:
155        # https://doc.rust-lang.org/rustc/lints/levels.html
156        "--cap-lints=allow",
157    ],
158    visibility = ["//visibility:public"],
159)
160"""
161
162http_archive(
163    name = "libc",
164    build_file_content = _LIBC_BUILD_FILE_CONTENT,
165    sha256 = "1ac4c2ac6ed5a8fb9020c166bc63316205f1dc78d4b964ad31f4f21eb73f0c6d",
166    strip_prefix = "libc-0.2.20",
167    urls = [
168        "https://mirror.bazel.build/github.com/rust-lang/libc/archive/0.2.20.zip",
169        "https://github.com/rust-lang/libc/archive/0.2.20.zip",
170    ],
171)
172
173http_archive(
174    name = "rules_jvm_external",
175    sha256 = "08ea921df02ffe9924123b0686dc04fd0ff875710bfadb7ad42badb931b0fd50",
176    strip_prefix = "rules_jvm_external-6.1",
177    url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/6.1/rules_jvm_external-6.1.tar.gz",
178)
179
180load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
181
182rules_jvm_external_deps()
183
184load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
185
186rules_jvm_external_setup()
187
188load("@rules_jvm_external//:defs.bzl", "maven_install")
189
190maven_install(
191    name = "maven",
192    artifacts = [
193        "net.java.dev.jna:jna:5.14.0",
194        "org.hamcrest:hamcrest:2.2",
195    ],
196    maven_install_json = "@//:maven_install.json",
197    repositories = [
198        "https://repo1.maven.org/maven2",
199    ],
200)
201
202load("@maven//:defs.bzl", "pinned_maven_install")
203
204pinned_maven_install()
205
206###############################################################################
207
208http_archive(
209    name = "bazel_ci_rules",
210    sha256 = "eca21884e6f66a88c358e580fd67a6b148d30ab57b1680f62a96c00f9bc6a07e",
211    strip_prefix = "bazelci_rules-1.0.0",
212    url = "https://github.com/bazelbuild/continuous-integration/releases/download/rules-1.0.0/bazelci_rules-1.0.0.tar.gz",
213)
214
215load("@bazel_ci_rules//:rbe_repo.bzl", "rbe_preconfig")
216
217# Creates a default toolchain config for RBE.
218# Use this as is if you are using the rbe_ubuntu16_04 container,
219# otherwise refer to RBE docs.
220rbe_preconfig(
221    name = "buildkite_config",
222    toolchain = "ubuntu1804-bazel-java11",
223)
224
225load("@build_bazel_apple_support//crosstool:setup.bzl", "apple_cc_configure")
226
227# As of Bazel 7, Bazel's bundled cc_toolchain only supports using CommandLineTools and not a full Xcode.
228# This manifests itself if you try to use anything which requires access to $DEVELOPER_DIR, such as our bindgen example which non-hermetically tries to read libc++ headers from the system.
229# On CI (and for some of our contributors), we have a full Xcode install, so this fails.
230# We register the apple_support cc_toolchain here because it supports both CommandLineTools and full Xcodes.
231# See https://github.com/bazelbuild/rules_rust/issues/2207 and https://github.com/bazelbuild/bazel/issues/20638
232apple_cc_configure()
233