Adam Snaider | 1c095c9 | 2023-07-08 02:09:58 -0400 | [diff] [blame^] | 1 | ############################################################################### |
| 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 | |
| 18 | load("@bazel_skylib//lib:selects.bzl", "selects") |
| 19 | load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") |
| 20 | load("@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 | |
| 29 | def _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 | |
| 86 | def 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 | |
| 139 | def 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 | |
| 209 | def 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 | |
| 362 | def 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 | ) |