blob: 9f83f3571354eb44db72f9308ca873c6f633040d [file] [log] [blame]
Mike Frysinger8654f912023-08-30 23:01:34 -04001# Copyright 2023 The ChromiumOS Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Update the SDK.
6
7Performs an update of the chroot. This script is called as part of
8build_packages, so there is typically no need to call this script directly.
9"""
10
11import argparse
12from typing import List, Optional
13
14from chromite.lib import commandline
15from chromite.service import sdk as sdk_service
16from chromite.service import sysroot
17
18
19def get_parser() -> commandline.ArgumentParser:
20 """Build the argument parser."""
21 # TODO(vapier): Remove underscore separated arguments and the deprecated
22 # message after Jun 2024.
23 deprecated = "Argument will be removed Jun 2024. Use %s instead."
24
25 parser = commandline.ArgumentParser(description=__doc__)
26
27 parser.add_bool_argument(
28 "--usepkg",
29 True,
30 "Use binary packages to bootstrap.",
31 "Do not use binary packages to bootstrap.",
32 )
33 parser.add_argument(
34 "--nousepkg",
35 dest="usepkg",
36 action="store_false",
37 deprecated=deprecated % "--no-usepkg",
38 help=argparse.SUPPRESS,
39 )
40
41 # Not really a common argument, but argument_group doesn't have our custom
42 # bool extension yet.
43 parser.add_bool_argument(
44 "--eclean",
45 True,
46 "Clean out old SDK binpkgs.",
47 "Do not clean out SDK binpkgs.",
48 )
49 parser.add_argument(
50 "--noeclean",
51 dest="eclean",
52 action="store_false",
53 deprecated=deprecated % "--no-eclean",
54 help=argparse.SUPPRESS,
55 )
56
57 group = parser.add_argument_group("Advanced Build Modification Options")
58 group.add_argument(
59 "--jobs",
60 type=int,
61 help="Maximum number of packages to build in parallel.",
62 )
63 group.add_argument(
64 "--skip-toolchain-update",
65 dest="update_toolchain",
66 action="store_true",
67 default=False,
68 help="Don't update toolchain automatically.",
69 )
70 group.add_argument(
71 "--skip_toolchain_update",
72 dest="update_toolchain",
73 action="store_true",
74 default=False,
75 deprecated=deprecated % "--skip-toolchain-update",
76 help=argparse.SUPPRESS,
77 )
78 group.add_argument(
79 "--toolchain-boards",
80 default="",
81 help="Extra toolchains to setup for the specified boards.",
82 )
83 group.add_argument(
84 "--toolchain_boards",
85 deprecated=deprecated % "--toolchain-boards",
86 help=argparse.SUPPRESS,
87 )
88 group.add_argument(
89 "--backtrack",
90 type=int,
91 default=sysroot.BACKTRACK_DEFAULT,
92 help="See emerge --backtrack.",
93 )
94
95 return parser
96
97
98def main(argv: Optional[List[str]] = None) -> Optional[int]:
99 commandline.RunInsideChroot()
100
101 parser = get_parser()
102 opts = parser.parse_args(argv)
103 opts.Freeze()
104
105 update_args = sdk_service.UpdateArguments(
106 build_source=not opts.usepkg,
107 toolchain_targets=opts.toolchain_boards,
108 jobs=opts.jobs,
109 backtrack=opts.backtrack,
110 update_toolchain=opts.update_toolchain,
111 eclean=opts.eclean,
112 )
113 result = sdk_service.Update(update_args)
114 return result.return_code