git.sh: allow patching submodules
for single-tree project (e.g. flashprog): config/submodule/PROJECT/MODNAME/patches for multi-tree project (e.g. coreboot): config/submodule/PROJECT/TREE/MODNAME/patches MODNAME is e.g.: 3rdparty/vboot directory in coreboot: would become vboot (the submodule codepath is filtered to up to the final slash) another example: submodire src dir 3rdparty/foo/bar MODNAME would be "bar" Add whatever patches you like to a given submodule. An example patch is included in this commit. Signed-off-by: Leah Rowe <leah@libreboot.org>audit2-merge1
parent
8d4d063ace
commit
849466c0ac
|
@ -0,0 +1,26 @@
|
||||||
|
From 68f99140dda455a4f4e9d73df6d7b0a504494e95 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Leah Rowe <info@minifree.org>
|
||||||
|
Date: Sun, 19 May 2024 23:35:52 +0100
|
||||||
|
Subject: [PATCH 1/1] test patch
|
||||||
|
|
||||||
|
Signed-off-by: Leah Rowe <info@minifree.org>
|
||||||
|
---
|
||||||
|
Makefile | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 4cb265b2..ef29489f 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
|
@@ -2,6 +2,8 @@
|
||||||
|
# Use of this source code is governed by a BSD-style license that can be
|
||||||
|
# found in the LICENSE file.
|
||||||
|
|
||||||
|
+# test
|
||||||
|
+
|
||||||
|
# This Makefile normally builds in a 'build' subdir, but use
|
||||||
|
#
|
||||||
|
# make BUILD=<dir>
|
||||||
|
--
|
||||||
|
2.39.2
|
||||||
|
|
|
@ -98,6 +98,9 @@ git_prep()
|
||||||
if [ "$project" = "coreboot" ] && [ $# -gt 2 ]; then
|
if [ "$project" = "coreboot" ] && [ $# -gt 2 ]; then
|
||||||
[ ! -f "$tmpgit/.gitmodules" ] || git -C "$tmpgit" submodule \
|
[ ! -f "$tmpgit/.gitmodules" ] || git -C "$tmpgit" submodule \
|
||||||
update --init || $err "git_prep $_loc: !submod"
|
update --init || $err "git_prep $_loc: !submod"
|
||||||
|
|
||||||
|
patch_submodules
|
||||||
|
|
||||||
if [ "$project" = "coreboot" ] && [ -n "$xtree" ] && \
|
if [ "$project" = "coreboot" ] && [ -n "$xtree" ] && \
|
||||||
[ "$xtree" != "$tree" ]; then
|
[ "$xtree" != "$tree" ]; then
|
||||||
(
|
(
|
||||||
|
@ -119,6 +122,24 @@ git_prep()
|
||||||
x_ ./update project trees -f coreboot "$xtree"; return 0
|
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()
|
git_am_patches()
|
||||||
{
|
{
|
||||||
for _patch in "$2/"*; do
|
for _patch in "$2/"*; do
|
||||||
|
|
Loading…
Reference in New Issue