Skip to content

Commit

Permalink
Add --incompatible_android_platforms_transition_updates_affected
Browse files Browse the repository at this point in the history
This is essentially a quick followup to the `diffToAffected` mode of `--experimental_exec_configuration_distinguisher` and intended for use with that mode.

This setting causes the AndroidPlatformsTransition to also update `affected by Starlark transition` with the changed options.

PiperOrigin-RevId: 428868170
  • Loading branch information
twigg authored and copybara-github committed Feb 15, 2022
1 parent 3550a2a commit 563664e
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ public static String computeOutputDirectoryNameFragment(BuildOptions toOptions)
* Extend the global build config affectedByStarlarkTransition, by adding any new option names
* from changedOptions
*/
private static void updateAffectedByStarlarkTransition(
public static void updateAffectedByStarlarkTransition(
CoreOptions buildConfigOptions, Set<String> changedOptions) {
if (changedOptions.isEmpty()) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -966,6 +966,17 @@ public static class Options extends FragmentOptions {
+ " This will make the build nondeterministic.")
public boolean includeProguardLocationReferences;

@Option(
name = "incompatible_android_platforms_transition_updated_affected",
defaultValue = "false",
documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
effectTags = OptionEffectTag.LOADING_AND_ANALYSIS,
metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE},
help =
"If set to true, the AndroidPlatformsTransition will also update `affected by Starlark"
+ " transition` with changed options to avoid potential action conflicts.")
public boolean androidPlatformsTransitionsUpdateAffected;

@Override
public FragmentOptions getHost() {
Options host = (Options) super.getHost();
Expand All @@ -974,6 +985,7 @@ public FragmentOptions getHost() {
host.sdk = sdk;
host.fatApkCpus = ImmutableList.of(); // Fat APK archs don't apply to the host.
host.incompatibleUseToolchainResolution = incompatibleUseToolchainResolution;
host.androidPlatformsTransitionsUpdateAffected = androidPlatformsTransitionsUpdateAffected;

host.desugarJava8 = desugarJava8;
host.desugarJava8Libs = desugarJava8Libs;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@
import com.google.devtools.build.lib.analysis.PlatformOptions;
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.CoreOptions;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
import com.google.devtools.build.lib.analysis.config.transitions.StarlarkExposedRuleTransitionFactory;
import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;
import com.google.devtools.build.lib.analysis.starlark.FunctionTransitionUtil;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.packages.RuleTransitionData;
import com.google.devtools.build.lib.rules.cpp.CppOptions;
Expand Down Expand Up @@ -51,7 +53,10 @@ public static TransitionFactory<RuleTransitionData> create() {
@Override
public ImmutableSet<Class<? extends FragmentOptions>> requiresOptionFragments() {
return ImmutableSet.of(
AndroidConfiguration.Options.class, PlatformOptions.class, CppOptions.class);
AndroidConfiguration.Options.class,
PlatformOptions.class,
CoreOptions.class,
CppOptions.class);
}

@Override
Expand All @@ -74,6 +79,22 @@ public BuildOptions patch(BuildOptionsView options, EventHandler eventHandler) {
newOptions.get(CppOptions.class).enableCcToolchainResolution = true;
}

if (androidOptions.androidPlatformsTransitionsUpdateAffected) {
ImmutableSet.Builder<String> affected = ImmutableSet.builder();
if (!options
.get(PlatformOptions.class)
.platforms
.equals(newOptions.get(PlatformOptions.class).platforms)) {
affected.add("//command_line_option:platforms");
}
if (options.get(CppOptions.class).enableCcToolchainResolution
!= newOptions.get(CppOptions.class).enableCcToolchainResolution) {
affected.add("//command_line_option:incompatible_enable_cc_toolchain_resolution");
}
FunctionTransitionUtil.updateAffectedByStarlarkTransition(
newOptions.get(CoreOptions.class), affected.build());
}

return newOptions.underlying();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/analysis:required_config_fragments_provider",
"//src/main/java/com/google/devtools/build/lib/analysis:resolved_toolchain_context",
"//src/main/java/com/google/devtools/build/lib/analysis:rule_definition_environment",
"//src/main/java/com/google/devtools/build/lib/analysis:starlark/function_transition_util",
"//src/main/java/com/google/devtools/build/lib/analysis:starlark/starlark_api_provider",
"//src/main/java/com/google/devtools/build/lib/analysis:starlark/starlark_error_reporter",
"//src/main/java/com/google/devtools/build/lib/analysis:test/execution_info",
Expand Down

0 comments on commit 563664e

Please sign in to comment.