diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/BUILD index 47bba85fd56027..4cd99a618aaf73 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/BUILD +++ b/src/main/java/com/google/devtools/build/lib/bazel/BUILD @@ -39,7 +39,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/rules:repository/new_local_repository_function", "//src/main/java/com/google/devtools/build/lib/rules:repository/new_local_repository_rule", "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_function", - "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_loader_function", "//src/main/java/com/google/devtools/build/lib/skyframe:mutable_supplier", "//src/main/java/com/google/devtools/build/lib/skyframe:precomputed_value", "//src/main/java/com/google/devtools/build/lib/skyframe:sky_functions", 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 6b93d536ae1d1c..2c061ec68978ea 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 @@ -55,7 +55,6 @@ import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction; import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryDirtinessChecker; import com.google.devtools.build.lib.rules.repository.RepositoryFunction; -import com.google.devtools.build.lib.rules.repository.RepositoryLoaderFunction; import com.google.devtools.build.lib.runtime.BlazeModule; import com.google.devtools.build.lib.runtime.BlazeRuntime; import com.google.devtools.build.lib.runtime.Command; @@ -193,7 +192,6 @@ public void workspaceInit( directories.getWorkspace(), managedDirectoriesKnowledge); builder.addCustomDirtinessChecker(customDirtinessChecker); // Create the repository function everything flows through. - builder.addSkyFunction(SkyFunctions.REPOSITORY, new RepositoryLoaderFunction()); RepositoryDelegatorFunction repositoryDelegatorFunction = new RepositoryDelegatorFunction( repositoryHandlers, diff --git a/src/main/java/com/google/devtools/build/lib/rules/BUILD b/src/main/java/com/google/devtools/build/lib/rules/BUILD index 6297887292bcb2..7d93967e20b751 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/BUILD @@ -40,7 +40,6 @@ java_library( ":repository/new_repository_file_handler", ":repository/repository_directory_value", ":repository/repository_function", - ":repository/repository_loader_function", ":repository/resolved_file_value", ":repository/resolved_hashes_value", ":repository/workspace_attribute_mapper", @@ -444,22 +443,6 @@ java_library( ], ) -java_library( - name = "repository/repository_loader_function", - srcs = ["repository/RepositoryLoaderFunction.java"], - deps = [ - ":repository/repository_directory_value", - ":repository/workspace_file_helper", - "//src/main/java/com/google/devtools/build/lib/cmdline", - "//src/main/java/com/google/devtools/build/lib/packages", - "//src/main/java/com/google/devtools/build/lib/skyframe:repository_value", - "//src/main/java/com/google/devtools/build/lib/vfs", - "//src/main/java/com/google/devtools/build/skyframe", - "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", - "//third_party:jsr305", - ], -) - java_library( name = "repository/resolved_file_value", srcs = ["repository/ResolvedFileValue.java"], diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java index f7c465be3c278c..f8cc575083964e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java +++ b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java @@ -166,9 +166,10 @@ public static Key key(RepositoryName repository) { return Key.create(repository); } + /** The SkyKey for retrieving the local directory of an external repository. */ @AutoCodec.VisibleForSerialization @AutoCodec - static class Key extends AbstractSkyKey { + public static class Key extends AbstractSkyKey { private static final Interner interner = BlazeInterners.newWeakInterner(); private Key(RepositoryName arg) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryLoaderFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryLoaderFunction.java deleted file mode 100644 index e2ea4f19c1cb05..00000000000000 --- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryLoaderFunction.java +++ /dev/null @@ -1,63 +0,0 @@ -// 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.rules.repository; - -import com.google.devtools.build.lib.cmdline.RepositoryName; -import com.google.devtools.build.lib.skyframe.RepositoryValue; -import com.google.devtools.build.skyframe.SkyFunction; -import com.google.devtools.build.skyframe.SkyFunctionException; -import com.google.devtools.build.skyframe.SkyFunctionException.Transience; -import com.google.devtools.build.skyframe.SkyKey; -import com.google.devtools.build.skyframe.SkyValue; -import java.io.IOException; -import javax.annotation.Nullable; - -/** Creates a local or remote repository. */ -public class RepositoryLoaderFunction implements SkyFunction { - - @Nullable - @Override - public SkyValue compute(SkyKey skyKey, Environment env) - throws SkyFunctionException, InterruptedException { - // This cannot be combined with {@link RepositoryDelegatorFunction}. RDF fetches the - // repository and must not have a Skyframe restart after writing it (otherwise the repository - // would be re-downloaded). - RepositoryName nameFromRule = (RepositoryName) skyKey.argument(); - SkyKey repositoryKey = RepositoryDirectoryValue.key(nameFromRule); - RepositoryDirectoryValue repository = (RepositoryDirectoryValue) env.getValue(repositoryKey); - if (repository == null) { - return null; - } - if (!repository.repositoryExists()) { - return RepositoryValue.notFound(nameFromRule); - } - return RepositoryValue.success(nameFromRule, repository); - } - - @Nullable - @Override - public String extractTag(SkyKey skyKey) { - return null; - } - - /** An exception thrown by RepositoryLoaderFunction */ - public static class RepositoryLoaderFunctionException extends SkyFunctionException { - - /** Error reading or writing to the filesystem. */ - public RepositoryLoaderFunctionException(IOException cause, Transience transience) { - super(cause, transience); - } - } -} diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD index 7b69f04e03e031..57e669be06755a 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD @@ -1780,7 +1780,6 @@ java_library( ":local_repository_lookup_value", ":package_lookup_value", ":precomputed_value", - ":repository_value", "//src/main/java/com/google/devtools/build/lib/actions:file_metadata", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/cmdline:LabelValidator", @@ -1788,6 +1787,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/packages/semantics", "//src/main/java/com/google/devtools/build/lib/pkgcache", "//src/main/java/com/google/devtools/build/lib/repository:external_package_helper", + "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_directory_value", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/java/com/google/devtools/build/skyframe", @@ -1802,11 +1802,11 @@ java_library( name = "package_lookup_value", srcs = ["PackageLookupValue.java"], deps = [ - ":repository_value", ":sky_functions", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/packages", + "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_directory_value", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", @@ -2287,21 +2287,6 @@ java_library( ], ) -java_library( - name = "repository_value", - srcs = ["RepositoryValue.java"], - deps = [ - ":sky_functions", - "//src/main/java/com/google/devtools/build/lib/cmdline", - "//src/main/java/com/google/devtools/build/lib/concurrent", - "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_directory_value", - "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", - "//src/main/java/com/google/devtools/build/lib/vfs", - "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", - "//third_party:guava", - ], -) - java_library( name = "root_package_extractor", srcs = ["RootPackageExtractor.java"], @@ -2389,12 +2374,12 @@ java_library( deps = [ ":abstract_label_cycle_reporter", ":bzl_load_value", - ":repository_value", ":sky_functions", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/lib/repository:request_repository_information_event", + "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_directory_value", "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java index 44a4fff54368a6..a388041c02ac55 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupFunction.java @@ -30,6 +30,7 @@ import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.repository.ExternalPackageHelper; +import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryValue; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.Root; import com.google.devtools.build.lib.vfs.RootedPath; @@ -326,11 +327,11 @@ private PackageLookupValue computeExternalPackageLookupValue( SkyKey skyKey, Environment env, PackageIdentifier packageIdentifier) throws PackageLookupFunctionException, InterruptedException { PackageIdentifier id = (PackageIdentifier) skyKey.argument(); - SkyKey repositoryKey = RepositoryValue.key(id.getRepository()); - RepositoryValue repositoryValue; + SkyKey repositoryKey = RepositoryDirectoryValue.key(id.getRepository()); + RepositoryDirectoryValue repositoryValue; try { repositoryValue = - (RepositoryValue) + (RepositoryDirectoryValue) env.getValueOrThrow( repositoryKey, NoSuchPackageException.class, diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java index 093352a0592570..45f99699787d27 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java @@ -19,6 +19,7 @@ import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.concurrent.BlazeInterners; import com.google.devtools.build.lib.packages.BuildFileName; +import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryValue; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.Root; @@ -68,7 +69,7 @@ enum ErrorReason { protected PackageLookupValue() {} public static PackageLookupValue success( - RepositoryValue repository, Root root, BuildFileName buildFileName) { + RepositoryDirectoryValue repository, Root root, BuildFileName buildFileName) { return new SuccessfulPackageLookupValue(repository, root, buildFileName); } @@ -162,20 +163,20 @@ public static class SuccessfulPackageLookupValue extends PackageLookupValue { * controlling a symbolic link the path goes trough). Can be {@code null}, if does not depend on * such a repository; will always be {@code null} for packages in the main repository. */ - @Nullable private final RepositoryValue repository; + @Nullable private final RepositoryDirectoryValue repository; private final Root root; private final BuildFileName buildFileName; SuccessfulPackageLookupValue( - @Nullable RepositoryValue repository, Root root, BuildFileName buildFileName) { + @Nullable RepositoryDirectoryValue repository, Root root, BuildFileName buildFileName) { this.repository = repository; this.root = root; this.buildFileName = buildFileName; } @Nullable - public RepositoryValue repository() { + public RepositoryDirectoryValue repository() { return repository; } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryValue.java deleted file mode 100644 index ef4cebc9ae4bd4..00000000000000 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryValue.java +++ /dev/null @@ -1,151 +0,0 @@ -// 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.skyframe; - -import com.google.common.base.Objects; -import com.google.common.base.Preconditions; -import com.google.common.collect.Interner; -import com.google.devtools.build.lib.cmdline.RepositoryName; -import com.google.devtools.build.lib.concurrent.BlazeInterners; -import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryValue; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -import com.google.devtools.build.lib.vfs.Path; -import com.google.devtools.build.skyframe.AbstractSkyKey; -import com.google.devtools.build.skyframe.SkyFunctionName; -import com.google.devtools.build.skyframe.SkyValue; - -/** A repository's name and directory. */ -public abstract class RepositoryValue implements SkyValue { - public abstract boolean repositoryExists(); - - /** Returns the path to the repository. */ - public abstract Path getPath(); - - /** Successful lookup value. */ - public static final class SuccessfulRepositoryValue extends RepositoryValue { - private final RepositoryName repositoryName; - private final RepositoryDirectoryValue repositoryDirectory; - - /** Creates a repository with a given name in a certain directory. */ - public SuccessfulRepositoryValue( - RepositoryName repositoryName, RepositoryDirectoryValue repository) { - Preconditions.checkArgument(repository.repositoryExists()); - this.repositoryName = repositoryName; - this.repositoryDirectory = repository; - } - - @Override - public boolean repositoryExists() { - return true; - } - - @Override - public Path getPath() { - return repositoryDirectory.getPath(); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - if (other == null || getClass() != other.getClass()) { - return false; - } - - SuccessfulRepositoryValue that = (SuccessfulRepositoryValue) other; - return Objects.equal(repositoryName, that.repositoryName) - && Objects.equal(repositoryDirectory, that.repositoryDirectory); - } - - @Override - public int hashCode() { - return Objects.hashCode(repositoryName, repositoryDirectory); - } - } - - /** Repository could not be resolved. */ - public static final class NoRepositoryValue extends RepositoryValue { - private final RepositoryName repositoryName; - - private NoRepositoryValue(RepositoryName repositoryName) { - this.repositoryName = repositoryName; - } - - @Override - public boolean repositoryExists() { - return false; - } - - @Override - public Path getPath() { - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - if (other == null || getClass() != other.getClass()) { - return false; - } - - NoRepositoryValue that = (NoRepositoryValue) other; - return Objects.equal(repositoryName, that.repositoryName); - } - - @Override - public int hashCode() { - return repositoryName.hashCode(); - } - } - - public static RepositoryValue success( - RepositoryName repositoryName, RepositoryDirectoryValue repository) { - return new SuccessfulRepositoryValue(repositoryName, repository); - } - - public static RepositoryValue notFound(RepositoryName repositoryName) { - // TODO(ulfjack): Store the cause here? The two possible causes are that the external package - // contains errors, or that the repository with the given name does not exist. - return new NoRepositoryValue(repositoryName); - } - - public static Key key(RepositoryName repositoryName) { - return Key.create(repositoryName); - } - - @AutoCodec.VisibleForSerialization - @AutoCodec - static class Key extends AbstractSkyKey { - private static final Interner interner = BlazeInterners.newWeakInterner(); - - private Key(RepositoryName arg) { - super(arg); - } - - @AutoCodec.VisibleForSerialization - @AutoCodec.Instantiator - static Key create(RepositoryName arg) { - return interner.intern(new Key(arg)); - } - - @Override - public SkyFunctionName functionName() { - return SkyFunctions.REPOSITORY; - } - } -} diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java index 09d6261a380823..032122775e18f2 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java @@ -125,7 +125,6 @@ public final class SkyFunctions { public static final SkyFunctionName PLATFORM_MAPPING = SkyFunctionName.createHermetic("PLATFORM_MAPPING"); static final SkyFunctionName COVERAGE_REPORT = SkyFunctionName.createHermetic("COVERAGE_REPORT"); - public static final SkyFunctionName REPOSITORY = SkyFunctionName.createHermetic("REPOSITORY"); public static final SkyFunctionName REPOSITORY_DIRECTORY = SkyFunctionName.createNonHermetic("REPOSITORY_DIRECTORY"); public static final SkyFunctionName WORKSPACE_AST = diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkModuleCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkModuleCycleReporter.java index 1a53ebbdc55041..bcd1afb8758aa7 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkModuleCycleReporter.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/StarlarkModuleCycleReporter.java @@ -25,6 +25,7 @@ import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.packages.WorkspaceFileValue; import com.google.devtools.build.lib.repository.RequestRepositoryInformationEvent; +import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryValue; import com.google.devtools.build.skyframe.CycleInfo; import com.google.devtools.build.skyframe.CyclesReporter; import com.google.devtools.build.skyframe.SkyKey; @@ -44,28 +45,19 @@ public class StarlarkModuleCycleReporter implements CyclesReporter.SingleCycleRe private static final Predicate IS_WORKSPACE_FILE = SkyFunctions.isSkyFunction(WorkspaceFileValue.WORKSPACE_FILE); - private static final Predicate IS_REPOSITORY = - SkyFunctions.isSkyFunction(SkyFunctions.REPOSITORY); - private static final Predicate IS_REPOSITORY_DIRECTORY = SkyFunctions.isSkyFunction(SkyFunctions.REPOSITORY_DIRECTORY); private static final Predicate IS_BZL_LOAD = SkyFunctions.isSkyFunction(SkyFunctions.BZL_LOAD); - private static final Predicate IS_EXTERNAL_PACKAGE = - SkyFunctions.isSkyFunction(SkyFunctions.EXTERNAL_PACKAGE); - - private static final Predicate IS_LOCAL_REPOSITORY_LOOKUP = - SkyFunctions.isSkyFunction(SkyFunctions.LOCAL_REPOSITORY_LOOKUP); - private static void requestRepoDefinitions( ExtendedEventHandler eventHandler, Iterable repos) { for (SkyKey repo : repos) { - if (repo instanceof RepositoryValue.Key) { + if (repo instanceof RepositoryDirectoryValue.Key) { eventHandler.post( new RequestRepositoryInformationEvent( - ((RepositoryValue.Key) repo).argument().strippedName())); + ((RepositoryDirectoryValue.Key) repo).argument().strippedName())); } } } @@ -92,21 +84,18 @@ public boolean maybeReportCycle( || IS_WORKSPACE_FILE.apply(lastPathElement))) { Function printer = - new Function() { - @Override - public String apply(SkyKey input) { - if (input.argument() instanceof BzlLoadValue.Key) { - return ((BzlLoadValue.Key) input.argument()).getLabel().toString(); - } else if (input.argument() instanceof PackageIdentifier) { - return ((PackageIdentifier) input.argument()) + "/BUILD"; - } else if (input.argument() instanceof WorkspaceFileValue.WorkspaceFileKey) { - return ((WorkspaceFileValue.WorkspaceFileKey) input.argument()) - .getPath() - .getRootRelativePath() - .toString(); - } else { - throw new UnsupportedOperationException(); - } + input -> { + if (input.argument() instanceof BzlLoadValue.Key) { + return ((BzlLoadValue.Key) input.argument()).getLabel().toString(); + } else if (input.argument() instanceof PackageIdentifier) { + return ((PackageIdentifier) input.argument()) + "/BUILD"; + } else if (input.argument() instanceof WorkspaceFileValue.WorkspaceFileKey) { + return ((WorkspaceFileValue.WorkspaceFileKey) input.argument()) + .getPath() + .getRootRelativePath() + .toString(); + } else { + throw new UnsupportedOperationException(); } }; @@ -130,20 +119,16 @@ public String apply(SkyKey input) { // BUILD file. eventHandler.handle(Event.error(null, cycleMessage.toString())); return true; - } else if (Iterables.all( - cycle, Predicates.or(IS_PACKAGE_LOOKUP, IS_REPOSITORY, IS_REPOSITORY_DIRECTORY))) { + } else if (Iterables.all(cycle, Predicates.or(IS_PACKAGE_LOOKUP, IS_REPOSITORY_DIRECTORY))) { StringBuilder cycleMessage = new StringBuilder().append("Circular definition of repositories:"); - Iterable repos = Iterables.filter(cycle, IS_REPOSITORY); + Iterable repos = Iterables.filter(cycle, IS_REPOSITORY_DIRECTORY); Function printer = - new Function() { - @Override - public String apply(SkyKey input) { - if (input instanceof RepositoryValue.Key) { - return ((RepositoryValue.Key) input).argument().getName(); - } else { - throw new UnsupportedOperationException(); - } + input -> { + if (input instanceof RepositoryDirectoryValue.Key) { + return ((RepositoryDirectoryValue.Key) input).argument().getName(); + } else { + throw new UnsupportedOperationException(); } }; AbstractLabelCycleReporter.printCycle(ImmutableList.copyOf(repos), cycleMessage, printer); @@ -152,9 +137,10 @@ public String apply(SkyKey input) { // repositories were defined. requestRepoDefinitions(eventHandler, repos); return true; - } else if (Iterables.any(cycle, IS_REPOSITORY) && Iterables.any(cycle, IS_WORKSPACE_FILE)) { + } else if (Iterables.any(cycle, IS_REPOSITORY_DIRECTORY) + && Iterables.any(cycle, IS_WORKSPACE_FILE)) { Iterable repos = - Iterables.filter(Iterables.concat(pathToCycle, cycle), IS_REPOSITORY); + Iterables.filter(Iterables.concat(pathToCycle, cycle), IS_REPOSITORY_DIRECTORY); StringBuilder message = new StringBuilder(); @@ -170,18 +156,18 @@ public String apply(SkyKey input) { .append( "The following chain of repository dependencies lead to the missing definition.\n"); for (SkyKey repo : repos) { - if (repo instanceof RepositoryValue.Key) { + if (repo instanceof RepositoryDirectoryValue.Key) { message .append(" - ") - .append(((RepositoryValue.Key) repo).argument().getName()) + .append(((RepositoryDirectoryValue.Key) repo).argument().getName()) .append("\n"); } } SkyKey missingRepo = Iterables.getLast(repos); - if (missingRepo instanceof RepositoryValue.Key) { + if (missingRepo instanceof RepositoryDirectoryValue.Key) { message .append("This could either mean you have to add the '") - .append(((RepositoryValue.Key) missingRepo).argument().getName()) + .append(((RepositoryDirectoryValue.Key) missingRepo).argument().getName()) .append("' repository with a statement like `http_archive` in your WORKSPACE file") .append(" (note that transitive dependencies are not added automatically), or move") .append(" an existing definition earlier in your WORKSPACE file."); @@ -196,7 +182,7 @@ public String apply(SkyKey input) { ((BzlLoadValue.Key) Iterables.getLast(Iterables.filter(cycle, IS_BZL_LOAD))).getLabel(); eventHandler.handle( Event.error(null, "Failed to load Starlark extension '" + fileLabel + "'.\n")); - return true; + return true; } else if (Iterables.any(cycle, IS_PACKAGE_LOOKUP)) { PackageIdentifier pkg = (PackageIdentifier) diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/packages/BUILD index cc25ebe96b5c77..f0acc83ff8fd59 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/BUILD @@ -81,7 +81,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/lib/repository:external_package_helper", "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_function", - "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_loader_function", "//src/main/java/com/google/devtools/build/lib/skyframe:action_environment_function", "//src/main/java/com/google/devtools/build/lib/skyframe:client_environment_function", "//src/main/java/com/google/devtools/build/lib/skyframe:directory_listing_function", diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java index 3e662ae0cec28e..c9b8eb1c33151b 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/BazelPackageLoader.java @@ -27,7 +27,6 @@ import com.google.devtools.build.lib.packages.PackageFactory.EnvironmentExtension; import com.google.devtools.build.lib.repository.ExternalPackageHelper; import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction; -import com.google.devtools.build.lib.rules.repository.RepositoryLoaderFunction; import com.google.devtools.build.lib.skyframe.ActionEnvironmentFunction; import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants; import com.google.devtools.build.lib.skyframe.ClientEnvironmentFunction; @@ -123,7 +122,6 @@ public BazelPackageLoader buildImpl() { directories, ManagedDirectoriesKnowledge.NO_MANAGED_DIRECTORIES, EXTERNAL_PACKAGE_HELPER)) - .put(SkyFunctions.REPOSITORY, new RepositoryLoaderFunction()) .build()); addExtraPrecomputedValues( PrecomputedValue.injected(PrecomputedValue.ACTION_ENV, ImmutableMap.of()), diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java index 439cf38c792d46..7b94b18d7c3475 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java @@ -31,7 +31,6 @@ import com.google.devtools.build.lib.rules.repository.LocalRepositoryRule; import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction; import com.google.devtools.build.lib.rules.repository.RepositoryFunction; -import com.google.devtools.build.lib.rules.repository.RepositoryLoaderFunction; import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants; import com.google.devtools.build.lib.skyframe.ManagedDirectoriesKnowledge; import com.google.devtools.build.lib.skyframe.SkyFunctions; @@ -129,8 +128,6 @@ public ImmutableMap getSkyFunctions(BlazeDirectori directories, ManagedDirectoriesKnowledge.NO_MANAGED_DIRECTORIES, BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER), - SkyFunctions.REPOSITORY, - new RepositoryLoaderFunction(), CcSkyframeFdoSupportValue.SKYFUNCTION, new CcSkyframeFdoSupportFunction(directories)); } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD index 58e8946c860ab7..72d2e75f563f1e 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD @@ -95,7 +95,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/pkgcache", "//src/main/java/com/google/devtools/build/lib/rules:repository/local_repository_rule", "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_function", - "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_loader_function", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/java/com/google/devtools/build/lib/rules/java:java-compilation", "//src/main/java/com/google/devtools/build/lib/shell", diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD b/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD index f004b46dea02b7..aaab9cfbbd1c4f 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD +++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD @@ -28,7 +28,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/pkgcache", "//src/main/java/com/google/devtools/build/lib/rules:repository/local_repository_rule", "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_function", - "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_loader_function", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_and_data", "//src/main/java/com/google/devtools/build/lib/skyframe:managed_directories_knowledge", "//src/main/java/com/google/devtools/build/lib/skyframe:sky_functions", @@ -74,7 +73,6 @@ java_test( "//src/main/java/com/google/devtools/build/lib/pkgcache", "//src/main/java/com/google/devtools/build/lib/rules:repository/local_repository_rule", "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_function", - "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_loader_function", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_and_data", "//src/main/java/com/google/devtools/build/lib/skyframe:managed_directories_knowledge", "//src/main/java/com/google/devtools/build/lib/skyframe:sky_functions", diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryIntegrationTest.java index 2eacdd821c822f..2f1305ba4024d2 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryIntegrationTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryIntegrationTest.java @@ -31,7 +31,6 @@ import com.google.devtools.build.lib.rules.repository.LocalRepositoryRule; import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction; import com.google.devtools.build.lib.rules.repository.RepositoryFunction; -import com.google.devtools.build.lib.rules.repository.RepositoryLoaderFunction; import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants; import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData; import com.google.devtools.build.lib.skyframe.ManagedDirectoriesKnowledge; @@ -86,11 +85,7 @@ public ImmutableMap getSkyFunctions( directories, ManagedDirectoriesKnowledge.NO_MANAGED_DIRECTORIES, BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER); - return ImmutableMap.of( - SkyFunctions.REPOSITORY_DIRECTORY, - function, - SkyFunctions.REPOSITORY, - new RepositoryLoaderFunction()); + return ImmutableMap.of(SkyFunctions.REPOSITORY_DIRECTORY, function); } } @@ -115,7 +110,7 @@ protected ConfiguredRuleClassProvider createRuleClassProvider() { protected void invalidatePackages() throws InterruptedException { // Repository shuffling breaks access to config-needed paths like //tools/jdk:toolchain and // these tests don't do anything interesting with configurations anyway. So exempt them. - invalidatePackages(/*alsoConfigs=*/false); + invalidatePackages(/*alsoConfigs=*/ false); } @Test @@ -134,7 +129,8 @@ public void testStarlarkLocalRepository() throws Exception { " local=True,", " attrs={'path': attr.string(mandatory=True)})"); scratch.file(rootDirectory.getRelative("BUILD").getPathString()); - scratch.overwriteFile(rootDirectory.getRelative("WORKSPACE").getPathString(), + scratch.overwriteFile( + rootDirectory.getRelative("WORKSPACE").getPathString(), new ImmutableList.Builder() .addAll(analysisMock.getWorkspaceContents(mockToolsConfig)) .add("load('//:def.bzl', 'repo')") @@ -222,7 +218,8 @@ public void testStarlarkSymlinkFileFromRepository() throws Exception { " implementation=_impl,", " local=True)"); scratch.file(rootDirectory.getRelative("BUILD").getPathString()); - scratch.overwriteFile(rootDirectory.getRelative("WORKSPACE").getPathString(), + scratch.overwriteFile( + rootDirectory.getRelative("WORKSPACE").getPathString(), new ImmutableList.Builder() .addAll(analysisMock.getWorkspaceContents(mockToolsConfig)) .add("local_repository(name='repo2', path='/repo2')") @@ -251,7 +248,8 @@ public void testStarlarkRepositoryTemplate() throws Exception { " implementation=_impl,", " local=True)"); scratch.file(rootDirectory.getRelative("BUILD").getPathString()); - scratch.overwriteFile(rootDirectory.getRelative("WORKSPACE").getPathString(), + scratch.overwriteFile( + rootDirectory.getRelative("WORKSPACE").getPathString(), new ImmutableList.Builder() .addAll(analysisMock.getWorkspaceContents(mockToolsConfig)) .add("local_repository(name='repo2', path='/repo2')") @@ -281,7 +279,8 @@ public void testStarlarkRepositoryName() throws Exception { " implementation=_impl,", " local=True)"); scratch.file(rootDirectory.getRelative("BUILD").getPathString()); - scratch.overwriteFile(rootDirectory.getRelative("WORKSPACE").getPathString(), + scratch.overwriteFile( + rootDirectory.getRelative("WORKSPACE").getPathString(), new ImmutableList.Builder() .addAll(analysisMock.getWorkspaceContents(mockToolsConfig)) .add("local_repository(name='repo2', path='/repo2')") @@ -354,9 +353,9 @@ public void testCycleErrorWhenCallingCycleTarget() throws Exception { @Test public void testCycleErrorInWorkspaceFileWithExternalRepo() throws Exception { try (OutputStream output = scratch.resolve("WORKSPACE").getOutputStream(/* append= */ true)) { - output.write(( - "\nload('//foo:bar.bzl', 'foobar')" - + "\ngit_repository(name = 'git_repo')").getBytes(StandardCharsets.UTF_8)); + output.write( + ("\nload('//foo:bar.bzl', 'foobar')" + "\ngit_repository(name = 'git_repo')") + .getBytes(StandardCharsets.UTF_8)); } scratch.file("BUILD", ""); scratch.file("foo/BUILD", ""); @@ -384,7 +383,8 @@ public void testLoadDoesNotHideWorkspaceError() throws Exception { scratch.file("/repo2/def.bzl", "def macro():", " print('bleh')"); scratch.file("/repo2/WORKSPACE"); - scratch.overwriteFile(rootDirectory.getRelative("WORKSPACE").getPathString(), + scratch.overwriteFile( + rootDirectory.getRelative("WORKSPACE").getPathString(), new ImmutableList.Builder() .addAll(analysisMock.getWorkspaceContents(mockToolsConfig)) .add("local_repository(name='bleh')") @@ -406,7 +406,8 @@ public void testLoadDoesNotHideWorkspaceError() throws Exception { @Test public void testLoadDoesNotHideWorkspaceFunction() throws Exception { scratch.file("def.bzl", "def macro():", " print('bleh')"); - scratch.overwriteFile(rootDirectory.getRelative("WORKSPACE").getPathString(), + scratch.overwriteFile( + rootDirectory.getRelative("WORKSPACE").getPathString(), new ImmutableList.Builder() .addAll(analysisMock.getWorkspaceContents(mockToolsConfig)) .add("workspace(name='bleh')") @@ -444,7 +445,8 @@ public void testStarlarkRepositoryCannotOverrideBuiltInAttribute() throws Except @Test public void testMultipleLoadSameExtension() throws Exception { - scratch.overwriteFile(rootDirectory.getRelative("WORKSPACE").getPathString(), + scratch.overwriteFile( + rootDirectory.getRelative("WORKSPACE").getPathString(), new ImmutableList.Builder() .addAll(analysisMock.getWorkspaceContents(mockToolsConfig)) .add("load('//:def.bzl', 'f1')") diff --git a/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD b/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD index d0924be001017e..071e2bb5307a99 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD +++ b/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD @@ -29,7 +29,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/rules:repository/local_repository_rule", "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_directory_value", "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_function", - "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_loader_function", "//src/main/java/com/google/devtools/build/lib/skyframe:bzl_compile", "//src/main/java/com/google/devtools/build/lib/skyframe:containing_package_lookup_function", "//src/main/java/com/google/devtools/build/lib/skyframe:file_function", diff --git a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java index 39207d40f82b63..a845a3aeddbaae 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorTest.java @@ -185,7 +185,6 @@ public void setupDelegator() throws Exception { pkgFactory, directories, /*bzlLoadFunctionForInlining=*/ null)) - .put(SkyFunctions.REPOSITORY, new RepositoryLoaderFunction()) .put( SkyFunctions.LOCAL_REPOSITORY_LOOKUP, new LocalRepositoryLookupFunction( diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD index 2b86209be944d6..b90627de59bbf3 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD +++ b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD @@ -165,7 +165,6 @@ java_test( "//src/main/java/com/google/devtools/build/lib/rules:repository/local_repository_rule", "//src/main/java/com/google/devtools/build/lib/rules:repository/managed_directories_knowledge_impl", "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_function", - "//src/main/java/com/google/devtools/build/lib/rules:repository/repository_loader_function", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/java/com/google/devtools/build/lib/skyframe:action_execution_inactivity_watchdog", "//src/main/java/com/google/devtools/build/lib/skyframe:action_execution_value", diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java index a27bebbddcd01c..2db4032160d39a 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java @@ -34,7 +34,6 @@ import com.google.devtools.build.lib.rules.repository.LocalRepositoryRule; import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction; import com.google.devtools.build.lib.rules.repository.RepositoryFunction; -import com.google.devtools.build.lib.rules.repository.RepositoryLoaderFunction; import com.google.devtools.build.lib.skyframe.ContainingPackageLookupValue.ContainingPackage; import com.google.devtools.build.lib.skyframe.ContainingPackageLookupValue.NoContainingPackage; import com.google.devtools.build.lib.skyframe.ExternalFilesHelper.ExternalFileAction; @@ -159,7 +158,6 @@ public final void setUp() throws Exception { directories, ManagedDirectoriesKnowledge.NO_MANAGED_DIRECTORIES, BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER)); - skyFunctions.put(SkyFunctions.REPOSITORY, new RepositoryLoaderFunction()); differencer = new SequencedRecordingDifferencer(); evaluator = new InMemoryMemoizingEvaluator(skyFunctions, differencer); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java index 4893053e6718b3..36adb8f59fe287 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java @@ -38,7 +38,6 @@ import com.google.devtools.build.lib.rules.repository.LocalRepositoryRule; import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction; import com.google.devtools.build.lib.rules.repository.RepositoryFunction; -import com.google.devtools.build.lib.rules.repository.RepositoryLoaderFunction; import com.google.devtools.build.lib.skyframe.ExternalFilesHelper.ExternalFileAction; import com.google.devtools.build.lib.skyframe.PackageLookupFunction.CrossRepositoryLabelViolationStrategy; import com.google.devtools.build.lib.skyframe.PackageLookupValue.ErrorReason; @@ -168,7 +167,6 @@ public final void setUp() throws Exception { directories, ManagedDirectoriesKnowledge.NO_MANAGED_DIRECTORIES, BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER)); - skyFunctions.put(SkyFunctions.REPOSITORY, new RepositoryLoaderFunction()); differencer = new SequencedRecordingDifferencer(); evaluator = new InMemoryMemoizingEvaluator(skyFunctions, differencer);