util/mainboard/google: add support for Volteer
create_coreboot_variant.sh now supports the Volteer baseboard in
addition to Hatch. The shell script and supporting python code are
moved up one level, while retaining the ${BASE}/template/* file
structure for each supported baseboard.
kconfig.py has to add slightly different text to Kconfig.name
depending on which baseboard is selected.
BRANCH=None
BUG=b:146646594
TEST=Create variants of Hatch and Volteer, check that the staged
commits are correct.
$ ./create_coreboot_variant.sh hatch sushi b:12345
src/mainboard/google/hatch/Kconfig and Kconfig.name will have new
sections for SUSHI. src/mainboard/google/hatch/variants/sushi
will have a copy of util/mainboard/google/hatch/template
$ ./create_coreboot_variant.sh volteer ripto b:12345
src/mainboard/google/volteer/Kconfig and Kconfig.name will have new
sections for RIPTO. src/mainboard/google/volteer/variants/ripto
will have a copy of util/mainboard/google/volteer/template
Also run the script with an existing board name to verify that you
can't create a variant that already exists.
Change-Id: I084b6c50bb76af0d11dc86a96b3c3c434569a0dd
Signed-off-by: Paul Fagerburg <pfagerburg@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/37878
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Justin TerAvest <teravest@chromium.org>
Reviewed-by: Marco Chen <marcochen@google.com>
			
			
This commit is contained in:
		
				
					committed by
					
						 Patrick Georgi
						Patrick Georgi
					
				
			
			
				
	
			
			
			
						parent
						
							f71991edc3
						
					
				
				
					commit
					1fe7dcb047
				
			| @@ -13,39 +13,37 @@ | |||||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
| # GNU General Public License for more details. | # GNU General Public License for more details. | ||||||
| 
 | 
 | ||||||
| VERSION="1.0.1" | VERSION="1.0.2" | ||||||
| SCRIPT=$(basename -- "${0}") | SCRIPT=$(basename -- "${0}") | ||||||
| 
 | 
 | ||||||
| export LC_ALL=C | export LC_ALL=C | ||||||
| 
 | 
 | ||||||
| if [[ "$#" -lt 1 ]]; then | if [[ "$#" -lt 2 ]]; then | ||||||
|   echo "Usage: ${SCRIPT} variant_name [b:bug_number]" |   echo "Usage: ${SCRIPT} base_name variant_name [bug_number]" | ||||||
|   echo "e.g. ${SCRIPT} kohaku b:140261109" |   echo "e.g. ${SCRIPT} hatch kohaku b:140261109" | ||||||
|   echo "* Adds a new variant of the baseboard to Kconfig and Kconfig.name" |   echo "* Adds a new variant of the baseboard to Kconfig and Kconfig.name" | ||||||
|   echo "* Copies the template files for the baseboard to the new variant" |   echo "* Copies the template files for the baseboard to the new variant" | ||||||
|   exit 1 |   exit 1 | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| # Note that this script is specific to Hatch, and so it does not allow | # This is the name of the base board that we're using to make the variant. | ||||||
| # you to specify the baseboard as one of the cmdline arguments. | # ${var,,} converts to all lowercase. | ||||||
| # | BASE="${1,,}" | ||||||
| # This is the name of the base board that we're cloning to make the variant. |  | ||||||
| BASE="hatch" |  | ||||||
| # This is the name of the variant that is being cloned. | # This is the name of the variant that is being cloned. | ||||||
| # ${var,,} converts to all lowercase; ${var^^} is all uppercase. | # ${var,,} converts to all lowercase; ${var^^} is all uppercase. | ||||||
| VARIANT="${1,,}" | VARIANT="${2,,}" | ||||||
| VARIANT_UPPER="${VARIANT^^}" | VARIANT_UPPER="${VARIANT^^}" | ||||||
| 
 | 
 | ||||||
| # Assign text for the "BUG=" part of the commit, or use "None" if that | # Assign BUG= text, or "None" if that parameter wasn't specified. | ||||||
| # parameter wasn't specified. | BUG=${3:-None} | ||||||
| BUG=${2:-None} |  | ||||||
| 
 | 
 | ||||||
| # This script and the templates live in util/mainboard/google/hatch | # This script lives in util/mainboard/google | ||||||
| # We need to create files in src/mainboard/google/hatch | # The template files are in util/mainboard/google/${BASE}/templates | ||||||
|  | # We need to create files in src/mainboard/google/${BASE}/variants/${VARIANT} | ||||||
| pushd "${BASH_SOURCE%/*}" || exit 1 | pushd "${BASH_SOURCE%/*}" || exit 1 | ||||||
| SRC=$(pwd) | SRC=$(pwd) | ||||||
| popd || exit 1 | popd || exit 1 | ||||||
| pushd "${SRC}/../../../../src/mainboard/google/${BASE}" || { | pushd "${SRC}/../../../src/mainboard/google/${BASE}" || { | ||||||
|   echo "The baseboard directory for ${BASE} does not exist."; |   echo "The baseboard directory for ${BASE} does not exist."; | ||||||
|   exit 1; } |   exit 1; } | ||||||
| 
 | 
 | ||||||
| @@ -62,12 +60,12 @@ git checkout -b "coreboot_${VARIANT}_${DATE}" || exit 1 | |||||||
| 
 | 
 | ||||||
| # Copy the template tree to the target. | # Copy the template tree to the target. | ||||||
| mkdir -p "variants/${VARIANT}/" | mkdir -p "variants/${VARIANT}/" | ||||||
| cp -pr "${SRC}/template/." "variants/${VARIANT}/" | cp -pr "${SRC}/${BASE}/template/." "variants/${VARIANT}/" | ||||||
| git add "variants/${VARIANT}/" | git add "variants/${VARIANT}/" | ||||||
| 
 | 
 | ||||||
| # Now add the new variant to Kconfig and Kconfig.name | # Now add the new variant to Kconfig and Kconfig.name | ||||||
| # These files are in the current directory, e.g. src/mainboard/google/hatch | # These files are in the current directory, e.g. src/mainboard/google/hatch | ||||||
| "${SRC}/kconfig.py" --name "${VARIANT}" | "${SRC}/kconfig.py" --board "${BASE}" --variant "${VARIANT}" || exit 1 | ||||||
| 
 | 
 | ||||||
| mv Kconfig.new Kconfig | mv Kconfig.new Kconfig | ||||||
| mv Kconfig.name.new Kconfig.name | mv Kconfig.name.new Kconfig.name | ||||||
| @@ -1,4 +1,5 @@ | |||||||
| #!/usr/bin/python3 | #!/usr/bin/env python3 | ||||||
|  | # -*- coding: utf-8 -*- | ||||||
| """Add a new variant to the Kconfig and Kconfig.name for the baseboard | """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 | To start a new variant of an existing baseboard, we need to add | ||||||
| @@ -26,18 +27,26 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |||||||
| GNU General Public License for more details. | GNU General Public License for more details. | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
|  | from __future__ import print_function | ||||||
| import argparse | import argparse | ||||||
|  | import sys | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def main(): | def main(): | ||||||
|   parser = argparse.ArgumentParser( |   parser = argparse.ArgumentParser( | ||||||
|     description="Add strings to coreboot Kconfig for a new board variant") |       description='Add strings to coreboot Kconfig for a new board variant') | ||||||
|   parser.add_argument('--name', type=str, required=True, |   parser.add_argument('--board', type=str, required=True, | ||||||
|     help='Name of the board variant') |                       help='Name of the baseboard') | ||||||
|  |   parser.add_argument('--variant', type=str, required=True, | ||||||
|  |                       help='Name of the board variant') | ||||||
|   args = parser.parse_args() |   args = parser.parse_args() | ||||||
| 
 | 
 | ||||||
|   add_to_Kconfig(args.name) |   if args.board not in ['hatch', 'volteer']: | ||||||
|   add_to_Kconfig_name(args.name) |     print('Unsupported baseboard "' + args.board + '"') | ||||||
|  |     sys.exit(1) | ||||||
|  | 
 | ||||||
|  |   add_to_Kconfig(args.variant) | ||||||
|  |   add_to_Kconfig_name(args.board, args.variant) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def add_to_Kconfig(variant_name): | def add_to_Kconfig(variant_name): | ||||||
| @@ -49,7 +58,8 @@ def add_to_Kconfig(variant_name): | |||||||
|   the blank line. The updated lines are written out to Kconfig.new in the |   the blank line. The updated lines are written out to Kconfig.new in the | ||||||
|   same directory as Kconfig. |   same directory as Kconfig. | ||||||
| 
 | 
 | ||||||
|   variant_name    The name of the board variant, e.g. 'kohaku'""" |   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 |   # These are the part of the strings that we'll add to the sections | ||||||
|   BOARD = 'BOARD_GOOGLE_' + variant_name.upper() |   BOARD = 'BOARD_GOOGLE_' + variant_name.upper() | ||||||
|   lowercase = variant_name.lower() |   lowercase = variant_name.lower() | ||||||
| @@ -85,13 +95,16 @@ def add_to_Kconfig(variant_name): | |||||||
|         print(line, file=outfile) |         print(line, file=outfile) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def add_to_Kconfig_name(variant_name): | def add_to_Kconfig_name(baseboard_name, variant_name): | ||||||
|   """Add a config section for the variant to the Kconfig.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 |   Kconfig.name is easier to modify than Kconfig; it only has a block at | ||||||
|   the end with the new variant's details. |   the end with the new variant's details. | ||||||
| 
 | 
 | ||||||
|   variant_name    The name of the board variant, e.g. 'kohaku'""" |   baseboard_name  The name of the baseboard, e.g. 'hatch' | ||||||
|  |                   We expect the caller to have checked that it is one we support | ||||||
|  |   variant_name    The name of the board variant, e.g. 'kohaku' | ||||||
|  |   """ | ||||||
|   # Board name for the config section |   # Board name for the config section | ||||||
|   uppercase = variant_name.upper() |   uppercase = variant_name.upper() | ||||||
|   capitalized = variant_name.lower().capitalize() |   capitalized = variant_name.lower().capitalize() | ||||||
| @@ -106,10 +119,16 @@ def add_to_Kconfig_name(variant_name): | |||||||
|         print(line, file=outfile) |         print(line, file=outfile) | ||||||
| 
 | 
 | ||||||
|       # Now add the new section |       # Now add the new section | ||||||
|       print('\nconfig ' + 'BOARD_GOOGLE_' + uppercase, file=outfile) |       if baseboard_name == 'hatch': | ||||||
|       print('\tbool "-> ' + capitalized + '"', file=outfile) |         print('\nconfig ' + 'BOARD_GOOGLE_' + uppercase, file=outfile) | ||||||
|       print('\tselect BOARD_GOOGLE_BASEBOARD_HATCH', file=outfile) |         print('\tbool "-> ' + capitalized + '"', file=outfile) | ||||||
|       print('\tselect BOARD_ROMSIZE_KB_16384', file=outfile) |         print('\tselect BOARD_GOOGLE_BASEBOARD_HATCH', file=outfile) | ||||||
|  |         print('\tselect BOARD_ROMSIZE_KB_16384', file=outfile) | ||||||
|  | 
 | ||||||
|  |       if baseboard_name == 'volteer': | ||||||
|  |         print('\nconfig ' + 'BOARD_GOOGLE_' + uppercase, file=outfile) | ||||||
|  |         print('\tbool "-> ' + capitalized + '"', file=outfile) | ||||||
|  |         print('\tselect BOARD_GOOGLE_BASEBOARD_VOLTEER', file=outfile) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
							
								
								
									
										13
									
								
								util/mainboard/google/volteer/template/Makefile.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								util/mainboard/google/volteer/template/Makefile.inc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | ## This file is part of the coreboot project. | ||||||
|  | ## | ||||||
|  | ## 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. | ||||||
|  | ## | ||||||
|  |  | ||||||
|  | SPD_SOURCES = | ||||||
		Reference in New Issue
	
	Block a user