blob: f6d235bab358acc750d6e19dbe189c1add823f61 [file] [log] [blame]
Adam Snaider1c095c92023-07-08 02:09:58 -04001###############################################################################
2# @generated
3# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
4# regenerate this file, run the following:
5#
6# bazel run @//3rdparty:crates_vendor
7###############################################################################
8"""
9# `crates_repository` API
10
11- [aliases](#aliases)
12- [crate_deps](#crate_deps)
13- [all_crate_deps](#all_crate_deps)
14- [crate_repositories](#crate_repositories)
15
16"""
17
18load("@bazel_skylib//lib:selects.bzl", "selects")
19load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
20load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
21
22###############################################################################
23# MACROS API
24###############################################################################
25
26# An identifier that represent common dependencies (unconditional).
27_COMMON_CONDITION = ""
28
29def _flatten_dependency_maps(all_dependency_maps):
30 """Flatten a list of dependency maps into one dictionary.
31
32 Dependency maps have the following structure:
33
34 ```python
35 DEPENDENCIES_MAP = {
36 # The first key in the map is a Bazel package
37 # name of the workspace this file is defined in.
38 "workspace_member_package": {
39
40 # Not all dependencies are supported for all platforms.
41 # the condition key is the condition required to be true
42 # on the host platform.
43 "condition": {
44
45 # An alias to a crate target. # The label of the crate target the
46 # Aliases are only crate names. # package name refers to.
47 "package_name": "@full//:label",
48 }
49 }
50 }
51 ```
52
53 Args:
54 all_dependency_maps (list): A list of dicts as described above
55
56 Returns:
57 dict: A dictionary as described above
58 """
59 dependencies = {}
60
61 for workspace_deps_map in all_dependency_maps:
62 for pkg_name, conditional_deps_map in workspace_deps_map.items():
63 if pkg_name not in dependencies:
64 non_frozen_map = dict()
65 for key, values in conditional_deps_map.items():
66 non_frozen_map.update({key: dict(values.items())})
67 dependencies.setdefault(pkg_name, non_frozen_map)
68 continue
69
70 for condition, deps_map in conditional_deps_map.items():
71 # If the condition has not been recorded, do so and continue
72 if condition not in dependencies[pkg_name]:
73 dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))
74 continue
75
76 # Alert on any miss-matched dependencies
77 inconsistent_entries = []
78 for crate_name, crate_label in deps_map.items():
79 existing = dependencies[pkg_name][condition].get(crate_name)
80 if existing and existing != crate_label:
81 inconsistent_entries.append((crate_name, existing, crate_label))
82 dependencies[pkg_name][condition].update({crate_name: crate_label})
83
84 return dependencies
85
86def crate_deps(deps, package_name = None):
87 """Finds the fully qualified label of the requested crates for the package where this macro is called.
88
89 Args:
90 deps (list): The desired list of crate targets.
91 package_name (str, optional): The package name of the set of dependencies to look up.
92 Defaults to `native.package_name()`.
93
94 Returns:
95 list: A list of labels to generated rust targets (str)
96 """
97
98 if not deps:
99 return []
100
101 if package_name == None:
102 package_name = native.package_name()
103
104 # Join both sets of dependencies
105 dependencies = _flatten_dependency_maps([
106 _NORMAL_DEPENDENCIES,
107 _NORMAL_DEV_DEPENDENCIES,
108 _PROC_MACRO_DEPENDENCIES,
109 _PROC_MACRO_DEV_DEPENDENCIES,
110 _BUILD_DEPENDENCIES,
111 _BUILD_PROC_MACRO_DEPENDENCIES,
112 ]).pop(package_name, {})
113
114 # Combine all conditional packages so we can easily index over a flat list
115 # TODO: Perhaps this should actually return select statements and maintain
116 # the conditionals of the dependencies
117 flat_deps = {}
118 for deps_set in dependencies.values():
119 for crate_name, crate_label in deps_set.items():
120 flat_deps.update({crate_name: crate_label})
121
122 missing_crates = []
123 crate_targets = []
124 for crate_target in deps:
125 if crate_target not in flat_deps:
126 missing_crates.append(crate_target)
127 else:
128 crate_targets.append(flat_deps[crate_target])
129
130 if missing_crates:
131 fail("Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`".format(
132 missing_crates,
133 package_name,
134 dependencies,
135 ))
136
137 return crate_targets
138
139def all_crate_deps(
140 normal = False,
141 normal_dev = False,
142 proc_macro = False,
143 proc_macro_dev = False,
144 build = False,
145 build_proc_macro = False,
146 package_name = None):
147 """Finds the fully qualified label of all requested direct crate dependencies \
148 for the package where this macro is called.
149
150 If no parameters are set, all normal dependencies are returned. Setting any one flag will
151 otherwise impact the contents of the returned list.
152
153 Args:
154 normal (bool, optional): If True, normal dependencies are included in the
155 output list.
156 normal_dev (bool, optional): If True, normal dev dependencies will be
157 included in the output list..
158 proc_macro (bool, optional): If True, proc_macro dependencies are included
159 in the output list.
160 proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are
161 included in the output list.
162 build (bool, optional): If True, build dependencies are included
163 in the output list.
164 build_proc_macro (bool, optional): If True, build proc_macro dependencies are
165 included in the output list.
166 package_name (str, optional): The package name of the set of dependencies to look up.
167 Defaults to `native.package_name()` when unset.
168
169 Returns:
170 list: A list of labels to generated rust targets (str)
171 """
172
173 if package_name == None:
174 package_name = native.package_name()
175
176 # Determine the relevant maps to use
177 all_dependency_maps = []
178 if normal:
179 all_dependency_maps.append(_NORMAL_DEPENDENCIES)
180 if normal_dev:
181 all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)
182 if proc_macro:
183 all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)
184 if proc_macro_dev:
185 all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)
186 if build:
187 all_dependency_maps.append(_BUILD_DEPENDENCIES)
188 if build_proc_macro:
189 all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)
190
191 # Default to always using normal dependencies
192 if not all_dependency_maps:
193 all_dependency_maps.append(_NORMAL_DEPENDENCIES)
194
195 dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)
196
197 if not dependencies:
198 if dependencies == None:
199 fail("Tried to get all_crate_deps for package " + package_name + " but that package had no Cargo.toml file")
200 else:
201 return []
202
203 crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())
204 for condition, deps in dependencies.items():
205 crate_deps += selects.with_or({_CONDITIONS[condition]: deps.values()})
206
207 return crate_deps
208
209def aliases(
210 normal = False,
211 normal_dev = False,
212 proc_macro = False,
213 proc_macro_dev = False,
214 build = False,
215 build_proc_macro = False,
216 package_name = None):
217 """Produces a map of Crate alias names to their original label
218
219 If no dependency kinds are specified, `normal` and `proc_macro` are used by default.
220 Setting any one flag will otherwise determine the contents of the returned dict.
221
222 Args:
223 normal (bool, optional): If True, normal dependencies are included in the
224 output list.
225 normal_dev (bool, optional): If True, normal dev dependencies will be
226 included in the output list..
227 proc_macro (bool, optional): If True, proc_macro dependencies are included
228 in the output list.
229 proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are
230 included in the output list.
231 build (bool, optional): If True, build dependencies are included
232 in the output list.
233 build_proc_macro (bool, optional): If True, build proc_macro dependencies are
234 included in the output list.
235 package_name (str, optional): The package name of the set of dependencies to look up.
236 Defaults to `native.package_name()` when unset.
237
238 Returns:
239 dict: The aliases of all associated packages
240 """
241 if package_name == None:
242 package_name = native.package_name()
243
244 # Determine the relevant maps to use
245 all_aliases_maps = []
246 if normal:
247 all_aliases_maps.append(_NORMAL_ALIASES)
248 if normal_dev:
249 all_aliases_maps.append(_NORMAL_DEV_ALIASES)
250 if proc_macro:
251 all_aliases_maps.append(_PROC_MACRO_ALIASES)
252 if proc_macro_dev:
253 all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)
254 if build:
255 all_aliases_maps.append(_BUILD_ALIASES)
256 if build_proc_macro:
257 all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)
258
259 # Default to always using normal aliases
260 if not all_aliases_maps:
261 all_aliases_maps.append(_NORMAL_ALIASES)
262 all_aliases_maps.append(_PROC_MACRO_ALIASES)
263
264 aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)
265
266 if not aliases:
267 return dict()
268
269 common_items = aliases.pop(_COMMON_CONDITION, {}).items()
270
271 # If there are only common items in the dictionary, immediately return them
272 if not len(aliases.keys()) == 1:
273 return dict(common_items)
274
275 # Build a single select statement where each conditional has accounted for the
276 # common set of aliases.
277 crate_aliases = {"//conditions:default": common_items}
278 for condition, deps in aliases.items():
279 condition_triples = _CONDITIONS[condition]
280 if condition_triples in crate_aliases:
281 crate_aliases[condition_triples].update(deps)
282 else:
283 crate_aliases.update({_CONDITIONS[condition]: dict(deps.items() + common_items)})
284
285 return selects.with_or(crate_aliases)
286
287###############################################################################
288# WORKSPACE MEMBER DEPS AND ALIASES
289###############################################################################
290
291_NORMAL_DEPENDENCIES = {
292 "": {
293 _COMMON_CONDITION: {
294 "zstd": "@ios_build__zstd-0.11.2-zstd.1.5.2//:zstd",
295 },
296 },
297}
298
299_NORMAL_ALIASES = {
300 "": {
301 _COMMON_CONDITION: {
302 },
303 },
304}
305
306_NORMAL_DEV_DEPENDENCIES = {
307 "": {
308 },
309}
310
311_NORMAL_DEV_ALIASES = {
312 "": {
313 },
314}
315
316_PROC_MACRO_DEPENDENCIES = {
317 "": {
318 },
319}
320
321_PROC_MACRO_ALIASES = {
322 "": {
323 },
324}
325
326_PROC_MACRO_DEV_DEPENDENCIES = {
327 "": {
328 },
329}
330
331_PROC_MACRO_DEV_ALIASES = {
332 "": {
333 },
334}
335
336_BUILD_DEPENDENCIES = {
337 "": {
338 },
339}
340
341_BUILD_ALIASES = {
342 "": {
343 },
344}
345
346_BUILD_PROC_MACRO_DEPENDENCIES = {
347 "": {
348 },
349}
350
351_BUILD_PROC_MACRO_ALIASES = {
352 "": {
353 },
354}
355
356_CONDITIONS = {
357 "cfg(unix)": ["aarch64-apple-darwin", "aarch64-apple-ios", "aarch64-apple-ios-sim", "aarch64-linux-android", "aarch64-unknown-linux-gnu", "arm-unknown-linux-gnueabi", "armv7-linux-androideabi", "armv7-unknown-linux-gnueabi", "i686-apple-darwin", "i686-linux-android", "i686-unknown-freebsd", "i686-unknown-linux-gnu", "powerpc-unknown-linux-gnu", "s390x-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-apple-ios", "x86_64-linux-android", "x86_64-unknown-freebsd", "x86_64-unknown-linux-gnu"],
358}
359
360###############################################################################
361
362def crate_repositories():
363 """A macro for defining repositories for all generated crates"""
364 maybe(
365 http_archive,
366 name = "ios_build__cc-1.0.73",
367 sha256 = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11",
368 type = "tar.gz",
369 urls = ["https://crates.io/api/v1/crates/cc/1.0.73/download"],
370 strip_prefix = "cc-1.0.73",
371 build_file = Label("@rules_rust_examples_ios_build//3rdparty/crates:BUILD.cc-1.0.73.bazel"),
372 )
373
374 maybe(
375 http_archive,
376 name = "ios_build__jobserver-0.1.25",
377 sha256 = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b",
378 type = "tar.gz",
379 urls = ["https://crates.io/api/v1/crates/jobserver/0.1.25/download"],
380 strip_prefix = "jobserver-0.1.25",
381 build_file = Label("@rules_rust_examples_ios_build//3rdparty/crates:BUILD.jobserver-0.1.25.bazel"),
382 )
383
384 maybe(
385 http_archive,
386 name = "ios_build__libc-0.2.134",
387 sha256 = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb",
388 type = "tar.gz",
389 urls = ["https://crates.io/api/v1/crates/libc/0.2.134/download"],
390 strip_prefix = "libc-0.2.134",
391 build_file = Label("@rules_rust_examples_ios_build//3rdparty/crates:BUILD.libc-0.2.134.bazel"),
392 )
393
394 maybe(
395 http_archive,
396 name = "ios_build__zstd-0.11.2-zstd.1.5.2",
397 sha256 = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4",
398 type = "tar.gz",
399 urls = ["https://crates.io/api/v1/crates/zstd/0.11.2+zstd.1.5.2/download"],
400 strip_prefix = "zstd-0.11.2+zstd.1.5.2",
401 build_file = Label("@rules_rust_examples_ios_build//3rdparty/crates:BUILD.zstd-0.11.2+zstd.1.5.2.bazel"),
402 )
403
404 maybe(
405 http_archive,
406 name = "ios_build__zstd-safe-5.0.2-zstd.1.5.2",
407 sha256 = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db",
408 type = "tar.gz",
409 urls = ["https://crates.io/api/v1/crates/zstd-safe/5.0.2+zstd.1.5.2/download"],
410 strip_prefix = "zstd-safe-5.0.2+zstd.1.5.2",
411 build_file = Label("@rules_rust_examples_ios_build//3rdparty/crates:BUILD.zstd-safe-5.0.2+zstd.1.5.2.bazel"),
412 )
413
414 maybe(
415 http_archive,
416 name = "ios_build__zstd-sys-2.0.1-zstd.1.5.2",
417 sha256 = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b",
418 type = "tar.gz",
419 urls = ["https://crates.io/api/v1/crates/zstd-sys/2.0.1+zstd.1.5.2/download"],
420 strip_prefix = "zstd-sys-2.0.1+zstd.1.5.2",
421 build_file = Label("@rules_rust_examples_ios_build//3rdparty/crates:BUILD.zstd-sys-2.0.1+zstd.1.5.2.bazel"),
422 )