aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2018-04-17 01:17:18 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-17 01:18:20 -0700
commit9dd14499876a4ca8f51a890bccc84971d16c0332 (patch)
tree230b445db969156535d182a131fbee90e47656e4 /src
parentf02b75562191f15163eaa493e35e41e58c9bab79 (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/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java21
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