diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/proto')
3 files changed, 17 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java index b7395a914c..d4d94638bf 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java @@ -317,11 +317,12 @@ public class CcProtoAspect extends NativeAspectClass implements ConfiguredAspect } public void addProviders(ConfiguredAspect.Builder builder) { + OutputGroupProvider outputGroupProvider = new OutputGroupProvider(outputGroups); builder.addProvider( new CcProtoLibraryProviders( - filesBuilder.build(), - ccLibraryProviders.toBuilder().add(new OutputGroupProvider(outputGroups)).build())); + filesBuilder.build(), ccLibraryProviders, outputGroupProvider)); builder.addProviders(ccLibraryProviders); + builder.addNativeDeclaredProvider(outputGroupProvider); if (headerProvider != null) { builder.addProvider(headerProvider); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoLibrary.java index 1f03ef16d0..d6a576370e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoLibrary.java @@ -45,11 +45,17 @@ public class CcProtoLibrary implements RuleConfiguredTargetFactory { checkNotNull(ruleContext.getPrerequisite("deps", TARGET)) .getProvider(CcProtoLibraryProviders.class); - return new RuleConfiguredTargetBuilder(ruleContext) + RuleConfiguredTargetBuilder ruleConfiguredTargetBuilder = new RuleConfiguredTargetBuilder( + ruleContext) .setFilesToBuild(depProviders.filesBuilder) .addProvider( RunfilesProvider.class, RunfilesProvider.withData(Runfiles.EMPTY, Runfiles.EMPTY)) - .addProviders(depProviders.providerMap) + .addProviders(depProviders.providerMap); + for (String groupName : depProviders.outputGroupProvider) { + ruleConfiguredTargetBuilder.addOutputGroup(groupName, + depProviders.outputGroupProvider.getOutputGroup(groupName)); + } + return ruleConfiguredTargetBuilder .addSkylarkTransitiveInfo(CcSkylarkApiProvider.NAME, new CcSkylarkApiProvider()) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoLibraryProviders.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoLibraryProviders.java index 35b53d8894..f9bb8267d7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoLibraryProviders.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoLibraryProviders.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.rules.cpp.proto; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.analysis.OutputGroupProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -28,9 +29,13 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety; final class CcProtoLibraryProviders implements TransitiveInfoProvider { final NestedSet<Artifact> filesBuilder; final TransitiveInfoProviderMap providerMap; + final OutputGroupProvider outputGroupProvider; - CcProtoLibraryProviders(NestedSet<Artifact> filesBuilder, TransitiveInfoProviderMap providerMap) { + CcProtoLibraryProviders(NestedSet<Artifact> filesBuilder, + TransitiveInfoProviderMap providerMap, + OutputGroupProvider outputGroupProvider) { this.filesBuilder = filesBuilder; this.providerMap = providerMap; + this.outputGroupProvider = outputGroupProvider; } } |