package/ivi-homescreen: new package
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
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
[yann.morin.1998@free.fr:
- propagate BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS to comments
- drop NPTL, implied by glibc
- reorder dependencies in a more logical way
- reorder comments
- drop undefined BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT
- grammar ("for to change")
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-01-07 00:01:32 +01:00
|
|
|
menuconfig BR2_PACKAGE_IVI_HOMESCREEN
|
|
|
|
bool "ivi-homescreen"
|
|
|
|
depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS
|
|
|
|
depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS
|
|
|
|
depends on BR2_HOST_GCC_AT_LEAST_5 # flutter-engine
|
|
|
|
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # flutter-engine
|
|
|
|
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # flutter-engine
|
|
|
|
depends on BR2_TOOLCHAIN_USES_GLIBC # flutter-engine
|
|
|
|
depends on BR2_INSTALL_LIBSTDCPP # flutter-engine
|
|
|
|
depends on !BR2_STATIC_LIBS # flutter-engine, wayland
|
|
|
|
depends on BR2_USE_WCHAR # flutter-engine
|
|
|
|
depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES # flutter-engine
|
|
|
|
select BR2_PACKAGE_HOST_FLUTTER_SDK_BIN
|
|
|
|
select BR2_PACKAGE_FLUTTER_ENGINE
|
|
|
|
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_IVI_SHELL_CLIENT
|
|
|
|
bool "ivi-shell client"
|
|
|
|
|
|
|
|
comment "Logging"
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_DART_VM_LOGGING
|
|
|
|
bool "Enable Dart VM Logging"
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_DLT_LOGGING
|
|
|
|
bool "DLT logging"
|
|
|
|
|
|
|
|
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"
|
|
|
|
help
|
|
|
|
Flutter plugin to change window size.
|
|
|
|
|
|
|
|
https://pub.dev/packages/desktop_window
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_GO_ROUTER_PLUGIN
|
|
|
|
bool "Go Router"
|
|
|
|
help
|
|
|
|
A declarative routing package for Flutter that uses the
|
|
|
|
Router API to provide a convenient, url-based API for
|
|
|
|
navigating between different screens. You can define URL
|
|
|
|
patterns, navigate using a URL, handle deep links, and a
|
|
|
|
number of other navigation-related scenarios.
|
|
|
|
|
|
|
|
https://pub.dev/packages/go_router
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_INTEGRATION_TEST_PLUGIN
|
|
|
|
bool "Flutter Integration Test support"
|
|
|
|
help
|
|
|
|
https://docs.flutter.dev/cookbook/testing/integration/introduction
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_ISOLATE_PLUGIN
|
|
|
|
bool "Isolate"
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_KEYBOARD_MANAGER_PLUGIN
|
|
|
|
bool "Keyboard Manager"
|
|
|
|
select BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN # runtime
|
|
|
|
help
|
|
|
|
This is a wrapper for the raw keyboard listener made to
|
|
|
|
simplify intercept external keyboard button press.
|
|
|
|
|
|
|
|
https://pub.dev/packages/keyboard_manager
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_KEY_EVENT_PLUGIN
|
|
|
|
bool "Key Event"
|
|
|
|
select BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN # runtime
|
|
|
|
help
|
|
|
|
KeyEvent plugin to support RawKeyEvent.
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_LAYER_PLAYGROUND_PLUGIN
|
|
|
|
bool "Layer Playground"
|
|
|
|
select BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_VIEWS_PLUGIN
|
|
|
|
help
|
|
|
|
This plugin enables the platform views plugin and also
|
|
|
|
provides a simple-box-view-type option.
|
|
|
|
|
|
|
|
https://github.com/toyota-connected/ivi-homescreen/tree/main/shell/plugins/platform_views
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_LOGGING_PLUGIN
|
|
|
|
bool "Logging"
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_MOUSE_CURSOR_PLUGIN
|
|
|
|
bool "Mouse Cursor"
|
|
|
|
help
|
|
|
|
Add mouse cursor support.
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_PACKAGE_INFO_PLUGIN
|
|
|
|
bool "PackageInfo"
|
|
|
|
help
|
|
|
|
Prints the ivi-homescreen package information.
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_PLUGIN
|
|
|
|
bool "Platform"
|
|
|
|
help
|
|
|
|
Get information about the platform the Flutter application
|
|
|
|
is running on.
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_PLATFORM_VIEWS_PLUGIN
|
|
|
|
bool "Platform Views"
|
|
|
|
help
|
|
|
|
This plugin supports the AndroidView interface. Meaning you
|
|
|
|
can take any Platform View Dart code, change the definition
|
|
|
|
to use AndroidView, and you will have a working interface.
|
|
|
|
|
|
|
|
Benefits of using this interface:
|
|
|
|
- pre-defined interface that is supported in Flutter SDK
|
|
|
|
- params are easily augmented in Dart to add for given use
|
|
|
|
case
|
|
|
|
- pass touch to another process/library without additional
|
|
|
|
work
|
|
|
|
|
|
|
|
For a backing implementation there are a number of approaches:
|
|
|
|
- Have a PlatformView implementation render to a Texture
|
|
|
|
- Compositor Region support
|
|
|
|
(poke a hole for another process)
|
|
|
|
- Compositor sub-surface and manage Z-order
|
|
|
|
|
|
|
|
The above is already supported today using either an OpenGL
|
|
|
|
texture, or a Compositor Sub-Surface. Using Platform Views
|
|
|
|
just re-uses an existing interface.
|
|
|
|
|
|
|
|
https://github.com/toyota-connected/ivi-homescreen/tree/main/shell/plugins/platform_views
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_RESTORATION_PLUGIN
|
|
|
|
bool "Restoration"
|
|
|
|
help
|
|
|
|
Handles the Flutter restoration callback
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_TEXT_INPUT_PLUGIN
|
|
|
|
bool "Text Input"
|
|
|
|
help
|
|
|
|
Allow for text input
|
|
|
|
|
|
|
|
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
|
|
|
|
help
|
|
|
|
A Flutter plugin to play multiple simultaneously audio files.
|
|
|
|
Based on audioplayers-v5.2.1
|
|
|
|
|
|
|
|
https://pub.dev/packages/audioplayers
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_FLUTTER_SECURE_STORAGE_PLUGIN
|
|
|
|
bool "Flutter Secure Storage"
|
|
|
|
select BR2_PACKAGE_LIBSECRET
|
|
|
|
help
|
|
|
|
Store data in secure storage
|
|
|
|
|
|
|
|
https://pub.dev/packages/flutter_secure_storage
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_GOOGLE_SIGN_IN_PLUGIN
|
|
|
|
bool "Google Sign In manager"
|
|
|
|
select BR2_PACKAGE_LIBCURL
|
|
|
|
select BR2_PACKAGE_LIBCURL_FORCE_TLS
|
|
|
|
select BR2_PACKAGE_OPENSSL
|
|
|
|
help
|
|
|
|
This static plugin is to support this pub.dev package:
|
|
|
|
https://pub.dev/packages/google_sign_in
|
|
|
|
|
|
|
|
https://github.com/toyota-connected/ivi-homescreen/tree/main/shell/plugins/google_sign_in
|
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN
|
|
|
|
bool "GStreamer EGL"
|
|
|
|
depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS
|
|
|
|
depends on BR2_PACKAGE_HAS_LIBEGL
|
package/ivi-homescreen: fix dependencies for gstreamer plugin
The gstreamer plugin select the EGL backend of gst1-plugins-base, but
forgot to propagate all of its dependencies, notably the _HAS_API
condition, causing unmet dependencies warnings (unfortunately, not
errors), such as;
$ KCONFIG_SEED=0x597D22A8 make randconfig
WARNING: unmet direct dependencies detected for BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL
Depends on [n]: BR2_PACKAGE_GSTREAMER1 [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API [=n] && BR2_PACKAGE_HAS_LIBEGL [=y]
Selected by [y]:
- BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN [=y] && BR2_PACKAGE_IVI_HOMESCREEN [=y] && BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS [=y] && BR2_PACKAGE_HAS_LIBEGL [=y]
We can't select _HAS_API, because it is a symbol that represents a
capability provided by other features of gst1-plugins-base; it's
semantically like a virtual package: we can't select it, we can only
depend on it.
Add this dependency to fix this situation.
This however causes circular (recursive) dependencies errors:
package/gstreamer1/gst1-plugins-base/Config.in:135:error: recursive dependency detected!
package/gstreamer1/gst1-plugins-base/Config.in:135: symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL is selected by BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN
package/ivi-homescreen/Config.in:221: symbol BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API
package/gstreamer1/gst1-plugins-base/Config.in:149: symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API is selected by BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL
package/gstreamer1/gst1-plugins-base/Config.in:152: symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL
Indeed, _HAS_API is only even set when gstreamer1, gst1-plugins-base,
and the gst1-plugins-base's lib-opengl support, are all already enabled.
As such, the dependency on _HAS_API already implies those, and there is
no need to select them.
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Adam Duskett <adam.duskett@amarulasolutions.com>
Reviewed-by: Adam Duskett <Adam.Duskett@amarulasolutions.com>
Tested-by: Adam Duskett <Adam.Duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-01-28 14:20:51 +01:00
|
|
|
depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API # GST1_PLUGINS_BASE_LIB_OPENGL_EGL
|
package/ivi-homescreen: new package
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
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
[yann.morin.1998@free.fr:
- propagate BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS to comments
- drop NPTL, implied by glibc
- reorder dependencies in a more logical way
- reorder comments
- drop undefined BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT
- grammar ("for to change")
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-01-07 00:01:32 +01:00
|
|
|
select BR2_PACKAGE_FFMPEG
|
|
|
|
select BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL
|
|
|
|
help
|
|
|
|
A GStreamer-powered alternative to Flutter's video_player that
|
|
|
|
support Linux, iOS and Android.
|
|
|
|
|
|
|
|
https://pub.dev/packages/flutter_gstreamer_player
|
|
|
|
|
package/ivi-homescreen: fix dependencies for gstreamer plugin
The gstreamer plugin select the EGL backend of gst1-plugins-base, but
forgot to propagate all of its dependencies, notably the _HAS_API
condition, causing unmet dependencies warnings (unfortunately, not
errors), such as;
$ KCONFIG_SEED=0x597D22A8 make randconfig
WARNING: unmet direct dependencies detected for BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL
Depends on [n]: BR2_PACKAGE_GSTREAMER1 [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API [=n] && BR2_PACKAGE_HAS_LIBEGL [=y]
Selected by [y]:
- BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN [=y] && BR2_PACKAGE_IVI_HOMESCREEN [=y] && BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS [=y] && BR2_PACKAGE_HAS_LIBEGL [=y]
We can't select _HAS_API, because it is a symbol that represents a
capability provided by other features of gst1-plugins-base; it's
semantically like a virtual package: we can't select it, we can only
depend on it.
Add this dependency to fix this situation.
This however causes circular (recursive) dependencies errors:
package/gstreamer1/gst1-plugins-base/Config.in:135:error: recursive dependency detected!
package/gstreamer1/gst1-plugins-base/Config.in:135: symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL is selected by BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN
package/ivi-homescreen/Config.in:221: symbol BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API
package/gstreamer1/gst1-plugins-base/Config.in:149: symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API is selected by BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL
package/gstreamer1/gst1-plugins-base/Config.in:152: symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL
Indeed, _HAS_API is only even set when gstreamer1, gst1-plugins-base,
and the gst1-plugins-base's lib-opengl support, are all already enabled.
As such, the dependency on _HAS_API already implies those, and there is
no need to select them.
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Adam Duskett <adam.duskett@amarulasolutions.com>
Reviewed-by: Adam Duskett <Adam.Duskett@amarulasolutions.com>
Tested-by: Adam Duskett <Adam.Duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-01-28 14:20:51 +01:00
|
|
|
comment "GStreamer plugin needs gst1-plugins-base with an EGL backend"
|
package/ivi-homescreen: new package
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
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
[yann.morin.1998@free.fr:
- propagate BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS to comments
- drop NPTL, implied by glibc
- reorder dependencies in a more logical way
- reorder comments
- drop undefined BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT
- grammar ("for to change")
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-01-07 00:01:32 +01:00
|
|
|
depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS
|
package/ivi-homescreen: fix dependencies for gstreamer plugin
The gstreamer plugin select the EGL backend of gst1-plugins-base, but
forgot to propagate all of its dependencies, notably the _HAS_API
condition, causing unmet dependencies warnings (unfortunately, not
errors), such as;
$ KCONFIG_SEED=0x597D22A8 make randconfig
WARNING: unmet direct dependencies detected for BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL
Depends on [n]: BR2_PACKAGE_GSTREAMER1 [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL [=y] && BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API [=n] && BR2_PACKAGE_HAS_LIBEGL [=y]
Selected by [y]:
- BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN [=y] && BR2_PACKAGE_IVI_HOMESCREEN [=y] && BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS [=y] && BR2_PACKAGE_HAS_LIBEGL [=y]
We can't select _HAS_API, because it is a symbol that represents a
capability provided by other features of gst1-plugins-base; it's
semantically like a virtual package: we can't select it, we can only
depend on it.
Add this dependency to fix this situation.
This however causes circular (recursive) dependencies errors:
package/gstreamer1/gst1-plugins-base/Config.in:135:error: recursive dependency detected!
package/gstreamer1/gst1-plugins-base/Config.in:135: symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL is selected by BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN
package/ivi-homescreen/Config.in:221: symbol BR2_PACKAGE_IVI_HOMESCREEN_GSTREAMER_EGL_PLUGIN depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API
package/gstreamer1/gst1-plugins-base/Config.in:149: symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API is selected by BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL
package/gstreamer1/gst1-plugins-base/Config.in:152: symbol BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL depends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL
Indeed, _HAS_API is only even set when gstreamer1, gst1-plugins-base,
and the gst1-plugins-base's lib-opengl support, are all already enabled.
As such, the dependency on _HAS_API already implies those, and there is
no need to select them.
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Adam Duskett <adam.duskett@amarulasolutions.com>
Reviewed-by: Adam Duskett <Adam.Duskett@amarulasolutions.com>
Tested-by: Adam Duskett <Adam.Duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-01-28 14:20:51 +01:00
|
|
|
depends on !BR2_PACKAGE_HAS_LIBEGL \
|
|
|
|
|| !BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API
|
package/ivi-homescreen: new package
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
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
[yann.morin.1998@free.fr:
- propagate BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS to comments
- drop NPTL, implied by glibc
- reorder dependencies in a more logical way
- reorder comments
- drop undefined BR2_PACKAGE_IVI_HOMESCREEN_HAS_CLIENT
- grammar ("for to change")
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-01-07 00:01:32 +01:00
|
|
|
|
|
|
|
config BR2_PACKAGE_IVI_HOMESCREEN_OPENGL_TEXTURE_PLUGIN
|
|
|
|
bool "OpenGL Texture"
|
|
|
|
depends on BR2_PACKAGE_HAS_LIBEGL
|
|
|
|
help
|
|
|
|
A Flutter OpenGL ES plugin using a Texture() widget.
|
|
|
|
Many shaders from ShaderToy.com can be copy/pasted
|
|
|
|
|
|
|
|
https://pub.dev/packages/flutter_opengl
|
|
|
|
|
|
|
|
comment "OpenGL texture plugin needs an EGL backend"
|
|
|
|
depends on !BR2_PACKAGE_HAS_LIBEGL
|
|
|
|
|
|
|
|
endif # BR2_PACKAGE_IVI_HOMESCREEN
|
|
|
|
|
|
|
|
comment "ivi-homescreen needs a glibc toolchain w/ wchar, C++, gcc >= 5, dynamic library, host gcc >= 5, NPTL"
|
|
|
|
depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS
|
|
|
|
depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS
|
|
|
|
depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \
|
|
|
|
|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 \
|
|
|
|
|| BR2_STATIC_LIBS || !BR2_USE_WCHAR \
|
|
|
|
|| !BR2_HOST_GCC_AT_LEAST_5
|
|
|
|
|
|
|
|
comment "ivi-homescreen needs a toolchain not affected by GCC bug 64735"
|
|
|
|
depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS
|
|
|
|
depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS
|
|
|
|
depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
|
|
|
|
|
|
|
|
comment "ivi-homescreen needs an OpenGL or OpenGLES backend"
|
|
|
|
depends on BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS
|
|
|
|
depends on BR2_PACKAGE_FLUTTER_ENGINE_ARCH_SUPPORTS
|
|
|
|
depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES
|