blob: f9e666e65bb2498fa76a59d9f5174e3ff097e9e5 [file] [log] [blame]
# Copyright 2018 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Update or initialize the chroot version.
The chroot version hooks provide manually created update files to handle
tasks that need to be manually run. See also `update_chroot` for updating
the toolchain and some other packages on the chroot. The `update_chroot` script
also calls this script. The chroot version and installed package versions are
not strongly correlated.
"""
import logging
from chromite.lib import commandline
from chromite.lib import cros_build_lib
from chromite.lib import cros_sdk_lib
def GetParser():
"""Build the ArgumentParser."""
parser = commandline.ArgumentParser(description=__doc__)
parser.add_argument(
"-i",
"--init-latest",
action="store_true",
default=False,
help="Create the version file with the latest version "
"if it doesn't exist.",
)
return parser
def _ParseArgs(argv):
"""Parse arguments."""
parser = GetParser()
opts = parser.parse_args(argv)
opts.Freeze()
return opts
def main(argv) -> None:
"""Main function."""
commandline.RunInsideChroot()
opts = _ParseArgs(argv)
if opts.init_latest:
cros_sdk_lib.InitLatestVersion()
else:
try:
cros_sdk_lib.RunChrootVersionHooks()
except cros_sdk_lib.InvalidChrootVersionError as e:
cros_build_lib.Die(e)
except cros_sdk_lib.Error as e:
logging.error(e)
logging.warning(
"Chroot version hooks failed. Please file a bug with the CrOS "
"Build team with the output above (go/cros-build-bug). "
"If you are willing to lose all built boards, you can bypass "
"the issue by replacing your chroot with:\n"
"\tcros_sdk --replace"
)
return 1