Search in sources :

Example 1 with DefaultBuildCacheHasher

use of org.gradle.caching.internal.DefaultBuildCacheHasher in project gradle by gradle.

the class DefaultClasspathHasher method hash.

@Override
public HashCode hash(ClassPath classpath) {
    FileCollectionSnapshot snapshot = snapshotter.snapshot(new SimpleFileCollection(classpath.getAsFiles()), TaskFilePropertyCompareStrategy.ORDERED, ClasspathSnapshotNormalizationStrategy.INSTANCE);
    BuildCacheHasher hasher = new DefaultBuildCacheHasher();
    snapshot.appendToHasher(hasher);
    return hasher.hash();
}
Also used : SimpleFileCollection(org.gradle.api.internal.file.collections.SimpleFileCollection) FileCollectionSnapshot(org.gradle.api.internal.changedetection.state.FileCollectionSnapshot) DefaultBuildCacheHasher(org.gradle.caching.internal.DefaultBuildCacheHasher) BuildCacheHasher(org.gradle.caching.internal.BuildCacheHasher) DefaultBuildCacheHasher(org.gradle.caching.internal.DefaultBuildCacheHasher)

Example 2 with DefaultBuildCacheHasher

use of org.gradle.caching.internal.DefaultBuildCacheHasher in project gradle by gradle.

the class TaskCacheKeyCalculator method calculate.

public TaskOutputCachingBuildCacheKey calculate(TaskExecution execution) {
    DefaultTaskOutputCachingBuildCacheKeyBuilder builder = new DefaultTaskOutputCachingBuildCacheKeyBuilder();
    HashCode taskClassLoaderHash = execution.getTaskClassLoaderHash();
    List<HashCode> taskActionsClassLoaderHashes = execution.getTaskActionsClassLoaderHashes();
    builder.appendTaskClass(execution.getTaskClass());
    builder.appendClassloaderHash(taskClassLoaderHash);
    builder.appendActionsClassloaderHashes(taskActionsClassLoaderHashes);
    SortedMap<String, ValueSnapshot> inputProperties = execution.getInputProperties();
    for (Map.Entry<String, ValueSnapshot> entry : inputProperties.entrySet()) {
        DefaultBuildCacheHasher newHasher = new DefaultBuildCacheHasher();
        entry.getValue().appendToHasher(newHasher);
        HashCode hash = newHasher.hash();
        builder.appendInputPropertyHash(entry.getKey(), hash);
    }
    SortedMap<String, FileCollectionSnapshot> inputFilesSnapshots = execution.getInputFilesSnapshot();
    for (Map.Entry<String, FileCollectionSnapshot> entry : inputFilesSnapshots.entrySet()) {
        FileCollectionSnapshot snapshot = entry.getValue();
        DefaultBuildCacheHasher newHasher = new DefaultBuildCacheHasher();
        snapshot.appendToHasher(newHasher);
        HashCode hash = newHasher.hash();
        builder.appendInputPropertyHash(entry.getKey(), hash);
    }
    SortedSet<String> outputPropertyNamesForCacheKey = execution.getOutputPropertyNamesForCacheKey();
    for (String cacheableOutputPropertyName : outputPropertyNamesForCacheKey) {
        builder.appendOutputPropertyName(cacheableOutputPropertyName);
    }
    return builder.build();
}
Also used : ValueSnapshot(org.gradle.api.internal.changedetection.state.ValueSnapshot) DefaultBuildCacheHasher(org.gradle.caching.internal.DefaultBuildCacheHasher) HashCode(com.google.common.hash.HashCode) FileCollectionSnapshot(org.gradle.api.internal.changedetection.state.FileCollectionSnapshot) Map(java.util.Map) SortedMap(java.util.SortedMap)

Example 3 with DefaultBuildCacheHasher

use of org.gradle.caching.internal.DefaultBuildCacheHasher in project gradle by gradle.

the class DefaultVariantTransformRegistration method transform.

@Override
public List<File> transform(File input) {
    try {
        File absoluteFile = input.getAbsoluteFile();
        // Collect up hash of the input files, and of the transform's configuration params and implementation
        FileCollectionSnapshot snapshot = fileCollectionSnapshotter.snapshot(new SimpleFileCollection(absoluteFile), TaskFilePropertyCompareStrategy.UNORDERED, TaskFilePropertySnapshotNormalizationStrategy.ABSOLUTE);
        DefaultBuildCacheHasher hasher = new DefaultBuildCacheHasher();
        hasher.putBytes(inputsHash.asBytes());
        snapshot.appendToHasher(hasher);
        HashCode resultHash = hasher.hash();
        return transformedFileCache.getResult(absoluteFile, resultHash, transformer);
    } catch (Exception e) {
        throw new ArtifactTransformException(input, to, implementation, e);
    }
}
Also used : HashCode(com.google.common.hash.HashCode) SimpleFileCollection(org.gradle.api.internal.file.collections.SimpleFileCollection) FileCollectionSnapshot(org.gradle.api.internal.changedetection.state.FileCollectionSnapshot) DefaultBuildCacheHasher(org.gradle.caching.internal.DefaultBuildCacheHasher) ArtifactTransformException(org.gradle.api.artifacts.transform.ArtifactTransformException) File(java.io.File) ArtifactTransformException(org.gradle.api.artifacts.transform.ArtifactTransformException) VariantTransformConfigurationException(org.gradle.api.artifacts.transform.VariantTransformConfigurationException)

Aggregations

FileCollectionSnapshot (org.gradle.api.internal.changedetection.state.FileCollectionSnapshot)3 DefaultBuildCacheHasher (org.gradle.caching.internal.DefaultBuildCacheHasher)3 HashCode (com.google.common.hash.HashCode)2 SimpleFileCollection (org.gradle.api.internal.file.collections.SimpleFileCollection)2 File (java.io.File)1 Map (java.util.Map)1 SortedMap (java.util.SortedMap)1 ArtifactTransformException (org.gradle.api.artifacts.transform.ArtifactTransformException)1 VariantTransformConfigurationException (org.gradle.api.artifacts.transform.VariantTransformConfigurationException)1 ValueSnapshot (org.gradle.api.internal.changedetection.state.ValueSnapshot)1 BuildCacheHasher (org.gradle.caching.internal.BuildCacheHasher)1