On Tue, Feb 03, 2026 at 09:51:37PM -0500, Joe Lawrence wrote:
> The klp-build script prepares a clean patch by populating two temporary
> directories ('a' and 'b') with source files and diffing the result.
> However, this process currently fails when a patch introduces a new
> source file as the script attempts to copy files that do not yet exist
> in the original source tree.  Likewise, there is a similar limitation
> when a patch removes a source file and the script tries to copy files
> that no longer exist.
> 
> Refactor the file-gathering logic to distinguish between original input
> files and patched output files:
> 
> - Split get_patch_files() into get_patch_input_files() and
>   get_patch_output_files() to identify which files exist before and
>   after patch application.
> - Filter out "/dev/null" from both to handle file creation/deletion
> - Update refresh_patch() to only copy existing input files to the 'a'
>   directory and the resulting output files to the 'b' directory.
> 
> This allows klp-build to successfully process patches that add or remove
> source files.
> 
> Signed-off-by: Joe Lawrence <[email protected]>
> ---
>  scripts/livepatch/klp-build | 34 +++++++++++++++++++++++++++-------
>  1 file changed, 27 insertions(+), 7 deletions(-)
> 
> Lightly tested with patches that added or removed a source file, as
> generated by `git diff`, `git format-patch`, and `diff -Nupr`.
> 
> diff --git a/scripts/livepatch/klp-build b/scripts/livepatch/klp-build
> index 9f1b77c2b2b7..5a99ff4c4729 100755
> --- a/scripts/livepatch/klp-build
> +++ b/scripts/livepatch/klp-build
> @@ -299,15 +299,33 @@ set_kernelversion() {
>       sed -i "2i echo $localversion; exit 0" scripts/setlocalversion
>  }
>  
> -get_patch_files() {
> +get_patch_input_files() {
> +     local patch="$1"
> +
> +     grep0 -E '^--- ' "$patch"                               \
> +             | gawk '{print $2}'                             \
> +             | grep -v '^/dev/null$'                         \

Because pipefail is enabled, the grep0 helper should be used instead of
grep, otherwise a failed match can propagate to an error.  Maybe we need
a "make check" or something which enforces that and runs shellcheck.

-- 
Josh

Reply via email to