coreboot-kgpe-d16/util/mainboard/google/hatch/kconfig.py
Paul Fagerburg 149d523c9a util/hatch: remove GBB_HWID, clean up user-visible output
* GBB_HWID is no longer used in Hatch Kconfig, so remove the code
that creates the GBB_HWID and adds it to the Kconfig section
* Add more information in the usage message when the cmdline params
are incorrect.
* Remove messages that tell the user what to do, because the top-level
program that invokes this script will handle those commands, and so
this script telling the user what to do is noise (and possibly harmful)
* Add more information to the commit message that the script prepares
for the user.
* Bump script version number.

BRANCH=None
BUG=b:140261109
TEST=Create the "sushi" variant of the "hatch" baseboard:
`util/mainboard/google/hatch/create_coreboot_variant.sh sushi`
Inspect the files in src/mainboard/google/hatch/variants/sushi

Change-Id: I04e949aedce61ed7fc7df681b72c3cfef31b5513
Signed-off-by: Paul Fagerburg <pfagerburg@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/37647
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Justin TerAvest <teravest@chromium.org>
2019-12-12 15:08:55 +00:00

116 lines
4.1 KiB
Python
Executable file

#!/usr/bin/python3
"""Add a new variant to the Kconfig and Kconfig.name for the baseboard
To start a new variant of an existing baseboard, we need to add
the variant into the Kconfig and Kconfig.name files for the
baseboard. In Kconfig, we have two sections that need additional
entries, MAINBOARD_PART_NUMBER and VARIANT_DIR.
The MAINBOARD_PART_NUMBER and VARIANT_DIR just use various
capitalizations of the variant name to create the strings.
Kconfig.name adds an entire section for the new variant, and all
of these use various capitalizations of the variant name. The strings
in this section are SOC-specific, so we'll need versions for each
SOC that we support.
Copyright 2019 Google LLC.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
"""
import argparse
def main():
parser = argparse.ArgumentParser(
description="Add strings to coreboot Kconfig for a new board variant")
parser.add_argument('--name', type=str, required=True,
help='Name of the board variant')
args = parser.parse_args()
add_to_Kconfig(args.name)
add_to_Kconfig_name(args.name)
def add_to_Kconfig(variant_name):
"""Add options for the variant to the Kconfig
Open the Kconfig file and read it line-by-line. When we detect that we're
in one of the sections of interest, wait until we get a blank line
(signalling the end of that section), and then add our new line before
the blank line. The updated lines are written out to Kconfig.new in the
same directory as Kconfig.
variant_name The name of the board variant, e.g. 'kohaku'"""
# These are the part of the strings that we'll add to the sections
BOARD = 'BOARD_GOOGLE_' + variant_name.upper()
lowercase = variant_name.lower()
capitalized = lowercase.capitalize()
# These flags track whether we're in a section where we need to add an option
in_mainboard_part_number = False
in_variant_dir = False
inputname = 'Kconfig'
outputname = 'Kconfig.new'
with open(outputname, 'w') as outfile:
with open(inputname, 'r') as infile:
for rawline in infile:
line = rawline.rstrip('\r\n')
# Are we in one of the sections of interest?
if line == 'config MAINBOARD_PART_NUMBER':
in_mainboard_part_number = True
if line == 'config VARIANT_DIR':
in_variant_dir = True
# Are we at the end of a section, and if so, is it one of the
# sections of interest?
if line == '':
if in_mainboard_part_number:
print('\tdefault "' + capitalized + '" if ' + BOARD, file=outfile)
in_mainboard_part_number = False
if in_variant_dir:
print('\tdefault "' + lowercase + '" if ' + BOARD, file=outfile)
in_variant_dir = False
print(line, file=outfile)
def add_to_Kconfig_name(variant_name):
"""Add a config section for the variant to the Kconfig.name
Kconfig.name is easier to modify than Kconfig; it only has a block at
the end with the new variant's details.
variant_name The name of the board variant, e.g. 'kohaku'"""
# Board name for the config section
uppercase = variant_name.upper()
capitalized = variant_name.lower().capitalize()
inputname = 'Kconfig.name'
outputname = 'Kconfig.name.new'
with open(outputname, 'w') as outfile:
with open(inputname, 'r') as infile:
# Copy all input lines to output
for rawline in infile:
line = rawline.rstrip('\r\n')
print(line, file=outfile)
# Now add the new section
print('\nconfig ' + 'BOARD_GOOGLE_' + uppercase, file=outfile)
print('\tbool "-> ' + capitalized + '"', file=outfile)
print('\tselect BOARD_GOOGLE_BASEBOARD_HATCH', file=outfile)
print('\tselect BOARD_ROMSIZE_KB_16384', file=outfile)
if __name__ == '__main__':
main()