jwinarske / meta-flutter

Yocto meta layer for recipes related to using Google Flutter Engine
MIT License
45 stars 22 forks source link

Support on raspberrypi3 #2

Closed limbouser closed 4 years ago

limbouser commented 4 years ago

I see that you have made this layer such that it supports rpi-64, won't this work with a normal raspberrypi3?, ie, when machine is set as raspberrypi3

jwinarske commented 4 years ago

From a build attempt yesterday for Pi Zero Wifi, it looks like the engine requires a patch for arm. It does build for rpi3-64.

limbouser commented 4 years ago

I see that you have used a core-image-weston image. How can I make it run in any other image? Like a core-image-base or any other without all this GUI, but just a CLI.

jwinarske commented 4 years ago

I use core-image-weston as it pulls in the base dependencies, and provides a functional platform. If I were doing a custom scenario, I would choose a plugin to fit the requirements.

You can swap out the weston plugins. The default is the desktop. Weston.ini is where things get adjusted, such as rotation, screen size, plugin, plugin config, etc. You can either auto start the app in weston.ini, pick a different plugin, or write your own.

I've been looking at wlroots for headless. Healthy development, and a small footprint. It can be scaled up depending on the requirements.

limbouser commented 4 years ago

Can this application run within a Westeros Compositor? If I have a Westeros based image, how can I make this application run in it? And why go for waylandpp?

jwinarske commented 4 years ago

I did a quick check of the wiki and homepage. Pre-requisite looks like access to a private BSP.

Based on a brief look, it looks like these are the focus areas to run on a Westeros image:

I switched to waylandpp to make things cleaner. I may switch back.

jwinarske commented 4 years ago

I figured out the patches. I have Flutter Engine building for Pi0-W outside of Yocto. It does require an external Clang toolchain setup for building ARM. I'll create a 32-bit recipe.

limbouser commented 4 years ago

Can you be more specific about the type of image I choose thing? What if I have a core-image-base or core-image-minimal ? How would I run flutter_wayland in it?

jwinarske commented 4 years ago

If you try to run it with a core-image-base or core-image-minimal it won't have the required dependencies to run. You also need to have linked against the libraries from the target's sysroot. It's fairly straight forward to rsync the remote sysroot, and cross-compile on host. I have this logic in my clang_toolchain project - sysroot.cmake.

If you don't build and use a Yocto image, you would cross-compile on your host with:

  1. copied/fixed up sysroot from target
  2. Clang toolchain configured for your target triple - look at /usr/lib/ for the triple folder
jwinarske commented 4 years ago

32-bit build supported starting with https://github.com/jwinarske/meta-flutter/commit/2f6fc2ea8e2d05ca9e1dcdf872490c2ce74285b8.

armv6 is not/will not be supported by Dart, so armv7+. https://github.com/flutter/flutter/issues/55439#event-3267901549

limbouser commented 4 years ago

Do you know if I can set up weston.ini such that the application gets started up when I launch core-image-weston image.?

jwinarske commented 4 years ago

This is not an optimized config, but should get you close:

#!/bin/bash
weston &
sleep 5s # could be less
export WAYLAND_DISPLAY=wayland-0
export DISPLAY=:1
exec /path/to/myapp