blob: e33f9955eb363a7d393c9771dc8a0fdffff42dcf [file] [log] [blame]
Ram Chandrasekar28b578f2021-11-15 18:33:18 +00001# Copyright 2021 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Strip packages and place them in <sysroot>/stripped-packages."""
6
7import os
8import sys
9from typing import List
10
11from chromite.lib import build_target_lib
12from chromite.lib import commandline
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000013from chromite.lib import cros_build_lib
Ram Chandrasekar75c5d482022-08-01 22:17:47 +000014from chromite.lib import install_mask
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000015
Mike Frysinger807d8282022-04-28 22:45:17 -040016
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000017# The builder module lives in the devserver path.
Mike Frysingere9f3a672022-05-25 12:53:50 -040018# pylint: disable=import-error,wrong-import-position
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000019sys.path.append('/usr/lib/devserver/')
20import builder
21
Mike Frysinger807d8282022-04-28 22:45:17 -040022
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000023def create_parser() -> commandline.ArgumentParser:
24 """Creates the cmdline argparser, populates the options and description."""
25 parser = commandline.ArgumentParser(description=__doc__)
26
27 group = parser.add_mutually_exclusive_group(required=True)
28 group.add_argument('--board',
29 default=cros_build_lib.GetDefaultBoard(),
30 help='The board that processed packages belong to.')
31 group.add_argument('--sysroot',
32 type='path',
33 help='Sysroot that processed packages belong to. '
34 'This is incompatible with --board.')
35
36 parser.add_argument('--deep',
37 action='store_true',
38 default=False,
39 help='Also strip dependencies of packages.')
40 parser.add_argument('packages',
41 nargs='+',
42 metavar='package',
43 help='Packages to strip.')
44 return parser
45
46
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000047def main(argv: List[str]) -> int:
48 """Main function."""
49 cros_build_lib.AssertInsideChroot()
50 parser = create_parser()
51 options = parser.parse_args(argv)
52 options.Freeze()
53
54 if options.sysroot is not None:
55 sysroot = options.sysroot
56 else:
57 sysroot = build_target_lib.get_default_sysroot_path(options.board)
58
Ram Chandrasekar75c5d482022-08-01 22:17:47 +000059 os.environ['DEFAULT_INSTALL_MASK'] = '\n'.join(install_mask.DEFAULT)
60
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000061 if not builder.UpdateGmergeBinhost(sysroot, options.packages, options.deep):
62 return 1
63 return 0