diff --git a/build/mainline_modules_sdks.py b/build/mainline_modules_sdks.py index af87e6b..3412bbc 100755 --- a/build/mainline_modules_sdks.py +++ b/build/mainline_modules_sdks.py @@ -1281,6 +1281,13 @@ class SdkDistProducer: shutil.copy(sdk_gantry_metadata_json_path, sdk_dist_gantry_metadata_json_path) + def dist_generate_sdk_supported_modules_file(self, modules): + sdk_modules_file = os.path.join(self.dist_dir, "sdk-modules.txt") + with open(sdk_modules_file, "w", encoding="utf8") as file: + for module in modules: + if module in MAINLINE_MODULES: + file.write(aosp_to_google_name(module.apex) + "\n") + def populate_unbundled_dist(self, build_release, modules, snapshots_dir): build_release_dist_dir = os.path.join(self.mainline_sdks_dir, build_release.sub_dir) @@ -1544,6 +1551,7 @@ def main(args): modules += PLATFORM_SDKS_FOR_MAINLINE producer = create_producer(args.tool_path) + producer.dist_generate_sdk_supported_modules_file(modules) producer.produce_dist(modules, build_releases) diff --git a/build/mainline_modules_sdks_test.py b/build/mainline_modules_sdks_test.py index 35d27ea..c9e5776 100644 --- a/build/mainline_modules_sdks_test.py +++ b/build/mainline_modules_sdks_test.py @@ -419,6 +419,84 @@ class TestProduceDist(unittest.TestCase): ), ], snapshot_builder.snapshots) + def test_generate_sdk_supported_modules_file(self): + subprocess_runner = mm.SubprocessRunner() + snapshot_builder = FakeSnapshotBuilder( + tool_path="path/to/mainline_modules_sdks.sh", + subprocess_runner=subprocess_runner, + out_dir=self.tmp_out_dir, + ) + producer = mm.SdkDistProducer( + subprocess_runner=subprocess_runner, + snapshot_builder=snapshot_builder, + dist_dir=self.tmp_dist_dir, + ) + producer = mm.SdkDistProducer( + subprocess_runner=subprocess_runner, + snapshot_builder=snapshot_builder, + dist_dir=self.tmp_dist_dir, + ) + + # Contains only sdk modules. + modules = [ + MAINLINE_MODULES_BY_APEX["com.android.adservices"], + MAINLINE_MODULES_BY_APEX["com.android.art"], + MAINLINE_MODULES_BY_APEX["com.android.mediaprovider"], + ] + producer.dist_generate_sdk_supported_modules_file(modules) + with open(os.path.join(self.tmp_dist_dir, "sdk-modules.txt"), "r", + encoding="utf8") as sdk_modules_file: + sdk_modules = sdk_modules_file.readlines() + + self.assertTrue("com.google.android.adservices\n" in sdk_modules) + self.assertTrue("com.google.android.art\n" in sdk_modules) + self.assertTrue("com.google.android.mediaprovider\n" in sdk_modules) + + # Contains only non-sdk modules. + modules = [ + mm.MainlineModule( + apex="com.android.adbd", + sdks=[], + first_release="", + ), + mm.MainlineModule( + apex="com.android.adbd", + sdks=[], + first_release="", + ), + ] + producer.dist_generate_sdk_supported_modules_file(modules) + with open(os.path.join(self.tmp_dist_dir, "sdk-modules.txt"), "r", + encoding="utf8") as sdk_modules_file: + sdk_modules = sdk_modules_file.readlines() + + self.assertEqual(len(sdk_modules), 0) + + # Contains mixture of sdk and non-sdk modules. + modules = [ + MAINLINE_MODULES_BY_APEX["com.android.adservices"], + MAINLINE_MODULES_BY_APEX["com.android.mediaprovider"], + mm.MainlineModule( + apex="com.android.adbd", + sdks=[], + first_release="", + ), + mm.MainlineModule( + apex="com.android.adbd", + sdks=[], + first_release="", + ), + ] + producer.dist_generate_sdk_supported_modules_file(modules) + with open(os.path.join(self.tmp_dist_dir, "sdk-modules.txt"), "r", + encoding="utf8") as sdk_modules_file: + sdk_modules = sdk_modules_file.readlines() + + self.assertTrue("com.google.android.adservices\n" in sdk_modules) + self.assertTrue("com.google.android.mediaprovider\n" in sdk_modules) + self.assertFalse("com.google.android.adbd\n" in sdk_modules) + self.assertFalse("com.google.android.extservices\n" in sdk_modules) + def path_to_test_data(relative_path): """Construct a path to a test data file.