Merge changes from topic "revert-2787001-product-build-flags-PYFTWILGBK" into main
* changes: Revert "Add support for product-specific build flags" Revert "release_config: build flags can be lists"
This commit is contained in:
@@ -447,8 +447,6 @@ _product_list_vars += PRODUCT_AFDO_PROFILES
|
|||||||
|
|
||||||
_product_single_value_vars += PRODUCT_NEXT_RELEASE_HIDE_FLAGGED_API
|
_product_single_value_vars += PRODUCT_NEXT_RELEASE_HIDE_FLAGGED_API
|
||||||
|
|
||||||
_product_list_vars += PRODUCT_RELEASE_CONFIG_MAPS
|
|
||||||
|
|
||||||
.KATI_READONLY := _product_single_value_vars _product_list_vars
|
.KATI_READONLY := _product_single_value_vars _product_list_vars
|
||||||
_product_var_list :=$= $(_product_single_value_vars) $(_product_list_vars)
|
_product_var_list :=$= $(_product_single_value_vars) $(_product_list_vars)
|
||||||
|
|
||||||
|
@@ -55,11 +55,6 @@ _all_flags_schema = {
|
|||||||
},
|
},
|
||||||
"declared_in": {"type": "string"},
|
"declared_in": {"type": "string"},
|
||||||
},
|
},
|
||||||
"optional_keys": {
|
|
||||||
"appends": {
|
|
||||||
"type": "bool",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,23 +75,17 @@ _all_values_schema = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
def flag(name, partitions, default, _kwmarker = (), appends = False):
|
def flag(name, partitions, default):
|
||||||
"""Declare a flag.
|
"""Declare a flag.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
name: name of the flag
|
name: name of the flag
|
||||||
partitions: the partitions where this should be recorded.
|
partitions: the partitions where this should be recorded.
|
||||||
default: the default value of the flag.
|
default: the default value of the flag.
|
||||||
_kwmarker: Used to detect argument misuse.
|
|
||||||
appends: Whether new values should be append (not replace) the old.
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
A dictionary containing the flag declaration.
|
A dictionary containing the flag declaration.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# If specified, appends must be a keyword value.
|
|
||||||
if _kwmarker != ():
|
|
||||||
fail("Too many positional parameters")
|
|
||||||
if not partitions:
|
if not partitions:
|
||||||
fail("At least 1 partition is required")
|
fail("At least 1 partition is required")
|
||||||
if not name.startswith("RELEASE_"):
|
if not name.startswith("RELEASE_"):
|
||||||
@@ -116,7 +105,6 @@ def flag(name, partitions, default, _kwmarker = (), appends = False):
|
|||||||
"name": name,
|
"name": name,
|
||||||
"partitions": partitions,
|
"partitions": partitions,
|
||||||
"default": default,
|
"default": default,
|
||||||
"appends": appends,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def value(name, value):
|
def value(name, value):
|
||||||
@@ -165,12 +153,10 @@ def release_config(all_flags, all_values):
|
|||||||
|
|
||||||
# Validate flags
|
# Validate flags
|
||||||
flag_names = []
|
flag_names = []
|
||||||
flags_dict = {}
|
|
||||||
for flag in all_flags:
|
for flag in all_flags:
|
||||||
if flag["name"] in flag_names:
|
if flag["name"] in flag_names:
|
||||||
fail(flag["declared_in"] + ": Duplicate declaration of flag " + flag["name"])
|
fail(flag["declared_in"] + ": Duplicate declaration of flag " + flag["name"])
|
||||||
flag_names.append(flag["name"])
|
flag_names.append(flag["name"])
|
||||||
flags_dict[flag["name"]] = flag
|
|
||||||
|
|
||||||
# Record which flags go on which partition
|
# Record which flags go on which partition
|
||||||
partitions = {}
|
partitions = {}
|
||||||
@@ -184,21 +170,13 @@ def release_config(all_flags, all_values):
|
|||||||
else:
|
else:
|
||||||
partitions.setdefault(partition, []).append(flag["name"])
|
partitions.setdefault(partition, []).append(flag["name"])
|
||||||
|
|
||||||
# Generate final values.
|
# Validate values
|
||||||
# Only declared flags may have a value.
|
# TODO(joeo): Disallow duplicate values after we've split AOSP and vendor flags.
|
||||||
values = {}
|
values = {}
|
||||||
for value in all_values:
|
for value in all_values:
|
||||||
name = value["name"]
|
if value["name"] not in flag_names:
|
||||||
if name not in flag_names:
|
fail(value["set_in"] + ": Value set for undeclared build flag: " + value["name"])
|
||||||
fail(value["set_in"] + ": Value set for undeclared build flag: " + name)
|
values[value["name"]] = value
|
||||||
if flags_dict[name]["appends"]:
|
|
||||||
if name in values:
|
|
||||||
values[name]["value"] += " " + value["value"]
|
|
||||||
values[name]["set_in"] += " " + value["set_in"]
|
|
||||||
else:
|
|
||||||
values[name] = value
|
|
||||||
else:
|
|
||||||
values[name] = value
|
|
||||||
|
|
||||||
# Collect values
|
# Collect values
|
||||||
result = {
|
result = {
|
||||||
|
@@ -52,15 +52,6 @@ config_map_files := $(wildcard build/release/release_config_map.mk) \
|
|||||||
) \
|
) \
|
||||||
)
|
)
|
||||||
|
|
||||||
# PRODUCT_RELEASE_CONFIG_MAPS is set by Soong using an initial run of product
|
|
||||||
# config to capture only the list of config maps needed by the build.
|
|
||||||
# Keep them in the order provided, but remove duplicates.
|
|
||||||
$(foreach map,$(PRODUCT_RELEASE_CONFIG_MAPS), \
|
|
||||||
$(if $(filter $(map),$(config_map_files)),,$(eval config_map_files += $(map))) \
|
|
||||||
)
|
|
||||||
|
|
||||||
# Declare or extend a release-config.
|
|
||||||
#
|
|
||||||
# $1 config name
|
# $1 config name
|
||||||
# $2 release config files
|
# $2 release config files
|
||||||
define declare-release-config
|
define declare-release-config
|
||||||
@@ -72,24 +63,10 @@ define declare-release-config
|
|||||||
$(eval _all_release_configs.$(strip $(1)).FILES := $(_all_release_configs.$(strip $(1)).FILES) $(strip $(2)))
|
$(eval _all_release_configs.$(strip $(1)).FILES := $(_all_release_configs.$(strip $(1)).FILES) $(strip $(2)))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# Include the config map files and populate _flag_declaration_files.
|
# Include the config map files
|
||||||
_flag_declaration_files :=
|
|
||||||
$(foreach f, $(config_map_files), \
|
$(foreach f, $(config_map_files), \
|
||||||
$(eval FLAG_DECLARATION_FILES:= ) \
|
|
||||||
$(eval _included := $(f)) \
|
$(eval _included := $(f)) \
|
||||||
$(eval include $(f)) \
|
$(eval include $(f)) \
|
||||||
$(eval _flag_declaration_files += $(FLAG_DECLARATION_FILES)) \
|
|
||||||
)
|
|
||||||
FLAG_DECLARATION_FILES :=
|
|
||||||
|
|
||||||
# Make sure that the flag definitions are included for vendor/google builds.
|
|
||||||
# This decouples the change in vendor/google/release/release_config_map.mk
|
|
||||||
# from this logic change.
|
|
||||||
# TODO: Remove this once the vendor/google FLAG_DECLARATION_FILES change is there.
|
|
||||||
$(if $(wildcard vendor/google/release/release_config_map.mk),\
|
|
||||||
$(if $(filter vendor/google/release/build_flags.bzl,$(_flag_declaration_files)),,\
|
|
||||||
$(eval _flag_declaration_files := vendor/google/release/build_flags.bzl $(_flag_declaration_files)) \
|
|
||||||
) \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# If TARGET_RELEASE is set, fail if there is no matching release config
|
# If TARGET_RELEASE is set, fail if there is no matching release config
|
||||||
@@ -101,11 +78,7 @@ ifeq ($(filter $(_all_release_configs), $(TARGET_RELEASE)),)
|
|||||||
else
|
else
|
||||||
# Choose flag files
|
# Choose flag files
|
||||||
# Don't sort this, use it in the order they gave us.
|
# Don't sort this, use it in the order they gave us.
|
||||||
# Do allow duplicate entries, retaining only the first usage.
|
flag_value_files := $(_all_release_configs.$(TARGET_RELEASE).FILES)
|
||||||
flag_value_files :=
|
|
||||||
$(foreach f,$(_all_release_configs.$(TARGET_RELEASE).FILES), \
|
|
||||||
$(if $(filter $(f),$(flag_value_files)),,$(eval flag_value_files += $(f)))\
|
|
||||||
)
|
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
# Useful for finding scripts etc that aren't passing or setting TARGET_RELEASE
|
# Useful for finding scripts etc that aren't passing or setting TARGET_RELEASE
|
||||||
@@ -148,8 +121,21 @@ config_map_files:=
|
|||||||
# that we chose from the config map above. Then we run that, and load the
|
# that we chose from the config map above. Then we run that, and load the
|
||||||
# results of that into the make environment.
|
# results of that into the make environment.
|
||||||
|
|
||||||
# _flag_declaration_files is the combined list of FLAG_DECLARATION_FILES set by
|
# If this is a google source tree, restrict it to only the one file
|
||||||
# release_config_map.mk files above.
|
# which has OWNERS control. If it isn't let others define their own.
|
||||||
|
# TODO: Remove wildcard for build/release one when all branch manifests
|
||||||
|
# have updated.
|
||||||
|
flag_declaration_files := $(wildcard build/release/build_flags.bzl) \
|
||||||
|
$(if $(wildcard vendor/google/release/build_flags.bzl), \
|
||||||
|
vendor/google/release/build_flags.bzl, \
|
||||||
|
$(sort \
|
||||||
|
$(wildcard device/*/release/build_flags.bzl) \
|
||||||
|
$(wildcard device/*/*/release/build_flags.bzl) \
|
||||||
|
$(wildcard vendor/*/release/build_flags.bzl) \
|
||||||
|
$(wildcard vendor/*/*/release/build_flags.bzl) \
|
||||||
|
) \
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Because starlark can't find files with $(wildcard), write an entrypoint starlark script that
|
# Because starlark can't find files with $(wildcard), write an entrypoint starlark script that
|
||||||
# contains the result of the above wildcards for the starlark code to use.
|
# contains the result of the above wildcards for the starlark code to use.
|
||||||
@@ -159,8 +145,8 @@ _c+=$(newline)def add(d, k, v):
|
|||||||
_c+=$(newline)$(space)d = dict(d)
|
_c+=$(newline)$(space)d = dict(d)
|
||||||
_c+=$(newline)$(space)d[k] = v
|
_c+=$(newline)$(space)d[k] = v
|
||||||
_c+=$(newline)$(space)return d
|
_c+=$(newline)$(space)return d
|
||||||
_c+=$(foreach f,$(_flag_declaration_files),$(newline)load("$(f)", flags_$(call filename_to_starlark,$(f)) = "flags"))
|
_c+=$(foreach f,$(flag_declaration_files),$(newline)load("$(f)", flags_$(call filename_to_starlark,$(f)) = "flags"))
|
||||||
_c+=$(newline)all_flags = [] $(foreach f,$(_flag_declaration_files),+ [add(x, "declared_in", "$(f)") for x in flags_$(call filename_to_starlark,$(f))])
|
_c+=$(newline)all_flags = [] $(foreach f,$(flag_declaration_files),+ [add(x, "declared_in", "$(f)") for x in flags_$(call filename_to_starlark,$(f))])
|
||||||
_c+=$(foreach f,$(flag_value_files),$(newline)load("//$(f)", values_$(call filename_to_starlark,$(f)) = "values"))
|
_c+=$(foreach f,$(flag_value_files),$(newline)load("//$(f)", values_$(call filename_to_starlark,$(f)) = "values"))
|
||||||
_c+=$(newline)all_values = [] $(foreach f,$(flag_value_files),+ [add(x, "set_in", "$(f)") for x in values_$(call filename_to_starlark,$(f))])
|
_c+=$(newline)all_values = [] $(foreach f,$(flag_value_files),+ [add(x, "set_in", "$(f)") for x in values_$(call filename_to_starlark,$(f))])
|
||||||
_c+=$(newline)variables_to_export_to_make = release_config(all_flags, all_values)
|
_c+=$(newline)variables_to_export_to_make = release_config(all_flags, all_values)
|
||||||
|
Reference in New Issue
Block a user