Subject: Re: [PATCH v2] generate-configlist: collapse depfile for older Ninja

From: Phillip Wood <[email-masked]>
Date: Wed, 22 Apr 2026 14:45:45 +0100

Hi Toon

On 22/04/2026 08:21, Toon Claes wrote:

Thanks for the excellent commit message which I've trimmed.

> diff --git a/tools/generate-configlist.sh b/tools/generate-configlist.sh
> index e28054f9e0..f5f42492c6 100755
> --- a/tools/generate-configlist.sh
> +++ b/tools/generate-configlist.sh
> @@ -44,7 +44,9 @@ then
>   	{
>   		printf '%s\n' "$SOURCE_DIR"/Documentation/*config.adoc \
>   			"$SOURCE_DIR"/Documentation/config/*.adoc |
> -			sed -e 's/[# ]/\\&/g' -e "s/^/$QUOTED_OUTPUT: /"
> +			sed -e 's/[# ]/\\&/g' |
> +			tr '\n' ' ' |
> +			sed -e "s/^/$QUOTED_OUTPUT: /" -e 's/ $/\n/'

I don't think this use of '\n' portable. The sed man page [1] says that 
'\n' matches a newline in the pattern space, but does not mention it 
being supported in the replacement string. We do have an existing use in 
t4150-am.sh:"am newline in subject" which does

	sed -e "s/second/second \\\n foo/" patch1 >patchnl &&

However if I add "cat patchnl" it shows the subject line is

	Subject: [PATCH] second \n foo

so sed has inserted "\n" rather than a newline. Indeed looking at the 
commit message for that test it is testing a fix that c escapes are 
printed verbatim introduced by 4b7cc26a74 (git-am: use printf instead of 
echo on user-supplied strings, 2007-05-25).

I've not tested it but I think

	sed 's/ $/\
/'

will insert a newline. Alternatively we could do

	printf '%s' "$QUOTED_OUTPUT: "
	printf '%s\n' "$SOURCE_DIR"/Documentation/*config.adoc \
  			"$SOURCE_DIR"/Documentation/config/*.adoc |
		sed -e 's/[# ]/\\&/g' |
		tr '\n' ' '
	printf '\n'

That leaves a trailing space at the end of the line but I don't think 
that should matter.

As I recall, the depfiles created by gcc have all the dependencies on a 
single line so this should be widely supported and I agree with Patrick 
that we should do this unconditionally.

Thanks

Phillip

[1] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html

>   		printf '%s:\n' "$SOURCE_DIR"/Documentation/*config.adoc \
>   			"$SOURCE_DIR"/Documentation/config/*.adoc |
>   			sed -e 's/[# ]/\\&/g'
> 
> ---
> base-commit: 94f057755b7941b321fd11fec1b2e3ca5313a4e0
> change-id: 20260421-toon-fix-almalinux8-102de9138294
> 
>