diff options
| -rwxr-xr-x | resources/scripts/download/coreboot | 120 | 
1 files changed, 52 insertions, 68 deletions
| diff --git a/resources/scripts/download/coreboot b/resources/scripts/download/coreboot index 2410880a..fa36fd75 100755 --- a/resources/scripts/download/coreboot +++ b/resources/scripts/download/coreboot @@ -89,75 +89,10 @@ download_coreboot_for_board()  		return 0  	fi -	[ ! -d coreboot ] && \ -		mkdir -p coreboot -	[ ! -d coreboot ] && \ -		exit 1 -	[ -d coreboot/coreboot ] && \ -		rm -Rf coreboot/coreboot -	[ -d coreboot/coreboot ] && \ -		exit 1 -	./gitclone coreboot || \ -		exit 1 - -	cd "coreboot/" - -	cp -R coreboot "${cbtree}" || touch ../build_error -	if [ -d ../build_error ]; then -		printf "ERROR: download/coreboot: Unable to copy directory." -		printf " Check file system permissions or free space.\n" -		rm -Rf "${cbtree}/" -		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" -		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:" -		printf " Unable to update submodules for tree '%s'\n" \ -				${cbtree} -		cd ../../ -		return 1 -	fi - -	for patch in ../../resources/coreboot/${cbtree}/patches/*.patch; do -		[ ! -f "${patch}" ] && continue - -		git am "${patch}" || touch ../../build_error -		if [ -f ../../build_error ]; then -			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 -		fi -	done +	gitclone_coreboot_from_upstream || exit 1 -	# extra.sh can be used for anything -	# but should *only* be a last resort -	if [ -f "../../resources/coreboot/${_board}/extra.sh" ]; then -		"../../resources/coreboot/${_board}/extra.sh" \ -				|| touch ../../build_error -		if [ -f ../../build_error ]; then -			cd ../../; return 1 -		fi -		return 0 -	else -		cd ../../ -		return 0 -	fi +	prepare_new_coreboot_tree "${1}" "${cbtree}" "${cbrevision}" \ +			|| exit 1  }  fetch_coreboot_config() @@ -211,6 +146,55 @@ check_config_for_board()  	return 0  } +gitclone_coreboot_from_upstream() +{ +	[ ! -d coreboot ] && \ +		mkdir -p coreboot +	[ ! -d coreboot ] && \ +		return 1 +	[ -d coreboot/coreboot ] && \ +		rm -Rf coreboot/coreboot +	[ -d coreboot/coreboot ] && \ +		return 1 +	./gitclone coreboot || \ +		return 1 +	return 0 +} + +prepare_new_coreboot_tree() +{ +	board=${1} +	cbtree=${2} +	cbrevision=${3} + +	printf "Preparing coreboot tree: %s\n" ${cbtree} +	[ "${cbtree}" != "${board}" ] && \ +		printf "(for board: %s)\n" "${board}" + +	cp -R coreboot/coreboot "coreboot/${cbtree}" || exit 1 +	( +	cd "coreboot/${cbtree}" || exit 1 +	git reset --hard ${cbrevision} || exit 1 +	git submodule update --init --checkout || exit 1 + +	for patch in ../../resources/coreboot/${cbtree}/patches/*.patch; do +		[ ! -f "${patch}" ] && \ +			continue +		if ! git am "${patch}"; then +			git am --abort +			exit 1 +		fi +	done + +	# extra.sh can be used for anything +	# but should *only* be a last resort +	if [ -f "../../resources/coreboot/${_board}/extra.sh" ]; then +		"../../resources/coreboot/${_board}/extra.sh" || \ +			exit 1 +	fi +	) +} +  usage()  {  	progname="./download coreboot" | 
