blob: ad36192359c978257211800e1e889c35f9aadfdd [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
Alex Klein1699fab2022-09-08 08:46:06 -060019sys.path.append("/usr/lib/devserver/")
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000020import builder
21
Mike Frysinger807d8282022-04-28 22:45:17 -040022
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000023def create_parser() -> commandline.ArgumentParser:
Alex Klein1699fab2022-09-08 08:46:06 -060024 """Creates the cmdline argparser, populates the options and description."""
25 parser = commandline.ArgumentParser(description=__doc__)
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000026
Alex Klein1699fab2022-09-08 08:46:06 -060027 group = parser.add_mutually_exclusive_group(required=True)
28 group.add_argument(
29 "--board",
30 default=cros_build_lib.GetDefaultBoard(),
31 help="The board that processed packages belong to.",
32 )
33 group.add_argument(
34 "--sysroot",
35 type="path",
36 help="Sysroot that processed packages belong to. "
37 "This is incompatible with --board.",
38 )
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000039
Alex Klein1699fab2022-09-08 08:46:06 -060040 parser.add_argument(
41 "--deep",
42 action="store_true",
43 default=False,
44 help="Also strip dependencies of packages.",
45 )
46 parser.add_argument(
47 "packages", nargs="+", metavar="package", help="Packages to strip."
48 )
49 return parser
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000050
51
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000052def main(argv: List[str]) -> int:
Alex Klein1699fab2022-09-08 08:46:06 -060053 """Main function."""
54 cros_build_lib.AssertInsideChroot()
55 parser = create_parser()
56 options = parser.parse_args(argv)
57 options.Freeze()
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000058
Alex Klein1699fab2022-09-08 08:46:06 -060059 if options.sysroot is not None:
60 sysroot = options.sysroot
61 else:
62 sysroot = build_target_lib.get_default_sysroot_path(options.board)
Ram Chandrasekar28b578f2021-11-15 18:33:18 +000063
Alex Klein1699fab2022-09-08 08:46:06 -060064 os.environ["DEFAULT_INSTALL_MASK"] = "\n".join(install_mask.DEFAULT)
Ram Chandrasekar75c5d482022-08-01 22:17:47 +000065
Alex Klein1699fab2022-09-08 08:46:06 -060066 if not builder.UpdateGmergeBinhost(sysroot, options.packages, options.deep):
67 return 1
68 return 0