diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java index f92033017e1267..f1cffdb4cdc117 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java @@ -153,6 +153,29 @@ public static void checkPrivateStarlarkificationAllowlist(StarlarkThread thread) } } + public static ImmutableList declareGeneratedFiles( + RuleContext ruleContext, ConfiguredTarget protoTarget, String extension) + throws RuleErrorException, InterruptedException { + StarlarkFunction declareGeneratedFiles = + (StarlarkFunction) + ruleContext.getStarlarkDefinedBuiltin("proto_common_declare_generated_files"); + ruleContext.initStarlarkRuleContext(); + Sequence outputs = + (Sequence) + ruleContext.callStarlarkOrThrowRuleError( + declareGeneratedFiles, + ImmutableList.of( + /* actions */ ruleContext.getStarlarkRuleContext().actions(), + /* proto_library_target */ protoTarget, + /* extension */ extension), + ImmutableMap.of()); + try { + return Sequence.cast(outputs, Artifact.class, "declare_generated_files").getImmutableList(); + } catch (EvalException e) { + throw new RuleErrorException(e.getMessageWithStack()); + } + } + public static void compile( RuleContext ruleContext, ConfiguredTarget protoTarget, diff --git a/src/main/starlark/builtins_bzl/common/exports.bzl b/src/main/starlark/builtins_bzl/common/exports.bzl index 11d0a0a0aa81e0..1b1a52e5021110 100755 --- a/src/main/starlark/builtins_bzl/common/exports.bzl +++ b/src/main/starlark/builtins_bzl/common/exports.bzl @@ -60,6 +60,7 @@ exported_rules = { exported_to_java = { "register_compile_and_archive_actions_for_j2objc": compilation_support.register_compile_and_archive_actions_for_j2objc, "proto_common_compile": proto_common_do_not_use.compile, + "proto_common_declare_generated_files": proto_common_do_not_use.declare_generated_files, "proto_common_experimental_should_generate_code": proto_common_do_not_use.experimental_should_generate_code, "proto_common_experimental_filter_sources": proto_common_do_not_use.experimental_filter_sources, "link_multi_arch_static_library": linking_support.link_multi_arch_static_library,