// Copyright 2014 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.skyframe; import com.google.common.base.Objects; import com.google.common.base.Optional; import com.google.devtools.build.lib.cmdline.PackageIdentifier.RepositoryName; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; /** * A local view of an external repository. */ public class RepositoryValue implements SkyValue { private final Path path; /** * This is the FileValue for the [output_base]/external/repo-name directory. * *
If path is a symlink, this will keep track of what the symlink actually points to (for * checking equality).
*/ private final FileValue details; /** * If this repository is using a user-created BUILD file (any of the new_* functions) then that * FileValue needs to be propagated up to the PackageLookup so it doesn't get pruned. The BUILD * file symlink will be under external/, thus assumed to be immutable, thus Skyframe will prune * it. Then user changes will be ignored (in favor of the cached version). */ private final OptionalFor local repositories, the repository path is something like [output root]/external/repo * and the repository value resolves that to the actual symlink it points to. We don't want to * lose the repository path, so this constructor is used.
*/ public static RepositoryValue create(Path repositoryDirectory, FileValue details) { return new RepositoryValue(repositoryDirectory, details, Optional.