* [Buildroot] [PATCH v5 0/1] package/ivi-homescreen: new package
@ 2024-01-03 2:06 Adam Duskett
2024-01-03 2:06 ` [Buildroot] [PATCH v5 1/1] " Adam Duskett
0 siblings, 1 reply; 4+ messages in thread
From: Adam Duskett @ 2024-01-03 2:06 UTC (permalink / raw)
To: buildroot; +Cc: Adam Duskett
Included is v5 of the ivi-homescreen patches.
Changes include:
- Drop support for the file selector plugin. Amarula doesn't need it and I
wasn't asked to port the Zenity package. The file-selector plugin is
hardcoded to off.
- Add a more comprehensive commit log as to how I tested this package.
Adam Duskett (1):
package/ivi-homescreen: new package
DEVELOPERS | 1 +
package/Config.in | 1 +
package/ivi-homescreen/Config.in | 167 ++++++++++++++
package/ivi-homescreen/ivi-homescreen.hash | 3 +
package/ivi-homescreen/ivi-homescreen.mk | 245 +++++++++++++++++++++
5 files changed, 417 insertions(+)
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] 4+ messages in thread* [Buildroot] [PATCH v5 1/1] package/ivi-homescreen: new package 2024-01-03 2:06 [Buildroot] [PATCH v5 0/1] package/ivi-homescreen: new package Adam Duskett @ 2024-01-03 2:06 ` Adam Duskett 2024-01-06 17:28 ` Yann E. MORIN 0 siblings, 1 reply; 4+ messages in thread From: Adam Duskett @ 2024-01-03 2:06 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 - URL Launcher 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. - BUILD_TEXTURE_NAVI_EGL_ROUTING: Fails to build. - BUILD_TEXTURE_NAVI_RENDER_EGL: Fales to build. - BUILD_TEXTURE_TEST_EGL: Fails to build. 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/` Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com> --- DEVELOPERS | 1 + package/Config.in | 1 + package/ivi-homescreen/Config.in | 167 ++++++++++++++ package/ivi-homescreen/ivi-homescreen.hash | 3 + package/ivi-homescreen/ivi-homescreen.mk | 245 +++++++++++++++++++++ 5 files changed, 417 insertions(+) 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 diff --git a/DEVELOPERS b/DEVELOPERS index 646b8ee5a2..33f49fcddc 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -35,6 +35,7 @@ F: package/flutter-engine/ F: package/flutter-gallery/ F: package/flutter-pi/ F: package/flutter-sdk-bin/ +F: package/ivi-homescreen/ F: package/libutempter/ F: package/tllist/ F: support/testing/tests/package/test_flutter.py diff --git a/package/Config.in b/package/Config.in index 38c36428b9..5f3848d860 100644 --- a/package/Config.in +++ b/package/Config.in @@ -320,6 +320,7 @@ comment "Graphic applications" source "package/glmark2/Config.in" source "package/glslsandbox-player/Config.in" source "package/gnuplot/Config.in" + source "package/ivi-homescreen/Config.in" source "package/jhead/Config.in" source "package/kmscube/Config.in" source "package/libva-utils/Config.in" diff --git a/package/ivi-homescreen/Config.in b/package/ivi-homescreen/Config.in new file mode 100644 index 0000000000..b007ea47af --- /dev/null +++ b/package/ivi-homescreen/Config.in @@ -0,0 +1,167 @@ +menuconfig BR2_PACKAGE_IVI_HOMESCREEN + bool "ivi-homescreen" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on BR2_PACKAGE_FLUTTER_ENGINE + select BR2_PACKAGE_HOST_FLUTTER_SDK_BIN + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_WAYLAND_UTILS + help + Toyota's Flutter Embedder that communicates with Wayland + compositors. + Features: + - Strongly Typed (C++) + - Lightweight + - Platform Channels enabled/disabled via CMake + - OpenGL Texture Framework + - Compositor Sub-surface/Region support + - Vulkan / EGL backend support + + https://github.com/toyota-connected/ivi-homescreen + +if BR2_PACKAGE_IVI_HOMESCREEN + +config BR2_PACKAGE_IVI_HOMESCREEN_DART_VM_LOGGING + bool "Dart VM console redirection" + +config BR2_PACKAGE_IVI_HOMESCREEN_DLT + bool "DLT logging" + +comment "Clients" + +config BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT + bool "xdg" + +config BR2_PACKAGE_IVI_HOMESCREEN_AGL_CLIENT + bool "AGL" + +config BR2_PACKAGE_IVI_HOMESCREEN_IVI_SHELL + bool "ivi-shell" + +comment "EGL options" + +config BR2_PACKAGE_IVI_HOMESCREEN_EGL_TRANSPARENCY + bool "Transparency" + depends on BR2_PACKAGE_HAS_LIBEGL + +comment "Transparency support needs an EGL backend" + depends on !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_IVI_HOMESCREEN_EGL_ENABLE_3D + bool "3D support" + depends on BR2_PACKAGE_HAS_LIBEGL + help + Build with EGL Stencil, Depth, and Stencil + +comment "3D support needs an EGL backend" + depends on !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_IVI_HOMESCREEN_EGL_MULTISAMPLE + bool "Multisample support" + depends on BR2_PACKAGE_HAS_LIBEGL + help + Build with EGL Sample set to 4 + +comment "Multisample support needs an EGL backend" + depends on !BR2_PACKAGE_HAS_LIBEGL +comment "dependency-less plugins" + +config BR2_PACKAGE_IVI_HOMESCREEN_ACCESSIBILITY_PLUGIN + bool "Accessibility" + +config BR2_PACKAGE_IVI_HOMESCREEN_COMP_REGION_PLUGIN + bool "Compositor Region" + +config BR2_PACKAGE_IVI_HOMESCREEN_COMP_SURF_PLUGIN + bool "Compositor Surface" + +config BR2_PACKAGE_IVI_HOMESCREEN_DESKTOP_WINDOW_PLUGIN + bool "Desktop Window" + +config BR2_PACKAGE_IVI_HOMESCREEN_GO_ROUTER_PLUGIN + bool "Go Router" + +config BR2_PACKAGE_IVI_HOMESCREEN_INTEGRATION_TEST_PLUGIN + bool "Flutter Integration Test support" + +config BR2_PACKAGE_IVI_HOMESCREEN_ISOLATE_PLUGIN + bool "Isolate" + +config BR2_PACKAGE_IVI_HOMESCREEN_KEYBOARD_MANAGER_PLUGIN + bool "Keyboard Manager" + +config BR2_PACKAGE_IVI_HOMESCREEN_KEY_EVENT_PLUGIN + bool "Key Event" +config BR2_PACKAGE_IVI_HOMESCREEN_LAYER_PLAYGROUND_PLUGIN + bool "Layer Playground" + +config BR2_PACKAGE_IVI_HOMESCREEN_LOGGING_PLUGIN + bool "Logging" + +config BR2_PACKAGE_IVI_HOMESCREEN_MOUSE_CURSOR_PLUGIN + bool "Mouse Cursor" + +config BR2_PACKAGE_IVI_HOMESCREEN_PACKAGE_INFO_PLUGIN + bool "PackageInfo" + +config BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_PLUGIN + bool "Platform" + +config BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_VIEWS_PLUGIN + bool "Platform Views" + +config BR2_PACKAGE_IVI_HOMESCREEN_RESTORATION_PLUGIN + bool "Restoration" + +config BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN + bool "Text Input" + +config BR2_PACKAGE_IVI_HOMESCREEN_URL_LAUNCHER_PLUGIN + bool "URL Launcher" + +comment "plugins with external dependencies" +config BR2_PACKAGE_IVI_HOMESCREEN_AUDIO_PLAYERS + bool "Audio Players" + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME + +config BR2_PACKAGE_IVI_HOMESCREEN_FLUTTER_SECURE_STORAGE_PLUGIN + bool "Flutter Secure Storage" + select BR2_PACKAGE_LIBSECRET + +config BR2_PACKAGE_IVI_HOMESCREEN_GOOGLE_SIGN_IN_PLUGIN + bool "Google Sign In manager" + select BR2_PACKAGE_LIBCURL + +config BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN + bool "GStreamer" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL + select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL + +comment "GStreamer plugin needs an EGL backend" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_IVI_HOMESCREEN_OPENGL_TEXTURE_PLUGIN + bool "OpenGL Texture" + depends on BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_IVI_HOMESCREEN_EGL_TEXTURE + +comment "OpenGL texture plugin needs an EGL backend" + depends on !BR2_PACKAGE_HAS_LIBEGL + +endif # BR2_PACKAGE_IVI_HOMESCREEN + +comment "flutter-auto needs flutter-engine" + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS + depends on !BR2_PACKAGE_FLUTTER_ENGINE diff --git a/package/ivi-homescreen/ivi-homescreen.hash b/package/ivi-homescreen/ivi-homescreen.hash new file mode 100644 index 0000000000..c28de3ae1f --- /dev/null +++ b/package/ivi-homescreen/ivi-homescreen.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1ab2e7ab5f947482cb5529dbb6392e7e1945ceb0b593abde6b6279d7bd2fdb79 ivi-homescreen-5ab78a19e95c88cc5d6b173ab1260a211e78cf0a-br1.tar.gz +sha256 6b96fa0a3def85caaf466caa2bd82d4ca4f22d106ff88f97a00c537c00cc714b LICENSE diff --git a/package/ivi-homescreen/ivi-homescreen.mk b/package/ivi-homescreen/ivi-homescreen.mk new file mode 100644 index 0000000000..760390c125 --- /dev/null +++ b/package/ivi-homescreen/ivi-homescreen.mk @@ -0,0 +1,245 @@ +################################################################################ +# +# ivi-homescreen +# +################################################################################ + +IVI_HOMESCREEN_VERSION = 5ab78a19e95c88cc5d6b173ab1260a211e78cf0a +IVI_HOMESCREEN_SITE = https://github.com/toyota-connected/ivi-homescreen.git +IVI_HOMESCREEN_SITE_METHOD = git +IVI_HOMESCREEN_LICENSE = Apache-2.0 +IVI_HOMESCREEN_LICENSE_FILES = LICENSE +IVI_HOMESCREEN_DEPENDENCIES = \ + host-flutter-sdk-bin \ + flutter-engine \ + libxkbcommon \ + wayland \ + wayland-protocols \ + wayland-utils + +IVI_HOMESCREEN_CONF_OPTS = \ + -DBUILD_CRASH_HANDLER=OFF \ + -DBUILD_PLUGIN_FILE_SELECTOR=OFF \ + -DBUILD_PLUGIN_FIREBASE_CORE=OFF \ + -DBUILD_TEXTURE_NAVI_EGL_ROUTING=OFF \ + -DBUILD_TEXTURE_NAVI_RENDER_EGL=OFF \ + -DBUILD_TEXTURE_TEST_EGL=OFF \ + -DBUILD_UNIT_TESTS=OFF + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_EGL=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_EGL=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_EGL_TRANSPARENCY),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_TRANSPARENCY=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_TRANSPARENCY=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_EGL_ENABLE_3D),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_3D=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_3D=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_EGL_MULTISAMPLE),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_MULTISAMPLE=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_MULTISAMPLE=OFF +endif + +ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_VULKAN=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_VULKAN=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_DRM=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_DRM=OFF +endif + +# Clients + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT),y) +IVI_HOMESCREEN_CONF_OPTS += -DENABLE_XDG_CLIENT=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DENABLE_XDG_CLIENT=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_AGL_CLIENT),y) +IVI_HOMESCREEN_CONF_OPTS += -DENABLE_AGL_CLIENT=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DENABLE_AGL_CLIENT=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_IVI_SHELL),y) +IVI_HOMESCREEN_CONF_OPTS += -DENABLE_IVI_SHELL_CLIENT=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DENABLE_IVI_SHELL_CLIENT=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_DART_VM_LOGGING),y) +IVI_HOMESCREEN_CONF_OPTS += -DENABLE_DART_VM_LOGGING=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DENABLE_DART_VM_LOGGING=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_DLT),y) +IVI_HOMESCREEN_CONF_OPTS += -DENABLE_DLT=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DENABLE_DLT=OFF +endif +# dependency-less plugins + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_ACCESSIBILITY_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_ACCESSIBILITY=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_ACCESSIBILITY=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_COMP_REGION_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_COMP_REGION=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_COMP_REGION=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_COMP_SURF_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_COMP_SURF=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_COMP_SURF=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_DESKTOP_WINDOW_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_DESKTOP_WINDOW=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_DESKTOP_WINDOW=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_GO_ROUTER_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_GO_ROUTER=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_GO_ROUTER=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_INTEGRATION_TEST_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_INTEGRATION_TEST=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_INTEGRATION_TEST=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_ISOLATE_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_ISOLATE=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_ISOLATE=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_KEYBOARD_MANAGER_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_KEYBOARD_MANAGER=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_KEYBOARD_MANAGER=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_KEY_EVENT_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_KEY_EVENT=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_KEY_EVENT=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_LAYER_PLAYGROUND_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_LAYER_PLAYGROUND=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_LAYER_PLAYGROUND=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_LOGGING_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_LOGGING=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_LOGGING=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_MOUSE_CURSOR_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_MOUSE_CURSOR=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_MOUSE_CURSOR=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_PACKAGE_INFO_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_PACKAGE_INFO=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_PACKAGE_INFO=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_PLATFORM=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_PLATFORM=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_VIEWS_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_PLATFORM_VIEWS=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_PLATFORM_VIEWS=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_RESTORATION_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_RESTORATION=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_RESTORATION=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_TEXT_INPUT=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_TEXT_INPUT=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_URL_LAUNCHER_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_URL_LAUNCHER=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_URL_LAUNCHER=OFF +endif + +# "plugins with external dependencies" +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_AUDIO_PLAYERS),y) +IVI_HOMESCREEN_DEPENDENCIES += gstreamer1 gst1-plugins-base +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_AUDIO_PLAYERS=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_AUDIO_PLAYERS=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_FLUTTER_SECURE_STORAGE_PLUGIN),y) +IVI_HOMESCREEN_DEPENDENCIES += libsecret +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_SECURE_STORAGE=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_SECURE_STORAGE=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_GOOGLE_SIGN_IN_PLUGIN),y) +IVI_HOMESCREEN_DEPENDENCIES += libcurl +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_GOOGLE_SIGN_IN=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_GOOGLE_SIGN_IN=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN),y) +IVI_HOMESCREEN_DEPENDENCIES += ffmpeg gstreamer1 gst1-plugins-base +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_GSTREAMER_EGL=ON +else +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_PLUGIN_GSTREAMER_EGL=OFF +endif + +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_OPENGL_TEXTURE_PLUGIN),y) +IVI_HOMESCREEN_CONF_OPTS += \ + -DBUILD_PLUGIN_OPENGL_TEXTURE=ON \ + -DBUILD_TEXTURE_EGL=ON +else +IVI_HOMESCREEN_CONF_OPTS += \ + -DBUILD_PLUGIN_OPENGL_TEXTURE=OFF \ + -DBUILD_TEXTURE_EGL=OFF +endif + +$(eval $(cmake-package)) -- 2.43.0 _______________________________________________ buildroot mailing list buildroot@buildroot.org https://lists.buildroot.org/mailman/listinfo/buildroot ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH v5 1/1] package/ivi-homescreen: new package 2024-01-03 2:06 ` [Buildroot] [PATCH v5 1/1] " Adam Duskett @ 2024-01-06 17:28 ` Yann E. MORIN 2024-01-06 18:16 ` Adam Duskett 0 siblings, 1 reply; 4+ messages in thread From: Yann E. MORIN @ 2024-01-06 17:28 UTC (permalink / raw) To: Adam Duskett; +Cc: buildroot Adam, All, On 2024-01-02 19:06 -0700, Adam Duskett spake thusly: > 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 > - URL Launcher > > 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. > - BUILD_TEXTURE_NAVI_EGL_ROUTING: Fails to build. > - BUILD_TEXTURE_NAVI_RENDER_EGL: Fales to build. > - BUILD_TEXTURE_TEST_EGL: Fails to build. Thanks for the detailed commit log! It is a bit more descriptive than explaining, but there is not much to explain, so OK. The part about the hardcoded-off options *is* very a-propos, though. Thanks! Still, I have a few questions, see below for the details, but here are the few key points: - licensing terms to extend - inherited dependencies to propagate - is at least a client required, or can we build with none? - TLS-aware libcurl needed? - missing _DEPENDENCIES to add or explain - reduce verbosity of _CONF_OPTS where possible Also, the following part, although interesting, is not really fit for a commit log; it would have been better as a post-commit note, or in the cover letter; it could even be used as the basis for a runtime test: > This package has been tested on a x86_64 host with an AMD Ryzen 9 6900HS > with Docker 24.0.5: [--SNIP--] > With the following defconfig: [--SNIP--] > The image is then booted using qemu with the following > command: [--SNIP--] > 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/` [--SNIP--] ... up to here. > Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com> > --- [--SNIP--] > diff --git a/package/ivi-homescreen/Config.in b/package/ivi-homescreen/Config.in > new file mode 100644 > index 0000000000..b007ea47af > --- /dev/null > +++ b/package/ivi-homescreen/Config.in > @@ -0,0 +1,167 @@ This file is big, so I'll chop off the parts that are OK, just to concentrate on the key points (minor formatting issues like missing empty lines are just ignored, and elided): > +menuconfig BR2_PACKAGE_IVI_HOMESCREEN > + bool "ivi-homescreen" > + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS > + depends on BR2_PACKAGE_FLUTTER_ENGINE > + select BR2_PACKAGE_HOST_FLUTTER_SDK_BIN > + select BR2_PACKAGE_LIBXKBCOMMON > + select BR2_PACKAGE_WAYLAND > + select BR2_PACKAGE_WAYLAND_PROTOCOLS > + select BR2_PACKAGE_WAYLAND_UTILS It's not obvious what dependencies are inherited from either BR2_PACKAGE_FLUTTER_ENGINE or BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS, so I would prefer they be duplicated, however, because then it is really obvious. It might seem superfluous, but with big graphic stacks, it's easy to get lost, so at least the comment assesses the check was performed. [--SNIP--] > +comment "Clients" > + > +config BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT > + bool "xdg" > + > +config BR2_PACKAGE_IVI_HOMESCREEN_AGL_CLIENT > + bool "AGL" > + > +config BR2_PACKAGE_IVI_HOMESCREEN_IVI_SHELL > + bool "ivi-shell" Should we ensure there is at least one client enabled, or does it still make sense to build ivi-homescreen without any client? If we need at least one, then we can do the usual dance (I arbitrarily choose XDG as the default client, adapt if another one makes more sense): menuconfig BR2_PACKAGE_IVI_HOMESCREEN bool "ivi-homescreen" select BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT if !BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT config BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT bool config BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT bool "xdg" config BR2_PACKAGE_IVI_HOMESCREEN_AGL_CLIENT bool "AGL" select BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT config BR2_PACKAGE_IVI_HOMESCREEN_IVI_SHELL bool "ivi-shell" select BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT [--SNIP--] > +comment "plugins with external dependencies" > +config BR2_PACKAGE_IVI_HOMESCREEN_AUDIO_PLAYERS > + bool "Audio Players" > + select BR2_PACKAGE_GSTREAMER1 Again, it's not clear what the dependencies inherited via either BR2_PACKAGE_FLUTTER_ENGINE or BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS are. > + select BR2_PACKAGE_GST1_PLUGINS_BASE > + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA > + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT > + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE > + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME > + > +config BR2_PACKAGE_IVI_HOMESCREEN_FLUTTER_SECURE_STORAGE_PLUGIN > + bool "Flutter Secure Storage" > + select BR2_PACKAGE_LIBSECRET > + > +config BR2_PACKAGE_IVI_HOMESCREEN_GOOGLE_SIGN_IN_PLUGIN > + bool "Google Sign In manager" > + select BR2_PACKAGE_LIBCURL Doesn't that also need an SSL/TLS capable libcurl? If so, then select BR2_PACKAGE_LIBCURL_FORCE_TLS, and look at the comment for that option. [--SNIP--] > +config BR2_PACKAGE_IVI_HOMESCREEN_OPENGL_TEXTURE_PLUGIN > + bool "OpenGL Texture" > + depends on BR2_PACKAGE_HAS_LIBEGL > + select BR2_PACKAGE_IVI_HOMESCREEN_EGL_TEXTURE BR2_PACKAGE_IVI_HOMESCREEN_EGL_TEXTURE is defined nowhere. > +comment "OpenGL texture plugin needs an EGL backend" > + depends on !BR2_PACKAGE_HAS_LIBEGL > + > +endif # BR2_PACKAGE_IVI_HOMESCREEN > + > +comment "flutter-auto needs flutter-engine" s/flutter-auto/ivi-homescreen/ [--SNIP--] > diff --git a/package/ivi-homescreen/ivi-homescreen.mk b/package/ivi-homescreen/ivi-homescreen.mk > new file mode 100644 > index 0000000000..760390c125 > --- /dev/null > +++ b/package/ivi-homescreen/ivi-homescreen.mk > @@ -0,0 +1,245 @@ > +################################################################################ > +# > +# ivi-homescreen > +# > +################################################################################ > + > +IVI_HOMESCREEN_VERSION = 5ab78a19e95c88cc5d6b173ab1260a211e78cf0a > +IVI_HOMESCREEN_SITE = https://github.com/toyota-connected/ivi-homescreen.git > +IVI_HOMESCREEN_SITE_METHOD = git > +IVI_HOMESCREEN_LICENSE = Apache-2.0 > +IVI_HOMESCREEN_LICENSE_FILES = LICENSE The licensing is going to be a bit more complex: ivi-homescreen bundles a few third-parties (in the aptly named third_party/ top-level directory); I quickly had a look, and they have various other licensing terms: third_party/agl/protocol/ MIT third_party/asio-1-28-1/asio/ BSL-1.0 It also has a (partial?) flutter copy, which also bundles a few third-parties of its own: third_party/flutter/ third_party/flutter/third_party/rapidjson/include/rapidjson/ MIT third_party/flutter/third_party/dart/runtime/include/ BSD-style Note that one refers to a LICENSE file, which is missing. third_party/googletest/ BSD-3c third_party/sanitizers-cmake/ MIT third_party/spdlog-1.12.0/ MIT third_party/weston/protocol/ MIT The above is not exhaustive, so more research is needed. [--SNIP--] > +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_EGL=ON Why is there no dependency on libegl? > +else > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_EGL=OFF > +endif > > +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_EGL_TRANSPARENCY),y) > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_TRANSPARENCY=ON > +else > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_TRANSPARENCY=OFF > +endif > + > +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_EGL_ENABLE_3D),y) > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_3D=ON > +else > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_3D=OFF > +endif > + > +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_EGL_MULTISAMPLE),y) > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_MULTISAMPLE=ON > +else > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_MULTISAMPLE=OFF > +endif > + > +ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),y) > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_VULKAN=ON Why is a dependency on mesa3d not needed here? > +else > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_VULKAN=OFF > +endif > + > +ifeq ($(BR2_PACKAGE_LIBDRM),y) > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_DRM=ON Ditto: don't we need a dependency on libdrm? > +else > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_DRM=OFF > +endif Otherwise, all those ifeq-else-endif blocks are a bit verbose. I know we use such constructs, but there is an alternative solution that is less verbose, and quite fitting when there is no dependency to add with the symbol: IVI_HOMESCREEN_CONF_OPTS += \ -DBUILD_EGL_TRANSPARENCY=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_EGL_TRANSPARENCY),ON,OFF) \ -DBUILD_EGL_ENABLE_3D=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_EGL_ENABLE_3D),ON,OFF) \ -DBUILD_EGL_ENABLE_MULTISAMPLE=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_EGL_MULTISAMPLE),ON,OFF) \ -DENABLE_XDG_CLIENT=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT),ON,OFF) \ -DENABLE_DLT=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_DLT),ON,OFF) \ ... And keep using ifeq-else-endif blocks when there is an actual dependency to add. (The big users of such constructs are opencv3 and opencv4, but there are a few others as well.) Thank you for working on such complex packages! There is nothing really major above, and I could have fixed most when applying, except for a few questions I couldn't easily find the answer for. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' _______________________________________________ buildroot mailing list buildroot@buildroot.org https://lists.buildroot.org/mailman/listinfo/buildroot ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH v5 1/1] package/ivi-homescreen: new package 2024-01-06 17:28 ` Yann E. MORIN @ 2024-01-06 18:16 ` Adam Duskett 0 siblings, 0 replies; 4+ messages in thread From: Adam Duskett @ 2024-01-06 18:16 UTC (permalink / raw) To: Yann E. MORIN; +Cc: buildroot Yann; Thanks for the thorough review! On Sat, Jan 6, 2024 at 10:28 AM Yann E. MORIN <yann.morin.1998@free.fr> wrote: > > Adam, All, > > On 2024-01-02 19:06 -0700, Adam Duskett spake thusly: > > 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 > > - URL Launcher > > > > 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. > > - BUILD_TEXTURE_NAVI_EGL_ROUTING: Fails to build. > > - BUILD_TEXTURE_NAVI_RENDER_EGL: Fales to build. > > - BUILD_TEXTURE_TEST_EGL: Fails to build. > > Thanks for the detailed commit log! It is a bit more descriptive than > explaining, but there is not much to explain, so OK. The part about the > hardcoded-off options *is* very apropos, though. Thanks! > No worries! > Still, I have a few questions; see below for the details, but here are > the few key points: > - licensing terms to extend > - inherited dependencies to propagate > - is at least a client required, or can we build with none? > - TLS-aware libcurl needed? > - missing _DEPENDENCIES to add or explain > - reduce verbosity of _CONF_OPTS where possible > > Also, the following part, although interesting, is not really fit for a > commit log; it would have been better as a post-commit note, or in the > cover letter; it could even be used as the basis for a runtime test: > > > This package has been tested on a x86_64 host with an AMD Ryzen 9 6900HS > > with Docker 24.0.5: > [--SNIP--] > > With the following defconfig: > [--SNIP--] > > The image is then booted using qemu with the following > > command: > [--SNIP--] > > 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/` > [--SNIP--] > > ... up to here. > Sounds good. I can include it in a cover letter. Although I included it here for record-keeping for any user who may want to try this package out. Let me know what you want to do. > > Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com> > > --- > [--SNIP--] > > diff --git a/package/ivi-homescreen/Config.in b/package/ivi-homescreen/Config.in > > new file mode 100644 > > index 0000000000..b007ea47af > > --- /dev/null > > +++ b/package/ivi-homescreen/Config.in > > @@ -0,0 +1,167 @@ > > This file is big, so I'll chop off the parts that are OK, just to > concentrate on the key points (minor formatting issues like missing > empty lines are just ignored and elided): > > > +menuconfig BR2_PACKAGE_IVI_HOMESCREEN > > + bool "ivi-homescreen" > > + depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS > > + depends on BR2_PACKAGE_FLUTTER_ENGINE > > + select BR2_PACKAGE_HOST_FLUTTER_SDK_BIN > > + select BR2_PACKAGE_LIBXKBCOMMON > > + select BR2_PACKAGE_WAYLAND > > + select BR2_PACKAGE_WAYLAND_PROTOCOLS > > + select BR2_PACKAGE_WAYLAND_UTILS > > It's not obvious what dependencies are inherited from either > BR2_PACKAGE_FLUTTER_ENGINE or BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS, > so I would prefer they be duplicated, however, because then it is really > obvious. If you want me to do include the dependencies of Flutter and Flutter-engine, that is quite OK. I was following the convention of flutter-pi and flutter-gallery. Would you like me to change those as well? > > It might seem superfluous, but with big graphic stacks, it's easy to get > lost, so at least the comment assesses the check was performed. > > [--SNIP--] > > +comment "Clients" > > + > > +config BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT > > + bool "xdg" > > + > > +config BR2_PACKAGE_IVI_HOMESCREEN_AGL_CLIENT > > + bool "AGL" > > + > > +config BR2_PACKAGE_IVI_HOMESCREEN_IVI_SHELL > > + bool "ivi-shell" > > Should we ensure there is at least one client enabled, or does it still > make sense to build ivi-homescreen without any client? > > If we need at least one, then we can do the usual dance (I arbitrarily > choose XDG as the default client, adapt if another one makes more > sense): > > menuconfig BR2_PACKAGE_IVI_HOMESCREEN > bool "ivi-homescreen" > select BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT if !BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT > > config BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT > bool > > config BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT > bool "xdg" > > config BR2_PACKAGE_IVI_HOMESCREEN_AGL_CLIENT > bool "AGL" > select BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT > > config BR2_PACKAGE_IVI_HOMESCREEN_IVI_SHELL > bool "ivi-shell" > select BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT > > [--SNIP--] > > +comment "plugins with external dependencies" > > +config BR2_PACKAGE_IVI_HOMESCREEN_AUDIO_PLAYERS > > + bool "Audio Players" > > + select BR2_PACKAGE_GSTREAMER1 > > Again, it's not clear what the dependencies inherited via either Well, presumably, the top-level dependencies! Although now I understand why you want all the top-level dependencies of flutter-engine to be listed. Makes sense! > BR2_PACKAGE_FLUTTER_ENGINE or BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS > are. > > > + select BR2_PACKAGE_GST1_PLUGINS_BASE > > + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA > > + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT > > + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE > > + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME > > + > > +config BR2_PACKAGE_IVI_HOMESCREEN_FLUTTER_SECURE_STORAGE_PLUGIN > > + bool "Flutter Secure Storage" > > + select BR2_PACKAGE_LIBSECRET > > + > > +config BR2_PACKAGE_IVI_HOMESCREEN_GOOGLE_SIGN_IN_PLUGIN > > + bool "Google Sign In manager" > > + select BR2_PACKAGE_LIBCURL > > Doesn't that also need an SSL/TLS capable libcurl? If so, then select > BR2_PACKAGE_LIBCURL_FORCE_TLS, and look at the comment for that option. > Good point, I'll add it in the next patch. > [--SNIP--] > > +config BR2_PACKAGE_IVI_HOMESCREEN_OPENGL_TEXTURE_PLUGIN > > + bool "OpenGL Texture" > > + depends on BR2_PACKAGE_HAS_LIBEGL > > + select BR2_PACKAGE_IVI_HOMESCREEN_EGL_TEXTURE > > BR2_PACKAGE_IVI_HOMESCREEN_EGL_TEXTURE is defined nowhere. > Will fix in the next revision > > +comment "OpenGL texture plugin needs an EGL backend" > > + depends on !BR2_PACKAGE_HAS_LIBEGL > > + > > +endif # BR2_PACKAGE_IVI_HOMESCREEN > > + > > +comment "flutter-auto needs flutter-engine" > > s/flutter-auto/ivi-homescreen/ > > [--SNIP--] > > diff --git a/package/ivi-homescreen/ivi-homescreen.mk b/package/ivi-homescreen/ivi-homescreen.mk > > new file mode 100644 > > index 0000000000..760390c125 > > --- /dev/null > > +++ b/package/ivi-homescreen/ivi-homescreen.mk > > @@ -0,0 +1,245 @@ > > +################################################################################ > > +# > > +# ivi-homescreen > > +# > > +################################################################################ > > + > > +IVI_HOMESCREEN_VERSION = 5ab78a19e95c88cc5d6b173ab1260a211e78cf0a > > +IVI_HOMESCREEN_SITE = https://github.com/toyota-connected/ivi-homescreen.git > > +IVI_HOMESCREEN_SITE_METHOD = git > > +IVI_HOMESCREEN_LICENSE = Apache-2.0 > > +IVI_HOMESCREEN_LICENSE_FILES = LICENSE > > The licensing is going to be a bit more complex: ivi-homescreen bundles > a few third-parties (in the aptly named third_party/ top-level > directory); I quickly had a look, and they have various other licensing > terms: > > third_party/agl/protocol/ MIT > third_party/asio-1-28-1/asio/ BSL-1.0 > > It also has a (partial?) flutter copy, which also bundles a few > third-parties of its own: > > third_party/flutter/ > third_party/flutter/third_party/rapidjson/include/rapidjson/ MIT > third_party/flutter/third_party/dart/runtime/include/ BSD-style > > Note that one refers to a LICENSE file, which is missing. > > third_party/googletest/ BSD-3c > third_party/sanitizers-cmake/ MIT > third_party/spdlog-1.12.0/ MIT > third_party/weston/protocol/ MIT > > The above is not exhaustive, so more research is needed. > Will do. I assume a simple IVI_HOMESCREEN_DEPENDENCIES += "${LICENSE}" works? > [--SNIP--] > > +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_EGL=ON > > Why is there no dependency on libegl? Good point > > > +else > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_EGL=OFF > > +endif > > > > +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_EGL_TRANSPARENCY),y) > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_TRANSPARENCY=ON > > +else > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_TRANSPARENCY=OFF > > +endif > > + > > +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_EGL_ENABLE_3D),y) > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_3D=ON > > +else > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_3D=OFF > > +endif > > + > > +ifeq ($(BR2_PACKAGE_IVI_HOMESCREEN_EGL_MULTISAMPLE),y) > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_MULTISAMPLE=ON > > +else > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_EGL_ENABLE_MULTISAMPLE=OFF > > +endif > > + > > +ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),y) > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_VULKAN=ON > > Why is a dependency on mesa3d not needed here? > > > +else > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_VULKAN=OFF > > +endif > > + > > +ifeq ($(BR2_PACKAGE_LIBDRM),y) > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_DRM=ON > > Ditto: don't we need a dependency on libdrm? > > > +else > > +IVI_HOMESCREEN_CONF_OPTS += -DBUILD_BACKEND_WAYLAND_DRM=OFF > > +endif > > Otherwise, all those ifeq-else-endif blocks are a bit verbose. I know > we use such constructs, but there is an alternative solution that is > less verbose, and quite fitting when there is no dependency to add with > the symbol: > > IVI_HOMESCREEN_CONF_OPTS += \ > -DBUILD_EGL_TRANSPARENCY=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_EGL_TRANSPARENCY),ON,OFF) \ > -DBUILD_EGL_ENABLE_3D=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_EGL_ENABLE_3D),ON,OFF) \ > -DBUILD_EGL_ENABLE_MULTISAMPLE=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_EGL_MULTISAMPLE),ON,OFF) \ > -DENABLE_XDG_CLIENT=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_XDG_CLIENT),ON,OFF) \ > -DENABLE_DLT=$(if $(BR2_PACKAGE_IVI_HOMESCREEN_DLT),ON,OFF) \ > ... > I debated on this and went against it because everything else was already in an ifeq-else-endif block. My OCD couldn't handle it. I'll be glad to switch it! > And keep using ifeq-else-endif blocks when there is an actual dependency > to add. > > (The big users of such constructs are opencv3 and opencv4, but there are > a few others as well.) > > Thank you for working on such complex packages! There is nothing really > major above, and I could have fixed most when applying, except for a few > questions I couldn't easily find the answer for. > No worries! I'll send a new version soon. > Regards, > Yann E. MORIN. > > -- > .-----------------.--------------------.------------------.--------------------. > | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | > | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | > | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | > | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | > '------------------------------^-------^------------------^--------------------' _______________________________________________ buildroot mailing list buildroot@buildroot.org https://lists.buildroot.org/mailman/listinfo/buildroot ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-01-06 18:16 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-01-03 2:06 [Buildroot] [PATCH v5 0/1] package/ivi-homescreen: new package Adam Duskett 2024-01-03 2:06 ` [Buildroot] [PATCH v5 1/1] " Adam Duskett 2024-01-06 17:28 ` Yann E. MORIN 2024-01-06 18:16 ` Adam Duskett
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox