diff options
author | cpeyser <cpeyser@google.com> | 2018-02-14 12:49:17 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-14 12:50:54 -0800 |
commit | 27458be9cd752dd1dfd4d2c8f1bdc421bdbf16bb (patch) | |
tree | f6d1c2659aa929607c7e19c9aeec0f0486e340c4 /src/main | |
parent | 03e27585a10f7f5bc9327d64405efc39666e0342 (diff) |
Use AutoCodec to generate CODECs for several provider types that are exported
by cc_library.
PiperOrigin-RevId: 185729248
Diffstat (limited to 'src/main')
11 files changed, 143 insertions, 47 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java index 9d6e4e173c..d1e28db822 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java @@ -19,6 +19,8 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; @@ -34,7 +36,10 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; doc = "An interface for rules that provide files.", category = SkylarkModuleCategory.PROVIDER ) +@AutoCodec public final class FileProvider implements TransitiveInfoProvider { + public static final ObjectCodec<FileProvider> CODEC = new FileProvider_AutoCodec(); + public static final FileProvider EMPTY = new FileProvider(NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER)); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java index d27ea32781..3e4011dbfb 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java @@ -31,6 +31,10 @@ import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.EventKind; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.BuildType; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; @@ -67,7 +71,10 @@ import javax.annotation.Nullable; category = SkylarkModuleCategory.NONE, doc = "An interface for a set of runfiles." ) +@AutoCodec public final class Runfiles { + public static ObjectCodec<Runfiles> CODEC = new Runfiles_AutoCodec(); + private static final Function<SymlinkEntry, Artifact> TO_ARTIFACT = new Function<SymlinkEntry, Artifact>() { @Override @@ -76,13 +83,21 @@ public final class Runfiles { } }; + @AutoCodec(strategy = Strategy.SINGLETON) + @VisibleForSerialization + static class DummyEmptyFilesSupplier implements EmptyFilesSupplier { + public static final ObjectCodec<DummyEmptyFilesSupplier> CODEC = + new Runfiles_DummyEmptyFilesSupplier_AutoCodec(); + public static final DummyEmptyFilesSupplier INSTANCE = new DummyEmptyFilesSupplier(); + + @Override + public Iterable<PathFragment> getExtraPaths(Set<PathFragment> manifestPaths) { + return ImmutableList.of(); + } + } + private static final EmptyFilesSupplier DUMMY_EMPTY_FILES_SUPPLIER = - new EmptyFilesSupplier() { - @Override - public Iterable<PathFragment> getExtraPaths(Set<PathFragment> manifestPaths) { - return ImmutableList.of(); - } - }; + DummyEmptyFilesSupplier.INSTANCE; private static final Function<Artifact, PathFragment> GET_ROOT_RELATIVE_PATH = new Function<Artifact, PathFragment>() { @@ -129,11 +144,16 @@ public final class Runfiles { // equals to the third one if they are not the same instance (which they almost never are) // // Goodnight, prince(ss)?, and sweet dreams. - private static final class SymlinkEntry implements SkylarkValue { + @AutoCodec + @VisibleForSerialization + static final class SymlinkEntry implements SkylarkValue { + public static final ObjectCodec<SymlinkEntry> CODEC = new Runfiles_SymlinkEntry_AutoCodec(); + private final PathFragment path; private final Artifact artifact; - private SymlinkEntry(PathFragment path, Artifact artifact) { + @VisibleForSerialization + SymlinkEntry(PathFragment path, Artifact artifact) { this.path = Preconditions.checkNotNull(path); this.artifact = Preconditions.checkNotNull(artifact); } @@ -210,7 +230,9 @@ public final class Runfiles { * Interface used for adding empty files to the runfiles at the last minute. Mainly to support * python-related rules adding __init__.py files. */ + @AutoCodec(strategy = Strategy.POLYMORPHIC) public interface EmptyFilesSupplier { + ObjectCodec<EmptyFilesSupplier> CODEC = new Runfiles_EmptyFilesSupplier_AutoCodec(); /** Calculate additional empty files to add based on the existing manifest paths. */ Iterable<PathFragment> getExtraPaths(Set<PathFragment> manifestPaths); } @@ -239,12 +261,12 @@ public final class Runfiles { private ConflictPolicy conflictPolicy = ConflictPolicy.IGNORE; /** - * Defines a set of artifacts that may or may not be included in the runfiles directory and - * a manifest file that makes that determination. These are applied on top of any artifacts + * Defines a set of artifacts that may or may not be included in the runfiles directory and a + * manifest file that makes that determination. These are applied on top of any artifacts * specified in {@link #unconditionalArtifacts}. * - * <p>The incentive behind this is to enable execution-phase "pruning" of runfiles. Anything - * set in unconditionalArtifacts is hard-set in Blaze's analysis phase, and thus unchangeable in + * <p>The incentive behind this is to enable execution-phase "pruning" of runfiles. Anything set + * in unconditionalArtifacts is hard-set in Blaze's analysis phase, and thus unchangeable in * response to execution phase results. This isn't always convenient. For example, say we have an * action that consumes a set of "possible" runtime dependencies for a source file, parses that * file for "import a.b.c" statements, and outputs a manifest of the actual dependencies that are @@ -256,7 +278,11 @@ public final class Runfiles { * superset of the pruned dependencies, so undeclared inclusions (which can break build * correctness) aren't possible. */ + @AutoCodec public static class PruningManifest { + public static final ObjectCodec<PruningManifest> CODEC = + new Runfiles_PruningManifest_AutoCodec(); + private final NestedSet<Artifact> candidateRunfiles; private final Artifact manifestFile; @@ -294,9 +320,11 @@ public final class Runfiles { */ private final boolean legacyExternalRunfiles; - private Runfiles( + @AutoCodec.Instantiator + @VisibleForSerialization + Runfiles( PathFragment suffix, - NestedSet<Artifact> artifacts, + NestedSet<Artifact> unconditionalArtifacts, NestedSet<SymlinkEntry> symlinks, NestedSet<SymlinkEntry> rootSymlinks, NestedSet<PruningManifest> pruningManifests, @@ -305,7 +333,7 @@ public final class Runfiles { ConflictPolicy conflictPolicy, boolean legacyExternalRunfiles) { this.suffix = suffix; - this.unconditionalArtifacts = Preconditions.checkNotNull(artifacts); + this.unconditionalArtifacts = Preconditions.checkNotNull(unconditionalArtifacts); this.symlinks = Preconditions.checkNotNull(symlinks); this.rootSymlinks = Preconditions.checkNotNull(rootSymlinks); this.extraMiddlemen = Preconditions.checkNotNull(extraMiddlemen); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesProvider.java index 93f2ed21ea..07abf15ac8 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesProvider.java @@ -15,20 +15,27 @@ package com.google.devtools.build.lib.analysis; import com.google.common.base.Function; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; /** * Runfiles a target contributes to targets that depend on it. * - * <p>The set of runfiles contributed can be different if the dependency is through a - * <code>data</code> attribute (note that this is just a rough approximation of the reality -- - * rule implementations are free to request the data runfiles at any time) + * <p>The set of runfiles contributed can be different if the dependency is through a <code>data + * </code> attribute (note that this is just a rough approximation of the reality -- rule + * implementations are free to request the data runfiles at any time) */ @Immutable +@AutoCodec public final class RunfilesProvider implements TransitiveInfoProvider { + public static final ObjectCodec<RunfilesProvider> CODEC = new RunfilesProvider_AutoCodec(); + private final Runfiles defaultRunfiles; private final Runfiles dataRunfiles; - private RunfilesProvider(Runfiles defaultRunfiles, Runfiles dataRunfiles) { + @VisibleForSerialization + RunfilesProvider(Runfiles defaultRunfiles, Runfiles dataRunfiles) { this.defaultRunfiles = defaultRunfiles; this.dataRunfiles = dataRunfiles; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProvider.java index 44edd90e74..baa069003d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProvider.java @@ -16,11 +16,14 @@ package com.google.devtools.build.lib.analysis; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy; -/** - * Provider class for configured targets that have a visibility. - */ +/** Provider class for configured targets that have a visibility. */ +@AutoCodec(strategy = Strategy.POLYMORPHIC) public interface VisibilityProvider extends TransitiveInfoProvider { + ObjectCodec<VisibilityProvider> CODEC = new VisibilityProvider_AutoCodec(); /** Returns the visibility specification. */ NestedSet<PackageGroupContents> getVisibility(); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProviderImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProviderImpl.java index 239d4edd32..270c92b4cb 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProviderImpl.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/VisibilityProviderImpl.java @@ -17,12 +17,15 @@ package com.google.devtools.build.lib.analysis; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -/** - * Visibility provider implementation. - */ +/** Visibility provider implementation. */ @Immutable +@AutoCodec public final class VisibilityProviderImpl implements VisibilityProvider { + public static ObjectCodec<VisibilityProviderImpl> CODEC = new VisibilityProviderImpl_AutoCodec(); + private final NestedSet<PackageGroupContents> visibility; public VisibilityProviderImpl(NestedSet<PackageGroupContents> visibility) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java index f4773d79f2..8ef3e5b9a4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java @@ -17,12 +17,15 @@ package com.google.devtools.build.lib.analysis.test; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.collect.nestedset.NestedSet; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy; import com.google.devtools.build.lib.util.Pair; -/** - * A provider of instrumented file sources and instrumentation metadata. - */ +/** A provider of instrumented file sources and instrumentation metadata. */ +@AutoCodec(strategy = Strategy.POLYMORPHIC) public interface InstrumentedFilesProvider extends TransitiveInfoProvider { + ObjectCodec<InstrumentedFilesProvider> CODEC = new InstrumentedFilesProvider_AutoCodec(); /** * The transitive closure of instrumented source files. diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java index d0ca5fdf69..ab8f51ef0b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java @@ -17,12 +17,16 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.util.Pair; -/** - * An implementation class for the InstrumentedFilesProvider interface. - */ +/** An implementation class for the InstrumentedFilesProvider interface. */ +@AutoCodec public final class InstrumentedFilesProviderImpl implements InstrumentedFilesProvider { + public static ObjectCodec<InstrumentedFilesProviderImpl> CODEC = + new InstrumentedFilesProviderImpl_AutoCodec(); + public static final InstrumentedFilesProvider EMPTY = new InstrumentedFilesProviderImpl( NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER), diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD index 5ce3b757be..b068e3f918 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD +++ b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD @@ -23,6 +23,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization", + "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java index 94705d7dce..7cd9102ca0 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java @@ -18,6 +18,7 @@ import com.google.common.base.Throwables; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.StringCanonicalizer; import com.google.devtools.build.lib.util.StringUtilities; @@ -103,6 +104,8 @@ public final class RepositoryName implements Serializable { } } + public static final ObjectCodec<RepositoryName> CODEC = new RepositoryNameCodec(); + /** * Makes sure that name is a valid repository name and creates a new RepositoryName using it. * diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java b/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java index 56d59e09c2..2212224a28 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java @@ -20,6 +20,10 @@ import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.stream.Stream; @@ -27,10 +31,10 @@ import java.util.stream.Stream; * Represents one of the following: * * <ul> - * <li>A single package (e.g. "//foo/bar") - * <li>All transitive subpackages of a package, inclusive (e.g. "//foo/bar/...", which includes - * "//foo/bar") - * <li>All packages (i.e. "//...") + * <li>A single package (e.g. "//foo/bar") + * <li>All transitive subpackages of a package, inclusive (e.g. "//foo/bar/...", which includes + * "//foo/bar") + * <li>All packages (i.e. "//...") * </ul> * * <p>Typically (exclusively?) used for package visibility, as part of a {@link PackageGroup} @@ -39,7 +43,11 @@ import java.util.stream.Stream; * <p>A package specification is specific to a single {@link RepositoryName} unless it is the "all * packages" specification. */ +@AutoCodec(strategy = Strategy.POLYMORPHIC) public abstract class PackageSpecification { + public static final ObjectCodec<PackageSpecification> CODEC = + new PackageSpecification_AutoCodec(); + private static final String PACKAGE_LABEL = "__pkg__"; private static final String SUBTREE_LABEL = "__subpackages__"; private static final String ALL_BENEATH_SUFFIX = "/..."; @@ -159,11 +167,17 @@ public abstract class PackageSpecification { return AllPackages.EVERYTHING; } - private static class SinglePackage extends PackageSpecification { + @AutoCodec + @VisibleForSerialization + static class SinglePackage extends PackageSpecification { + public static final ObjectCodec<SinglePackage> CODEC = + new PackageSpecification_SinglePackage_AutoCodec(); + private PackageIdentifier singlePackageName; - private SinglePackage(PackageIdentifier packageName) { - this.singlePackageName = packageName; + @VisibleForSerialization + SinglePackage(PackageIdentifier singlePackageName) { + this.singlePackageName = singlePackageName; } @Override @@ -199,10 +213,16 @@ public abstract class PackageSpecification { } } - private static class AllPackagesBeneath extends PackageSpecification { + @AutoCodec + @VisibleForSerialization + static class AllPackagesBeneath extends PackageSpecification { + public static final ObjectCodec<AllPackagesBeneath> CODEC = + new PackageSpecification_AllPackagesBeneath_AutoCodec(); + private PackageIdentifier prefix; - private AllPackagesBeneath(PackageIdentifier prefix) { + @VisibleForSerialization + AllPackagesBeneath(PackageIdentifier prefix) { this.prefix = prefix; } @@ -244,11 +264,15 @@ public abstract class PackageSpecification { } /** A package specification for a negative match, e.g. {@code -//pkg/sub/...}. */ - private static class NegativePackageSpecification extends PackageSpecification { + @AutoCodec + @VisibleForSerialization + static class NegativePackageSpecification extends PackageSpecification { + public static final ObjectCodec<NegativePackageSpecification> CODEC = + new PackageSpecification_NegativePackageSpecification_AutoCodec(); private final PackageSpecification delegate; - private NegativePackageSpecification(PackageSpecification delegate) { + NegativePackageSpecification(PackageSpecification delegate) { this.delegate = delegate; } @@ -287,7 +311,11 @@ public abstract class PackageSpecification { } } - private static class AllPackages extends PackageSpecification { + @AutoCodec + @VisibleForSerialization + static class AllPackages extends PackageSpecification { + public static final ObjectCodec<AllPackages> CODEC = + new PackageSpecification_AllPackages_AutoCodec(); private static final PackageSpecification EVERYTHING = new AllPackages(); @@ -329,11 +357,15 @@ public abstract class PackageSpecification { * testing a given package for containment (see {@link #containedPackages()}}. */ @Immutable + @AutoCodec public static final class PackageGroupContents { + public static final ObjectCodec<PackageGroupContents> CODEC = + new PackageSpecification_PackageGroupContents_AutoCodec(); private final ImmutableList<PackageSpecification> packageSpecifications; - private PackageGroupContents(ImmutableList<PackageSpecification> packageSpecifications) { + @VisibleForSerialization + PackageGroupContents(ImmutableList<PackageSpecification> packageSpecifications) { this.packageSpecifications = packageSpecifications; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java b/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java index d76b55b510..6d443cdbb2 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java +++ b/src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java @@ -22,6 +22,8 @@ import com.google.devtools.build.lib.analysis.Runfiles; import com.google.devtools.build.lib.analysis.actions.CustomCommandLine; import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.HashMap; @@ -38,13 +40,18 @@ public final class PythonUtils { private static final FileType REQUIRES_INIT_PY = FileType.of(".py", ".so", ".pyc"); - public static final Runfiles.EmptyFilesSupplier GET_INIT_PY_FILES = - new Runfiles.EmptyFilesSupplier() { + @AutoCodec + static class GetInitPyFiles implements Runfiles.EmptyFilesSupplier { + public static final ObjectCodec<GetInitPyFiles> CODEC = + new PythonUtils_GetInitPyFiles_AutoCodec(); + @Override public Iterable<PathFragment> getExtraPaths(Set<PathFragment> manifestPaths) { return getInitPyFiles(manifestPaths); } - }; + } + + public static final Runfiles.EmptyFilesSupplier GET_INIT_PY_FILES = new GetInitPyFiles(); private PythonUtils() { // This is a utility class, not to be instantiated |