diff options
author | 2018-04-17 01:17:18 -0700 | |
---|---|---|
committer | 2018-04-17 01:18:20 -0700 | |
commit | 9dd14499876a4ca8f51a890bccc84971d16c0332 (patch) | |
tree | 230b445db969156535d182a131fbee90e47656e4 /src | |
parent | f02b75562191f15163eaa493e35e41e58c9bab79 (diff) |
Add an info-key for the repository cache
Add a key to `bazel info` to obtain the location of the repository
cache. As, by default, it is some directory under the bazel output
root, its location is not obvious. Moreover, knowing the location
is useful to have direct access to the downloaded artifacts for
further use (e.g., for prefilling caches on local machines from
a CI system).
Change-Id: I95b56ed424c261e5b5185f02fcb82c5df72ef83a
PiperOrigin-RevId: 193162119
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/BUILD | 1 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java | 21 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index d1a4f2b1dc..840ced7bf2 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD @@ -644,6 +644,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib:io", "//src/main/java/com/google/devtools/build/lib:packages-internal", "//src/main/java/com/google/devtools/build/lib:runtime", + "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/lib/bazel/repository/cache", "//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader", "//src/main/java/com/google/devtools/build/lib/cmdline", diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java index d6793da025..dde2007beb 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.bazel; +import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -21,6 +22,7 @@ import com.google.common.collect.Maps; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.RuleDefinition; +import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.bazel.commands.FetchCommand; import com.google.devtools.build.lib.bazel.repository.GitRepositoryFunction; import com.google.devtools.build.lib.bazel.repository.HttpArchiveFunction; @@ -67,11 +69,13 @@ import com.google.devtools.build.lib.runtime.Command; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.ServerBuilder; import com.google.devtools.build.lib.runtime.WorkspaceBuilder; +import com.google.devtools.build.lib.runtime.commands.InfoItem; import com.google.devtools.build.lib.skyframe.MutableSupplier; import com.google.devtools.build.lib.skyframe.PrecomputedValue; import com.google.devtools.build.lib.skyframe.PrecomputedValue.Injected; import com.google.devtools.build.lib.skyframe.SkyFunctions; import com.google.devtools.build.lib.skyframe.SkyValueDirtinessChecker; +import com.google.devtools.build.lib.util.AbruptExitException; import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.FileSystemUtils; @@ -83,6 +87,7 @@ import com.google.devtools.common.options.OptionsBase; import com.google.devtools.common.options.OptionsProvider; import java.io.IOException; import java.lang.reflect.InvocationTargetException; +import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.atomic.AtomicBoolean; @@ -159,9 +164,25 @@ public class BazelRepositoryModule extends BlazeModule { } }; + private static class RepositoryCacheInfoItem extends InfoItem { + private final RepositoryCache repositoryCache; + + RepositoryCacheInfoItem(RepositoryCache repositoryCache) { + super("repository_cache", "The location of the repository download cache used"); + this.repositoryCache = repositoryCache; + } + + @Override + public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) + throws AbruptExitException, InterruptedException { + return this.repositoryCache.getRootPath().toString().getBytes(StandardCharsets.UTF_8); + } + } + @Override public void serverInit(OptionsProvider startupOptions, ServerBuilder builder) { builder.addCommands(new FetchCommand()); + builder.addInfoItems(new RepositoryCacheInfoItem(repositoryCache)); } @Override |