summaryrefslogtreecommitdiff
path: root/include/git.sh
diff options
context:
space:
mode:
Diffstat (limited to 'include/git.sh')
-rwxr-xr-xinclude/git.sh21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/git.sh b/include/git.sh
index d737fd1c..91ccf179 100755
--- a/include/git.sh
+++ b/include/git.sh
@@ -93,6 +93,9 @@ git_prep()
if [ "$project" != "coreboot" ] || [ $# -gt 2 ]; then
[ ! -f "$tmpgit/.gitmodules" ] || git -C "$tmpgit" submodule \
update --init --checkout || $err "git_prep $_loc: !submod"
+
+ patch_submodules
+
if [ "$project" = "coreboot" ] && [ -n "$xtree" ] && \
[ "$xtree" != "$tree" ]; then
(
@@ -114,6 +117,24 @@ git_prep()
x_ ./update project trees -f coreboot "$xtree"; return 0
}
+patch_submodules()
+{
+ moddir="${PWD}/config/submodule/$project"
+ [ -n "$tree" ] && moddir="$moddir/$tree"
+ [ -d "$moddir" ] || return 0
+
+ git -C "$tmpgit" submodule status | awk '{print $2}' > \
+ "$tmpdir/modules" || $err "$moddir: cannot list submodules"
+
+ while read -r modsrcdir; do
+ modname="${modsrcdir##*/}"
+ modpatchdir="$moddir/$modname/patches"
+ [ -d "$modpatchdir" ] || continue
+
+ git_am_patches "$tmpgit/$modsrcdir" "$modpatchdir"
+ done < "$tmpdir/modules"
+}
+
git_am_patches()
{
for _patch in "$2/"*; do