diff options
| author | Leah Rowe <leah@libreboot.org> | 2023-08-24 00:30:07 +0100 | 
|---|---|---|
| committer | Leah Rowe <leah@libreboot.org> | 2023-08-24 00:31:19 +0100 | 
| commit | 8f4f0e00ec3c307599f7f27777e3e92c1f9f6e4e (patch) | |
| tree | 39ec749c16892b69cda00b6241714f475a1989b6 /resources/scripts/build | |
| parent | 4c6c7d1088eb9dc0c9b2eeeb64febeeb78038583 (diff) | |
use the new coding style in scripts
there were stragglers left over from the last audit,
and these stragglers still exist even after all the
major re-factoring as of late
the new style is: bsd-like coding style and error
handling. verbose yet simple error handling. we use
an "err" function in a way reminiscent of most C
programs that you see in openbsd base (err.h)
this style is very clean, resulting in readable code
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'resources/scripts/build')
| -rwxr-xr-x | resources/scripts/build/clean/cbutils | 52 | ||||
| -rwxr-xr-x | resources/scripts/build/clean/crossgcc | 7 | ||||
| -rwxr-xr-x | resources/scripts/build/clean/seabios | 27 | ||||
| -rwxr-xr-x | resources/scripts/build/clean/u-boot | 33 | ||||
| -rwxr-xr-x | resources/scripts/build/coreboot/utils | 28 | ||||
| -rwxr-xr-x | resources/scripts/build/grub/payload | 34 | ||||
| -rwxr-xr-x | resources/scripts/build/src/for | 14 | 
7 files changed, 124 insertions, 71 deletions
| diff --git a/resources/scripts/build/clean/cbutils b/resources/scripts/build/clean/cbutils index dec8d944..067c2cb2 100755 --- a/resources/scripts/build/clean/cbutils +++ b/resources/scripts/build/clean/cbutils @@ -24,26 +24,36 @@  [ "x${DEBUG+set}" = 'xset' ] && set -v  set -u -e -# clean coreboot utilities (dependencies for 'build'): - -printf "Cleaning the previous build of coreboot and its utilities\n" - -rm -Rf cbutils - -[ ! -d "coreboot/" ] && exit 0 - -for tree in coreboot/*; do -	[ "${tree##*/}" = "coreboot" ] && continue -	[ -d "${tree}" ] || continue - -	# Clean coreboot, of course -	make -C "${tree}/" distclean - -	# Clean its utilities as well -	for util in cbfstool ifdtool nvramtool cbmem; do -		make distclean -C "${tree}/util/${util}/" +. "include/err.sh" + +main() +{ +	printf "Cleaning the previous build of coreboot and its utilities\n" + +	rm -Rf cbutils || err "cannot remove cbutils/" +	[ ! -d "coreboot/" ] && exit 0 + +	clean_cbutils +} + +clean_cbutils() +{ +	for tree in coreboot/*; do +		[ "${tree##*/}" = "coreboot" ] && continue +		[ -d "${tree}" ] || continue + +		# Clean coreboot, of course +		make -C "${tree}/" distclean || \ +		    err "cannot distclean coreboot tree, ${tree}" + +		# Clean its utilities as well +		for util in cbfstool ifdtool nvramtool cbmem; do +			make distclean -C "${tree}/util/${util}/" || \ +			    err "cannot clean util, ${util}, at ${tree}" +		done +		make distclean -C "${tree}/payloads/libpayload/" || \ +		    err "cannot distclean libpayload, at ${tree}"  	done -	make distclean -C "${tree}/payloads/libpayload/" -done +} -printf "\n\n" +main $@ diff --git a/resources/scripts/build/clean/crossgcc b/resources/scripts/build/clean/crossgcc index 76de1e19..7b1765f8 100755 --- a/resources/scripts/build/clean/crossgcc +++ b/resources/scripts/build/clean/crossgcc @@ -29,9 +29,14 @@ main()  	printf "Cleaning crossgcc builds in all coreboot archives\n"  	[ ! -d "coreboot/" ] && exit 0 +	clean_crossgcc +} + +clean_crossgcc() +{  	for board in coreboot/*; do +		[ -d "${board}" ] || continue  		[ "${board##*/}" = "coreboot" ] && continue -		[ ! -d "${board}" ] && continue  		make -C "${board}/" crossgcc-clean || err "make-clean"  	done  } diff --git a/resources/scripts/build/clean/seabios b/resources/scripts/build/clean/seabios index e9b11e5b..c6759e83 100755 --- a/resources/scripts/build/clean/seabios +++ b/resources/scripts/build/clean/seabios @@ -2,7 +2,7 @@  #  helper script: clean the dependencies that were built in seabios  # -#	Copyright (C) 2015, 2020, 2021 Leah Rowe <info@minifree.org> +#	Copyright (C) 2015,2020,2021,2023 Leah Rowe <info@minifree.org>  #  #    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 @@ -26,13 +26,22 @@ set -u -e  # clean bucts  # -------------------------------------------------------- -printf "Cleaning the previous builds of seabios\n" +main() +{ +	[ ! -d "elf/seabios" ] || rm -Rf elf/seabios || \ +	    err "cannot remove elf/seabios" +	[ ! -d "seabios/" ] && exit 0 -[ ! -d "elf/seabios" ] || rm -Rf elf/seabios || err "cannot remove elf/seabios" -[ ! -d "seabios/" ] && exit 0 +	clean_seabios +} -for x in seabios/*; do -	[ "${x}" = "seabios/seabios" ] && continue -	[ ! -d "${x}" ] && continue -	make -C "${x}" distclean || err "cannot distclean tree, ${x}" -done +clean_seabios() +{ +	for x in seabios/*; do +		[ ! -d "${x}" ] && continue +		[ "${x}" = "seabios/seabios" ] && continue +		make -C "${x}" distclean || err "cannot distclean tree, ${x}" +	done +} + +main $@ diff --git a/resources/scripts/build/clean/u-boot b/resources/scripts/build/clean/u-boot index 6a59a5c1..7ba3a4a9 100755 --- a/resources/scripts/build/clean/u-boot +++ b/resources/scripts/build/clean/u-boot @@ -2,7 +2,7 @@  #  helper script: clean the u-boot builds  # -#	   Copyright (C) 2014, 2015, 2016, 2020 Leah Rowe <info@minifree.org> +#	   Copyright (C) 2014-2016, 2020, 2023 Leah Rowe <info@minifree.org>  #	   Copyright (C) 2015 Klemens Nanni <contact@autoboot.org>  #	   Copyright (C) 2022 Alper Nebi Yasak <alpernebiyasak@gmail.com>  # @@ -23,17 +23,28 @@  [ "x${DEBUG+set}" = 'xset' ] && set -v  set -u -e -printf "Cleaning u-boot builds for all boards\n" +. "include/err.sh" -for board in u-boot/*; do -	if [ "${board##*/}" = "u-boot" ] || [ ! -d "${board}" ]; then -		continue -	fi +main() +{ +	printf "Cleaning u-boot builds for all boards\n" +	clean_uboot +} -	make -C "${board}/" distclean +clean_uboot() +{ +	for board in u-boot/*; do +		if [ "${board##*/}" = "u-boot" ] || [ ! -d "${board}" ]; then +			continue +		fi -	[ -e "${board}/.git" ] && \ -		git -C "${board}" clean -fdx -done +		make -C "${board}/" distclean || \ +		    err "cannot distclean u-boot dir, ${board}" -printf "\n\n" +		[ ! -e "${board}/.git" ] || \ +			git -C "${board}" clean -fdx || \ +			    err "cannot clean u-boot git repo, ${board}" +	done +} + +main $@ diff --git a/resources/scripts/build/coreboot/utils b/resources/scripts/build/coreboot/utils index e24378d3..d381f9e2 100755 --- a/resources/scripts/build/coreboot/utils +++ b/resources/scripts/build/coreboot/utils @@ -21,10 +21,12 @@  [ "x${DEBUG+set}" = 'xset' ] && set -v  set -u -e -printf "Building coreboot utils\n" +. "include/err.sh"  main()  { +	printf "Building coreboot utils\n" +  	if [ $# -gt 0 ]; then  		for board in "${@}"; do  			build_for_mainboard ${board} || \ @@ -45,28 +47,28 @@ build_for_mainboard() {  	[ -f "resources/coreboot/${board}/target.cfg" ] || continue  	tree="undefined"  	. "resources/coreboot/${board}/target.cfg" # source -	if [ "${tree}" = "undefined" ]; then -		printf "build/cbutils: improper tree definition for '%s'" \ -				"${board}" -		return 1 -	fi -	buildutils "${tree}" || return 1 +	[ "${tree}" = "undefined" ] && \ +		err "build/cbutils: improper tree definition for '${board}'" +	buildutils "${tree}"  }  buildutils() {  	tree="${1}"  	[ -d "coreboot/${tree}/" ] || \ -		./fetch_trees coreboot $tree || return 1 +		./fetch_trees coreboot $tree || \ +		    err "cannot fetch ${tree}"  	for util in cbfstool ifdtool; do  		[ -f "cbutils/${tree}/${util}" ] && continue  		[ -d "cbutils/${tree}" ] || \ -			mkdir -p "cbutils/${tree}" || return 1 +			mkdir -p "cbutils/${tree}" || \ +			    err "cannot create directory, cbutils/${tree}"  		utildir="coreboot/${tree}/util/${util}" -		make distclean -C "${utildir}" || return 1 -		make -j$(nproc) -C "${utildir}" || return 1 -		mv "${utildir}/${util}" "cbutils/${tree}" || return 1 -		make distclean -C "${utildir}" || return 1 +		make distclean -C "${utildir}" || err "cannot clean ${utildir}" +		make -j$(nproc) -C "${utildir}" || err "cannot build ${utildir}" +		cp "${utildir}/${util}" "cbutils/${tree}" || \ +		    err "cannot copy util, ${util}, to cbutils/${tree}/" +		make distclean -C "${utildir}" || err "can't clean ${utildir}"  	done  } diff --git a/resources/scripts/build/grub/payload b/resources/scripts/build/grub/payload index 4886a874..7f1d239f 100755 --- a/resources/scripts/build/grub/payload +++ b/resources/scripts/build/grub/payload @@ -21,6 +21,8 @@  [ "x${DEBUG+set}" = 'xset' ] && set -v  set -u -e +. "include/err.sh" +  grubcfgsdir="resources/grub"  keymap="" @@ -30,26 +32,29 @@ main()  {  	printf "Creating GRUB payloads and configuration files\n" -	[ ! -d "grub/" ] && \ -		./fetch grub -	[ ! -f "grub/grub-mkstandalone" ] && \ -		./build grub utils -	[ ! -d "elf/" ] && \ -		mkdir -p elf/ -	[ ! -d "elf/grub" ] && \ -		mkdir -p elf/grub/ - -	rm -f elf/grub/* +	handle_dependencies  	# Separate GRUB payload per keymap to save space in ROM. -  	for keylayoutfile in ${grubcfgsdir}/keymap/*.gkb; do +		[ -f "${keylayoutfile}" ] || continue  		build_grub_payloads "${keylayoutfile}"  	done  	printf "Done! Check elf/grub/ to see the files.\n\n"  } +handle_dependencies() +{ +	[ -d "grub/" ] || \ +		./fetch grub || err "cannot fetch grub" +	[ -f "grub/grub-mkstandalone" ] || \ +		./build grub utils || err "cannot build grub utils" +	[ -d "elf/grub" ] || \ +		mkdir -p elf/grub || err "cannot create directory, elf/grub" + +	rm -f elf/grub/* || err "cannot delete files in directory, elf/grub/" +} +  build_grub_payloads()  {  	keylayoutfile=${1} @@ -79,15 +84,16 @@ build_grub_elf()  	    --fonts= --themes= --locales=  \  	    --modules="${grub_modules}" \  	    --install-modules="${grub_install_modules}" \ -	    ${gcfg} ${grubk} +	    ${gcfg} ${grubk} || \ +	    err "cannot create grub payload (grub-mkstandalone)"  }  create_grub_config()  {  	sed "s/usqwerty/${keymap}/" < ${grubcfgsdir}/config/grub.cfg \ -	    > elf/grub/grub_${keymap}.cfg +	    > elf/grub/grub_${keymap}.cfg || err "sed failed: grub.cfg"  	sed "s/grubtest.cfg/grub.cfg/" < elf/grub/grub_${keymap}.cfg \ -	    > elf/grub/grub_${keymap}_test.cfg +	    > elf/grub/grub_${keymap}_test.cfg || err "sed failed: grubtest.cfg"  }  main $@ diff --git a/resources/scripts/build/src/for b/resources/scripts/build/src/for index 57459952..6945b9f9 100755 --- a/resources/scripts/build/src/for +++ b/resources/scripts/build/src/for @@ -46,8 +46,14 @@ main()  	[ -z "${project}" ] && err "project name not specified"  	[ "${project}" = "ich9utils" ] && project="util/ich9utils" -	[ -d "${project}" ] || ./fetch "${project%/*}" \ -	    || err "Cannot download project, ${project%/*}" +	handle_dependencies +	run_make_command +} + +handle_dependencies() +{ +	[ -d "${project}" ] || ./fetch "${project%/*}" || \ +	    err "Cannot download project, ${project%/*}"  	[ -d "${project}" ] || err "Project, ${project%/*}, not downloaded"  	if [ "${project}" = "uefitool" ]; then @@ -56,6 +62,10 @@ main()  		cmake UEFIExtract/ || err "cannot cmake UEFIExtract"  		)  	fi +} + +run_make_command() +{  	[ ! -z "${mode}" ] || \  		make -C "${project}" || err "'make' failed (${project})"  	[ -z "${mode}" ] || \ | 
