image_builder.py: Do not use os.system, as it encodes the return value #823
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request Details
Description
os.system's return value is the process's return value, but encoded in the wait format on Linux which means, that the result is multiplied by 256. Thus a return value of 1 of the executed command results in a ret_val of 256, an return value of 2 means 512, and so on. If this value is forwarded without further handling, and naively used as "normal" exit status, then the value overflows and always results in a 0 exit code.
Instead of implementing a Windows/Linux dependant workaround, using subprocess instead of os.system is better anyway, as the usage of os.system is discouraged.
Related Issue
Which devices/areas does this affect?
Testing Done
I have built the X3x0 design with various failures on purpose.
Checklist
MPM compat, noc_shell, specific RFNoC block, ...)