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)); }