From 1f62032ab2f4be41ac5f006ce12590469f9144fc Mon Sep 17 00:00:00 2001 From: psalaberria002 Date: Tue, 21 May 2024 20:16:38 +0200 Subject: [PATCH] Add and register toolchain --- BUILD | 6 ++++++ MODULE.bazel | 2 ++ MODULE.bazel.lock | 10 ++++++---- docs/defs.md | 23 +++++++++++++++++++++++ tests/current_toolchain/BUILD.bazel | 17 +++++++++++++++++ 5 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 tests/current_toolchain/BUILD.bazel diff --git a/BUILD b/BUILD index e2c2f41..079f426 100644 --- a/BUILD +++ b/BUILD @@ -1,4 +1,5 @@ load("@rules_license//rules:license.bzl", "license") +load("//proto:defs.bzl", "proto_toolchain") license( name = "license", @@ -8,3 +9,8 @@ license( licenses(["notice"]) exports_files(["LICENSE"]) + +proto_toolchain( + name = "proto_toolchain", + proto_compiler = "@com_google_protobuf//:protoc", +) diff --git a/MODULE.bazel b/MODULE.bazel index d69b785..f2be98b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -17,3 +17,5 @@ bazel_dep(name = "rules_cc", version = "0.0.1", dev_dependency = True) bazel_dep(name = "googletest", version = "1.11.0", dev_dependency = True, repo_name = "com_google_googletest") bazel_dep(name = "protobuf", version = "23.1", dev_dependency = True, repo_name = "com_google_protobuf") bazel_dep(name = "platforms", version = "0.0.8", dev_dependency = True) + +register_toolchains("//:proto_toolchain_toolchain", dev_dependency = True) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 5d86542..429f0c0 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1,6 +1,6 @@ { "lockFileVersion": 6, - "moduleFileHash": "7a83abe22db793fb1612f5cf942cc29bce39f91dcc76ce2f4ecc60a2f5f8a1e0", + "moduleFileHash": "1180f60115309a637d417b53b0188f1dcb65caf0cdbcb87d9c013c1b3b056d21", "flags": { "cmdRegistries": [ "https://bcr.bazel.build/" @@ -22,7 +22,9 @@ "key": "", "repoName": "rules_proto", "executionPlatformsToRegister": [], - "toolchainsToRegister": [], + "toolchainsToRegister": [ + "//:proto_toolchain_toolchain" + ], "extensionUsages": [], "deps": { "rules_license": "rules_license@0.0.7", @@ -1222,7 +1224,7 @@ }, "@@protobuf~//:non_module_deps.bzl%non_module_deps": { "general": { - "bzlTransitiveDigest": "aGnO/HqVtCmRLEQWGCuKp7jwX+lCh/nc3/hI3clfwD8=", + "bzlTransitiveDigest": "Ru/iB33/Fg7l06H1hBzJ1lPAZip3abmjbwD8z/MzBig=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, @@ -1250,7 +1252,7 @@ }, "@@rules_java~//java:extensions.bzl%toolchains": { "general": { - "bzlTransitiveDigest": "tJHbmWnq7m+9eUBnUdv7jZziQ26FmcGL9C5/hU3Q9UQ=", + "bzlTransitiveDigest": "0N5b5J9fUzo0sgvH4F3kIEaeXunz4Wy2/UtSFV/eXUY=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/docs/defs.md b/docs/defs.md index 2f5dc92..c554646 100644 --- a/docs/defs.md +++ b/docs/defs.md @@ -2,6 +2,29 @@ Starlark rules for building protocol buffers. + + +## current_proto_toolchain + +
+current_proto_toolchain(name)
+
+ + + This rule exists so that the current protoc toolchain can be used in the `toolchains` attribute of + other rules, such as genrule. It allows exposing a protoc toolchain after toolchain resolution has + happened, to a rule which expects a concrete implementation of a toolchain, rather than a + toolchain_type which could be resolved to that toolchain. + + +**ATTRIBUTES** + + +| Name | Description | Type | Mandatory | Default | +| :------------- | :------------- | :------------- | :------------- | :------------- | +| name | A unique name for this target. | Name | required | | + + ## proto_descriptor_set diff --git a/tests/current_toolchain/BUILD.bazel b/tests/current_toolchain/BUILD.bazel new file mode 100644 index 0000000..4bc2cc2 --- /dev/null +++ b/tests/current_toolchain/BUILD.bazel @@ -0,0 +1,17 @@ +load("//proto:defs.bzl", "current_proto_toolchain") + +current_proto_toolchain( + name = "current_proto_toolchain", + visibility = ["//visibility:public"], +) + +genrule( + name = "gen_protoc_version_from_current_proto_toolchain", + srcs = [":current_proto_toolchain"], + outs = ["protoc_version_from_current_proto_toolchain"], + cmd = """ + v=$$($(PROTOC) --version) + echo $$v > $(OUTS) + """, + toolchains = [":current_proto_toolchain"], +)