Use ProtoCommon.declareGeneratedFiles in j2objc aspect.
PiperOrigin-RevId: 441098152
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 31fedc6..abc15a4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -394,7 +394,7 @@
ImmutableList<Artifact> filteredProtoSources =
ImmutableList.copyOf(ProtoCommon.filterSources(ruleContext, base, protoToolchain));
- J2ObjcSource j2ObjcSource = protoJ2ObjcSource(ruleContext, filteredProtoSources);
+ J2ObjcSource j2ObjcSource = protoJ2ObjcSource(ruleContext, base, filteredProtoSources);
J2ObjcMappingFileProvider directJ2ObjcMappingFileProvider;
if (j2ObjcSource.getObjcSrcs().isEmpty()) {
@@ -643,9 +643,13 @@
J2ObjcSource j2ObjcSource)
throws RuleErrorException, InterruptedException {
ImmutableList<Artifact> outputHeaderMappingFiles =
- ProtoCommon.getGeneratedOutputs(ruleContext, filteredProtoSources, ".j2objc.mapping");
+ filteredProtoSources.isEmpty()
+ ? ImmutableList.of()
+ : ProtoCommon.declareGeneratedFiles(ruleContext, base, ".j2objc.mapping");
ImmutableList<Artifact> outputClassMappingFiles =
- ProtoCommon.getGeneratedOutputs(ruleContext, filteredProtoSources, ".clsmap.properties");
+ filteredProtoSources.isEmpty()
+ ? ImmutableList.of()
+ : ProtoCommon.declareGeneratedFiles(ruleContext, base, ".clsmap.properties");
ImmutableList<Artifact> outputs =
ImmutableList.<Artifact>builder()
.addAll(j2ObjcSource.getObjcSrcs())
@@ -654,14 +658,14 @@
.addAll(outputClassMappingFiles)
.build();
- String genfilesPath = getProtoOutputRoot(ruleContext).getPathString();
+ String bindirPath = getProtoOutputRoot(ruleContext).getPathString();
ProtoCommon.compile(
ruleContext,
base,
checkNotNull(protoToolchain),
outputs,
- genfilesPath,
+ bindirPath,
"Generating j2objc proto_library %{label}");
return new J2ObjcMappingFileProvider(
@@ -770,7 +774,8 @@
}
private static J2ObjcSource protoJ2ObjcSource(
- RuleContext ruleContext, ImmutableList<Artifact> protoSources) {
+ RuleContext ruleContext, ConfiguredTarget protoTarget, ImmutableList<Artifact> protoSources)
+ throws RuleErrorException, InterruptedException {
PathFragment objcFileRootExecPath = getProtoOutputRoot(ruleContext);
List<PathFragment> headerSearchPaths =
@@ -778,8 +783,12 @@
return new J2ObjcSource(
ruleContext.getTarget().getLabel(),
- ProtoCommon.getGeneratedOutputs(ruleContext, protoSources, ".j2objc.pb.m"),
- ProtoCommon.getGeneratedOutputs(ruleContext, protoSources, ".j2objc.pb.h"),
+ protoSources.isEmpty()
+ ? ImmutableList.of()
+ : ProtoCommon.declareGeneratedFiles(ruleContext, protoTarget, ".j2objc.pb.m"),
+ protoSources.isEmpty()
+ ? ImmutableList.of()
+ : ProtoCommon.declareGeneratedFiles(ruleContext, protoTarget, ".j2objc.pb.h"),
objcFileRootExecPath,
SourceType.PROTO,
headerSearchPaths,
@@ -788,10 +797,10 @@
private static PathFragment getProtoOutputRoot(RuleContext ruleContext) {
if (ruleContext.getConfiguration().isSiblingRepositoryLayout()) {
- return ruleContext.getGenfilesFragment();
+ return ruleContext.getBinFragment();
}
return ruleContext
- .getGenfilesFragment()
+ .getBinFragment()
.getRelative(ruleContext.getLabel().getRepository().getExecPath(false));
}