Revert "Generate soong_config_module_type inline in the snapshot"

This reverts commit d29f8e0597.

Although I tested this well using unit tests they don't test 
everything and although I tested the unpacking of some snapshots I did
not test what happens when all the ART sdk/module_exports
snapshots are unpacked. I just did and the build broke.

The build broke because while the soong_config_module_type modules are
marked as being Nameless (and so according to the documentation do not
have to have unique names) it turns out that is not true.

There is at least one place in the build where the names of Nameless
modules are checked and as a result this breaks.

I could fix the build breakage reasonably easily but the problem is 
that I would have to apply that fix on all partners otherwise they
wouldn't be able to receive the next set of snapshots which is too 
high a cost.

So, I am reverting this and will limit the use of inline 
soong_config_module_type modules to optional modules.

Reason for revert: Breaks the build when snapshots are unpacked.

Bug: 233965247
Change-Id: I1faae863c48f1fbfd49d2545f242401bdd4f8f8a
This commit is contained in:
Paul Duffin
2022-06-09 14:58:54 +00:00
parent d29f8e0597
commit e363782a5c
4 changed files with 45 additions and 64 deletions

View File

@@ -85,6 +85,10 @@ class SoongConfigBoilerplateInserter(FileTransformation):
# The configuration variable that will control the prefer setting.
configVar: ConfigVar
# The bp file containing the definitions of the configuration module types
# to use in the sdk.
configBpDefFile: str
# The prefix to use for the soong config module types.
configModuleTypePrefix: str
@@ -158,13 +162,12 @@ class SoongConfigBoilerplateInserter(FileTransformation):
}},
}},""")
# Add the module type to the list of module types that need to
# have corresponding config module types.
config_module_types.add(module_type)
# Change the module type to the corresponding soong config
# module type by adding the prefix.
module_type = self.configModuleTypePrefix + module_type
# Add the module type to the list of module types that need to
# be imported into the bp file.
config_module_types.add(module_type)
# Generate the module, possibly with the new module type and
# containing the
@@ -172,23 +175,20 @@ class SoongConfigBoilerplateInserter(FileTransformation):
content_lines.extend(module_content)
content_lines.append("}")
# Add the soong_config_module_type module definitions to the header
# lines so that they appear before any uses.
header_lines.append("")
for module_type in sorted(config_module_types):
# Create the corresponding soong config module type name by adding
# the prefix.
config_module_type = self.configModuleTypePrefix + module_type
header_lines.append(f"""
// Soong config variable module type added by {producer.script}.
soong_config_module_type {{
name: "{config_module_type}",
module_type: "{module_type}",
config_namespace: "{self.configVar.namespace}",
bool_variables: ["{self.configVar.name}"],
properties: ["prefer"],
# Add the soong_config_module_type_import module definition that imports
# the soong config module types into this bp file to the header lines so
# that they appear before any uses.
module_types = "\n".join(
[f' "{mt}",' for mt in sorted(config_module_types)])
header_lines.append(f"""
// Soong config variable stanza added by {producer.script}.
soong_config_module_type_import {{
from: "{self.configBpDefFile}",
module_types: [
{module_types}
],
}}
""".lstrip())
""")
# Overwrite the file with the updated contents.
file.seek(0)
@@ -624,6 +624,10 @@ class MainlineModule:
name="module_build_from_source",
)
# The bp file containing the definitions of the configuration module types
# to use in the sdk.
configBpDefFile: str = "packages/modules/common/Android.bp"
# The prefix to use for the soong config module types.
configModuleTypePrefix: str = "module_"
@@ -640,7 +644,8 @@ class MainlineModule:
inserter = SoongConfigBoilerplateInserter(
"Android.bp",
configVar=self.configVar,
configModuleTypePrefix=self.configModuleTypePrefix)
configModuleTypePrefix=self.configModuleTypePrefix,
configBpDefFile=self.configBpDefFile)
transformations.append(inserter)
return transformations
@@ -685,6 +690,7 @@ MAINLINE_MODULES = [
namespace="art_module",
name="source_build",
),
configBpDefFile="prebuilts/module_sdk/art/SoongConfig.bp",
configModuleTypePrefix="art_prebuilt_",
),
MainlineModule(

View File

@@ -399,7 +399,8 @@ class TestSoongConfigBoilerplateInserter(unittest.TestCase):
"""Tests the transformations applied to a common mainline module.
This uses ipsec as an example of a common mainline module. This checks
that the general Soong config module types and variables are used.
that the correct Soong config module types and variables are used and
that it imports the definitions from the correct location.
"""
src = read_test_data("ipsec_Android.bp.input")
@@ -415,7 +416,7 @@ class TestSoongConfigBoilerplateInserter(unittest.TestCase):
The ART mainline module uses a different Soong config setup to the
common mainline modules. This checks that the ART specific Soong config
module types, and variables are used.
module types, variable and imports are used.
"""
src = read_test_data("art_Android.bp.input")

View File

@@ -1,30 +1,13 @@
// This is auto-generated. DO NOT EDIT.
// Soong config variable module type added by test_art.
soong_config_module_type {
name: "art_prebuilt_java_import",
module_type: "java_import",
config_namespace: "art_module",
bool_variables: ["source_build"],
properties: ["prefer"],
}
// Soong config variable module type added by test_art.
soong_config_module_type {
name: "art_prebuilt_prebuilt_bootclasspath_fragment",
module_type: "prebuilt_bootclasspath_fragment",
config_namespace: "art_module",
bool_variables: ["source_build"],
properties: ["prefer"],
}
// Soong config variable module type added by test_art.
soong_config_module_type {
name: "art_prebuilt_prebuilt_platform_compat_config",
module_type: "prebuilt_platform_compat_config",
config_namespace: "art_module",
bool_variables: ["source_build"],
properties: ["prefer"],
// Soong config variable stanza added by test_art.
soong_config_module_type_import {
from: "prebuilts/module_sdk/art/SoongConfig.bp",
module_types: [
"art_prebuilt_java_import",
"art_prebuilt_prebuilt_bootclasspath_fragment",
"art_prebuilt_prebuilt_platform_compat_config",
],
}
package {

View File

@@ -1,21 +1,12 @@
// This is auto-generated. DO NOT EDIT.
// Soong config variable module type added by test_common_mainline_module.
soong_config_module_type {
name: "module_java_sdk_library_import",
module_type: "java_sdk_library_import",
config_namespace: "ANDROID",
bool_variables: ["module_build_from_source"],
properties: ["prefer"],
}
// Soong config variable module type added by test_common_mainline_module.
soong_config_module_type {
name: "module_prebuilt_bootclasspath_fragment",
module_type: "prebuilt_bootclasspath_fragment",
config_namespace: "ANDROID",
bool_variables: ["module_build_from_source"],
properties: ["prefer"],
// Soong config variable stanza added by test_common_mainline_module.
soong_config_module_type_import {
from: "packages/modules/common/Android.bp",
module_types: [
"module_java_sdk_library_import",
"module_prebuilt_bootclasspath_fragment",
],
}
package {