1"""Utility functions for use with the `crates_vendor` rule""" 2 3load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") 4load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") 5 6_BUILDIFIER_VERSION = "7.1.1" 7_BUILDIFIER_URL_TEMPLATE = "https://github.com/bazelbuild/buildtools/releases/download/v{version}/{bin}" 8_BUILDIFIER_INTEGRITY = { 9 "buildifier-darwin-amd64": "sha256-d0YNlXr3oCi7GK223EP6ZLbgAGTkc+rINoq4pwOzp0M=", 10 "buildifier-darwin-arm64": "sha256-yZD0sDsn1qDYb/6TAUcypZwYurDE86TMVjS9OxYp/OM=", 11 "buildifier-linux-amd64": "sha256-VLfyzo8idhz60mRBbpEgVq6chkX1nrZYO4RrSGSh7oM=", 12 "buildifier-linux-arm64": "sha256-HZrx9pVqQ5/KKHii+/dguXyl3wD2aeXRlTvrDEYHrHE=", 13 "buildifier-windows-amd64.exe": "sha256-Mx2IPnyjbIu+KKHoUoqccRAvS+Yj+Tn6PSCk2PAEvqs=", 14} 15 16def crates_vendor_deps(): 17 """Define dependencies of the `crates_vendor` rule 18 19 Returns: 20 list[struct(repo=str, is_dev_dep=bool)]: List of the dependency repositories. 21 """ 22 direct_deps = [] 23 24 for bin, integrity in _BUILDIFIER_INTEGRITY.items(): 25 repo = "cargo_bazel.{}".format(bin) 26 maybe( 27 http_file, 28 name = repo, 29 urls = [_BUILDIFIER_URL_TEMPLATE.format( 30 bin = bin, 31 version = _BUILDIFIER_VERSION, 32 )], 33 integrity = integrity, 34 downloaded_file_path = "buildifier.exe" if bin.endswith(".exe") else "buildifier", 35 executable = True, 36 ) 37 direct_deps.append(struct(repo = repo, is_dev_dep = False)) 38 39 return direct_deps 40 41# buildifier: disable=unnamed-macro 42def crates_vendor_deps_targets(): 43 """Define dependencies of the `crates_vendor` rule""" 44 45 native.config_setting( 46 name = "linux_amd64", 47 constraint_values = ["@platforms//os:linux", "@platforms//cpu:x86_64"], 48 visibility = ["//visibility:public"], 49 ) 50 51 native.config_setting( 52 name = "linux_arm64", 53 constraint_values = ["@platforms//os:linux", "@platforms//cpu:arm64"], 54 visibility = ["//visibility:public"], 55 ) 56 57 native.config_setting( 58 name = "macos_amd64", 59 constraint_values = ["@platforms//os:macos", "@platforms//cpu:x86_64"], 60 visibility = ["//visibility:public"], 61 ) 62 63 native.config_setting( 64 name = "macos_arm64", 65 constraint_values = ["@platforms//os:macos", "@platforms//cpu:arm64"], 66 visibility = ["//visibility:public"], 67 ) 68 69 native.config_setting( 70 name = "windows", 71 constraint_values = ["@platforms//os:windows"], 72 visibility = ["//visibility:public"], 73 ) 74 75 native.alias( 76 name = "buildifier", 77 actual = select({ 78 ":linux_amd64": "@cargo_bazel.buildifier-linux-amd64//file", 79 ":linux_arm64": "@cargo_bazel.buildifier-linux-arm64//file", 80 ":macos_amd64": "@cargo_bazel.buildifier-darwin-amd64//file", 81 ":macos_arm64": "@cargo_bazel.buildifier-darwin-arm64//file", 82 ":windows": "@cargo_bazel.buildifier-windows-amd64.exe//file", 83 }), 84 visibility = ["//visibility:public"], 85 ) 86