Message ID | 20230109181447.235989-5-marcandre.lureau@redhat.com |
---|---|
State | New |
Headers | show |
Series | Fix win32/msys2 shader compilation & drop perl | expand |
On Mon, 9 Jan 2023 at 18:16, <marcandre.lureau@redhat.com> wrote: > > From: Marc-André Lureau <marcandre.lureau@redhat.com> > > Let's try to remove Perl usage during build time. > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > tests/qapi-schema/meson.build | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build > index 9dfe98bc9a..d85b14f28c 100644 > --- a/tests/qapi-schema/meson.build > +++ b/tests/qapi-schema/meson.build > @@ -259,22 +259,23 @@ if build_docs > # Fix possible inconsistency in line endings in generated output and > # in the golden reference (which could otherwise cause test failures > # on Windows hosts). Unfortunately diff --strip-trailing-cr > - # is GNU-diff only. The odd-looking perl is because we must avoid > + # is GNU-diff only. The odd-looking python is because we must avoid > # using an explicit '\' character in the command arguments to > # a custom_target(), as Meson will unhelpfully replace it with a '/' > # (https://github.com/mesonbuild/meson/issues/1564) This comment is not applicable to your Python rewrite of this. It's talking about the way that the Perl code has to create a variable with a '\r' value in a weird way (using "$x = chr 13") and then do a substitution using that variable, rather than the obvious direct s// command ("s/\r//"), to work around a meson bug if the code has a literal \ character in it. Your python has no '\'s in it. > + remove_cr = [python, '-c', 'import sys;[sys.stdout.write(line.replace(chr(13), "")) for line in sys.stdin]'] > qapi_doc_out_nocr = custom_target('QAPI rST doc newline-sanitized', > output: ['doc-good.txt.nocr'], > input: qapi_doc_out[0], > build_by_default: true, > - command: ['perl', '-pe', '$x = chr 13; s/$x$//', '@INPUT@'], > + command: [remove_cr, '@INPUT@'], > capture: true) > > qapi_doc_ref_nocr = custom_target('QAPI rST doc reference newline-sanitized', > output: ['doc-good.ref.nocr'], > input: files('doc-good.txt'), > build_by_default: true, > - command: ['perl', '-pe', '$x = chr 13; s/$x$//', '@INPUT@'], > + command: [remove_cr, '@INPUT@'], > capture: true) > > test('QAPI rST doc', diff, args: ['-u', qapi_doc_ref_nocr[0], qapi_doc_out_nocr[0]], > -- > 2.39.0 Maybe we should consider putting the Python into a script in scripts/ ? "Remove \r characters" is pretty trivial, but on the other hand I think this is the only Meson custom_target() we have where we directly invoke a script interpreter with a bit of inline script, and inline bits of script doesn't really seem to be a style Meson encourages (unlike Make). thanks -- PMM
Hi On Mon, Jan 9, 2023 at 10:52 PM Peter Maydell <peter.maydell@linaro.org> wrote: > > On Mon, 9 Jan 2023 at 18:16, <marcandre.lureau@redhat.com> wrote: > > > > From: Marc-André Lureau <marcandre.lureau@redhat.com> > > > > Let's try to remove Perl usage during build time. > > > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > > --- > > tests/qapi-schema/meson.build | 7 ++++--- > > 1 file changed, 4 insertions(+), 3 deletions(-) > > > > diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build > > index 9dfe98bc9a..d85b14f28c 100644 > > --- a/tests/qapi-schema/meson.build > > +++ b/tests/qapi-schema/meson.build > > @@ -259,22 +259,23 @@ if build_docs > > # Fix possible inconsistency in line endings in generated output and > > # in the golden reference (which could otherwise cause test failures > > # on Windows hosts). Unfortunately diff --strip-trailing-cr > > - # is GNU-diff only. The odd-looking perl is because we must avoid > > + # is GNU-diff only. The odd-looking python is because we must avoid > > # using an explicit '\' character in the command arguments to > > # a custom_target(), as Meson will unhelpfully replace it with a '/' > > # (https://github.com/mesonbuild/meson/issues/1564) > > This comment is not applicable to your Python rewrite of this. To my interpretation, the comment still applies. I would have written a much simpler sed invocation if we were allowed to use backslashes. > It's talking about the way that the Perl code has to create > a variable with a '\r' value in a weird way (using "$x = chr 13") > and then do a substitution using that variable, rather than the obvious > direct s// command ("s/\r//"), to work around a meson bug if the code > has a literal \ character in it. Your python has no '\'s in it. > > > + remove_cr = [python, '-c', 'import sys;[sys.stdout.write(line.replace(chr(13), "")) for line in sys.stdin]'] > > qapi_doc_out_nocr = custom_target('QAPI rST doc newline-sanitized', > > output: ['doc-good.txt.nocr'], > > input: qapi_doc_out[0], > > build_by_default: true, > > - command: ['perl', '-pe', '$x = chr 13; s/$x$//', '@INPUT@'], > > + command: [remove_cr, '@INPUT@'], > > capture: true) > > > > qapi_doc_ref_nocr = custom_target('QAPI rST doc reference newline-sanitized', > > output: ['doc-good.ref.nocr'], > > input: files('doc-good.txt'), > > build_by_default: true, > > - command: ['perl', '-pe', '$x = chr 13; s/$x$//', '@INPUT@'], > > + command: [remove_cr, '@INPUT@'], > > capture: true) > > > > test('QAPI rST doc', diff, args: ['-u', qapi_doc_ref_nocr[0], qapi_doc_out_nocr[0]], > > -- > > 2.39.0 > > Maybe we should consider putting the Python into a script in > scripts/ ? "Remove \r characters" is pretty trivial, but on the > other hand I think this is the only Meson custom_target() we > have where we directly invoke a script interpreter with a > bit of inline script, and inline bits of script doesn't really > seem to be a style Meson encourages (unlike Make). It's a quite simple one-liner, and I hope we can drop it when meson fix the mentionned bug. But I am fine putting it in a script, if that can help.
diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build index 9dfe98bc9a..d85b14f28c 100644 --- a/tests/qapi-schema/meson.build +++ b/tests/qapi-schema/meson.build @@ -259,22 +259,23 @@ if build_docs # Fix possible inconsistency in line endings in generated output and # in the golden reference (which could otherwise cause test failures # on Windows hosts). Unfortunately diff --strip-trailing-cr - # is GNU-diff only. The odd-looking perl is because we must avoid + # is GNU-diff only. The odd-looking python is because we must avoid # using an explicit '\' character in the command arguments to # a custom_target(), as Meson will unhelpfully replace it with a '/' # (https://github.com/mesonbuild/meson/issues/1564) + remove_cr = [python, '-c', 'import sys;[sys.stdout.write(line.replace(chr(13), "")) for line in sys.stdin]'] qapi_doc_out_nocr = custom_target('QAPI rST doc newline-sanitized', output: ['doc-good.txt.nocr'], input: qapi_doc_out[0], build_by_default: true, - command: ['perl', '-pe', '$x = chr 13; s/$x$//', '@INPUT@'], + command: [remove_cr, '@INPUT@'], capture: true) qapi_doc_ref_nocr = custom_target('QAPI rST doc reference newline-sanitized', output: ['doc-good.ref.nocr'], input: files('doc-good.txt'), build_by_default: true, - command: ['perl', '-pe', '$x = chr 13; s/$x$//', '@INPUT@'], + command: [remove_cr, '@INPUT@'], capture: true) test('QAPI rST doc', diff, args: ['-u', qapi_doc_ref_nocr[0], qapi_doc_out_nocr[0]],