Package: quilt Version: 0.67+really0.67-1 Severity: important Tags: fixed-upstream patch
The /usr/share/quilt/scripts/patchfns script contains a gawkism and does not work correctly with either mawk or original-awk. In both cases "quilt refresh" corrupts existing patches, but the symptoms are quite different: - With awk=original-awk the refreshed patch is appended after the original one instead of replacing it, and applying the refreshed patch later fails. - With awk=mawk there is a complaint from mawk: ,---- | awk: line 21: regular expression compile failed (syntax error ^* or ^+) | ^+++[ \t][^ \t] `---- This time there is no duplication of the patch, but the complete patch header is removed, causing information loss. :-( Fortunately the problem had already been reported upstream and fixed in commit ce9c68abb7c ("patchfns: Compatibility fix for BSD awk"), I have attached the patch for your convenience and already tested it successfully with both mawk and original-awk. :-) -- System Information: Debian Release: trixie/sid APT prefers unstable APT policy: (500, 'unstable'), (101, 'experimental') Architecture: amd64 (x86_64)
From ce9c68abb7cee0b4fb0d5a7ff7048d0ab3b726f8 Mon Sep 17 00:00:00 2001 From: Jean Delvare <jdelv...@suse.de> Date: Thu, 23 Jun 2022 14:36:58 +0200 Subject: [PATCH 1/1] patchfns: Compatibility fix for BSD awk "+" needs to be quoted to be considered as a literal "+" by BSD awk. Without this fix, patch_header() fails to find the beginning of the changes and treats the whole patch as a header, subsequently causing "quilt refresh" to append the refreshed patch after the original one instead of replacing it. Bug reported and fix suggested by Dominic Evans. Signed-off-by: Jean Delvare <jdelv...@suse.de> Fixes: 1d94980dbdd4 ("Tighten the patch format parsing") --- quilt/scripts/patchfns.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quilt/scripts/patchfns.in b/quilt/scripts/patchfns.in index 75cee52..c2d5f9d 100644 --- a/quilt/scripts/patchfns.in +++ b/quilt/scripts/patchfns.in @@ -848,7 +848,7 @@ patch_header() MAYBE_CONTEXT=0 } MAYBE_UNIFIED { - if (/^+++[ \t][^ \t]/) + if (/^\+\+\+[ \t][^ \t]/) exit print eaten MAYBE_UNIFIED=0 @@ -881,7 +881,7 @@ patch_body() MAYBE_CONTEXT=0 } MAYBE_UNIFIED { - if (/^+++[ \t][^ \t]/) { + if (/^\+\+\+[ \t][^ \t]/) { print eaten body=1 } -- 2.42.0