summaryrefslogtreecommitdiff
path: root/build.py
diff options
context:
space:
mode:
author Abhishek Pandit-Subedi <abhishekpandit@google.com> 2024-08-01 09:24:34 -0700
committer Abhishek Pandit-Subedi <abhishekpandit@google.com> 2024-08-02 10:16:20 -0700
commita04c74c5106f8f1c72d4f83a68b99bd7fc2acd4b (patch)
treea2161649919d41b879b281b5cfefed46d4b15ef7 /build.py
parent2b095079c111f1e9531e8c1cdabaecdddfad31ef (diff)
floss: Add support for running cargo-bloat
In order to track how binary space is being used, add support for calling cargo bloat via build.py. See https://crates.io/crates/cargo-bloat for more informatio about the crate which needs to be installed on the host in order to run. Bug: 356808668 Test: mmm packages/modules/Bluetooth Change-Id: I637e7e3f48b38ad9982a43ecbe56e51afcf5431b
Diffstat (limited to 'build.py')
-rwxr-xr-xbuild.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/build.py b/build.py
index 8d8e12d0b8..ff41424431 100755
--- a/build.py
+++ b/build.py
@@ -69,6 +69,7 @@ USE_DEFAULTS = {
VALID_TARGETS = [
'all', # All targets except test and clean
+ 'bloat', # Check bloat of crates
'clean', # Clean up output directory
'docs', # Build Rust docs
'hosttools', # Build the host tools (i.e. packetgen)
@@ -148,7 +149,7 @@ REQUIRED_APT_PACKAGES = [
]
# List of cargo packages required for linux build
-REQUIRED_CARGO_PACKAGES = ['cxxbridge-cmd', 'pdl-compiler']
+REQUIRED_CARGO_PACKAGES = ['cxxbridge-cmd', 'pdl-compiler', 'grpcio-compiler', 'cargo-bloat']
APT_PKG_LIST = ['apt', '-qq', 'list']
CARGO_PKG_LIST = ['cargo', 'install', '--list']
@@ -249,6 +250,8 @@ class HostBuild():
'link-arg=-Wl,--allow-multiple-definition',
# exclude uninteresting warnings
'-A improper_ctypes_definitions -A improper_ctypes -A unknown_lints',
+ '-Cstrip=debuginfo',
+ '-Copt-level=z',
]
return ' '.join(rust_flags)
@@ -570,6 +573,17 @@ class HostBuild():
print('Tarball created at {}'.format(tar_location))
+ def _target_bloat(self):
+ """Run cargo bloat on workspace.
+ """
+ crate_paths = [
+ os.path.join(self.platform_dir, 'bt', 'system', 'gd', 'rust', 'linux', 'mgmt'),
+ os.path.join(self.platform_dir, 'bt', 'system', 'gd', 'rust', 'linux', 'service'),
+ os.path.join(self.platform_dir, 'bt', 'system', 'gd', 'rust', 'linux', 'client')
+ ]
+ for crate in crate_paths:
+ self.run_command('bloat', ['cargo', 'bloat', '--release', '--crates', '--wide'], cwd=crate, env=self.env)
+
def _target_clean(self):
""" Delete the output directory entirely.
"""
@@ -624,6 +638,8 @@ class HostBuild():
self._target_install()
elif self.target == 'utils':
self._target_utils()
+ elif self.target == 'bloat':
+ self._target_bloat()
elif self.target == 'all':
self._target_all()