[openwrt/openwrt] scripts/kernel_bump: Use the git index to find the needed config files

LEDE Commits lede-commits at lists.infradead.org
Fri Apr 12 09:21:06 PDT 2024


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/b62aafc99a6f00032c0486d96bb7b6cc0a77a84c

commit b62aafc99a6f00032c0486d96bb7b6cc0a77a84c
Author: Olliver Schinagl <oliver at schinagl.nl>
AuthorDate: Mon Mar 18 13:28:11 2024 +0100

    scripts/kernel_bump: Use the git index to find the needed config files
    
    The current solution using `find` introduces a racecondition, where `find`
    and `git mv` get in each others way. While this could be fixed with
    more-utils sponge command (or even sort -u) to buffer the output of
    find.
    
    However, a much better approach, is to query the git index directly,
    which will not change, and is far more accurate.
    
    Signed-off-by: Olliver Schinagl <oliver at schinagl.nl>
---
 scripts/kernel_bump.sh | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/scripts/kernel_bump.sh b/scripts/kernel_bump.sh
index d9fc5287df..7ce3b6256f 100755
--- a/scripts/kernel_bump.sh
+++ b/scripts/kernel_bump.sh
@@ -137,9 +137,15 @@ bump_kernel()
 		done
 	fi
 
-	find "${_target_dir}" -iname "config-${source_version}" | while read -r _config; do
-		_path="${_config%%"/config-${source_version}"}"
-		git mv "${_config}" "${_path}/config-${target_version}"
+	for _config in $(git ls-files "${_target_dir}" |
+	                 sed -n "s|^\(.*config-${source_version}\).*|\1|p" |
+	                 sort -u); do
+		if [ ! -e "${_config}" ]; then
+			continue
+		fi
+
+		_subtarget="${_config%%"/config-${source_version}"}"
+		git mv "${_config}" "${_subtarget}/config-${target_version}"
 	done
 
 	git commit \




More information about the lede-commits mailing list