Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[8.0.0] Move --fat_apk_cpu to the flag graveyard #24062

Merged
merged 2 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.google.devtools.build.lib.runtime.Command;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.util.ResourceFileLoader;
import com.google.devtools.common.options.Converters;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.OptionEffectTag;
Expand Down Expand Up @@ -424,6 +425,16 @@ public static final class BazelBuildGraveyardOptions extends BuildGraveyardOptio
help = "No-op",
deprecationWarning = ANDROID_FLAG_DEPRECATION)
public boolean incompatibleUseToolchainResolution;

@Option(
name = "fat_apk_cpu",
converter = Converters.CommaSeparatedOptionSetConverter.class,
defaultValue = "armeabi-v7a",
documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
effectTags = {OptionEffectTag.NO_OP},
help = "No-op",
deprecationWarning = ANDROID_FLAG_DEPRECATION)
public List<String> fatApkCpus;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -235,25 +235,6 @@ public static class Options extends FragmentOptions {
+ "'off' means that all libraries will be linked in mostly static mode.")
public DynamicMode dynamicMode;

// TODO(bazel-team): Maybe merge this with --android_cpu above.
// TODO(blaze-configurability): Mark this as deprecated in favor of --android_platforms.
@Option(
name = "fat_apk_cpu",
converter = Converters.CommaSeparatedOptionSetConverter.class,
defaultValue = "armeabi-v7a",
documentationCategory = OptionDocumentationCategory.OUTPUT_PARAMETERS,
effectTags = {
OptionEffectTag.AFFECTS_OUTPUTS,
OptionEffectTag.LOADING_AND_ANALYSIS,
OptionEffectTag.LOSES_INCREMENTAL_STATE,
},
help =
"Setting this option enables fat APKs, which contain native binaries for all "
+ "specified target architectures, e.g., --fat_apk_cpu=x86,armeabi-v7a. If this "
+ "flag is specified, then --android_cpu is ignored for dependencies of "
+ "android_binary rules.")
public List<String> fatApkCpus;

@Option(
name = "android_platforms",
converter = LabelOrderedSetConverter.class,
Expand Down Expand Up @@ -714,15 +695,6 @@ public static class Options extends FragmentOptions {
+ " Starlark Android rules from https://github.com/bazelbuild/rules_android")
public boolean disableNativeAndroidRules;

@Option(
name = "android hwasan", // Space is so that this cannot be set on the command line
defaultValue = "false",
documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS},
metadataTags = {OptionMetadataTag.INTERNAL},
help = "Whether HWASAN is enabled.")
public boolean hwasan;

@Option(
name = "experimental_filter_r_jars_from_android_test",
defaultValue = "false",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,13 +153,9 @@ bazel_fragments["AndroidConfiguration.Options"] = fragment(
"//command_line_option:experimental_objc_provider_from_linked",
],
outputs = [
"//command_line_option:android hwasan",
"//command_line_option:fat_apk_cpu",
"//command_line_option:Android configuration distinguisher",
],
func = lambda settings: {
"//command_line_option:android hwasan": False,
"//command_line_option:fat_apk_cpu": [],
"//command_line_option:Android configuration distinguisher": "main",
},
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ java_test(
deps = [
"//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
"//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/core_options",
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/configuration_transition",
"//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@

package com.google.devtools.build.lib.analysis.starlark;

import static com.google.common.collect.ImmutableSet.toImmutableSet;
import static com.google.common.collect.Multimaps.toMultimap;
import static com.google.common.truth.Truth.assertThat;
import static com.google.devtools.build.lib.skyframe.BzlLoadValue.keyForBuild;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Maps;
Expand All @@ -29,6 +31,8 @@
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.PlatformOptions;
import com.google.devtools.build.lib.analysis.RequiredConfigFragmentsProvider;
import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.CoreOptions;
import com.google.devtools.build.lib.analysis.config.OutputPathMnemonicComputer;
import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition;
Expand All @@ -49,7 +53,6 @@
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import net.starlark.java.eval.Dict;
import net.starlark.java.eval.Starlark;
import net.starlark.java.eval.StarlarkInt;
Expand Down Expand Up @@ -637,16 +640,29 @@ private void writeReadSettingsTestFiles() throws Exception {
"""
load("//myinfo:myinfo.bzl", "MyInfo")

def _flag_impl(ctx):
pass

string_flag = rule(
implementation = _flag_impl,
build_setting = config.string(flag = True),
)

string_list_flag = rule(
implementation = _flag_impl,
build_setting = config.string_list(flag = True),
)

def transition_func(settings, attr):
transitions = []
for cpu in settings["//command_line_option:fat_apk_cpu"]:
transitions.append({"//command_line_option:cpu": cpu})
for val in settings["//test/starlark:source"]:
transitions.append({"//test/starlark:dest": val})
return transitions

my_transition = transition(
implementation = transition_func,
inputs = ["//command_line_option:fat_apk_cpu"],
outputs = ["//command_line_option:cpu"],
inputs = ["//test/starlark:source"],
outputs = ["//test/starlark:dest"],
)

def impl(ctx):
Expand All @@ -663,7 +679,17 @@ def impl(ctx):
scratch.file(
"test/starlark/BUILD",
"""
load("//test/starlark:my_rule.bzl", "my_rule")
load("//test/starlark:my_rule.bzl", "my_rule", "string_list_flag", "string_flag")

string_list_flag(
name = "source",
build_setting_default = [],
)

string_flag(
name = "dest",
build_setting_default = "",
)

my_rule(
name = "test",
Expand All @@ -682,18 +708,25 @@ public void testReadSettingsSplitDepAttrDep() throws Exception {
getAnalysisMock().ccSupport().setupCcToolchainConfigForCpu(mockToolsConfig, "armeabi-v7a");
writeReadSettingsTestFiles();

useConfiguration("--fat_apk_cpu=k8,armeabi-v7a");
useConfiguration("--//test/starlark:source=first,second");
ConfiguredTarget target = getConfiguredTarget("//test/starlark:test");

@SuppressWarnings("unchecked")
Dict<String, ConfiguredTarget> splitDep =
(Dict<String, ConfiguredTarget>) getMyInfoFromTarget(target).getValue("attr_dep");
assertThat(splitDep.size()).isEqualTo(2);
List<String> cpus =
ImmutableSet<String> values =
splitDep.values().stream()
.map(ct -> getConfiguration(ct).getCpu())
.collect(Collectors.toList());
assertThat(cpus).containsExactly("k8", "armeabi-v7a");
.map(this::getConfiguration)
.map(BuildConfigurationValue::getOptions)
.map(
options ->
(String)
options
.getStarlarkOptions()
.get(Label.parseCanonicalUnchecked("//test/starlark:dest")))
.collect(toImmutableSet());
assertThat(values).containsExactly("first", "second");
}

private void writeOptionConversionTestFiles() throws Exception {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -375,9 +375,7 @@ public void testStartEndLib() throws Exception {
.setupCcToolchainConfig(
mockToolsConfig,
CcToolchainConfig.builder().withFeatures(CppRuleClasses.SUPPORTS_START_END_LIB));
useConfiguration(
// Prevent Android from trying to setup ARM crosstool by forcing it on system cpu.
"--fat_apk_cpu=k8", "--start_end_lib");
useConfiguration("--start_end_lib");
scratch.file(
"test/BUILD",
"""
Expand Down
Loading