PyAV: add riscv64 build support, use pyav-ffmpeg artifacts in smoke.yml - #2407
Open
threexc wants to merge 4 commits into
Open
PyAV: add riscv64 build support, use pyav-ffmpeg artifacts in smoke.yml#2407threexc wants to merge 4 commits into
threexc wants to merge 4 commits into
Conversation
Be explicit when running apt-get and provide the '-y' option so that the workflows install any packages they need, in case the runner environment doesn't already contain them. Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Use a RISE RISC-V Runner (ubuntu-24.04-riscv) for riscv64 in the package-wheel job. We need to tell uv to use the RISE registry first and fallback to PyPI otherwise, so that it doesn't try to build packages like Pillow (which also doesn't have riscv64 PyPI wheels yet) from source. Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Use a RISE RISC-V Runner for each Python and FFmpeg combo in the smoke tests. We need to tell uv to use the RISE registry first and fallback to PyPI otherwise, so that it doesn't try to build packages like Pillow (which also doesn't have riscv64 wheels on PyPI yet) from source. Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Do the same as the tests.yml workflow to make things consistent across both cases. We need to specify the PKG_CONFIG_PATH and related variables so that unpacking pyav-ffmpeg matches what's expected by the build, and what cibuildwheel does in tests.yaml. With this change, the build-deps script is no longer used in CI. For this to work, we need to install libxcb-shape0 with apt-get so that the .so files can be utilized, since we're not doing a repair step like in tests.yml to bundle the relevant libraries. Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Make use of RISE's Native RISC-V Runners to build PyAV for riscv64. This requires enabling them for the repository as a GitHub Application. More info regarding enabling them is available here: https://riscv-runners.riseproject.dev/
To get the
smoke.ymlworkflow to succeed, I've reworked it to use pyav-ffmpeg artifacts like thetests.ymlworkflow does, except that thearmv7ljob still follows the existing approach. While working through this, I encountered a bug specific to the RISC-V Runners (riscv64gcprofile), where I hit an illegal instruction/core dump issue that seems to be related to: https://www.mail-archive.com/ffmpeg-trac@avcodec.org/msg69006.html . Using the pyav-ffmpeg artifacts circumvented this issue, which is why it was implemented that way. This is a temporary workaround - in the future, the RISC-V Runners will support a more expansive profile. If using pyav-ffmpeg artifacts in thesmoke.yamlworkflow is undesirable, I can revisit it and maybe adjust compiler flags instead.I tried a test run on my fork. You can review the results here: threexc#2
This is being done on behalf of RISE, using the RISC-V Wheels dashboard to track upstream support for the Python ecosystem.