# This spec is used to prime the ConfigParser before reading any build specs.
#
# It can be thought of as the "superclass" of all build specs.
#
# It can refer to $(name)s to get the name of the build spec without the
# ".spec" suffix (AKA the subclass's name).
#
# Use RFC 822 format


[DEFAULT]

# The target name that will be passed to various commands.
#
# Could be a board (in legacy mode), or a portage profile in the future.
#
# DEFAULT: the name of the subclass spec file, without the suffix
target: %(name)s


[BUILD]

# Flags to pass to setup_board (other than --board).  Note that setup_board is
# only called once per board, unless you use "chromite clean" to clean your
# board out.
#
# DEFAULT: nothing
setup_board_flags:

# Flags to pass to build_packages (other than --board).
#
# DEFAULT: nothing
#build_packages_flags: --oldchromebinary
build_packages_flags:

# Environment for build_packages, like USE="chrome_internal"
#build_packages_environ: USE="chrome_internal" FEATURES="keepwork"
build_packages_environ:


[IMAGE]

# Flags to pass to build_image (other than --board)
#
# DEFAULT: nothing
build_image_flags:

# Environment for build_image.  Same syntax as for build_packages_environ.
build_image_environ:

# We will run these steps as a post-processing stage after the image is
# built.  The name of each step will be used to find the command to run
# by looking at the value of "post_process_cmdname_cmd".  See commented-out
# example.  Note that order matters here.
#
# These are all run from within the choot w/ CWD as src/scripts.
post_process_steps:

#post_process_steps: test recovery factory_shim factory_test

post_process_test_cmd: ./mod_image_for_test.sh --board=%(target)s --yes --noinplace
post_process_recovery_cmd: ./mod_image_for_recovery.sh --board=%(target)s
post_process_factory_shim_cmd: ./build_image --board=%(target)s --factory_install --replace --build_attempt=7
post_process_factory_test_cmd: ./mod_image_for_test.sh --board=%(target)s --yes --factory --noinplace
