aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2018-02-14 12:49:17 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-14 12:50:54 -0800
commit27458be9cd752dd1dfd4d2c8f1bdc421bdbf16bb (patch)
treef6d1c2659aa929607c7e19c9aeec0f0486e340c4 /src/main/java/com
parent03e27585a10f7f5bc9327d64405efc39666e0342 (diff)
Use AutoCodec to generate CODECs for several provider types that are exported
by cc_library. PiperOrigin-RevId: 185729248
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/FileProvider.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java58
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RunfilesProvider.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/VisibilityProvider.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/VisibilityProviderImpl.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProvider.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesProviderImpl.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/PackageSpecification.java58
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PythonUtils.java13
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