diff --git a/srcpkgs/quilt/patches/awk-portable-syntax.patch b/srcpkgs/quilt/patches/awk-portable-syntax.patch new file mode 100644 index 00000000000..a7de228bda5 --- /dev/null +++ b/srcpkgs/quilt/patches/awk-portable-syntax.patch @@ -0,0 +1,45 @@ +From ce9c68abb7cee0b4fb0d5a7ff7048d0ab3b726f8 Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Thu, 23 Jun 2022 14:36:58 +0200 +Subject: [PATCH] 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 +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.39.2 + diff --git a/srcpkgs/quilt/patches/faildiff.test.patch b/srcpkgs/quilt/patches/faildiff.test.patch new file mode 100644 index 00000000000..e7a34095d0b --- /dev/null +++ b/srcpkgs/quilt/patches/faildiff.test.patch @@ -0,0 +1,38 @@ +From 4dfe7f9e702c85243a71e4de267a13e434b6d6c2 Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Fri, 20 Jan 2023 12:56:08 +0100 +Subject: [PATCH] test: Fix a race condition + +The test suite does not differentiate between stdout and stderr. When +messages are printed to both, the order in which they will reach us +is apparently not guaranteed. Ideally this would be deterministic, but +until then, explicitly test stdout and stderr separately in the test +case itself. Otherwise the test suite fails randomly, which is a pain +for distribution package maintainers. + +This fixes bug #63651 reported by Ross Burton: +https://savannah.nongnu.org/bugs/index.php?63651 + +Signed-off-by: Jean Delvare +--- + test/faildiff.test | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/test/faildiff.test b/test/faildiff.test +index 5afb8e3..0444c15 100644 +--- a/test/faildiff.test ++++ b/test/faildiff.test +@@ -27,8 +27,9 @@ What happens on binary files? + > File test.bin added to patch %{P}test.diff + + $ printf "\\003\\000\\001" > test.bin +- $ quilt diff -pab --no-index ++ $ quilt diff -pab --no-index 2>/dev/null + >~ (Files|Binary files) a/test\.bin and b/test\.bin differ ++ $ quilt diff -pab --no-index >/dev/null + > Diff failed on file 'test.bin', aborting + $ echo %{?} + > 1 +-- +2.39.2 + diff --git a/srcpkgs/quilt/patches/grep-stray-backslash-slash.patch b/srcpkgs/quilt/patches/grep-stray-backslash-slash.patch new file mode 100644 index 00000000000..76a9ac9f532 --- /dev/null +++ b/srcpkgs/quilt/patches/grep-stray-backslash-slash.patch @@ -0,0 +1,142 @@ +From f73f8d7f71de2878d3f92881a5fcb8eafd78cb5f Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Fri, 9 Sep 2022 10:10:37 +0200 +Subject: [PATCH] Avoid warnings with grep 3.8 + +GNU grep version 3.8 became more strict about needless quoting in +patterns. We have one occurrence of that in quilt, where "/" +characters are being quoted by default. There are cases where they +indeed need to be quoted (typically when used in a sed s/// command) +but most of the time they do not, and this results in the following +warning: + +grep: warning: stray \ before / + +So rename quote_bre() to quote_sed_re(), and introduce +quote_grep_re() which does not quote "/". + +Signed-off-by: Jean Delvare +--- + quilt/diff.in | 2 +- + quilt/patches.in | 2 +- + quilt/scripts/patchfns.in | 20 +++++++++++++------- + quilt/upgrade.in | 4 ++-- + 4 files changed, 17 insertions(+), 11 deletions(-) + +diff --git a/quilt/diff.in b/quilt/diff.in +index e90dc33..07788ff 100644 +--- a/quilt/diff.in ++++ b/quilt/diff.in +@@ -255,7 +255,7 @@ then + # Add all files in the snapshot into the file list (they may all + # have changed). + files=( $(find $QUILT_PC/$snap_subdir -type f \ +- | sed -e "s/^$(quote_bre $QUILT_PC/$snap_subdir/)//" \ ++ | sed -e "s/^$(quote_sed_re $QUILT_PC/$snap_subdir/)//" \ + | sort) ) + printf "%s\n" "${files[@]}" >&4 + unset files +diff --git a/quilt/patches.in b/quilt/patches.in +index bb17a46..eac45a9 100644 +--- a/quilt/patches.in ++++ b/quilt/patches.in +@@ -60,7 +60,7 @@ scan_unapplied() + # Quote each file name only once + for file in "${opt_files[@]}" + do +- files_bre[${#files_bre[@]}]=$(quote_bre "$file") ++ files_bre[${#files_bre[@]}]=$(quote_grep_re "$file") + done + + # "Or" all files in a single pattern +diff --git a/quilt/scripts/patchfns.in b/quilt/scripts/patchfns.in +index c2d5f9d..1bd7233 100644 +--- a/quilt/scripts/patchfns.in ++++ b/quilt/scripts/patchfns.in +@@ -78,8 +78,14 @@ array_join() + done + } + +-# Quote a string for use in a basic regular expression. +-quote_bre() ++# Quote a string for use in a regular expression for a grep pattern. ++quote_grep_re() ++{ ++ echo "$1" | sed -e 's:\([][^$.*\\]\):\\\1:g' ++} ++ ++# Quote a string for use in a regular expression for a sed s/// command. ++quote_sed_re() + { + echo "$1" | sed -e 's:\([][^$/.*\\]\):\\\1:g' + } +@@ -215,7 +221,7 @@ patch_in_series() + + if [ -e "$SERIES" ] + then +- grep -q "^$(quote_bre $patch)\([ \t]\|$\)" "$SERIES" ++ grep -q "^$(quote_grep_re $patch)\([ \t]\|$\)" "$SERIES" + else + return 1 + fi +@@ -365,7 +371,7 @@ is_applied() + { + local patch=$1 + [ -e $DB ] || return 1 +- grep -q "^$(quote_bre $patch)\$" $DB ++ grep -q "^$(quote_grep_re $patch)\$" $DB + } + + applied_patches() +@@ -465,7 +471,7 @@ remove_from_db() + local tmpfile + if tmpfile=$(gen_tempfile) + then +- grep -v "^$(quote_bre $patch)\$" $DB > $tmpfile ++ grep -v "^$(quote_grep_re $patch)\$" $DB > $tmpfile + cat $tmpfile > $DB + rm -f $tmpfile + [ -s $DB ] || rm -f $DB +@@ -520,7 +526,7 @@ find_patch() + fi + + local patch=${1#$SUBDIR_DOWN$QUILT_PATCHES/} +- local bre=$(quote_bre "$patch") ++ local bre=$(quote_sed_re "$patch") + set -- $(sed -e "/^$bre\(\|\.patch\|\.diff\?\)\(\|\.gz\|\.bz2\|\.xz\|\.lzma\|\.lz\)\([ "$'\t'"]\|$\)/!d" \ + -e 's/[ '$'\t''].*//' "$SERIES") + if [ $# -eq 1 ] +@@ -631,7 +637,7 @@ files_in_patch() + then + find "$path" -type f \ + -a ! -path "$(quote_glob "$path")/.timestamp" | +- sed -e "s/$(quote_bre "$path")\///" ++ sed -e "s/$(quote_sed_re "$path")\///" + fi + } + +diff --git a/quilt/upgrade.in b/quilt/upgrade.in +index dbf7d05..866aa33 100644 +--- a/quilt/upgrade.in ++++ b/quilt/upgrade.in +@@ -74,7 +74,7 @@ printf $"Converting meta-data to version %s\n" "$DB_VERSION" + + for patch in $(applied_patches) + do +- proper_name="$(grep "^$(quote_bre $patch)"'\(\|\.patch\|\.diff?\)\(\|\.gz\|\.bz2\)\([ \t]\|$\)' $SERIES)" ++ proper_name="$(grep "^$(quote_grep_re $patch)"'\(\|\.patch\|\.diff?\)\(\|\.gz\|\.bz2\)\([ \t]\|$\)' $SERIES)" + proper_name=${proper_name#$QUILT_PATCHES/} + proper_name=${proper_name%% *} + if [ -z "$proper_name" ] +@@ -84,7 +84,7 @@ do + fi + + if [ "$patch" != "$proper_name" -a -d $QUILT_PC/$patch ] \ +- && grep -q "^$(quote_bre $patch)\$" \ ++ && grep -q "^$(quote_grep_re $patch)\$" \ + $QUILT_PC/applied-patches + then + mv $QUILT_PC/$patch $QUILT_PC/$proper_name \ +-- +2.39.2 + diff --git a/srcpkgs/quilt/patches/merge.test-race.patch b/srcpkgs/quilt/patches/merge.test-race.patch new file mode 100644 index 00000000000..794375e93bc --- /dev/null +++ b/srcpkgs/quilt/patches/merge.test-race.patch @@ -0,0 +1,24 @@ +--- a/test/merge.test ++++ b/test/merge.test +@@ -39,8 +39,9 @@ Test the patch merging functionality of + > Applying patch %{P}c.diff + > Now at patch %{P}c.diff + +- $ quilt diff -P b.diff | grep -v "^\\(---\\|+++\\)" ++ $ quilt diff -P b.diff >/dev/null + > Warning: more recent patches modify files in patch %{P}b.diff ++ $ quilt diff -P b.diff 2>/dev/null | grep -v "^\\(---\\|+++\\)" + >~ Index: [^/]+/abc\.txt + > =================================================================== + > @@ -1,3 +1,3 @@ +@@ -49,8 +50,9 @@ Test the patch merging functionality of + > +b+ + > c + +- $ quilt diff --combine a.diff -P b.diff | grep -v "^\\(---\\|+++\\)" ++ $ quilt diff --combine a.diff -P b.diff >/dev/null + > Warning: more recent patches modify files in patch %{P}b.diff ++ $ quilt diff --combine a.diff -P b.diff 2>/dev/null | grep -v "^\\(---\\|+++\\)" + >~ Index: [^/]+/abc\.txt + > =================================================================== + > @@ -1,3 +1,3 @@ diff --git a/srcpkgs/quilt/template b/srcpkgs/quilt/template index 5396648fa16..d2f64a3f63d 100644 --- a/srcpkgs/quilt/template +++ b/srcpkgs/quilt/template @@ -1,25 +1,25 @@ # Template file for 'quilt' pkgname=quilt -version=0.66 -revision=3 +version=0.67 +revision=1 build_style=gnu-configure -configure_args="--without-rpmbuild --with-bash=/bin/bash" -hostmakedepends="perl" +configure_args="--without-rpmbuild --with-bash=/bin/bash + --with-date=/bin/date --with-awk=/bin/awk --with-sed=/bin/sed + --with-column=/usr/bin/column" +hostmakedepends="perl ed tar" # quilt is a bash script. # All quilt's users use quilt-refresh, which requires perl depends="patch perl bash" short_desc="Tool for Working with Many Patches" -maintainer="Orphaned " +maintainer="Đoàn Trần Công Danh " license="GPL-2.0-only" homepage="http://savannah.nongnu.org/projects/quilt" distfiles="http://download.savannah.gnu.org/releases/quilt/quilt-${version}.tar.gz" -checksum=314b319a6feb13bf9d0f9ffa7ce6683b06919e734a41275087ea457cc9dc6e07 +checksum=3be3be0987e72a6c364678bb827e3e1fcc10322b56bc5f02b576698f55013cc2 do_install() { make BUILD_ROOT=\"$DESTDIR\" install vmkdir usr/share/bash-completion/completions mv ${DESTDIR}/etc/bash_completion.d/* ${DESTDIR}/usr/share/bash-completion/completions - # For sanity - rm -f ${DESTDIR}/usr/share/quilt/compat/{awk,bash,column} }