diff options
author | Paul Duffin <paulduffin@google.com> | 2022-06-09 14:58:54 +0000 |
---|---|---|
committer | Paul Duffin <paulduffin@google.com> | 2022-06-09 14:58:54 +0000 |
commit | e363782a5c2c00de7dbedd4c0a2f42d214e322e7 (patch) | |
tree | 2a604053db7676e4bf62f7ef75509f8cb6291e26 /build | |
parent | d29f8e059712d28346eb2b92ef7b5780695ed3ad (diff) | |
download | common-e363782a5c2c00de7dbedd4c0a2f42d214e322e7.tar.gz |
Revert "Generate soong_config_module_type inline in the snapshot"
This reverts commit d29f8e059712d28346eb2b92ef7b5780695ed3ad.
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
Diffstat (limited to 'build')
-rwxr-xr-x | build/mainline_modules_sdks.py | 48 | ||||
-rw-r--r-- | build/mainline_modules_sdks_test.py | 5 | ||||
-rw-r--r-- | build/mainline_modules_sdks_test_data/art_Android.bp.expected | 33 | ||||
-rw-r--r-- | build/mainline_modules_sdks_test_data/ipsec_Android.bp.expected | 23 |
4 files changed, 45 insertions, 64 deletions
diff --git a/build/mainline_modules_sdks.py b/build/mainline_modules_sdks.py index 809540e2..25d67cee 100755 --- a/build/mainline_modules_sdks.py +++ b/build/mainline_modules_sdks.py @@ -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( diff --git a/build/mainline_modules_sdks_test.py b/build/mainline_modules_sdks_test.py index 11a5d673..72858e09 100644 --- a/build/mainline_modules_sdks_test.py +++ b/build/mainline_modules_sdks_test.py @@ -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") diff --git a/build/mainline_modules_sdks_test_data/art_Android.bp.expected b/build/mainline_modules_sdks_test_data/art_Android.bp.expected index 8fc0455e..135e4e6c 100644 --- a/build/mainline_modules_sdks_test_data/art_Android.bp.expected +++ b/build/mainline_modules_sdks_test_data/art_Android.bp.expected @@ -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 { diff --git a/build/mainline_modules_sdks_test_data/ipsec_Android.bp.expected b/build/mainline_modules_sdks_test_data/ipsec_Android.bp.expected index 1a3d3432..99640c05 100644 --- a/build/mainline_modules_sdks_test_data/ipsec_Android.bp.expected +++ b/build/mainline_modules_sdks_test_data/ipsec_Android.bp.expected @@ -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 { |