Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v6] ivi-homescreen: new package
@ 2024-01-06 23:01 Adam Duskett
  2024-01-06 23:01 ` [Buildroot] [PATCH v6] package/ivi-homescreen: " Adam Duskett
  0 siblings, 1 reply; 3+ messages in thread
From: Adam Duskett @ 2024-01-06 23:01 UTC (permalink / raw)
  To: buildroot; +Cc: Adam Duskett

Much like flutter-pi, this package is a Flutter embedder used to run Flutter
applications. However, unlike Flutter-pi, this package requires a Wayland
compositor to run, which flutter-pi does not support. Furthermore, flutter-pi
lacks several plugins and features that ivi-homescreen supports, such as:
  - Dart VM console redirection
  - DLT logging
  - Accessibility
  - Compositor region
  - Compositor surface
  - Desktop Window
  - Go Router
  - Isolate
  - Keyboard Manager
  - Layer Playground
  - Mouse Cursor
  - PackageInfo
  - Platform
  - Platform Views
  - Restoration

The following plugins and options are hardcoded to off:
  - Crash handler: Requires a newer version of sentry-native.
  - File selector: Requires the zenity package.
  - Firebase-core: Requires the firebase-cpp-sdk package.
  - URL Launcher: Requires a runtime-dependency on xdg-open.
  - BUILD_TEXTURE_NAVI_RENDER_EGL: Failes to build.
  - BUILD_TEXTURE_TEST_EGL: Fails to build.
  - ENABLE_AGL_CLIENT: Used for Automitve Grade Linux (AGL).

The ENABLE_XDG_CLIENT=ON option is a requirement to run Flutter apps.
If this option is disabled, ivi-homescreen segfaults when starting an
application.

Finally, there is a need for a patch that fixes the audio-players plugin:
If the audio-players plugin is the only plugin selected, several compilation
errors occure because of undeclared definitions, as the standard_method_codec.h
header file is missing.

Upstream-status: https://github.com/toyota-connected/ivi-homescreen/pull/133

This package has been tested on a x86_64 host with an AMD Ryzen 9 6900HS
with Docker 24.0.5:
  - The following distributions:
    - Fedora 39: Host system
    - Ubuntu 22.04: Docker
    - Debian 11: Docker

  - The following targets:
    - BR2_aarch64
    - BR2_arm
    - BR2_x86_64

With the following defconfig:
```
BR2_x86_64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_GLIBC_STABLE=y
BR2_CCACHE=y
BR2_INIT_SYSTEMD=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin"
BR2_GENERATE_LOCALE="en_US.UTF-8"
BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image-efi.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.24"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config"
BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
BR2_PACKAGE_FOOT=y
BR2_PACKAGE_IVI_HOMESCREEN=y
BR2_PACKAGE_IVI_HOMESCREEN_DART_VM_LOGGING=y
BR2_PACKAGE_IVI_HOMESCREEN_DLT=y
BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT=y
BR2_PACKAGE_IVI_HOMESCREEN_AGL_CLIENT=y
BR2_PACKAGE_IVI_HOMESCREEN_IVI_SHELL=y
BR2_PACKAGE_IVI_HOMESCREEN_EGL_TRANSPARENCY=y
BR2_PACKAGE_IVI_HOMESCREEN_EGL_ENABLE_3D=y
BR2_PACKAGE_IVI_HOMESCREEN_EGL_MULTISAMPLE=y
BR2_PACKAGE_IVI_HOMESCREEN_ACCESSIBILITY_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_COMP_REGION_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_COMP_SURF_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_DESKTOP_WINDOW_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_GO_ROUTER_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_INTEGRATION_TEST_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_ISOLATE_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_KEYBOARD_MANAGER_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_KEY_EVENT_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_LAYER_PLAYGROUND_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_LOGGING_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_MOUSE_CURSOR_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_PACKAGE_INFO_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_VIEWS_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_RESTORATION_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_URL_LAUNCHER_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_AUDIO_PLAYERS=y
BR2_PACKAGE_IVI_HOMESCREEN_FLUTTER_SECURE_STORAGE_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_GOOGLE_SIGN_IN_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN=y
BR2_PACKAGE_IVI_HOMESCREEN_OPENGL_TEXTURE_PLUGIN=y
BR2_PACKAGE_SWAY=y
BR2_PACKAGE_SWAY_SWAYBAR=y
BR2_PACKAGE_SWAY_SWAYBAR_TRAY=y
BR2_PACKAGE_SWAY_SWAYNAG=y
BR2_PACKAGE_FLUTTER_GALLERY=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL=y
BR2_PACKAGE_MESA3D_OSMESA_GALLIUM=y
BR2_PACKAGE_MESA3D_OPENGL_ES=y
BR2_PACKAGE_ACPID=y
BR2_PACKAGE_FLUTTER_ENGINE=y
BR2_PACKAGE_CONNMAN=y
BR2_PACKAGE_CONNMAN_WIFI=y
BR2_PACKAGE_CONNMAN_CLIENT=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="512M"
BR2_TARGET_GRUB2=y
BR2_TARGET_GRUB2_X86_64_EFI=y
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
```

The image is then booted using qemu with the following
command:
```
LIBGL_DRIVERS_PATH=/usr/lib64/dri \
FONTCONFIG_PATH=/etc/fonts \
qemu-system-x86_64 \
  -enable-kvm \
  -M pc \
  -cpu host \
  -m 1024M \
  -bios /usr/share/OVMF/OVMF_CODE.fd \
  -drive file=output/images/disk.img,if=virtio,format=raw \
  -net nic,model=virtio \
  -net user \
  -device virtio-vga-gl \
  -display gtk,gl=es,show-cursor=on \
  -usb \
  -device usb-ehci,id=ehci \
  -device usb-tablet,bus=usb-bus.0
