On 2024-10-06 10:55, Mattias Rönnblom wrote:
On 2024-10-04 13:51, Robin Jarry wrote:
Mattias Rönnblom, Oct 04, 2024 at 10:40:
Making small scripts needlessly complicated is not good example, it's a bad one.

I don't find adding argument checks needlessly complicated but this is a matter of preference. To me, Python is not shell script. If you want something small, shell might be more appropriate?


Python can serve in many roles. I suggest you be more pragmatic and sensitive to the context. Sometimes the non-existence/non-use of doc strings and other language features that makes sense in larger programs is not a sign of the author being out to "treat Python badly".

Sure, but it would be required to invoke the script for every header file in the tree. Not sure I think that would be a net gain.

You can store a global exit status in the script and process all headers before exiting with an error if any.

You will need to give the user a list of offending header files.

I'm not suggesting to avoid printing the offending file names. I'm only suggesting to exit(1) if there were *any* offending file names. That way you don't have to check *in meson* if the script did output anything. Checking the exit status is simpler.


What you wrote was "/../ That way you would not have to capture stdout at all and you could leave meson do the work.".

Can you elaborate on this? I'm not sure I follow. Is there a way to not capture the script output, invoke the script only once per build, and yet produce a fine-grained error message to the user?

I agree properly setting the exit code is an improvement. I just don't see how that materially changes anything on the meson side of things. But then, I know nothing about meson.


OK, so it does change something, but not for the better, seemingly.

meson.build now somehow has to distinguished between two different "errors":
1) One or more offending header files were found.
2) Any other kind of error (file not found, access control issues, internal script error, etc).

For 1), it should print a list of the offending header files.

If you just set "check: true" in run_command(), and have the chkextern.py script return non-zero on error, the offending header files will not be printed on stdout.

My guess would be that this complicating factor is the reason for this pattern of not (in/from meson) depending on the script delegate exit code, but rather the output.

May I should rename the script to "scanextern.py" to better reflect that a failure to find an issue is not an error (=non-zero exit code).

Sorry for being pedantic, but Python code in DPDK is already treated badly. I wish we could improve the quality a bit.

Cheers.



Reply via email to