diff options
Diffstat (limited to 'resources/scripts')
| -rwxr-xr-x | resources/scripts/download/coreboot | 119 | 
1 files changed, 75 insertions, 44 deletions
| diff --git a/resources/scripts/download/coreboot b/resources/scripts/download/coreboot index f1998958..b5825892 100755 --- a/resources/scripts/download/coreboot +++ b/resources/scripts/download/coreboot @@ -2,7 +2,8 @@  #  helper script: download coreboot  # -#	Copyright (C) 2014, 2015, 2016, 2020, 2021 Leah Rowe <info@minifree.org> +#	Copyright (C) 2014,2015,2016,2020,2021,2023 Leah Rowe +#							<info@minifree.org>  #	Copyright (C) 2022 Alper Nebi Yasak <alpernebiyasak@gmail.com>  #	Copyright (C) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>  # @@ -20,6 +21,8 @@  #	along with this program.  If not, see <http://www.gnu.org/licenses/>.  # +# TODO: purge this entire file. it's terrible. re-write it more cleanly. +  [ "x${DEBUG+set}" = 'xset' ] && set -v  set -u -e @@ -34,21 +37,12 @@ usage()  {  	progname="./download coreboot"  	printf "Usage:\n" -	printf "\t%s\t\t\t# %s\n" \ -			"${progname}" \ -			"Download coreboot for all the boards" -	printf "\t%s [board [board] ...] # %s\n" \ -			"${progname}" \ -			"Download coreboot for the given boards" -	printf "\t%s --list-boards\t# %s\n" \ -			"${progname}" \ -			"Prints this help" -	printf "\t%s --help\t\t# %s\n" \ -			"${progname}" \ -			"List supported boards" -	printf "\t%s --help\t\t# %s\n" \ -			"${progname}" \ -			"Prints this help" +	printf "\t%s\t\t\t# Clone coreboot for all boards\n" "${progname}" +	printf "\t%s [board [board] ...] # Clone coreboot for given boards\n" \ +			${progname} +	printf "\t%s --list-boards\t# Prints this help\n" ${progname} +	printf "\t%s --help\t\t# List supported boards\n" ${progname} +	printf "\t%s --help\t\t# Prints this help\n" ${progname}  }  # In this script, set -u is used to check for undefined variables, and @@ -74,26 +68,35 @@ downloadfor() {  	cbrevision="undefined"  	# The loop will always exit, but this while loop is crafted -	# such that a tree referencing a tree that references another tree is possible -	# (and so on) +	# such that a tree referencing a tree that references another +	# tree is possible (and so on and so forth) +  	while true; do  		cbrevision="undefined"  		cbtree="undefined"  		if [ ! -f "resources/coreboot/${board}/board.cfg" ]; then -			printf "ERROR: download/coreboot: board.cfg does not exist for '%s'\n" "${board}" +			printf "ERROR: download/coreboot: board.cfg does not" +			printf " exist for '%s'\n" ${board}  			return 1  		fi  		if [ -f "resources/coreboot/${board}/seen" ]; then -			printf "ERROR: download/coreboot: logical loop; '%s' board.cfg refers to another tree, which ultimately refers back to '%s'.\n" "${board}" "${board}" +			printf "ERROR: download/coreboot: logical loop:" +			printf " '%s' board.cfg refers to another tree," \ +					${board} +			printf " which ultimately refers back to '%s'." \ +					${board}  			return 1  		fi  		# This is to override $cbrevision and $cbtree -		. "resources/coreboot/${board}/board.cfg" || touch ../build_error +		. "resources/coreboot/${board}/board.cfg" \ +				|| touch ../build_error +  		if [ -f build_error ]; then -			printf "ERROR: download/coreboot: problem sourcing %s/board.cfg\n" "${board}" +			printf "ERROR: download/coreboot:" +			printf " problem sourcing %s/board.cfg\n" "${board}"  			return 1  		fi  		touch "resources/coreboot/${board}/seen" @@ -102,12 +105,16 @@ downloadfor() {  			board="${cbtree}"  		else  			if [ "${cbtree}" = "undefined" ]; then -				printf "ERROR: download/coreboot: tree name undefined for '%s\n'" "${board}" +				printf "ERROR: download/coreboot:" +				printf " tree name undefined for '%s\n'" \ +						${board}  				return 1  			fi  			if [ "${cbrevision}" = "undefined" ]; then -				printf "ERROR: download/coreboot: commit ID undefined for '%s'\n" "${board}" +				printf "ERROR: download/coreboot:" +				printf " commit ID undefined for '%s'\n" \ +						${board}  				return 1  			fi  			break @@ -117,7 +124,8 @@ downloadfor() {  	rm -f resources/coreboot/*/seen  	if [ -d "coreboot/${cbtree}" ]; then -		printf "REMARK: download/coreboot: directory for '%s' already exists. Skipping setup.\n" "${cbtree}" +		printf "REMARK: download/coreboot %s: exists. Skipping.\n" \ +				${cbtree}  		if [ "${cbtree}" != "${1}" ]; then  			printf "(for board: '${1}')\n"  		fi @@ -128,7 +136,8 @@ downloadfor() {  		mkdir "coreboot/"  	fi  	if [ ! -d coreboot ]; then -		printf "ERROR: download/coreboot: directory not created. Check file system permissions\n" +		printf "ERROR: download/coreboot: directory not created." +		printf " Check file system permissions\n"  		return 1  	fi @@ -140,42 +149,56 @@ downloadfor() {  	if [ ! -d coreboot ]; then  		printf "Download coreboot from upstream:\n" -		git clone https://review.coreboot.org/coreboot || rm -Rf coreboot +		git clone https://review.coreboot.org/coreboot \ +				|| rm -Rf coreboot  		if [ ! -d coreboot ]; then -			printf "WARNING: Upstream failed. Trying backup github repository:\n" -			git clone https://github.com/coreboot/coreboot.git || rm -Rf coreboot +			printf "WARNING: Upstream failed. Trying backup:\n" +			git clone https://github.com/coreboot/coreboot.git \ +					|| rm -Rf coreboot  		fi  		if [ ! -d coreboot ]; then  -			printf "ERROR: download/coreboot: Problem with git-clone. Network issue?\n" -			cd ../; return 1 +			printf "ERROR: download/coreboot:" +			printf " Problem with git-clone. Network issue?\n" +			cd ../ +			return 1  		fi  	else  		( cd coreboot/; git pull || touch ../build_error )  		if [ -f ../build_error ]; then -			printf "ERROR: download/coreboot: Problem with git-pull. Network issue?\n" -			cd ../; return 1 +			printf "ERROR: download/coreboot:" +			printf " Problem with git-pull. Network issue?\n" +			cd ../ +			return 1  		fi  	fi  	cp -R coreboot "${cbtree}" || touch ../build_error  	if [ -d ../build_error ]; then -		printf "ERROR: download/coreboot: Unable to copy directory. Check file system permissions or free space.\n" +		printf "ERROR: download/coreboot: Unable to copy directory." +		printf " Check file system permissions or free space.\n"  		rm -Rf "${cbtree}/" -		cd ../; return 1 +		cd ../ +		return 1  	fi  	cd ${cbtree}/  	git reset --hard ${cbrevision} || touch ../../build_error  	if [ -f ../../build_error ]; then -		printf "ERROR: download/coreboot: Unable to reset to commit ID/tag '%s' for board '%s' on tree '%s'\n" "${cbrevision}" "${1}" "${cbtree}" -		cd ../../; return 1 +		printf "ERROR: download/coreboot: Unable to reset to commit" +		printf " ID/tag '%s' for board '%s' on tree '%s'\n" \ +				${cbrevision} ${1} ${cbtree} +		cd ../../ +		return 1  	fi  	git submodule update --init --checkout || touch ../../build_error  	if [ -f ../../build_error ]; then -		printf "ERROR: download/coreboot: Unable to update submodules for tree '%s'\n" "${cbtree}" -		cd ../../; return 1 +		printf "ERROR: download/coreboot:" +		printf " Unable to update submodules for tree '%s'\n" \ +				${cbtree} +		cd ../../ +		return 1  	fi  	for patch in ../../resources/coreboot/${cbtree}/patches/*.patch; do @@ -185,9 +208,12 @@ downloadfor() {  		git am "${patch}" || touch ../../build_error  		if [ -f ../../build_error ]; then -			printf "ERROR: download/coreboot: Unable to apply patch '%s' for board '%s' on tree '%s'" "${patch}" "${1}" "${cbtree}" +			printf "ERROR: download/coreboot: Unable to apply" +			printf " patch '%s' for board '%s' on tree '%s'" \ +					${patch} ${1} ${cbtree}  			git am --abort -			cd ../../; return 1 +			cd ../../ +			return 1  		fi  	done @@ -197,7 +223,8 @@ downloadfor() {  	# extra.sh on a per-board basis  	# In fact, extra.sh can be used for anything you want.  	if [ -f "../../resources/coreboot/${board}/extra.sh" ]; then -			"../../resources/coreboot/${board}/extra.sh" || touch ../../build_error +		"../../resources/coreboot/${board}/extra.sh" \ +				|| touch ../../build_error  		if [ -f ../../build_error ]; then  			cd ../../; return 1  		fi @@ -214,7 +241,9 @@ if [ $# -gt 0 ]; then  	for board in "${@}"; do  		rm -f resources/coreboot/*/seen  		downloadfor "${board}" -		if [ -f build_error ]; then break; fi +		if [ -f build_error ]; then +			break +		fi  	done  else  	for board in resources/coreboot/*; do @@ -223,7 +252,9 @@ else  			continue  		fi  		downloadfor "${board##*/}" -		if [ -f build_error ]; then break; fi +		if [ -f build_error ]; then +			break +		fi  	done  fi | 