```

After logging in, type:
 - mkdir -p /tmp/sway && export XDG_RUNTIME_DIR=/tmp/sway && sway
 - bring up a terminal with `windows key + return`
 - Type `homescreen --b=/usr/share/flutter/gallery/release/`


Changelog:
- Removed how I tested the package in the commit log [Yann]
- Added the explicity dependency list of flutter and flutter-engine [Yann]
- Removed XDG, and AGL clients as options.
- Enabled XDG client by default.
- Added 0001-add-missing-headers-to-the-audio-players-plugin.patch
- Select BR2_PACKAGE_LIBCURL_FORCE_TLS and BR2_PACKAGE_OPENSSL if the
  BR2_PACKAGE_IVI_HOMESCREEN_GOOGLE_SIGN_IN_PLUGIN is selected. [Yann]
- Added dependencies of libegl, mesa3d, and libdrm if those backends are
  enabled. [Yann]
- Cleaned up licensing. [Yann]
- Cleaned up and reduced the amount of ifeq else endif blocks [Yann]
- Disabled the URL Launcher plugin.
- Added help menus to as many plugins as I could.
- Removed BR2_PACKAGE_IVI_HOMESCREEN_EGL_TEXTURE [Yann]

Adam Duskett (1):
  package/ivi-homescreen: new package

 DEVELOPERS                                    |   1 +
 package/Config.in                             |   1 +
 ...-headers-to-the-audio-players-plugin.patch |  82 ++++++
 package/ivi-homescreen/Config.in              | 268 ++++++++++++++++++
 package/ivi-homescreen/ivi-homescreen.hash    |  21 ++
 package/ivi-homescreen/ivi-homescreen.mk      | 135 +++++++++
 6 files changed, 508 insertions(+)
 create mode 100644 package/ivi-homescreen/0001-add-missing-headers-to-the-audio-players-plugin.patch
 create mode 100644 package/ivi-homescreen/Config.in
 create mode 100644 package/ivi-homescreen/ivi-homescreen.hash
 create mode 100644 package/ivi-homescreen/ivi-homescreen.mk

-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-01-10 21:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-06 23:01 [Buildroot] [PATCH v6] ivi-homescreen: new package Adam Duskett
2024-01-06 23:01 ` [Buildroot] [PATCH v6] package/ivi-homescreen: " Adam Duskett
2024-01-10 21:37   ` Yann E. MORIN

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox