diff --git a/site/docs/visibility.md b/site/docs/visibility.md index 0d6626b0d3a5dd..e8ff2ff7960d50 100644 --- a/site/docs/visibility.md +++ b/site/docs/visibility.md @@ -62,13 +62,6 @@ specified in the [`package`](be/functions.html#package) statement of the target's BUILD file. If there is no such `default_visibility` declaration, the visibility is `//visibility:private`. -`config_setting` targets default to `//visibility:public`, regardless of how the -package's [`default_visibility`](be/functions.html#package.default_visibility) -is set. This is purely for legacy reasons. Best practice is to treat -`config_setting` targets as if they use the private default: any -`config_setting` intended for use by other packages should set its visibility -explicitly. - ### Example File `//frobber/bin/BUILD`: diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/BUILD index 1cc968cc0b128f..8b731d73e8867e 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD +++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD @@ -292,7 +292,6 @@ java_library( ":buildinfo/build_info_key", ":config/build_configuration", ":config/build_options", - ":config/config_conditions", ":config/config_matching_provider", ":config/core_options", ":config/execution_transition_factory", @@ -1608,20 +1607,6 @@ java_library( ], ) -java_library( - name = "config/config_conditions", - srcs = ["config/ConfigConditions.java"], - deps = [ - ":config/config_matching_provider", - ":configured_target", - "//src/main/java/com/google/devtools/build/lib/analysis/platform", - "//src/main/java/com/google/devtools/build/lib/cmdline", - "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_and_data", - "//third_party:auto_value", - "//third_party:guava", - ], -) - java_library( name = "config/core_option_converters", srcs = ["config/CoreOptionConverters.java"], diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java index 1c4c33648c8295..4bbc311bebf3a8 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java @@ -27,7 +27,7 @@ import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; import com.google.devtools.build.lib.analysis.RuleContext.InvalidExecGroupException; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.analysis.config.ConfigConditions; +import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.Fragment; import com.google.devtools.build.lib.analysis.config.RequiredFragmentsUtil; import com.google.devtools.build.lib.analysis.configuredtargets.EnvironmentGroupConfiguredTarget; @@ -181,7 +181,7 @@ public final ConfiguredTarget createConfiguredTarget( BuildConfiguration hostConfig, ConfiguredTargetKey configuredTargetKey, OrderedSetMultimap prerequisiteMap, - ConfigConditions configConditions, + ImmutableMap configConditions, @Nullable ToolchainCollection toolchainContexts) throws InterruptedException, ActionConflictException, InvalidExecGroupException { if (target instanceof Rule) { @@ -287,7 +287,7 @@ private ConfiguredTarget createRule( BuildConfiguration hostConfiguration, ConfiguredTargetKey configuredTargetKey, OrderedSetMultimap prerequisiteMap, - ConfigConditions configConditions, + ImmutableMap configConditions, @Nullable ToolchainCollection toolchainContexts) throws InterruptedException, ActionConflictException, InvalidExecGroupException { ConfigurationFragmentPolicy configurationFragmentPolicy = @@ -318,7 +318,7 @@ private ConfiguredTarget createRule( configuration, ruleClassProvider.getUniversalFragments(), configurationFragmentPolicy, - configConditions.asProviders(), + configConditions, prerequisiteMap.values())) .build(); @@ -495,7 +495,7 @@ public ConfiguredAspect createAspect( ConfiguredAspectFactory aspectFactory, Aspect aspect, OrderedSetMultimap prerequisiteMap, - ConfigConditions configConditions, + ImmutableMap configConditions, @Nullable ResolvedToolchainContext toolchainContext, BuildConfiguration aspectConfiguration, BuildConfiguration hostConfiguration, @@ -540,7 +540,7 @@ public ConfiguredAspect createAspect( aspectConfiguration, ruleClassProvider.getUniversalFragments(), aspect.getDefinition().getConfigurationFragmentPolicy(), - configConditions.asProviders(), + configConditions, prerequisiteMap.values())) .build(); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index 792bef339d4b13..27913ecfa63650 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java @@ -46,7 +46,6 @@ import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.analysis.config.ConfigConditions; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.CoreOptions; import com.google.devtools.build.lib.analysis.config.CoreOptions.IncludeConfigFragmentsEnum; @@ -1765,7 +1764,7 @@ public static final class Builder implements RuleErrorConsumer { private final PrerequisiteValidator prerequisiteValidator; private final RuleErrorConsumer reporter; private OrderedSetMultimap prerequisiteMap; - private ConfigConditions configConditions; + private ImmutableMap configConditions = ImmutableMap.of(); private String toolsRepository; private StarlarkSemantics starlarkSemantics; private Mutability mutability; @@ -1814,15 +1813,11 @@ public RuleContext build() throws InvalidExecGroupException { Preconditions.checkNotNull(visibility); Preconditions.checkNotNull(constraintSemantics); AttributeMap attributes = - ConfiguredAttributeMapper.of(target.getAssociatedRule(), configConditions.asProviders()); + ConfiguredAttributeMapper.of(target.getAssociatedRule(), configConditions); checkAttributesNonEmpty(attributes); ListMultimap targetMap = createTargetMap(); - Attribute configSettingAttr = attributes.getAttributeDefinition("$config_dependencies"); - for (ConfiguredTargetAndData condition : configConditions.asConfiguredTargets().values()) { - validateDirectPrerequisite(configSettingAttr, condition); - } ListMultimap filesetEntryMap = - createFilesetEntryMap(target.getAssociatedRule(), configConditions.asProviders()); + createFilesetEntryMap(target.getAssociatedRule(), configConditions); if (rawExecProperties == null) { if (!attributes.has(RuleClass.EXEC_PROPERTIES, Type.STRING_DICT)) { rawExecProperties = ImmutableMap.of(); @@ -1836,7 +1831,7 @@ public RuleContext build() throws InvalidExecGroupException { attributes, targetMap, filesetEntryMap, - configConditions.asProviders(), + configConditions, universalFragments, getRuleClassNameForLogging(), actionOwnerSymbol, @@ -1911,10 +1906,11 @@ public Builder setAspectAttributes(Map aspectAttributes) { } /** - * Sets the configuration conditions needed to determine which paths to follow for this rule's - * configurable attributes. + * Sets the configuration conditions needed to determine which paths to follow for this + * rule's configurable attributes. */ - public Builder setConfigConditions(ConfigConditions configConditions) { + public Builder setConfigConditions( + ImmutableMap configConditions) { this.configConditions = Preconditions.checkNotNull(configConditions); return this; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigConditions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigConditions.java deleted file mode 100644 index 40dd5204d2f1c1..00000000000000 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigConditions.java +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2021 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.analysis.config; - -import com.google.auto.value.AutoValue; -import com.google.common.collect.ImmutableMap; -import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo; -import com.google.devtools.build.lib.analysis.platform.PlatformInfo; -import com.google.devtools.build.lib.cmdline.Label; -import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData; - -/** - * Utility class for temporarily tracking {@code select()} keys' {@link ConfigMatchingProvider}s and - * {@link ConfiguredTarget}s. - * - *

This is a utility class because its only purpose is to maintain {@link ConfiguredTarget} long - * enough for {@link RuleContext.Builder} to do prerequisite validation on it (for example, - * visibility checks). - * - *

Once {@link RuleContext} is instantiated, it should only have access to {@link - * ConfigMatchingProvider}, on the principle that providers are the correct interfaces for storing - * and sharing target metadata. {@link ConfiguredTarget} isn't meant to persist that long. - */ -@AutoValue -public abstract class ConfigConditions { - public abstract ImmutableMap asConfiguredTargets(); - - public abstract ImmutableMap asProviders(); - - public static ConfigConditions create( - ImmutableMap asConfiguredTargets, - ImmutableMap asProviders) { - return new AutoValue_ConfigConditions(asConfiguredTargets, asProviders); - } - - public static final ConfigConditions EMPTY = - ConfigConditions.create(ImmutableMap.of(), ImmutableMap.of()); - - /** Exception for when a {@code select()} has an invalid key (for example, wrong target type). */ - public static class InvalidConditionException extends Exception {} - - /** - * Returns a {@link ConfigMatchingProvider} from the given configured target if appropriate, else - * triggers a {@link InvalidConditionException}. - * - *

This is the canonical place to extract {@link ConfigMatchingProvider}s from configured - * targets. It's not as simple as {@link ConfiguredTarget#getProvider}. - */ - public static ConfigMatchingProvider fromConfiguredTarget( - ConfiguredTargetAndData selectKey, PlatformInfo targetPlatform) - throws InvalidConditionException { - ConfiguredTarget selectable = selectKey.getConfiguredTarget(); - // The below handles config_setting (which natively provides ConfigMatchingProvider) and - // constraint_value (which needs a custom-built ConfigMatchingProvider). - ConfigMatchingProvider matchingProvider = selectable.getProvider(ConfigMatchingProvider.class); - if (matchingProvider != null) { - return matchingProvider; - } - ConstraintValueInfo constraintValueInfo = selectable.get(ConstraintValueInfo.PROVIDER); - if (constraintValueInfo != null && targetPlatform != null) { - // If platformInfo == null, that means the owning target doesn't invoke toolchain - // resolution, in which case depending on a constraint_value is nonsensical. - return constraintValueInfo.configMatchingProvider(targetPlatform); - } - - // Not a valid provider for configuration conditions. - throw new InvalidConditionException(); - } -} diff --git a/src/main/java/com/google/devtools/build/lib/packages/Rule.java b/src/main/java/com/google/devtools/build/lib/packages/Rule.java index 90d1456d523126..0c6a2c3d274188 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Rule.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Rule.java @@ -732,11 +732,7 @@ public RuleVisibility getVisibility() { return visibility; } - // TODO(bazel-team): give config_setting the same default visibility as everything else. The - // only reason this isn't trivial is depot cleanup. - return ruleClass.getName().equals("config_setting") - ? ConstantRuleVisibility.PUBLIC - : pkg.getDefaultVisibility(); + return pkg.getDefaultVisibility(); } public boolean isVisibilitySpecified() { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java index 385c111eed5343..ca082924cec535 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java @@ -37,7 +37,7 @@ import com.google.devtools.build.lib.analysis.ToolchainCollection; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildOptions; -import com.google.devtools.build.lib.analysis.config.ConfigConditions; +import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.DependencyEvaluationException; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.analysis.configuredtargets.MergedConfiguredTarget; @@ -403,7 +403,7 @@ public SkyValue compute(SkyKey skyKey, Environment env) } // Get the configuration targets that trigger this rule's configurable attributes. - ConfigConditions configConditions = + ImmutableMap configConditions = ConfiguredTargetFunction.getConfigConditions( env, originalTargetAndAspectConfiguration, @@ -423,7 +423,7 @@ public SkyValue compute(SkyKey skyKey, Environment env) resolver, originalTargetAndAspectConfiguration, aspectPath, - configConditions.asProviders(), + configConditions, unloadedToolchainContext == null ? null : ToolchainCollection.builder() @@ -640,7 +640,7 @@ private AspectValue createAspect( ConfiguredAspectFactory aspectFactory, ConfiguredTargetAndData associatedTarget, BuildConfiguration aspectConfiguration, - ConfigConditions configConditions, + ImmutableMap configConditions, ResolvedToolchainContext toolchainContext, OrderedSetMultimap directDeps, @Nullable NestedSetBuilder transitivePackagesForPackageRootResolution) 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 4fd91b4e32f67f..9a6ea876603424 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD @@ -235,7 +235,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:buildinfo/build_info_key", "//src/main/java/com/google/devtools/build/lib/analysis:config/build_configuration", "//src/main/java/com/google/devtools/build/lib/analysis:config/build_options", - "//src/main/java/com/google/devtools/build/lib/analysis:config/config_conditions", "//src/main/java/com/google/devtools/build/lib/analysis:config/config_matching_provider", "//src/main/java/com/google/devtools/build/lib/analysis:config/core_options", "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment", diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java index ba3ebea69743e6..84e41d14b50cb5 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java @@ -48,13 +48,13 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; -import com.google.devtools.build.lib.analysis.config.ConfigConditions; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver; import com.google.devtools.build.lib.analysis.config.DependencyEvaluationException; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget; +import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo; import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.analysis.starlark.StarlarkTransition.TransitionException; import com.google.devtools.build.lib.causes.AnalysisFailedCause; @@ -95,6 +95,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -115,6 +116,9 @@ public final class ConfiguredTargetFunction implements SkyFunction { private static final GoogleLogger logger = GoogleLogger.forEnclosingClass(); + private static final ImmutableMap NO_CONFIG_CONDITIONS = + ImmutableMap.of(); + /** * Attempt to find a {@link ConfiguredValueCreationException} in a {@link ToolchainException}, or * its causes. @@ -283,7 +287,7 @@ public SkyValue compute(SkyKey key, Environment env) throws ConfiguredTargetFunc } // Get the configuration targets that trigger this rule's configurable attributes. - ConfigConditions configConditions = + ImmutableMap configConditions = getConfigConditions( env, ctgValue, @@ -303,7 +307,7 @@ public SkyValue compute(SkyKey key, Environment env) throws ConfiguredTargetFunc // Note that this doesn't apply to AspectFunction, because aspects can't have configurable // attributes. if (!transitiveRootCauses.isEmpty() - && !Objects.equals(configConditions, ConfigConditions.EMPTY)) { + && !Objects.equals(configConditions, NO_CONFIG_CONDITIONS)) { NestedSet causes = transitiveRootCauses.build(); throw new ConfiguredTargetFunctionException( new ConfiguredValueCreationException( @@ -320,7 +324,7 @@ public SkyValue compute(SkyKey key, Environment env) throws ConfiguredTargetFunc resolver, ctgValue, ImmutableList.of(), - configConditions.asProviders(), + configConditions, unloadedToolchainContexts == null ? null : unloadedToolchainContexts.asToolchainContexts(), @@ -708,13 +712,14 @@ static OrderedSetMultimap computeDepend } /** - * Returns the targets that key the configurable attributes used by this rule. + * Returns the set of {@link ConfigMatchingProvider}s that key the configurable attributes used by + * this rule. * *

>If the configured targets supplying those providers aren't yet resolved by the dependency * resolver, returns null. */ @Nullable - static ConfigConditions getConfigConditions( + static ImmutableMap getConfigConditions( Environment env, TargetAndConfiguration ctgValue, @Nullable NestedSetBuilder transitivePackagesForPackageRootResolution, @@ -723,11 +728,11 @@ static ConfigConditions getConfigConditions( throws DependencyEvaluationException, InterruptedException { Target target = ctgValue.getTarget(); if (!(target instanceof Rule)) { - return ConfigConditions.EMPTY; + return NO_CONFIG_CONDITIONS; } RawAttributeMapper attrs = RawAttributeMapper.of(((Rule) target)); if (!attrs.has(RuleClass.CONFIG_SETTING_DEPS_ATTRIBUTE)) { - return ConfigConditions.EMPTY; + return NO_CONFIG_CONDITIONS; } // Collect the labels of the configured targets we need to resolve. @@ -736,7 +741,7 @@ static ConfigConditions getConfigConditions( .map(configLabel -> target.getLabel().resolveRepositoryRelative(configLabel)) .collect(Collectors.toList()); if (configLabels.isEmpty()) { - return ConfigConditions.EMPTY; + return NO_CONFIG_CONDITIONS; } else if (ctgValue.getConfiguration().trimConfigurationsRetroactively()) { String message = target.getLabel() @@ -790,24 +795,33 @@ static ConfigConditions getConfigConditions( throw e; } - ImmutableMap.Builder asConfiguredTargets = - ImmutableMap.builder(); - ImmutableMap.Builder asConfigConditions = ImmutableMap.builder(); + Map configConditions = new LinkedHashMap<>(); // Get the configured targets as ConfigMatchingProvider interfaces. for (Dependency entry : configConditionDeps) { SkyKey baseKey = entry.getConfiguredTargetKey(); - // The code above guarantees that selectKeyTarget is non-null here. - ConfiguredTargetAndData selectKeyTarget = configValues.get(baseKey); - asConfiguredTargets.put(entry.getLabel(), selectKeyTarget); - try { - asConfigConditions.put( - entry.getLabel(), ConfigConditions.fromConfiguredTarget(selectKeyTarget, platformInfo)); - } catch (ConfigConditions.InvalidConditionException e) { + // The code above guarantees that value is non-null here. + ConfiguredTarget value = configValues.get(baseKey).getConfiguredTarget(); + // The below handles config_setting (which nativly provides ConfigMatchingProvider) and + // constraint_value (which needs a custom-built ConfigMatchingProvider). If we ever add + // support for more rules we should move resolution logic to ConfigMatchingProvider and + // simplify the logic here. + ConfigMatchingProvider matchingProvider = value.getProvider(ConfigMatchingProvider.class); + ConstraintValueInfo constraintValueInfo = value.get(ConstraintValueInfo.PROVIDER); + + if (matchingProvider != null) { + configConditions.put(entry.getLabel(), matchingProvider); + } else if (constraintValueInfo != null && platformInfo != null) { + // If platformInfo == null, that means the owning target doesn't invoke toolchain + // resolution, in which case depending on a constraint_value is non-sensical. + configConditions.put( + entry.getLabel(), constraintValueInfo.configMatchingProvider(platformInfo)); + } else { + // Not a valid provider for configuration conditions. String message = String.format( "%s is not a valid select() condition for %s.\n", - selectKeyTarget.getTarget().getLabel(), target.getLabel()) + entry.getLabel(), target.getLabel()) + String.format( "To inspect the select(), run: bazel query --output=build %s.\n", target.getLabel()) @@ -819,7 +833,7 @@ static ConfigConditions getConfigConditions( } } - return ConfigConditions.create(asConfiguredTargets.build(), asConfigConditions.build()); + return ImmutableMap.copyOf(configConditions); } /** @@ -978,7 +992,7 @@ private ConfiguredTargetValue createConfiguredTarget( BuildConfiguration configuration, ConfiguredTargetKey configuredTargetKey, OrderedSetMultimap depValueMap, - ConfigConditions configConditions, + ImmutableMap configConditions, @Nullable ToolchainCollection toolchainContexts, @Nullable NestedSetBuilder transitivePackagesForPackageRootResolution) throws ConfiguredTargetFunctionException, InterruptedException { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java index 1a0390be5c2626..90d5ea17af66ec 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java @@ -54,7 +54,7 @@ import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptions.OptionsDiff; -import com.google.devtools.build.lib.analysis.config.ConfigConditions; +import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.CoreOptions; import com.google.devtools.build.lib.analysis.config.FragmentClassSet; import com.google.devtools.build.lib.bugreport.BugReport; @@ -927,7 +927,7 @@ ConfiguredTarget createConfiguredTarget( CachingAnalysisEnvironment analysisEnvironment, ConfiguredTargetKey configuredTargetKey, OrderedSetMultimap prerequisiteMap, - ConfigConditions configConditions, + ImmutableMap configConditions, @Nullable ToolchainCollection toolchainContexts) throws InterruptedException, ActionConflictException, InvalidExecGroupException { Preconditions.checkState( diff --git a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java index 5170fbab70e73a..eb1c8eecf4c21d 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java @@ -1291,70 +1291,4 @@ public void multipleMatchErrorWhenAliasResolvesToSameSetting() throws Exception + " //a:foo\n" + " //a:alias_to_foo"); } - - @Test - public void defaultVisibilityConfigSetting() throws Exception { - // Production builds default to private visibility, but BuildViewTestCase defaults to public. - setPackageOptions("--default_visibility=private"); - scratch.file("c/BUILD", "config_setting(name = 'foo', define_values = { 'foo': '1' })"); - scratch.file( - "a/BUILD", - "rule_with_boolean_attr(", - " name = 'binary',", - " boolean_attr= select({", - " '//c:foo': 0,", - " '//conditions:default': 1", - " }))"); - reporter.removeHandler(failFastHandler); - assertThat(getConfiguredTarget("//a:binary")).isNotNull(); - assertNoEvents(); - } - - @Test - public void privateVisibilityConfigSetting() throws Exception { - // Production builds default to private visibility, but BuildViewTestCase defaults to public. - setPackageOptions("--default_visibility=private"); - scratch.file( - "c/BUILD", - "config_setting(", - " name = 'foo',", - " define_values = { 'foo': '1' },", - " visibility = ['//visibility:private']", - ")"); - scratch.file( - "a/BUILD", - "rule_with_boolean_attr(", - " name = 'binary',", - " boolean_attr= select({", - " '//c:foo': 0,", - " '//conditions:default': 1", - " }))"); - reporter.removeHandler(failFastHandler); - assertThat(getConfiguredTarget("//a:binary")).isNull(); - assertContainsEvent("'//c:foo' is not visible from target '//a:binary'"); - } - - @Test - public void publicVisibilityConfigSetting() throws Exception { - // Production builds default to private visibility, but BuildViewTestCase defaults to public. - setPackageOptions("--default_visibility=private"); - scratch.file( - "c/BUILD", - "config_setting(", - " name = 'foo',", - " define_values = { 'foo': '1' },", - " visibility = ['//visibility:public']", - ")"); - scratch.file( - "a/BUILD", - "rule_with_boolean_attr(", - " name = 'binary',", - " boolean_attr= select({", - " '//c:foo': 0,", - " '//conditions:default': 1", - " }))"); - reporter.removeHandler(failFastHandler); - assertThat(getConfiguredTarget("//a:binary")).isNotNull(); - assertNoEvents(); - } } 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 a7fce7452af2f1..45c37ce67d9896 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 @@ -50,7 +50,6 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:buildinfo/build_info_key", "//src/main/java/com/google/devtools/build/lib/analysis:config/build_configuration", "//src/main/java/com/google/devtools/build/lib/analysis:config/build_options", - "//src/main/java/com/google/devtools/build/lib/analysis:config/config_conditions", "//src/main/java/com/google/devtools/build/lib/analysis:config/config_matching_provider", "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment", "//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_options", diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java index 8d10729b589a24..a71e381ad6b318 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java @@ -49,7 +49,6 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; import com.google.devtools.build.lib.analysis.config.BuildOptions; -import com.google.devtools.build.lib.analysis.config.ConfigConditions; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; @@ -609,7 +608,7 @@ public RuleContext getRuleContextForTesting( .setPrerequisites( ConfiguredTargetFactory.transformPrerequisiteMap( prerequisiteMap, target.getAssociatedRule())) - .setConfigConditions(ConfigConditions.EMPTY) + .setConfigConditions(ImmutableMap.of()) .setUniversalFragments(ruleClassProvider.getUniversalFragments()) .setToolchainContexts(resolvedToolchainContext.build()) .setConstraintSemantics(ruleClassProvider.getConstraintSemantics())