Implemented a "--experimental_repository_cache" option as the first step to caching external repositories (go/bazel-cache) The option is categorized as hidden because it is a no-op. -- MOS_MIGRATED_REVID=135006114
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index 45aa1c3..f9429f1 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -670,6 +670,7 @@ "//src/main/java/com/google/devtools/build/lib:vfs", "//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/common/options", "//third_party:aether", "//third_party:apache_commons_compress", "//third_party:guava",
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 365632d..dad3d93 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.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; @@ -28,6 +29,7 @@ import com.google.devtools.build.lib.bazel.repository.MavenServerRepositoryFunction; import com.google.devtools.build.lib.bazel.repository.NewGitRepositoryFunction; import com.google.devtools.build.lib.bazel.repository.NewHttpArchiveFunction; +import com.google.devtools.build.lib.bazel.repository.RepositoryOptions; import com.google.devtools.build.lib.bazel.repository.skylark.SkylarkRepositoryFunction; import com.google.devtools.build.lib.bazel.repository.skylark.SkylarkRepositoryModule; import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryFunction; @@ -62,6 +64,7 @@ import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; +import com.google.devtools.common.options.OptionsBase; import com.google.devtools.common.options.OptionsProvider; import java.util.Map.Entry; @@ -170,4 +173,11 @@ delegator.setClientEnvironment(env.getClientEnv()); skylarkRepositoryFunction.setCommandEnvironment(env); } + + @Override + public Iterable<Class<? extends OptionsBase>> getCommandOptions(Command command) { + return "fetch".equals(command.name()) || "build".equals(command.name()) + ? ImmutableList.of(RepositoryOptions.class) + : ImmutableList.<Class<? extends OptionsBase>>of(); + } }
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/RepositoryOptions.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/RepositoryOptions.java new file mode 100644 index 0000000..84b1fa2 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/RepositoryOptions.java
@@ -0,0 +1,35 @@ +//Copyright 2016 The Bazel Authors. All rights reserved. +// +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. + +package com.google.devtools.build.lib.bazel.repository; + +import com.google.devtools.build.lib.util.OptionsUtils; +import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.common.options.Option; +import com.google.devtools.common.options.OptionsBase; + +/** + * Command-line options for repositories. + */ +public class RepositoryOptions extends OptionsBase { + + @Option(name = "experimental_repository_cache", + defaultValue = "null", + category = "hidden", + converter = OptionsUtils.PathFragmentConverter.class, + help = "Specifies the cache location of the downloaded values obtained " + + "during the fetching of external repositories.") + public PathFragment experimentalRepositoryCache; + +} \ No newline at end of file