-
-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CI: Compile wheels for Raspberry Pi 1-3 using the CI #6662
Conversation
I have tested the wheel on a Raspberry Pi 3 I have remote access to and my Kivy application starts up fine. I have no physical access to it at the moment, so it's hard to tell if there is any performance differences. I'll test it more after New Years. |
Nice. We have a script that automatically runs on the server such that nightly wheels can be installed using Besides updating the docs to use this, I'm wondering how to handle the clash between pi1-3 and pi4? Currently, the command above will only work on pi4 and it would need to be installed manually on the pi1-3. I'm wondering, are you definitely sure that wheels built with the Broadcom drivers cannot work on the pi4 and vice-versa? raspberrypi/firmware#1171 (comment) seems to suggest that maybe it can work? Kivy can also use sdl2 as the graphics backend when gl is not directly available: https://kivy.org/doc/stable/api-kivy.graphics.cgl.html#module-kivy.graphics.cgl. |
I finally got around to test the wheel on a Raspberry Pi 4, but it keeps trying to use the [INFO ] Logger: Record log in /home/pi/.kivy/logs/kivy_20-01-05_64.txt
[INFO ] Kivy: v2.0.0.dev0, git-3593e7f, 20191223
[INFO ] Kivy: Installed at "/home/pi/venv-kivy-rpi123/lib/python3.7/site-packages/kivy/__init__.py"
[INFO ] Python: v3.7.3 (default, Apr 3 2019, 05:39:12)
[GCC 8.2.0]
[INFO ] Python: Interpreter at "/home/pi/venv-kivy-rpi123/bin/python"
[INFO ] Factory: 184 symbols loaded
[INFO ] Image: Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] Text: Provider: sdl2
[INFO ] Window: Provider: egl_rpi Is there anyway to ignore the |
Yeah, set I was wondering, could you not build the wheel on the pi4 with both x11 and sdl2 support? Then people could use the wheel on older PIs using the x11 provider and sdl2 on PI4? Or maybe the opposite, build for pi3 with x11/sdl2 and that should also work on pi4? Then we could have one wheel for all PIs. I'm not sure if the sdl2 provide works on older PIs. |
You were right! Setting I'll update the PR, so it checks this if statement: https://github.com/kivy/kivy/blob/master/kivy/core/window/__init__.py#L2064 so the |
I just pushed: 732f93a. Do you have a good suggestion where I can put the |
I think in Can you summarize the situation now? So, sdl2 works for all pi versions. Perhaps we can enable x11 support as well so people can use that as an alternate provider. Or maybe it's already enabled? This solves the window provider. Regarding the graphics backend (i.e. gl support), you can control that with I guess I also wonder about the |
cbc1d06
to
5229ba8
Compare
This is fixed in: dee79da
Currently sdl2 works on the Raspberry Pi 4. I have not tested sdl2 on the Raspberry Pi 3, only No x11 is not enabled at the moment: https://github.com/Lauszus/kivy/runs/380422538#step:3:7164. If I set
Both
Yes the wheel supports |
I don't think so. Looking at
So ideally, there would be a normal window provider that works for pi 1-4, as well as the egl_rpi on Pi < 4. But I suspect that sdl2 can work on pi3 at least (I think I tested it a while ago? maybe with the right drivers). Any hopefully x11 also, assuming xorg or whatever is installed by apt. |
caadca1
to
3016879
Compare
025e6f8
to
16f4013
Compare
I can confirm that the wheels works both on Raspberry 1-3 and Raspberry Pi 4 :) And x11 is enabled as well. I noticed that you set |
Nice! Is this sdl2 for all of them, or egl_rpi/sdl2?
That's so that the wheel doesn't become huge when it pulls in gstreamer, for people who don't use video/audio. But that would only happen because on manylinux we use auditwheel to stuff all binary deps into the wheel. For rpi that doesn't happen (in fact people need to run apt commands first), so that's not an issue. But I guess it cannot hurt, since eventually there may be something like manylinux for arm. |
All of them support Currently Pi 1-3 defaults to FYI I have not tested it on Pi 1-2, but assume they work the same as Pi 3. Next I will look into compiling
Okay. I will set the flags like you have done it for manylinux i.e:
|
Also, if you like, it may be nice to make like a table in the docs or just a sentence documenting which of the backends, (or that all of them) work on which pi versions. Something like:
|
Do you mean for the user or when compiling the wheel on the CI? Because if for the user, you compiling sdl2 on the CI, will not fix that, since they'll get whatever sdl2 they install with their package manager because sdl2 is not included in the wheel. |
I updated the documentation in: eaa5113
Doh, you are right. I'm getting too tired :) The thing is that I have an application were I would really want to avoid using X11, so I will try to compile SDL2 without the dependency on X11 on a Raspberry Pi 4. I'll update the documentation and send another PR if I figure it out. |
FYI I'm just going to do a final test, then it should be ready to merge. |
b71e7b1
to
ae6ff5d
Compare
@matham it should be ready to merge now if you do not have any more comments :) |
Thanks for your work!
I'm not sure we should add this to the docs because this is likely to be a speciality requirement to not have a x11 dependency? And I'm guessing most people won't be compiling sdl2. |
I tried to make it work yesterday, but it seems like it would never create a window without using a window manager. |
I have appendedrpi123
to the wheel filename, as these wheels will only work on the Raspberry Pi 1-3, as they use the proprietary Broadcom drivers.