Skip to content

Commit

Permalink
Don't duplicate GenerateProtoTask sources as includes
Browse files Browse the repository at this point in the history
Let the task itself handle the needed duplication.
  • Loading branch information
ejona86 committed Aug 17, 2022
1 parent 3466d12 commit 407ee13
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public abstract class GenerateProtoTask extends DefaultTask {
// that may be "imported" from the source protos, but will not be compiled.
private final ConfigurableFileCollection includeDirs = objectFactory.fileCollection()
// source files are proto files that will be compiled by protoc
private final ConfigurableFileCollection sourceFiles = objectFactory.fileCollection()
private final ConfigurableFileCollection sourceDirs = objectFactory.fileCollection()
private final NamedDomainObjectContainer<PluginOptions> builtins = objectFactory.domainObjectContainer(PluginOptions)
private final NamedDomainObjectContainer<PluginOptions> plugins = objectFactory.domainObjectContainer(PluginOptions)
private final ProjectLayout projectLayout = project.layout
Expand Down Expand Up @@ -289,7 +289,7 @@ public abstract class GenerateProtoTask extends DefaultTask {
this.buildType = buildType
}

@Internal("Inputs tracked in getSourceFiles()")
@Internal("Inputs tracked in getSourceDirs()")
SourceSet getSourceSet() {
Preconditions.checkState(!isAndroidProject.get(),
'sourceSet should not be used in an Android project')
Expand All @@ -301,8 +301,8 @@ public abstract class GenerateProtoTask extends DefaultTask {
@PathSensitive(PathSensitivity.RELATIVE)
@IgnoreEmptyDirectories
@InputFiles
FileCollection getSourceFiles() {
return sourceFiles
FileCollection getSourceDirs() {
return sourceDirs
}

@InputFiles
Expand Down Expand Up @@ -471,9 +471,9 @@ public abstract class GenerateProtoTask extends DefaultTask {
/**
* Add a collection of proto source files to be compiled.
*/
public void addSourceFiles(FileCollection files) {
public void addSourceDirs(FileCollection dirs) {
checkCanConfig()
sourceFiles.from(files)
sourceDirs.from(dirs)
}

/**
Expand Down Expand Up @@ -590,7 +590,7 @@ public abstract class GenerateProtoTask extends DefaultTask {

// Sort to ensure generated descriptors have a canonical representation
// to avoid triggering unnecessary rebuilds downstream
List<File> protoFiles = sourceFiles.files.sort()
List<File> protoFiles = sourceDirs.asFileTree.files.sort()

[builtins, plugins]*.forEach { PluginOptions plugin ->
String outputPath = getOutputDir(plugin)
Expand All @@ -605,7 +605,8 @@ public abstract class GenerateProtoTask extends DefaultTask {

// The source directory designated from sourceSet may not actually exist on disk.
// "include" it only when it exists, so that Gradle and protoc won't complain.
List<String> dirs = includeDirs.filter { File it -> it.exists() }*.path.collect { "-I${it}".toString() }
List<String> dirs = (sourceDirs + includeDirs).filter { File it -> it.exists() }*.path
.collect { "-I${it}".toString() }
logger.debug "ProtobufCompile using directories ${dirs}"
logger.debug "ProtobufCompile using files ${protoFiles}"

Expand Down
17 changes: 5 additions & 12 deletions src/main/groovy/com/google/protobuf/gradle/ProtobufPlugin.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ class ProtobufPlugin implements Plugin<Project> {
// dependent projects can import them.
Task processResourcesTask =
project.tasks.getByName(sourceSet.getTaskName('process', 'resources'))
processResourcesTask.from(generateProtoTask.sourceFiles) {
processResourcesTask.from(generateProtoTask.sourceDirs) {
include '**/*.proto'
}

Expand Down Expand Up @@ -297,7 +297,7 @@ class ProtobufPlugin implements Plugin<Project> {
// Include source proto files in the compiled archive, so that proto files from
// dependent projects can import them.
Task processResourcesTask = variant.getProcessJavaResourcesProvider().get()
processResourcesTask.from(generateProtoTask.sourceFiles) {
processResourcesTask.from(generateProtoTask.sourceDirs) {
include '**/*.proto'
}
}
Expand Down Expand Up @@ -332,9 +332,7 @@ class ProtobufPlugin implements Plugin<Project> {
description = "Compiles Proto source for '${sourceSetOrVariantName}'"
outputBaseDir = outDir
sourceSets.each { sourceSet ->
addSourceFiles(sourceSet.proto)
SourceDirectorySet protoSrcDirSet = sourceSet.proto
addIncludeDir(protoSrcDirSet.sourceDirectories)
addSourceDirs(sourceSet.proto.sourceDirectories)
}
}
}
Expand All @@ -360,8 +358,7 @@ class ProtobufPlugin implements Plugin<Project> {
}
}

linkExtractTaskToGenerateTask(task, generateProtoTask)
generateProtoTask.addSourceFiles(project.files(task).asFileTree)
generateProtoTask.addSourceDirs(project.files(task))
return task
}

Expand Down Expand Up @@ -413,11 +410,7 @@ class ProtobufPlugin implements Plugin<Project> {
}
}

linkExtractTaskToGenerateTask(task, generateProtoTask)
}

private void linkExtractTaskToGenerateTask(ProtobufExtract extractTask, GenerateProtoTask generateTask) {
generateTask.addIncludeDir(project.files(extractTask))
generateProtoTask.addIncludeDir(project.files(task))
}

private void linkGenerateProtoTasksToTaskName(String compileTaskName, GenerateProtoTask genProtoTask) {
Expand Down

0 comments on commit 407ee13

Please sign in to comment.