diff options
21 files changed, 122 insertions, 138 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java index ac4a005e0a..66c0f14126 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java @@ -18,11 +18,11 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.hash.HashCode; import com.google.devtools.build.lib.actions.Root; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import com.google.devtools.build.lib.skyframe.serialization.PathCodec; import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs; import com.google.devtools.build.lib.util.StringCanonicalizer; import com.google.devtools.build.lib.vfs.Path; +import com.google.devtools.build.lib.vfs.PathCodec; import com.google.protobuf.CodedInputStream; import com.google.protobuf.CodedOutputStream; import java.io.IOException; @@ -52,8 +52,7 @@ public final class BlazeDirectories { // Include directory name, relative to execRoot/blaze-out/configuration. public static final String RELATIVE_INCLUDE_DIR = StringCanonicalizer.intern("include"); - @VisibleForTesting - static final String DEFAULT_EXEC_ROOT = "default-exec-root"; + @VisibleForTesting static final String DEFAULT_EXEC_ROOT = "default-exec-root"; private final ServerDirectories serverDirectories; /** Workspace root and server CWD. */ @@ -67,10 +66,7 @@ public final class BlazeDirectories { private final Path localOutputPath; private final String productName; - public BlazeDirectories( - ServerDirectories serverDirectories, - Path workspace, - String productName) { + public BlazeDirectories(ServerDirectories serverDirectories, Path workspace, String productName) { this.serverDirectories = serverDirectories; this.workspace = workspace; this.productName = productName; @@ -94,38 +90,34 @@ public final class BlazeDirectories { } /** - * Returns the base of the output tree, which hosts all build and scratch - * output for a user and workspace. + * Returns the base of the output tree, which hosts all build and scratch output for a user and + * workspace. */ public Path getInstallBase() { return serverDirectories.getInstallBase(); } - /** - * Returns the workspace directory, which is also the working dir of the server. - */ + /** Returns the workspace directory, which is also the working dir of the server. */ public Path getWorkspace() { return workspace; } - /** - * Returns if the workspace directory is a valid workspace. - */ + /** Returns if the workspace directory is a valid workspace. */ public boolean inWorkspace() { return this.workspace != null; } /** - * Returns the base of the output tree, which hosts all build and scratch - * output for a user and workspace. + * Returns the base of the output tree, which hosts all build and scratch output for a user and + * workspace. */ public Path getOutputBase() { return serverDirectories.getOutputBase(); } /** - * Returns the execution root for the main package. This is created before the workspace file - * has been read, so it has an incorrect path. Use {@link #getExecRoot(String)} instead. + * Returns the execution root for the main package. This is created before the workspace file has + * been read, so it has an incorrect path. Use {@link #getExecRoot(String)} instead. */ @Deprecated public Path getExecRoot() { @@ -150,16 +142,12 @@ public final class BlazeDirectories { return outputPath; } - /** - * Returns the output path used by this Blaze instance. - */ + /** Returns the output path used by this Blaze instance. */ public Path getOutputPath(String workspaceName) { return getExecRoot(workspaceName).getRelative(getRelativeOutputPath()); } - /** - * Returns the local output path used by this Blaze instance. - */ + /** Returns the local output path used by this Blaze instance. */ public Path getLocalOutputPath() { return localOutputPath; } @@ -172,10 +160,7 @@ public final class BlazeDirectories { return execRoot.getRelative(getRelativeOutputPath()).getRelative("_tmp/action_outs"); } - /** - * Returns the installed embedded binaries directory, under the shared - * installBase location. - */ + /** Returns the installed embedded binaries directory, under the shared installBase location. */ public Path getEmbeddedBinariesRoot() { return serverDirectories.getEmbeddedBinariesRoot(); } @@ -185,14 +170,13 @@ public final class BlazeDirectories { * {@link BlazeDirectories} of this server instance. Nothing else should be placed here. */ public Root getBuildDataDirectory(String workspaceName) { - return Root - .asDerivedRoot(getExecRoot(workspaceName), getOutputPath(workspaceName), true); + return Root.asDerivedRoot(getExecRoot(workspaceName), getOutputPath(workspaceName), true); } - /** - * Returns the MD5 content hash of the blaze binary (includes deploy JAR, embedded binaries, and - * anything else that ends up in the install_base). - */ + /** + * Returns the MD5 content hash of the blaze binary (includes deploy JAR, embedded binaries, and + * anything else that ends up in the install_base). + */ public HashCode getInstallMD5() { return serverDirectories.getInstallMD5(); } @@ -206,8 +190,8 @@ public final class BlazeDirectories { } /** - * Returns the output directory name, relative to the execRoot. - * TODO(bazel-team): (2011) make this private? + * Returns the output directory name, relative to the execRoot. TODO(bazel-team): (2011) make this + * private? */ public static String getRelativeOutputPath(String productName) { return StringCanonicalizer.intern(productName + "-out"); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesCodec.java b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesCodec.java index 3b62084a68..cf9e65e1ef 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesCodec.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesCodec.java @@ -15,8 +15,8 @@ package com.google.devtools.build.lib.analysis; import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; -import com.google.devtools.build.lib.skyframe.serialization.PathCodec; import com.google.devtools.build.lib.skyframe.serialization.SerializationException; +import com.google.devtools.build.lib.vfs.PathCodec; import com.google.protobuf.CodedInputStream; import com.google.protobuf.CodedOutputStream; import java.io.IOException; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ServerDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/ServerDirectories.java index e296fb39f9..788e3abfd1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ServerDirectories.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ServerDirectories.java @@ -19,9 +19,9 @@ import com.google.common.base.Strings; import com.google.common.hash.HashCode; import com.google.common.hash.Hashing; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import com.google.devtools.build.lib.skyframe.serialization.PathCodec; import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.devtools.build.lib.vfs.Path; +import com.google.devtools.build.lib.vfs.PathCodec; import com.google.protobuf.CodedInputStream; import com.google.protobuf.CodedOutputStream; import java.io.IOException; @@ -62,38 +62,33 @@ public final class ServerDirectories { } private static HashCode checkMD5(HashCode hash) { - Preconditions.checkArgument(hash.bits() == Hashing.md5().bits(), - "Hash '%s' has %s bits", hash, hash.bits()); + Preconditions.checkArgument( + hash.bits() == Hashing.md5().bits(), "Hash '%s' has %s bits", hash, hash.bits()); return hash; } - /** - * Returns the installation base directory. Currently used by info command only. - */ + /** Returns the installation base directory. Currently used by info command only. */ public Path getInstallBase() { return installBase; } /** - * Returns the base of the output tree, which hosts all build and scratch - * output for a user and workspace. + * Returns the base of the output tree, which hosts all build and scratch output for a user and + * workspace. */ public Path getOutputBase() { return outputBase; } - /** - * Returns the installed embedded binaries directory, under the shared - * installBase location. - */ + /** Returns the installed embedded binaries directory, under the shared installBase location. */ public Path getEmbeddedBinariesRoot() { return installBase.getChild("_embedded_binaries"); } - /** - * Returns the MD5 content hash of the blaze binary (includes deploy JAR, embedded binaries, and - * anything else that ends up in the install_base). - */ + /** + * Returns the MD5 content hash of the blaze binary (includes deploy JAR, embedded binaries, and + * anything else that ends up in the install_base). + */ public HashCode getInstallMD5() { return installMD5; } 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 306eba1bec..2883d4277a 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD +++ b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD @@ -21,9 +21,11 @@ java_library( "//src/main/java/com/google/devtools/build/lib:skylarkinterface", "//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/vfs:pathfragment", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", "//third_party:jsr305", + "//third_party/protobuf:protobuf_java", ], ) diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/LabelCodec.java b/src/main/java/com/google/devtools/build/lib/cmdline/LabelCodec.java index 89978baa67..cda83dbf82 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/LabelCodec.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/LabelCodec.java @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.devtools.build.lib.skyframe.serialization; +package com.google.devtools.build.lib.cmdline; -import com.google.devtools.build.lib.cmdline.Label; -import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs; import com.google.protobuf.CodedInputStream; import com.google.protobuf.CodedOutputStream; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/PackageIdentifierCodec.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java index 73aede67b1..8107714e33 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/PackageIdentifierCodec.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java @@ -12,17 +12,18 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.devtools.build.lib.skyframe.serialization; +package com.google.devtools.build.lib.cmdline; -import com.google.devtools.build.lib.cmdline.PackageIdentifier; -import com.google.devtools.build.lib.cmdline.RepositoryName; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.lib.vfs.PathFragmentCodec; import com.google.protobuf.CodedInputStream; import com.google.protobuf.CodedOutputStream; import java.io.IOException; /** Custom serialization logic for {@link PackageIdentifier}s. */ -class PackageIdentifierCodec implements ObjectCodec<PackageIdentifier> { +public class PackageIdentifierCodec implements ObjectCodec<PackageIdentifier> { private final RepositoryNameCodec repoNameCodec = new RepositoryNameCodec(); private final PathFragmentCodec pathFragmentCodec = new PathFragmentCodec(); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodec.java b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryNameCodec.java index c9d0976acd..67a6c55eab 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodec.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryNameCodec.java @@ -12,16 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.devtools.build.lib.skyframe.serialization; +package com.google.devtools.build.lib.cmdline; -import com.google.devtools.build.lib.cmdline.LabelSyntaxException; -import com.google.devtools.build.lib.cmdline.RepositoryName; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.SerializationException; +import com.google.protobuf.ByteString; import com.google.protobuf.CodedInputStream; import com.google.protobuf.CodedOutputStream; import java.io.IOException; /** Custom serialization for {@link RepositoryName}. */ -class RepositoryNameCodec implements ObjectCodec<RepositoryName> { +public class RepositoryNameCodec implements ObjectCodec<RepositoryName> { @Override public Class<RepositoryName> getEncodedClass() { @@ -48,9 +49,26 @@ class RepositoryNameCodec implements ObjectCodec<RepositoryName> { } try { // We can read the string we wrote back as bytes to avoid string decoding/copying. - return SerializationCommonUtils.deserializeRepoName(codedIn.readBytes()); + return deserializeRepoName(codedIn.readBytes()); } catch (LabelSyntaxException e) { throw new SerializationException("Failed to deserialize RepositoryName", e); } } + + private static final ByteString DEFAULT_REPOSITORY = + ByteString.copyFromUtf8(RepositoryName.DEFAULT.getName()); + private static final ByteString MAIN_REPOSITORY = + ByteString.copyFromUtf8(RepositoryName.MAIN.getName()); + + public static RepositoryName deserializeRepoName(ByteString repoNameBytes) + throws LabelSyntaxException { + // We expect MAIN_REPOSITORY the vast majority of the time, so check for it first. + if (repoNameBytes.equals(MAIN_REPOSITORY)) { + return RepositoryName.MAIN; + } else if (repoNameBytes.equals(DEFAULT_REPOSITORY)) { + return RepositoryName.DEFAULT; + } else { + return RepositoryName.create(repoNameBytes.toStringUtf8()); + } + } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java index 14fb440670..73a54fc9f1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java @@ -25,11 +25,11 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration.DefaultL import com.google.devtools.build.lib.analysis.config.BuildConfiguration.LabelConverter; import com.google.devtools.build.lib.analysis.config.FragmentOptions; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.LabelCodec; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher; import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType; import com.google.devtools.build.lib.skyframe.serialization.EnumCodec; -import com.google.devtools.build.lib.skyframe.serialization.LabelCodec; import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; @@ -47,9 +47,7 @@ import com.google.protobuf.CodedOutputStream; import java.io.IOException; import java.util.List; -/** - * Command-line options for building for Apple platforms. - */ +/** Command-line options for building for Apple platforms. */ public class AppleCommandLineOptions extends FragmentOptions { @Option( @@ -57,7 +55,7 @@ public class AppleCommandLineOptions extends FragmentOptions { defaultValue = "false", category = "experimental", documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, - effectTags = { OptionEffectTag.LOSES_INCREMENTAL_STATE, OptionEffectTag.BUILD_FILE_SEMANTICS }, + effectTags = {OptionEffectTag.LOSES_INCREMENTAL_STATE, OptionEffectTag.BUILD_FILE_SEMANTICS}, help = "Whether Apple rules must have a mandatory minimum_os_version attribute." ) // TODO(b/37096178): This flag should be default-on and then be removed. @@ -68,9 +66,10 @@ public class AppleCommandLineOptions extends FragmentOptions { defaultValue = "true", category = "experimental", documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, - effectTags = { OptionEffectTag.LOSES_INCREMENTAL_STATE, OptionEffectTag.BUILD_FILE_SEMANTICS }, - help = "Whether Apple rules which control linking should propagate objc provider at the top " - + "level" + effectTags = {OptionEffectTag.LOSES_INCREMENTAL_STATE, OptionEffectTag.BUILD_FILE_SEMANTICS}, + help = + "Whether Apple rules which control linking should propagate objc provider at the top " + + "level" ) // TODO(b/32411441): This flag should be default-off and then be removed. public boolean objcProviderFromLinked; @@ -181,19 +180,13 @@ public class AppleCommandLineOptions extends FragmentOptions { @VisibleForTesting public static final String DEFAULT_TVOS_SDK_VERSION = "9.0"; @VisibleForTesting static final String DEFAULT_IOS_CPU = "x86_64"; - /** - * The default watchos CPU value. - */ + /** The default watchos CPU value. */ public static final String DEFAULT_WATCHOS_CPU = "i386"; - /** - * The default tvOS CPU value. - */ + /** The default tvOS CPU value. */ public static final String DEFAULT_TVOS_CPU = "x86_64"; - /** - * The default macOS CPU value. - */ + /** The default macOS CPU value. */ public static final String DEFAULT_MACOS_CPU = "x86_64"; @Option( @@ -387,24 +380,27 @@ public class AppleCommandLineOptions extends FragmentOptions { ) public boolean targetUsesAppleCrosstool; - /** - * Returns whether the minimum OS version is explicitly set for the current platform. - */ + /** Returns whether the minimum OS version is explicitly set for the current platform. */ public DottedVersion getMinimumOsVersion() { switch (applePlatformType) { - case IOS: return iosMinimumOs; - case MACOS: return macosMinimumOs; - case TVOS: return tvosMinimumOs; - case WATCHOS: return watchosMinimumOs; - default: throw new IllegalStateException(); + case IOS: + return iosMinimumOs; + case MACOS: + return macosMinimumOs; + case TVOS: + return tvosMinimumOs; + case WATCHOS: + return watchosMinimumOs; + default: + throw new IllegalStateException(); } } /** * Returns the architecture implied by these options. * - * <p> In contexts in which a configuration instance is present, prefer - * {@link AppleConfiguration#getSingleArchitecture}. + * <p>In contexts in which a configuration instance is present, prefer {@link + * AppleConfiguration#getSingleArchitecture}. */ public String getSingleArchitecture() { if (!Strings.isNullOrEmpty(appleSplitCpu)) { @@ -440,12 +436,13 @@ public class AppleCommandLineOptions extends FragmentOptions { @SkylarkModule( name = "apple_bitcode_mode", category = SkylarkModuleCategory.NONE, - doc = "The Bitcode mode to use when compiling Objective-C and Swift code on Apple platforms. " - + "Possible values are:<br><ul>" - + "<li><code>'none'</code></li>" - + "<li><code>'embedded'</code></li>" - + "<li><code>'embedded_markers'</code></li>" - + "</ul>" + doc = + "The Bitcode mode to use when compiling Objective-C and Swift code on Apple platforms. " + + "Possible values are:<br><ul>" + + "<li><code>'none'</code></li>" + + "<li><code>'embedded'</code></li>" + + "<li><code>'embedded_markers'</code></li>" + + "</ul>" ) @Immutable public enum AppleBitcodeMode implements SkylarkValue { @@ -488,16 +485,14 @@ public class AppleCommandLineOptions extends FragmentOptions { } /** - * Returns the flags that should be added to compile and link actions to use this - * bitcode setting. + * Returns the flags that should be added to compile and link actions to use this bitcode + * setting. */ public ImmutableList<String> getCompileAndLinkFlags() { return clangFlags; } - /** - * Converts to {@link AppleBitcodeMode}. - */ + /** Converts to {@link AppleBitcodeMode}. */ public static class Converter extends EnumConverter<AppleBitcodeMode> { public Converter() { super(AppleBitcodeMode.class, "apple bitcode mode"); @@ -597,8 +592,7 @@ public class AppleCommandLineOptions extends FragmentOptions { } /** Flag converter for {@link PlatformType}. */ - public static final class PlatformTypeConverter - extends EnumConverter<PlatformType> { + public static final class PlatformTypeConverter extends EnumConverter<PlatformType> { public PlatformTypeConverter() { super(PlatformType.class, "Apple platform type"); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionKeyCodec.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionKeyCodec.java index c32a0f8154..d466391e39 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionKeyCodec.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionKeyCodec.java @@ -15,8 +15,8 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableSortedSet; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.LabelCodec; import com.google.devtools.build.lib.skyframe.TestSuiteExpansionValue.TestSuiteExpansionKey; -import com.google.devtools.build.lib.skyframe.serialization.LabelCodec; import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.protobuf.CodedInputStream; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/BUILD index 10c813df2d..bb25cbcffd 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/BUILD @@ -11,8 +11,6 @@ java_library( name = "serialization", srcs = glob(["**/*.java"]), deps = [ - "//src/main/java/com/google/devtools/build/lib/cmdline", - "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", "//third_party/protobuf:protobuf_java", diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java index 85abc95e17..b5baec07b2 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java @@ -14,10 +14,7 @@ package com.google.devtools.build.lib.skyframe.serialization; -import com.google.devtools.build.lib.cmdline.LabelSyntaxException; -import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs; -import com.google.protobuf.ByteString; import com.google.protobuf.CodedInputStream; import com.google.protobuf.CodedOutputStream; import java.io.IOException; @@ -26,22 +23,6 @@ import java.io.IOException; public class SerializationCommonUtils { public static final ImmutableListCodec<String> STRING_LIST_CODEC = new ImmutableListCodec<>(StringCodecs.asciiOptimized()); - private static final ByteString DEFAULT_REPOSITORY = - ByteString.copyFromUtf8(RepositoryName.DEFAULT.getName()); - private static final ByteString MAIN_REPOSITORY = - ByteString.copyFromUtf8(RepositoryName.MAIN.getName()); - - public static RepositoryName deserializeRepoName(ByteString repoNameBytes) - throws LabelSyntaxException { - // We expect MAIN_REPOSITORY the vast majority of the time, so check for it first. - if (repoNameBytes.equals(MAIN_REPOSITORY)) { - return RepositoryName.MAIN; - } else if (repoNameBytes.equals(DEFAULT_REPOSITORY)) { - return RepositoryName.DEFAULT; - } else { - return RepositoryName.create(repoNameBytes.toStringUtf8()); - } - } public static <T> void serializeNullable(T obj, CodedOutputStream out, ObjectCodec<T> codec) throws IOException, SerializationException { diff --git a/src/main/java/com/google/devtools/build/lib/vfs/BUILD b/src/main/java/com/google/devtools/build/lib/vfs/BUILD index bd52ab8db5..95b9ca8e6c 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/BUILD +++ b/src/main/java/com/google/devtools/build/lib/vfs/BUILD @@ -9,6 +9,7 @@ filegroup( PATH_FRAGMENT_SOURCES = [ "Canonicalizer.java", "PathFragment.java", + "PathFragmentCodec.java", "PathFragmentSerializationProxy.java", "UnixPathFragment.java", "WindowsPathFragment.java", @@ -22,7 +23,9 @@ java_library( "//src/main/java/com/google/devtools/build/lib:os_util", "//src/main/java/com/google/devtools/build/lib:skylarkinterface", "//src/main/java/com/google/devtools/build/lib/concurrent", + "//src/main/java/com/google/devtools/build/lib/skyframe/serialization", "//third_party:guava", + "//third_party/protobuf:protobuf_java", ], ) @@ -47,8 +50,10 @@ java_library( "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/profiler", "//src/main/java/com/google/devtools/build/lib/shell", + "//src/main/java/com/google/devtools/build/lib/skyframe/serialization", "//src/main/java/com/google/devtools/common/options", "//third_party:guava", "//third_party:jsr305", + "//third_party/protobuf:protobuf_java", ], ) diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/PathCodec.java b/src/main/java/com/google/devtools/build/lib/vfs/PathCodec.java index 5c44f9c0b5..872466316d 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/PathCodec.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/PathCodec.java @@ -12,12 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.devtools.build.lib.skyframe.serialization; +package com.google.devtools.build.lib.vfs; import com.google.common.base.Preconditions; -import com.google.devtools.build.lib.vfs.FileSystem; -import com.google.devtools.build.lib.vfs.Path; -import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.protobuf.CodedInputStream; import com.google.protobuf.CodedOutputStream; import java.io.IOException; @@ -29,7 +28,7 @@ public class PathCodec implements ObjectCodec<Path> { private final PathFragmentCodec pathFragmentCodec; /** Create an instance for serializing and deserializing {@link Path}s on {@code fileSystem}. */ - PathCodec(FileSystem fileSystem) { + public PathCodec(FileSystem fileSystem) { this.fileSystem = fileSystem; this.pathFragmentCodec = new PathFragmentCodec(); } @@ -51,8 +50,7 @@ public class PathCodec implements ObjectCodec<Path> { } @Override - public Path deserialize(CodedInputStream codedIn) - throws IOException, SerializationException { + public Path deserialize(CodedInputStream codedIn) throws IOException, SerializationException { PathFragment pathFragment = pathFragmentCodec.deserialize(codedIn); return fileSystem.getPath(pathFragment); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/PathFragmentCodec.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragmentCodec.java index a2f9e25955..2c0f493fc8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/PathFragmentCodec.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragmentCodec.java @@ -12,16 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.devtools.build.lib.skyframe.serialization; +package com.google.devtools.build.lib.vfs; +import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec; +import com.google.devtools.build.lib.skyframe.serialization.SerializationException; import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs; -import com.google.devtools.build.lib.vfs.PathFragment; import com.google.protobuf.CodedInputStream; import com.google.protobuf.CodedOutputStream; import java.io.IOException; /** Custom serialization for {@link PathFragment}s. */ -class PathFragmentCodec implements ObjectCodec<PathFragment> { +public class PathFragmentCodec implements ObjectCodec<PathFragment> { private final ObjectCodec<String> stringCodec = StringCodecs.asciiOptimized(); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/BlazeDirectoriesCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/BlazeDirectoriesCodecTest.java index 1a83055b09..425d148bc0 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/BlazeDirectoriesCodecTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/BlazeDirectoriesCodecTest.java @@ -19,6 +19,7 @@ import com.google.devtools.build.lib.analysis.BlazeDirectoriesCodec; import com.google.devtools.build.lib.analysis.ServerDirectories; import com.google.devtools.build.lib.skyframe.serialization.testutils.AbstractObjectCodecTest; import com.google.devtools.build.lib.skyframe.serialization.testutils.FsUtils; +import com.google.devtools.build.lib.vfs.PathCodec; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/LabelCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/LabelCodecTest.java index 7427e92255..b2a2d49619 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/LabelCodecTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/LabelCodecTest.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe.serialization; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.LabelCodec; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.skyframe.serialization.testutils.AbstractObjectCodecTest; import org.junit.runner.RunWith; diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PackageIdentifierCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PackageIdentifierCodecTest.java index 55d3d11a67..a9c9ff7449 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PackageIdentifierCodecTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PackageIdentifierCodecTest.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe.serialization; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.cmdline.PackageIdentifierCodec; import com.google.devtools.build.lib.skyframe.serialization.testutils.AbstractObjectCodecTest; import com.google.devtools.build.lib.vfs.PathFragment; import org.junit.runner.RunWith; diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PathCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PathCodecTest.java index 38c2a4285e..4b37a3c03f 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PathCodecTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PathCodecTest.java @@ -17,6 +17,7 @@ package com.google.devtools.build.lib.skyframe.serialization; import com.google.devtools.build.lib.skyframe.serialization.testutils.AbstractObjectCodecTest; import com.google.devtools.build.lib.skyframe.serialization.testutils.FsUtils; import com.google.devtools.build.lib.vfs.Path; +import com.google.devtools.build.lib.vfs.PathCodec; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PathFragmentCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PathFragmentCodecTest.java index 8bf52760af..52490c719a 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PathFragmentCodecTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PathFragmentCodecTest.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skyframe.serialization; import com.google.devtools.build.lib.skyframe.serialization.testutils.AbstractObjectCodecTest; import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.lib.vfs.PathFragmentCodec; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PrecomputedValueCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PrecomputedValueCodecTest.java index f1f08cdd82..692f602bc2 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PrecomputedValueCodecTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PrecomputedValueCodecTest.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe.serialization; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.LabelCodec; import com.google.devtools.build.lib.skyframe.PrecomputedValue; import com.google.devtools.build.lib.skyframe.PrecomputedValueCodec; import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs; diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java index 3bbd29a44e..30f4e08cfd 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java @@ -18,6 +18,7 @@ import static org.junit.Assert.fail; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.cmdline.RepositoryName; +import com.google.devtools.build.lib.cmdline.RepositoryNameCodec; import com.google.devtools.build.lib.skyframe.serialization.testutils.AbstractObjectCodecTest; import java.io.IOException; import org.junit.Test; |