Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Create immutable file collection when de-serializing

Persist only file tree roots contained in file collections

in the instant execution cache. Before this change, all the files

in the file tree have been persisted instead of the root only.

Refactor serialization for instant execution cache so that property values are writen/read as `Provider` instances, and these provider instances connected in as the value of the property.

This will allow providers whose value cannot be eagerly evaluated to be serialized differently to those whose value is known when serializing.

  1. … 4 more files in changeset.
Serialize references to `WorkerExecutor` to the instant execution cache.

Also serialize broken `Provider<T>` instances, in the same way that broken `FileCollection` instances are serialized. This is really just a work around, and we should instead offer ways to avoid writing these broken instances to the cache.

  1. … 6 more files in changeset.
Write enough state of transformation nodes to the instant execution cache in order to actually run the transform when read from the cache. Connect this up to the file collection serialization so that the results appear in file collections read from the cache.

There are still some transformation details that are ignored for now.

  1. … 12 more files in changeset.
Ensure that non-task node instances read from the instant execution cache are reused when referenced from a file collection read from the cache.

  1. … 9 more files in changeset.
Write a placeholder to the instant execution cache for each artifact transform output included in a file collection and that is scheduled for execution. The placeholder is ignored on read from the cache, so the outputs of artifact transforms are still being discarded.

  1. … 9 more files in changeset.
Rename file collection visitor type and visit method.

  1. … 33 more files in changeset.
Some refactoring of file collection visitor.

  1. … 19 more files in changeset.
Change file collection `visitLeafCollections()` so that visitor receives a 'source' object and `Iterable<File>` that describes a file collection, instead of a `FileCollection` instance.

Change visiting of the outputs of artifact transforms so that an empty collection is visited when its 'spec' is requested by the visitor. The 'source' object can be used to carry details about the output variant to the instant execution serializer.

  1. … 25 more files in changeset.
Change file collection `visitLeafCollections()` so that visitor receives a 'source' object, instead of an enum, in order to make the decision whether to visit a child collection or not.

Use this in dependency resolution to remove some special-casing for local dependency files.

  1. … 31 more files in changeset.
Rework visiting a `Configuration` so that its contents are treated as a sequence of collections, rather than a single monolithic collection of files. This will allow visitors such as continuous build or instant execution some finer-grained visibility into the contents of the `Configuration`.

In this commit, the collections do not carry any useful information and the granularity is per artifact, which is too fine-grained. Later commits will address this.

  1. … 27 more files in changeset.
Merge `FileCollection.registerWatchPoints()` into `visitLeafCollections()`, so that a visitor can optionally receive the 'spec' or definition for each participant in a file collection.

This will also later be used by instant execution to serialize some file collection participants as files and some as definitions.

  1. … 19 more files in changeset.
Allow a `FileCollection` visitor to skip visiting the output of artifact transforms, and use this when serializing file collections to the instant execution cache.

This is only intended to be a basic step towards allow visitors better control over what to visit and in what form to visit. In this step, the API is specific to artifact transforms but will be made more general in later changes.

  1. … 22 more files in changeset.
Merge `FileTreeInternal.visitTreeOrBackingFile()` into `visitLeafCollections(listener)`, so that the listener is told whether or not the tree is backed by a file and can do what it chooses with this information.

  1. … 16 more files in changeset.
Refine the API for visiting the leaves of a FileCollection, so that a visitor does not have to recreate a FileTree from its root directory and set of patterns, but can instead use the original instance.

  1. … 8 more files in changeset.
Make `Codec.decode` a suspending function

  1. … 20 more files in changeset.
Make `Codec.encode` a suspending function

So the continuations can be used to solve the `StackOverflowError`s on

deeply nested object graphs.

  1. … 20 more files in changeset.
Change instant execution so that it visits the children of a `FileCollection` in order to serialize the contents of the collection. This will allow serialization specific to each kind of source of files in the collection, e.g. treat artifact transform outputs, differently to the elements of a file tree, differently to a fixed path.

  1. … 1 more file in changeset.
Refine FileCollectionCodec

by leveraging kotlin.Result

Signed-off-by: Paul Merlin <>

Instant execution collects FileCollection resolution exception messages

This let the groovy plugin validation of groovy dependency work in

instant execution mode.

Signed-off-by: Paul Merlin <>

  1. … 2 more files in changeset.
Move `StateSerialization` to `serialization.codecs` as `Codecs`

  1. … 7 more files in changeset.
Move serialization specific types to `serialization` subpackage

And move codecs to `serialization.codecs` subpackage.

    • -0
    • +39
  1. … 30 more files in changeset.