diff options
| -rwxr-xr-x | include/git.sh | 21 | ||||
| -rwxr-xr-x | script/update/project/repo | 20 | ||||
| -rwxr-xr-x | script/update/project/trees | 13 | 
3 files changed, 29 insertions, 25 deletions
diff --git a/include/git.sh b/include/git.sh new file mode 100755 index 00000000..f7026765 --- /dev/null +++ b/include/git.sh @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org> + +git_am_patches() +{ +	sdir="${1}" # assumed to be absolute path +	patchdir="${2}" # ditto +	_fail="${3}" +	( +	cd "${sdir}" || \ +	    "${_fail}" "apply_patches: !cd \"${sdir}\"" +	for patch in "${patchdir}/"*; do +		[ -L "${patch}" ] && continue +		[ -f "${patch}" ] || continue +		if ! git am "${patch}"; then +			git am --abort || "${_fail}" "${sdir}: !git am --abort" +			"${_fail}" "!git am ${patch} -> ${sdir}" +		fi +	done +	) +} diff --git a/script/update/project/repo b/script/update/project/repo index 20e8d905..d6eb3130 100755 --- a/script/update/project/repo +++ b/script/update/project/repo @@ -5,13 +5,14 @@  # SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>  . "include/err.sh" +. "include/git.sh"  name=""  revision=""  location=""  url=""  bkup_url="" -tmp_dir="tmp/gitclone" +tmp_dir="${PWD}/tmp/gitclone"  depend=""  main() @@ -83,7 +84,8 @@ clone_project()  	git reset --hard ${revision} || \  	    fail "clone_project: Cannot reset revision"  	) -	patch_project +	git_am_patches "${tmp_dir}" "${PWD}/config/${name}/patches" "fail" || \ +	    fail "clone_project ${location}/: cannot apply patches"  	[ ! -d "${location}" ] || \  		rm -Rf "${location}" || \ @@ -94,20 +96,6 @@ clone_project()  	    fail "clone_project: could not copy temp file to destination"  } -patch_project() -{ -	patchdir="config/${name}/patches" - -	for patchfile in "${PWD}/${patchdir}"/*.patch ; do -		[ -f "${patchfile}" ] || continue -		( -		cd "${tmp_dir}" || fail "patch_project: tmpdir unavailable" -		git am "${patchfile}" || \ -		    fail "patch_project: Cannot patch project: $name" -		) -	done -} -  fail()  {  	for x in "${location}" "${tmp_dir}"; do diff --git a/script/update/project/trees b/script/update/project/trees index 6ce53250..27418f19 100755 --- a/script/update/project/trees +++ b/script/update/project/trees @@ -8,6 +8,7 @@  set -u -e  . "include/err.sh" +. "include/git.sh"  _target=""  tree="" @@ -148,16 +149,10 @@ prepare_new_tree()  	    err "cannot reset ${project} revision for tree, ${tree}"  	git submodule update --init --checkout || \  	    err "cannot update ${project} submodules for tree, ${tree}" - -	for patch in "../../${cfgsdir}/${tree}/patches/"*.patch; do -		[ -f "${patch}" ] || continue -		if ! git am "${patch}"; then -			git am --abort || \ -			    err "${project}/${tree}: FAILED: git am --abort" -			err "cannot patch: ${project}/${tree}" -		fi -	done  	) +	git_am_patches "${PWD}/${project}/${tree}" \ +	    "${PWD}/${cfgsdir}/${tree}/patches" "err" || \ +	    err "prepare_new_trees ${project}/${tree}: cannot apply patches"  }  err_rm_seen()  | 
