From 065e7c1c42adc5d80c4c48527418126d4bf60947 Mon Sep 17 00:00:00 2001 From: Ulf Adams Date: Wed, 23 Sep 2015 16:55:21 +0000 Subject: Avoid LoadedPackageProvider in the PackageProviderForConfigs type hierarchy. The PackageProviderForConfigurations is not a provider of loaded packages; it loads packages unconditionally, and is executed only within SkyFunction evaluation domains. I.e., the old type hierarchy made no sense. Also updated the documentation and renamed getLoadedTarget to getTarget. Note that getLoadedPackage was never called, so I removed it. This is in preparation for removing LoadedPackageProvider. -- MOS_MIGRATED_REVID=103754939 --- .../lib/skyframe/ConfigurationFragmentFunction.java | 19 +++++++++---------- .../SkyframePackageLoaderWithValueEnvironment.java | 10 ++++------ 2 files changed, 13 insertions(+), 16 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/skyframe') diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentFunction.java index 65d77a9227..524d8034ad 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentFunction.java @@ -57,9 +57,9 @@ public class ConfigurationFragmentFunction implements SkyFunction { BuildOptions buildOptions = configurationFragmentKey.getBuildOptions(); ConfigurationFragmentFactory factory = getFactory(configurationFragmentKey.getFragmentType()); try { - PackageProviderForConfigurations loadedPackageProvider = + PackageProviderForConfigurations packageProvider = new SkyframePackageLoaderWithValueEnvironment(env); - ConfigurationEnvironment confEnv = new ConfigurationBuilderEnvironment(loadedPackageProvider); + ConfigurationEnvironment confEnv = new ConfigurationBuilderEnvironment(packageProvider); Fragment fragment = factory.create(confEnv, buildOptions); if (env.valuesMissing()) { @@ -95,23 +95,22 @@ public class ConfigurationFragmentFunction implements SkyFunction { * A {@link ConfigurationEnvironment} implementation that can create dependencies on files. */ private final class ConfigurationBuilderEnvironment implements ConfigurationEnvironment { - private final PackageProviderForConfigurations loadedPackageProvider; + private final PackageProviderForConfigurations packageProvider; - ConfigurationBuilderEnvironment( - PackageProviderForConfigurations loadedPackageProvider) { - this.loadedPackageProvider = loadedPackageProvider; + ConfigurationBuilderEnvironment(PackageProviderForConfigurations packageProvider) { + this.packageProvider = packageProvider; } @Override public Target getTarget(Label label) throws NoSuchPackageException, NoSuchTargetException { - return loadedPackageProvider.getLoadedTarget(label); + return packageProvider.getTarget(label); } @Override public Path getPath(Package pkg, String fileName) { Path result = pkg.getPackageDirectory().getRelative(fileName); try { - loadedPackageProvider.addDependency(pkg, fileName); + packageProvider.addDependency(pkg, fileName); } catch (IOException | LabelSyntaxException e) { return null; } @@ -121,12 +120,12 @@ public class ConfigurationFragmentFunction implements SkyFunction { @Override public T getFragment(BuildOptions buildOptions, Class fragmentType) throws InvalidConfigurationException { - return loadedPackageProvider.getFragment(buildOptions, fragmentType); + return packageProvider.getFragment(buildOptions, fragmentType); } @Override public BlazeDirectories getBlazeDirectories() { - return loadedPackageProvider.getDirectories(); + return packageProvider.getDirectories(); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java index d566c7667d..ae2dd8dd14 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java @@ -38,16 +38,14 @@ import java.io.IOException; * {@link SkyFunction.Environment#getValue} instead of {@link MemoizingEvaluator#evaluate} * for node evaluation */ -class SkyframePackageLoaderWithValueEnvironment implements - PackageProviderForConfigurations { +class SkyframePackageLoaderWithValueEnvironment implements PackageProviderForConfigurations { private final SkyFunction.Environment env; public SkyframePackageLoaderWithValueEnvironment(SkyFunction.Environment env) { this.env = env; } - @Override - public Package getLoadedPackage(final PackageIdentifier pkgIdentifier) + private Package getPackage(final PackageIdentifier pkgIdentifier) throws NoSuchPackageException { SkyKey key = PackageValue.key(pkgIdentifier); PackageValue value = (PackageValue) env.getValueOrThrow(key, NoSuchPackageException.class); @@ -58,9 +56,9 @@ class SkyframePackageLoaderWithValueEnvironment implements } @Override - public Target getLoadedTarget(Label label) throws NoSuchPackageException, + public Target getTarget(Label label) throws NoSuchPackageException, NoSuchTargetException { - Package pkg = getLoadedPackage(label.getPackageIdentifier()); + Package pkg = getPackage(label.getPackageIdentifier()); return pkg == null ? null : pkg.getTarget(label.getName()); } -- cgit v1.2.3