* [PATCH v2] scripts/tags.sh: fix incompatibility with PCRE2
[not found] <Y+0WJuh1fIg0oEpR@google.com>
@ 2023-02-15 18:38 ` Carlos Llamas
2023-03-03 11:20 ` Jialu Xu
0 siblings, 1 reply; 3+ messages in thread
From: Carlos Llamas @ 2023-02-15 18:38 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-kernel, Carlos Llamas, Cristian Ciocaltea, Masahiro Yamada,
Jialu Xu, Vipin Sharma, stable
Starting with release 10.38 PCRE2 drops default support for using \K in
lookaround patterns as described in [1]. Unfortunately, scripts/tags.sh
relies on such functionality to collect all_compiled_soures() leading to
the following error:
$ make COMPILED_SOURCE=1 tags
GEN tags
grep: \K is not allowed in lookarounds (but see PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK)
The usage of \K for this pattern was introduced in commit 4f491bb6ea2a
("scripts/tags.sh: collect compiled source precisely") which speeds up
the generation of tags significantly.
In order to fix this issue without compromising the performance we can
switch over to an equivalent sed expression. The same matching pattern
is preserved here except \K is replaced with a backreference \1.
[1] https://www.pcre.org/current/doc/html/pcre2syntax.html#SEC11
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Jialu Xu <xujialu@vimux.org>
Cc: Vipin Sharma <vipinsh@google.com>
Cc: stable@vger.kernel.org
Fixes: 4f491bb6ea2a ("scripts/tags.sh: collect compiled source precisely")
Signed-off-by: Carlos Llamas <cmllamas@google.com>
---
v2: add Fixes tag and cc stable
scripts/tags.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/tags.sh b/scripts/tags.sh
index e137cf15aae9..0d045182c08c 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -91,7 +91,7 @@ all_compiled_sources()
{
echo include/generated/autoconf.h
find $ignore -name "*.cmd" -exec \
- grep -Poh '(?(?=^source_.* \K).*|(?=^ \K\S).*(?= \\))' {} \+ |
+ sed -n -E 's/^source_.* (.*)/\1/p; s/^ (\S.*) \\/\1/p' {} \+ |
awk '!a[$0]++'
} | xargs realpath -esq $([ -z "$KBUILD_ABS_SRCTREE" ] && echo --relative-to=.) |
sort -u
--
2.39.1.637.g21b0678d19-goog
^ permalink raw reply related [flat|nested] 3+ messages in thread
* re: [PATCH v2] scripts/tags.sh: fix incompatibility with PCRE2
2023-02-15 18:38 ` [PATCH v2] scripts/tags.sh: fix incompatibility with PCRE2 Carlos Llamas
@ 2023-03-03 11:20 ` Jialu Xu
2023-03-07 15:43 ` Carlos Llamas
0 siblings, 1 reply; 3+ messages in thread
From: Jialu Xu @ 2023-03-03 11:20 UTC (permalink / raw)
To: cmllamas; +Cc: gregkh, cristian.ciocaltea, masahiroy, vipinsh, stable
> Starting with release 10.38 PCRE2 drops default support for using \K in
> lookaround patterns as described in [1]. Unfortunately, scripts/tags.sh
> relies on such functionality to collect all_compiled_soures() leading to
> the following error:
>
> $ make COMPILED_SOURCE=1 tags
> GEN tags
> grep: \K is not allowed in lookarounds (but see PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK)
>
> The usage of \K for this pattern was introduced in commit 4f491bb6ea2a
> ("scripts/tags.sh: collect compiled source precisely") which speeds up
> the generation of tags significantly.
>
> In order to fix this issue without compromising the performance we can
> switch over to an equivalent sed expression. The same matching pattern
> is preserved here except \K is replaced with a backreference \1.
Just got a working grep without \K, seems that it is three times more
efficient than sed in my test, is it necessary to update?
grep -Poh '(?<=^ )\S+|(?<== )\S+[^\\](?=$)' {} \+ |
--
Jialu
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] scripts/tags.sh: fix incompatibility with PCRE2
2023-03-03 11:20 ` Jialu Xu
@ 2023-03-07 15:43 ` Carlos Llamas
0 siblings, 0 replies; 3+ messages in thread
From: Carlos Llamas @ 2023-03-07 15:43 UTC (permalink / raw)
To: Jialu Xu; +Cc: gregkh, cristian.ciocaltea, masahiroy, vipinsh, stable
On Fri, Mar 03, 2023 at 07:20:51PM +0800, Jialu Xu wrote:
>
> Just got a working grep without \K, seems that it is three times more
> efficient than sed in my test, is it necessary to update?
>
> grep -Poh '(?<=^ )\S+|(?<== )\S+[^\\](?=$)' {} \+ |
>
> --
> Jialu
>
I just tried this and it does have better performance. Even better than
your previous grep expression it seems, so I would definitely send a
patch.
--
Carlos Llamas
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-03-07 15:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <Y+0WJuh1fIg0oEpR@google.com>
2023-02-15 18:38 ` [PATCH v2] scripts/tags.sh: fix incompatibility with PCRE2 Carlos Llamas
2023-03-03 11:20 ` Jialu Xu
2023-03-07 15:43 ` Carlos Llamas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).