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 = "5.0.1" 7_BUILDIFIER_URL_TEMPLATE = "https://github.com/bazelbuild/buildtools/releases/download/{version}/{bin}" 8_BUILDIFIER_SHA256S = { 9 "buildifier-darwin-amd64": "2cb0a54683633ef6de4e0491072e22e66ac9c6389051432b76200deeeeaf93fb", 10 "buildifier-darwin-arm64": "4da23315f0dccabf878c8227fddbccf35545b23b3cb6225bfcf3107689cc4364", 11 "buildifier-linux-amd64": "3ed7358c7c6a1ca216dc566e9054fd0b97a1482cb0b7e61092be887d42615c5d", 12 "buildifier-linux-arm64": "c657c628fca72b7e0446f1a542231722a10ba4321597bd6f6249a5da6060b6ff", 13 "buildifier-windows-amd64.exe": "45e13b2951e4c611d346dacdaf0aafaa484045a3e7300fbc5dd01a896a688177", 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, sha256 in _BUILDIFIER_SHA256S.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 sha256 = sha256, 34 downloaded_file_path = "buildifier.exe", 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