Skip to content

Commit

Permalink
Use Relative Sensitivity for GenerateProtoTask, use name only sensiti…
Browse files Browse the repository at this point in the history
…vity for classpath.

Using absolute sensitivity does not allow this task output to be re-used
across different machines.

Classpath jars and files can be located in different parts of the
filesystem relative to the current working directory so the task output
is not cacheable unless we use NAME_ONLY sensitivity.
  • Loading branch information
Nelson Osacky committed Jan 11, 2019
1 parent 7123080 commit d843cc3
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ package com.google.protobuf.gradle

import com.google.common.base.Preconditions
import com.google.common.collect.ImmutableList

import org.gradle.api.DefaultTask
import org.gradle.api.GradleException
import org.gradle.api.Named
Expand All @@ -43,6 +42,7 @@ import org.gradle.api.internal.file.DefaultSourceDirectorySet
import org.gradle.api.internal.file.FileResolver
import org.gradle.api.internal.file.collections.DefaultDirectoryFileTreeFactory
import org.gradle.api.logging.LogLevel
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.TaskAction
import org.gradle.util.ConfigureUtil
Expand Down Expand Up @@ -336,7 +336,7 @@ public class GenerateProtoTask extends DefaultTask {
includeDirs.add(dir)
// Register all files under the directory as input so that Gradle will check their changes for
// incremental build
inputs.dir(dir)
inputs.dir(dir).withPathSensitivity(PathSensitivity.RELATIVE)
}

/**
Expand All @@ -346,7 +346,7 @@ public class GenerateProtoTask extends DefaultTask {
checkCanConfig()
sourceFiles.from(files)
// Register the files as input so that Gradle will check their changes for incremental build
inputs.files(files)
inputs.files(files).withPathSensitivity(PathSensitivity.RELATIVE)
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
package com.google.protobuf.gradle

import com.google.common.collect.ImmutableList

import org.gradle.api.Action
import org.gradle.api.GradleException
import org.gradle.api.Plugin
Expand All @@ -42,6 +41,7 @@ import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.internal.file.FileResolver
import org.gradle.api.logging.LogLevel
import org.gradle.api.plugins.AppliedPlugin
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.SourceSet

import javax.inject.Inject
Expand Down Expand Up @@ -359,6 +359,7 @@ class ProtobufPlugin implements Plugin<Project> {
destDir = getExtractedIncludeProtosDir(sourceSetOrVariantName) as File
inputs.files (compileClasspathConfiguration
?: project.configurations[Utils.getConfigName(sourceSetOrVariantName, 'compile')])
.withPathSensitivity(PathSensitivity.NAME_ONLY)

// TL; DR: Make protos in 'test' sourceSet able to import protos from the 'main'
// sourceSet. Sub-configurations, e.g., 'testCompile' that extends 'compile', don't
Expand All @@ -379,7 +380,8 @@ class ProtobufPlugin implements Plugin<Project> {
// 'resources' of the output of 'main', in which the source protos are placed. This is
// nicer than the ad-hoc solution that Android has, because it works for any extended
// configuration, not just 'testCompile'.
inputs.files getSourceSets()[sourceSetOrVariantName].compileClasspath
inputs.files (getSourceSets()[sourceSetOrVariantName].compileClasspath)
.withPathSensitivity(PathSensitivity.NAME_ONLY)
}
isTest = Utils.isTest(sourceSetOrVariantName)
}
Expand Down

0 comments on commit d843cc3

Please sign in to comment.