cros_sysroot_utils: Generate a sysroot config.
Adds support for sysroot config generation. This configuration is meant
to be set in etc/make.conf.board_setup.
BUG=brillo:661
TEST=manual: the right configuration is generated for bricks and boards.
Change-Id: I136f0d5a3b46f21ee617c92110751db714855a8d
Reviewed-on: https://chromium-review.googlesource.com/262376
Trybot-Ready: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
Reviewed-by: Steve Fung <stevefung@chromium.org>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
diff --git a/scripts/cros_sysroot_utils.py b/scripts/cros_sysroot_utils.py
index 4460a01..96780c1 100644
--- a/scripts/cros_sysroot_utils.py
+++ b/scripts/cros_sysroot_utils.py
@@ -10,8 +10,10 @@
import os
import sys
+from chromite.lib import brick_lib
from chromite.lib import commandline
from chromite.lib import cros_build_lib
+from chromite.lib import osutils
from chromite.lib import sysroot_lib
@@ -30,6 +32,16 @@
required=True)
wrapper.set_defaults(command='create-wrappers')
+ config = subparser.add_parser('generate-config')
+ target = config.add_mutually_exclusive_group(required=True)
+ target.add_argument('--board', help='Board to generate the config for.')
+ target.add_argument('--brick', help='Brick to generate the config for.')
+ config.add_argument('--out-file', dest='out_file',
+ help='File to write into. If not specified, the '
+ 'configuration will be printed to stdout.')
+ config.add_argument('--sysroot', help='Path to the sysroot.', required=True)
+ config.set_defaults(command='generate-config')
+
options = parser.parse_args(argv)
options.Freeze()
return options
@@ -41,9 +53,20 @@
raise commandline.ChrootRequiredError()
if os.geteuid() != 0:
- cros_build_lib.SudoRunCommand(sys.argv)
+ cros_build_lib.SudoRunCommand(sys.argv, print_cmd=False)
return
if opts.command == 'create-wrappers':
sysroot_lib.CreateAllWrappers(opts.sysroot, opts.toolchain,
opts.friendlyname)
+ elif opts.command == 'generate-config':
+ if opts.brick:
+ config = sysroot_lib.GenerateBrickConfig(
+ opts.sysroot, brick=brick_lib.Brick(opts.brick))
+ else:
+ config = sysroot_lib.GenerateBoardConfig(opts.sysroot, board=opts.board)
+
+ if opts.out_file:
+ osutils.WriteFile(opts.out_file, config, makedirs=True)
+ else:
+ print(config)