* gnu/packages/patchutils.scm (quilt)[source]: Add patch to work with newer versions of grep. * gnu/packages/patches/quilt-grep-compat.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it.
		
			
				
	
	
		
			145 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From upstream
 | |
| https://git.savannah.nongnu.org/cgit/quilt.git/patch/?id=f73f8d7f71de2878d3f92881a5fcb8eafd78cb5f
 | |
| 
 | |
| From f73f8d7f71de2878d3f92881a5fcb8eafd78cb5f Mon Sep 17 00:00:00 2001
 | |
| From: Jean Delvare <jdelvare@suse.de>
 | |
| Date: Fri, 9 Sep 2022 10:10:37 +0200
 | |
| Subject: 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 <jdelvare@suse.de>
 | |
| ---
 | |
|  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 \
 | |
| -- 
 | |
| cgit v1.1
 | |
| 
 |