mainline_modules_sdks.py: Optimize snapshot build order am: b3805c1d35

Original change: https://android-review.googlesource.com/c/platform/packages/modules/common/+/2047367

Change-Id: I46b8bea13ccaa1a72f1031f6c6c503b984753f24
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Paul Duffin
2022-03-30 17:47:12 +00:00
committed by Automerger Merge Worker
2 changed files with 24 additions and 17 deletions

View File

@@ -28,6 +28,7 @@ import subprocess
import sys
import tempfile
import typing
from collections import defaultdict
from typing import Callable, List
import zipfile
@@ -852,7 +853,14 @@ class SdkDistProducer:
# Prepare the dist directory for the sdks.
self.prepare()
# Group build releases so that those with the same Soong environment are
# run consecutively to avoid having to regenerate ninja files.
grouped_by_env = defaultdict(list)
for build_release in build_releases:
grouped_by_env[str(build_release.soong_env)].append(build_release)
ordered = [br for _, group in grouped_by_env.items() for br in group]
for build_release in ordered:
# Only build modules that are required for this build release.
filtered_modules = [
m for m in modules if m.is_required_for(build_release)
@@ -887,11 +895,11 @@ class SdkDistProducer:
def produce_bundled_dist_for_build_release(self, build_release, modules):
modules = [m for m in modules if m.is_bundled()]
sdk_versions = build_release.sdk_versions
snapshots_dir = self.snapshot_builder.build_snapshots(
build_release, sdk_versions, modules)
self.populate_bundled_dist(build_release, modules, snapshots_dir)
return snapshots_dir
if modules:
sdk_versions = build_release.sdk_versions
snapshots_dir = self.snapshot_builder.build_snapshots(
build_release, sdk_versions, modules)
self.populate_bundled_dist(build_release, modules, snapshots_dir)
def populate_unbundled_dist(self, build_release, sdk_versions, modules,
snapshots_dir):