diff options
Diffstat (limited to 'meta-agl-flutter')
19 files changed, 492 insertions, 63 deletions
diff --git a/meta-agl-flutter/conf/include/agl-flutter.inc b/meta-agl-flutter/conf/include/agl-flutter.inc index 38db25e86..6d60bc4a2 100644 --- a/meta-agl-flutter/conf/include/agl-flutter.inc +++ b/meta-agl-flutter/conf/include/agl-flutter.inc @@ -1,3 +1,3 @@ AGL_FEATURES += "agl-flutter" -FLUTTER_SDK_TAG = "3.19.3" +FLUTTER_SDK_TAG = "3.24.2" diff --git a/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-gallery/flutter-gallery.service b/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-gallery/flutter-gallery.service deleted file mode 100644 index 0b29c3f82..000000000 --- a/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-gallery/flutter-gallery.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Requires=agl-compositor.service -After=agl-compositor.service - -[Service] -User=agl-driver -EnvironmentFile=/etc/default/flutter -EnvironmentFile=-/etc/default/flutter-gallery -Environment=XDG_RUNTIME_DIR=/run/user/1001/ -ExecStart=/usr/bin/flutter-auto --b=/usr/share/flutter/flutter-gallery/${FLUTTER_VERSION}/${FLUTTER_RUNTIME} --f --window-type=BG --xdg-shell-app-id=flutter-gallery - -[Install] -WantedBy=graphical.target diff --git a/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-gallery_aglflutter.inc b/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-gallery_aglflutter.inc deleted file mode 100644 index 68c07f188..000000000 --- a/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-gallery_aglflutter.inc +++ /dev/null @@ -1,13 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/flutter-gallery:" - -SRC_URI += "file://flutter-gallery.service" - -inherit systemd - -do_install:append() { - install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_system_unitdir}/${BPN}.service -} - -RDEPENDS:${PN} += "agl-flutter-env" - -SYSTEMD_SERVICE:${PN} = "flutter-gallery.service" diff --git a/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo/flutter-samples-material-3-demo.service b/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo/flutter-samples-material-3-demo.service new file mode 100644 index 000000000..f3f4a94b1 --- /dev/null +++ b/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo/flutter-samples-material-3-demo.service @@ -0,0 +1,13 @@ +[Unit] +Requires=agl-compositor.service +After=agl-compositor.service + +[Service] +User=agl-driver +EnvironmentFile=/etc/default/flutter +EnvironmentFile=-/etc/default/flutter-samples-material-3-demo +Environment=XDG_RUNTIME_DIR=/run/user/1001/ +ExecStart=/usr/bin/flutter-auto -b /usr/share/flutter/flutter-samples-material-3-demo/${FLUTTER_VERSION}/${FLUTTER_RUNTIME} -xdg-shell-app-id flutter-samples-material-3-demo + +[Install] +WantedBy=graphical.target diff --git a/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo/flutter-samples-material-3-demo.toml b/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo/flutter-samples-material-3-demo.toml new file mode 100644 index 000000000..cb78ab0cd --- /dev/null +++ b/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo/flutter-samples-material-3-demo.toml @@ -0,0 +1,5 @@ +[view] +window_type = "BG" +width = 1080 +height = 1920 +fullscreen = true diff --git a/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-gallery_%.bbappend b/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo_%.bbappend index 835e86e66..0baa7a045 100644 --- a/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-gallery_%.bbappend +++ b/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo_%.bbappend @@ -1 +1 @@ -require ${@bb.utils.contains('AGL_FEATURES', 'agl-flutter', 'flutter-gallery_aglflutter.inc', '', d)} +require ${@bb.utils.contains('AGL_FEATURES', 'agl-flutter', 'flutter-samples-material-3-demo_aglflutter.inc', '', d)} diff --git a/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo_aglflutter.inc b/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo_aglflutter.inc new file mode 100644 index 000000000..971756ad7 --- /dev/null +++ b/meta-agl-flutter/dynamic-layers/flutter-apps-layer/recipes-graphics/flutter-apps/first-party/flutter-samples-material-3-demo_aglflutter.inc @@ -0,0 +1,22 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/flutter-samples-material-3-demo:" + +SRC_URI += "file://flutter-samples-material-3-demo.service" + +APP_CONFIG = "flutter-samples-material-3-demo.toml" + +inherit systemd + +do_install:append() { + install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_system_unitdir}/${BPN}.service + + # determine build type based on what flutter-engine installed. + for runtime_mode in ${FLUTTER_RUNTIME_MODES} + do + install -D -m 0644 ${WORKDIR}/${APP_CONFIG} \ + ${D}${datadir}/flutter/${PUBSPEC_APPNAME}/${FLUTTER_SDK_VERSION}/${runtime_mode}/config.toml + done +} + +RDEPENDS:${PN} += "agl-flutter-env" + +SYSTEMD_SERVICE:${PN} = "flutter-samples-material-3-demo.service" diff --git a/meta-agl-flutter/recipes-graphics/toyota/files/0001-backend-wayland_egl-Add-a-fallback-eglConfig.patch b/meta-agl-flutter/recipes-graphics/toyota/files/0001-backend-wayland_egl-Add-a-fallback-eglConfig.patch new file mode 100644 index 000000000..f2195dddc --- /dev/null +++ b/meta-agl-flutter/recipes-graphics/toyota/files/0001-backend-wayland_egl-Add-a-fallback-eglConfig.patch @@ -0,0 +1,88 @@ +From 372b9c4edd42b67827b75863b978091ba5cff5cd Mon Sep 17 00:00:00 2001 +From: Marius Vlad <marius.vlad@collabora.com> +Date: Thu, 17 Oct 2024 17:25:41 +0300 +Subject: [PATCH 1/2] backend/wayland_egl: Add a fallback eglConfig + +This seems to aid flutter-auto at displaying an image on agl-rdp +with software rendering, and on agl-kvm with virgl. Makes uses of a fallback +eGLConfig (< 24 bit) and tries to use that one rather than the default one (24-bit). + +Bug-AGL: SPEC-5260 +Signed-off-by: Marius Vlad <marius.vlad@collabora.com> +--- + cmake/config_common.h.in | 17 ++++++++++++++++- + shell/backend/wayland_egl/egl.cc | 23 ++++++++++++++++++++--- + 2 files changed, 36 insertions(+), 4 deletions(-) + +diff --git a/cmake/config_common.h.in b/cmake/config_common.h.in +index 07ce9b7..2c54c67 100644 +--- a/cmake/config_common.h.in ++++ b/cmake/config_common.h.in +@@ -155,6 +155,21 @@ static constexpr std::array<EGLint, 27> kEglConfigAttribs = {{ + // clang-format on + }}; + ++ ++static constexpr std::array<EGLint, 27> kEglConfigAttribsFallBack = {{ ++ // clang-format off ++ EGL_SURFACE_TYPE, EGL_WINDOW_BIT, ++ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, ++ ++ EGL_RED_SIZE, 1, ++ EGL_GREEN_SIZE, 1, ++ EGL_BLUE_SIZE, 1, ++ EGL_ALPHA_SIZE, 2, ++ EGL_NONE // termination sentinel ++ // clang-format on ++}}; ++ ++ + // All vkCreate* functions take an optional allocator. For now, we select the + // default allocator by passing in a null pointer, and we highlight the argument + // by using the VKALLOC constant. +@@ -181,4 +196,4 @@ constexpr struct VkAllocationCallbacks* VKALLOC = nullptr; + #cmakedefine01 ENV32BIT + #cmakedefine01 ENV64BIT + +-#endif //CONFIG_COMMON_H_ +\ No newline at end of file ++#endif //CONFIG_COMMON_H_ +diff --git a/shell/backend/wayland_egl/egl.cc b/shell/backend/wayland_egl/egl.cc +index 99555d6..70164ba 100644 +--- a/shell/backend/wayland_egl/egl.cc ++++ b/shell/backend/wayland_egl/egl.cc +@@ -62,11 +62,28 @@ Egl::Egl(void* native_display, int buffer_size, bool debug) + break; + } + } +- free(configs); + if (m_config == nullptr) { +- spdlog::critical("did not find config with buffer size {}", m_buffer_size); +- assert(false); ++ // try with the fallback one ++ spdlog::critical("Could not use default EGLConfig trying with fallback."); ++ ret = eglChooseConfig(m_dpy, kEglConfigAttribsFallBack.data(), configs, ++ count, &n); ++ assert(ret && n >= 1); ++ ++ for (EGLint i = 0; i < n; i++) { ++ eglGetConfigAttrib(m_dpy, configs[i], EGL_BUFFER_SIZE, &size); ++ SPDLOG_DEBUG("Buffer size for config {} is {}", i, size); ++ if (m_buffer_size <= size) { ++ memcpy(&m_config, &configs[i], sizeof(EGLConfig)); ++ break; ++ } ++ } ++ if (m_config == nullptr) { ++ spdlog::critical("did not find config with buffer size {}", ++ m_buffer_size); ++ assert(false); ++ } + } ++ free(configs); + + m_context = eglCreateContext(m_dpy, m_config, EGL_NO_CONTEXT, + kEglContextAttribs.data()); +-- +2.43.0 + diff --git a/meta-agl-flutter/recipes-graphics/toyota/files/0001-flutter_desktop-Remove-asio-post-call.patch b/meta-agl-flutter/recipes-graphics/toyota/files/0001-flutter_desktop-Remove-asio-post-call.patch new file mode 100644 index 000000000..f9cfea44d --- /dev/null +++ b/meta-agl-flutter/recipes-graphics/toyota/files/0001-flutter_desktop-Remove-asio-post-call.patch @@ -0,0 +1,94 @@ +From a69dfff93b41b30ae8e237817548baf50d0c1287 Mon Sep 17 00:00:00 2001 +From: Marius Vlad <marius.vlad@collabora.com> +Date: Thu, 24 Oct 2024 14:45:35 +0300 +Subject: [PATCH] flutter_desktop: Remove asio::post call + +Do not dispatch/post the key event keycode using asio::post as that +seems to cause crashes as the messenger pointer seems to be go out of +scope or seems to be invalid. + +Bug-AGL: SPEC-5272 +Signed-off-by: Marius Vlad <marius.vlad@collabora.com> +--- + shell/platform/homescreen/flutter_desktop.cc | 65 ++++++++++---------- + 1 file changed, 31 insertions(+), 34 deletions(-) + +diff --git a/shell/platform/homescreen/flutter_desktop.cc b/shell/platform/homescreen/flutter_desktop.cc +index bb5be4b..5d26dd9 100644 +--- a/shell/platform/homescreen/flutter_desktop.cc ++++ b/shell/platform/homescreen/flutter_desktop.cc +@@ -161,40 +161,37 @@ std::future<bool> PostMessengerSendWithReply( + void* user_data) { + const auto promise(std::make_shared<std::promise<bool>>()); + auto promise_future(promise->get_future()); +- asio::post(*messenger->GetEngine()->platform_task_runner->GetStrandContext(), +- [&, promise, channel, message, message_size, reply, user_data]() { +- FlutterPlatformMessageResponseHandle* response_handle = nullptr; +- if (reply != nullptr && user_data != nullptr) { +- const FlutterEngineResult result = +- LibFlutterEngine->PlatformMessageCreateResponseHandle( +- messenger->GetEngine()->flutter_engine, reply, +- user_data, &response_handle); +- if (result != kSuccess) { +- spdlog::error("Failed to create response handle"); +- promise->set_value(false); +- return; +- } +- } +- +- auto platform_message = std::make_unique<FlutterPlatformMessage>(); +- platform_message->struct_size = sizeof(FlutterPlatformMessage); +- platform_message->channel = channel; +- platform_message->message = message; +- platform_message->message_size = message_size; +- platform_message->response_handle = response_handle; +- +- const FlutterEngineResult message_result = +- LibFlutterEngine->SendPlatformMessage( +- messenger->GetEngine()->flutter_engine, +- platform_message.release()); +- +- if (response_handle != nullptr) { +- LibFlutterEngine->PlatformMessageReleaseResponseHandle( +- messenger->GetEngine()->flutter_engine, response_handle); +- } +- +- promise->set_value(message_result == kSuccess); +- }); ++ ++ FlutterPlatformMessageResponseHandle* response_handle = nullptr; ++ if (reply != nullptr && user_data != nullptr) { ++ const FlutterEngineResult result = ++ LibFlutterEngine->PlatformMessageCreateResponseHandle( ++ messenger->GetEngine()->flutter_engine, reply, user_data, ++ &response_handle); ++ if (result != kSuccess) { ++ spdlog::error("Failed to create response handle"); ++ promise->set_value(false); ++ return promise_future; ++ } ++ } ++ ++ auto platform_message = std::make_unique<FlutterPlatformMessage>(); ++ platform_message->struct_size = sizeof(FlutterPlatformMessage); ++ platform_message->channel = channel; ++ platform_message->message = message; ++ platform_message->message_size = message_size; ++ platform_message->response_handle = response_handle; ++ ++ const FlutterEngineResult message_result = ++ LibFlutterEngine->SendPlatformMessage( ++ messenger->GetEngine()->flutter_engine, platform_message.release()); ++ ++ if (response_handle != nullptr) { ++ LibFlutterEngine->PlatformMessageReleaseResponseHandle( ++ messenger->GetEngine()->flutter_engine, response_handle); ++ } ++ ++ promise->set_value(message_result == kSuccess); + return promise_future; + } + +-- +2.43.0 + diff --git a/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_aglflutter.inc b/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_aglflutter.inc index 7ba85a34d..29c023fca 100644 --- a/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_aglflutter.inc +++ b/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_aglflutter.inc @@ -1,3 +1,12 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/files:" +EGLCONFIG_FALLBACK = "${@bb.utils.contains_any('AGL_FEATURES', 'agl-rdp agl-kvm-guest', '', 'file://0001-backend-wayland_egl-Add-a-fallback-eglConfig.patch', d)}" SRC_URI:append:use-nxp-bsp = " file://0001-Disable-on_frame_base_surface-wl_surface_commit.patch" +SRC_URI:append = " ${EGLCONFIG_FALLBACK}" + +# necessary to avoid crashing flutter-auto when a key keyboard event is emitted +SRC_URI:append = " file://0001-flutter_desktop-Remove-asio-post-call.patch" + +# Disable WIP webview plugin on 32-bit ARM platforms for now, as build +# failures have been seen on qemuarm and beaglebone. +PACKAGECONFIG:remove:arm = "webview_flutter_view" diff --git a/meta-agl-flutter/recipes-platform/images/agl-image-flutter-debug.bb b/meta-agl-flutter/recipes-platform/images/agl-image-flutter-debug.bb index c9c1f2980..9b4b08398 100644 --- a/meta-agl-flutter/recipes-platform/images/agl-image-flutter-debug.bb +++ b/meta-agl-flutter/recipes-platform/images/agl-image-flutter-debug.bb @@ -25,5 +25,5 @@ IMAGE_INSTALL += "\ \ flutter-engine-sdk-dev \ \ - flutter-gallery \ + flutter-samples-material-3-demo \ " diff --git a/meta-agl-flutter/recipes-platform/images/agl-image-flutter.bb b/meta-agl-flutter/recipes-platform/images/agl-image-flutter.bb index 0fdb7da08..700f540ed 100644 --- a/meta-agl-flutter/recipes-platform/images/agl-image-flutter.bb +++ b/meta-agl-flutter/recipes-platform/images/agl-image-flutter.bb @@ -12,5 +12,5 @@ IMAGE_INSTALL += "\ \ flutter-auto \ \ - flutter-gallery \ + flutter-samples-material-3-demo \ " diff --git a/meta-agl-flutter/tools/configs/_globals.json b/meta-agl-flutter/tools/configs/_globals.json index 4caf9e8a0..1830c8d40 100644 --- a/meta-agl-flutter/tools/configs/_globals.json +++ b/meta-agl-flutter/tools/configs/_globals.json @@ -1,5 +1,5 @@ { - "flutter-version": "3.19.3", + "flutter-version": "3.24.1", "github_token": "", "cookie_file": "" -}
\ No newline at end of file +} diff --git a/meta-agl-flutter/tools/configs/_repos.json b/meta-agl-flutter/tools/configs/_repos.json index 5bc0562e2..5fb8aa047 100644 --- a/meta-agl-flutter/tools/configs/_repos.json +++ b/meta-agl-flutter/tools/configs/_repos.json @@ -1,7 +1,12 @@ [ { "uri": "https://github.com/toyota-connected/ivi-homescreen.git", - "rev": "ea89b1de0a40c0d447ded305645556c978cfa696", + "rev": "e87c1797f838e20f0a4c1af309541d63986058ca", + "branch": "v2.0" + }, + { + "uri": "https://github.com/toyota-connected/ivi-homescreen-plugins.git", + "rev": "41d00635f89c064aa32f2cef3147c59b8f61694f", "branch": "v2.0" }, { diff --git a/meta-agl-flutter/tools/configs/agl-qemu-master.json b/meta-agl-flutter/tools/configs/agl-qemu-master.json index eba953f7d..dae014a58 100644 --- a/meta-agl-flutter/tools/configs/agl-qemu-master.json +++ b/meta-agl-flutter/tools/configs/agl-qemu-master.json @@ -21,11 +21,11 @@ "DEVICE_HOSTNAME": "localhost", "FLUTTER_AUTO_EXE": "flutter-auto --j=/tmp/${appName}/default_config.json --b=/tmp/${appName}", "PING_CMD": "(echo >/dev/tcp/localhost/${CONTAINER_SSH_PORT}) &>/dev/null && echo open || echo closed", - "DELETE_USER_PWD": "ssh -p ${CONTAINER_SSH_PORT} -t -oBatchMode=yes root@${DEVICE_HOSTNAME} passwd -d agl-driver", - "CREATE_BUNDLE_FOLDER": "ssh -p ${CONTAINER_SSH_PORT} -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} mkdir -p /tmp/${appName}/data", - "COPY_PLATFORM_ID_TO_DEVICE": "scp -P ${CONTAINER_SSH_PORT} -r ${PLATFORM_ID_DIR}/default_config.json agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/", - "COPY_ASSETS_TO_DEVICE": "scp -P ${CONTAINER_SSH_PORT} -r ${localPath}/* agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/data/flutter_assets", - "DELETE_APP_FOLDER": "ssh -p ${CONTAINER_SSH_PORT} -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} rm -rf /tmp/${appName}" + "DELETE_USER_PWD": "ssh -oStrictHostKeyChecking=no -p ${CONTAINER_SSH_PORT} -t -oBatchMode=yes root@${DEVICE_HOSTNAME} passwd -d agl-driver", + "CREATE_BUNDLE_FOLDER": "ssh -oStrictHostKeyChecking=no -p ${CONTAINER_SSH_PORT} -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} mkdir -p /tmp/${appName}/data", + "COPY_PLATFORM_ID_TO_DEVICE": "scp -oStrictHostKeyChecking=no -P ${CONTAINER_SSH_PORT} -r ${PLATFORM_ID_DIR}/default_config.json agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/", + "COPY_ASSETS_TO_DEVICE": "scp -oStrictHostKeyChecking=no -P ${CONTAINER_SSH_PORT} -r ${localPath}/* agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/data/flutter_assets", + "DELETE_APP_FOLDER": "ssh -oStrictHostKeyChecking=no -p ${CONTAINER_SSH_PORT} -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} rm -rf /tmp/${appName}" }, "runtime": { "config": { @@ -106,9 +106,9 @@ "postBuild": "bash -c \"${DELETE_USER_PWD}\"", "install": "bash -c \"${CREATE_BUNDLE_FOLDER} && ${COPY_PLATFORM_ID_TO_DEVICE} && ${COPY_ASSETS_TO_DEVICE}\"", "uninstall": "bash -c \"${DELETE_APP_FOLDER}\"", - "runDebug": "bash -c \"ssh -t -t -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} ${FLUTTER_AUTO_EXE}\"", + "runDebug": "bash -c \"ssh -oStrictHostKeyChecking=no -t -t -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} ${FLUTTER_AUTO_EXE}\"", "forwardPort": null, "forwardPortSuccessRegex": null, "screenshot": null } -}
\ No newline at end of file +} diff --git a/meta-agl-flutter/tools/configs/agl-qemu-octopus.json b/meta-agl-flutter/tools/configs/agl-qemu-octopus.json index dba5a8820..20e20e0c1 100644 --- a/meta-agl-flutter/tools/configs/agl-qemu-octopus.json +++ b/meta-agl-flutter/tools/configs/agl-qemu-octopus.json @@ -21,11 +21,11 @@ "DEVICE_HOSTNAME": "localhost", "FLUTTER_AUTO_EXE": "flutter-auto --j=/tmp/${appName}/default_config.json --b=/tmp/${appName}", "PING_CMD": "(echo >/dev/tcp/localhost/${CONTAINER_SSH_PORT}) &>/dev/null && echo open || echo closed", - "DELETE_USER_PWD": "ssh -p ${CONTAINER_SSH_PORT} -t -oBatchMode=yes root@${DEVICE_HOSTNAME} passwd -d agl-driver", - "CREATE_BUNDLE_FOLDER": "ssh -p ${CONTAINER_SSH_PORT} -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} mkdir -p /tmp/${appName}/data", - "COPY_PLATFORM_ID_TO_DEVICE": "scp -P ${CONTAINER_SSH_PORT} -r ${PLATFORM_ID_DIR}/default_config.json agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/", - "COPY_ASSETS_TO_DEVICE": "scp -P ${CONTAINER_SSH_PORT} -r ${localPath}/* agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/data/flutter_assets", - "DELETE_APP_FOLDER": "ssh -p ${CONTAINER_SSH_PORT} -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} rm -rf /tmp/${appName}" + "DELETE_USER_PWD": "ssh -oStrictHostKeyChecking=no -p ${CONTAINER_SSH_PORT} -t -oBatchMode=yes root@${DEVICE_HOSTNAME} passwd -d agl-driver", + "CREATE_BUNDLE_FOLDER": "ssh -oStrictHostKeyChecking=no -p ${CONTAINER_SSH_PORT} -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} mkdir -p /tmp/${appName}/data", + "COPY_PLATFORM_ID_TO_DEVICE": "scp -oStrictHostKeyChecking=no -P ${CONTAINER_SSH_PORT} -r ${PLATFORM_ID_DIR}/default_config.json agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/", + "COPY_ASSETS_TO_DEVICE": "scp -oStrictHostKeyChecking=no -P ${CONTAINER_SSH_PORT} -r ${localPath}/* agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/data/flutter_assets", + "DELETE_APP_FOLDER": "ssh -oStrictHostKeyChecking=no -p ${CONTAINER_SSH_PORT} -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} rm -rf /tmp/${appName}" }, "runtime": { "config": { @@ -106,9 +106,9 @@ "postBuild": "bash -c \"${DELETE_USER_PWD}\"", "install": "bash -c \"${CREATE_BUNDLE_FOLDER} && ${COPY_PLATFORM_ID_TO_DEVICE} && ${COPY_ASSETS_TO_DEVICE}\"", "uninstall": "bash -c \"${DELETE_APP_FOLDER}\"", - "runDebug": "bash -c \"ssh -t -t -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} ${FLUTTER_AUTO_EXE}\"", + "runDebug": "bash -c \"ssh -oStrictHostKeyChecking=no -t -t -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} ${FLUTTER_AUTO_EXE}\"", "forwardPort": null, "forwardPortSuccessRegex": null, "screenshot": null } -}
\ No newline at end of file +} diff --git a/meta-agl-flutter/tools/configs/agl-qemu-ricefish-18.0.0.json b/meta-agl-flutter/tools/configs/agl-qemu-ricefish-18.0.0.json new file mode 100644 index 000000000..c03e34707 --- /dev/null +++ b/meta-agl-flutter/tools/configs/agl-qemu-ricefish-18.0.0.json @@ -0,0 +1,112 @@ +{ + "id": "agl-qemu-ricefish-18.0.0", + "load": true, + "supported_archs": [ + "x86_64" + ], + "supported_host_types": [ + "darwin", + "ubuntu", + "fedora" + ], + "flutter_runtime": "debug", + "type": "qemu", + "env": { + "RELEASE_NAME": "ricefish", + "RELEASE_VERSION": "18.0.0", + "FLUTTER_VERSION": "3.24.1", + "QEMU_IMAGE": "agl-ivi-demo-flutter-qemux86-64.wic.vmdk", + "FLUTTER_DEBUG_PORT": "1234", + "FLUTTER_OBSERVATORY_HOST": "0.0.0.0", + "CONTAINER_SSH_PORT": "2222", + "DEVICE_HOSTNAME": "localhost", + "SCP_PREFIX": "scp -oStrictHostKeyChecking=no -P ${CONTAINER_SSH_PORT}", + "SSH_PREFIX": "ssh -oStrictHostKeyChecking=no -oBatchMode=yes -p ${CONTAINER_SSH_PORT}", + "FLUTTER_AUTO_EXE": "LIBCAMERA_LOG_LEVELS=*:ERROR XDG_RUNTIME_DIR=/run/user/1001/ flutter-auto --j=/tmp/${appName}/default_config.json --b=/tmp/${appName}", + "PING_CMD": "(echo >/dev/tcp/localhost/${CONTAINER_SSH_PORT}) &>/dev/null && echo open || echo closed", + "DELETE_USER_PWD": "${SSH_PREFIX} -t root@${DEVICE_HOSTNAME} passwd -d agl-driver", + "STOP_SERVICE": "${SSH_PREFIX} -t root@${DEVICE_HOSTNAME} systemctl stop flutter-ics-homescreen", + "DEBUG_ARTIFACT_PATH": "/usr/share/flutter/${FLUTTER_VERSION}/debug", + "CREATE_ICUDTL_SYMLINK": "${SSH_PREFIX} agl-driver@${DEVICE_HOSTNAME} ln -sf ${DEBUG_ARTIFACT_PATH}/data/icudtl.dat /tmp/${appName}/data/icudtl.dat", + "CREATE_ENGINE_SYMLINK": "${SSH_PREFIX} agl-driver@${DEVICE_HOSTNAME} ln -sf ${DEBUG_ARTIFACT_PATH}/lib/libflutter_engine.so /tmp/${appName}/lib/libflutter_engine.so", + "CREATE_BUNDLE_FOLDER": "${SSH_PREFIX} agl-driver@${DEVICE_HOSTNAME} mkdir -p /tmp/${appName}{/data/flutter_assets,/lib}", + "COPY_PLATFORM_ID_TO_DEVICE": "${SCP_PREFIX} -r ${PLATFORM_ID_DIR}/default_config.json agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/", + "COPY_ASSETS_TO_DEVICE": "${SCP_PREFIX} -r ${localPath}/* agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/data/flutter_assets", + "DELETE_APP_FOLDER": "${SSH_PREFIX} agl-driver@${DEVICE_HOSTNAME} rm -rf /tmp/${appName}" + }, + "runtime": { + "pre-requisites": { + "x86_64": { + "ubuntu": { + "cmds": [ + "sudo apt install -y qemu-system-x86-64" + ] + }, + "fedora": { + "cmds": [ + "sudo dnf install -y qemu" + ] + } + } + }, + "config": { + "view": [ + { + "window_type": "BG", + "width": 1920, + "height": 1080 + } + ] + }, + "artifacts": { + "http": { + "url": "https://download.automotivelinux.org/AGL/release/${RELEASE_NAME}/${RELEASE_VERSION}", + "artifacts": { + "x86_64": [ + { + "endpoint": "/qemux86-64/deploy/images/qemux86-64/${QEMU_IMAGE}.xz" + } + ] + } + } + }, + "qemu": { + "cmd": "qemu-system-${FORMAL_MACHINE_ARCH}", + "x86_64": { + "image": "${QEMU_IMAGE}", + "args": "-m 2048 ${QEMU_EXTRA} -hda ${QEMU_IMAGE} -cpu kvm64 -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+popcnt -vga virtio -device virtio-rng-pci -serial mon:stdio -serial null -device intel-hda -device hda-duplex -device virtio-net-pci,netdev=net0,mac=${RANDOM_MAC} -netdev user,id=net0,hostfwd=tcp::${CONTAINER_SSH_PORT}-:22,hostfwd=tcp::${FLUTTER_DEBUG_PORT}-:${FLUTTER_DEBUG_PORT}" + }, + "extra": { + "darwin": "-smp cpus=8,sockets=1,cores=8,threads=1", + "ubuntu": "-bios OVMF.fd", + "fedora": "-bios /usr/share/edk2/ovmf/OVMF_CODE.fd" + } + }, + "post_cmds": [ + { + "cwd": "${PLATFORM_ID_DIR}", + "cmds": [ + "bash -c \"rm ${QEMU_IMAGE}|true\"", + "unxz --keep ${QEMU_IMAGE}.xz" + ] + } + ] + }, + "overwrite-existing": true, + "custom-device": { + "id": "agl-qemu-${RELEASE_NAME}", + "label": "AGL ${RELEASE_NAME}-${RELEASE_VERSION} QEMU Image", + "sdkNameAndVersion": "qemu-${RELEASE_NAME} ${RELEASE_VERSION}", + "platform": "linux-x64", + "enabled": true, + "ping": "bash -c \"${PING_CMD}\"", + "pingSuccessRegex": "open", + "postBuild": "bash -c \"${DELETE_USER_PWD}; ${STOP_SERVICE}\"; ", + "install": "bash -c \"${CREATE_BUNDLE_FOLDER} && ${COPY_PLATFORM_ID_TO_DEVICE} && ${COPY_ASSETS_TO_DEVICE} && ${CREATE_ICUDTL_SYMLINK} && ${CREATE_ENGINE_SYMLINK}\"", + "uninstall": "bash -c \"${DELETE_APP_FOLDER}\"", + "runDebug": "bash -c \"${SSH_PREFIX} agl-driver@${DEVICE_HOSTNAME} ${FLUTTER_AUTO_EXE}\"", + "forwardPort": null, + "forwardPortSuccessRegex": null, + "screenshot": null + } +} diff --git a/meta-agl-flutter/tools/configs/agl-qemu-ricefish-18.0.1.json b/meta-agl-flutter/tools/configs/agl-qemu-ricefish-18.0.1.json new file mode 100644 index 000000000..fde1e13ac --- /dev/null +++ b/meta-agl-flutter/tools/configs/agl-qemu-ricefish-18.0.1.json @@ -0,0 +1,112 @@ +{ + "id": "agl-qemu-ricefish-18.0.1", + "load": true, + "supported_archs": [ + "x86_64" + ], + "supported_host_types": [ + "darwin", + "ubuntu", + "fedora" + ], + "flutter_runtime": "debug", + "type": "qemu", + "env": { + "RELEASE_NAME": "ricefish", + "RELEASE_VERSION": "18.0.1", + "FLUTTER_VERSION": "3.24.1", + "QEMU_IMAGE": "agl-ivi-demo-flutter-qemux86-64.wic.vmdk", + "FLUTTER_DEBUG_PORT": "1234", + "FLUTTER_OBSERVATORY_HOST": "0.0.0.0", + "CONTAINER_SSH_PORT": "2222", + "DEVICE_HOSTNAME": "localhost", + "SCP_PREFIX": "scp -oStrictHostKeyChecking=no -P ${CONTAINER_SSH_PORT}", + "SSH_PREFIX": "ssh -oStrictHostKeyChecking=no -oBatchMode=yes -p ${CONTAINER_SSH_PORT}", + "FLUTTER_AUTO_EXE": "LIBCAMERA_LOG_LEVELS=*:ERROR XDG_RUNTIME_DIR=/run/user/1001/ flutter-auto --j=/tmp/${appName}/default_config.json --b=/tmp/${appName}", + "PING_CMD": "(echo >/dev/tcp/localhost/${CONTAINER_SSH_PORT}) &>/dev/null && echo open || echo closed", + "DELETE_USER_PWD": "${SSH_PREFIX} -t root@${DEVICE_HOSTNAME} passwd -d agl-driver", + "STOP_SERVICE": "${SSH_PREFIX} -t root@${DEVICE_HOSTNAME} systemctl stop flutter-ics-homescreen", + "DEBUG_ARTIFACT_PATH": "/usr/share/flutter/${FLUTTER_VERSION}/debug", + "CREATE_ICUDTL_SYMLINK": "${SSH_PREFIX} agl-driver@${DEVICE_HOSTNAME} ln -sf ${DEBUG_ARTIFACT_PATH}/data/icudtl.dat /tmp/${appName}/data/icudtl.dat", + "CREATE_ENGINE_SYMLINK": "${SSH_PREFIX} agl-driver@${DEVICE_HOSTNAME} ln -sf ${DEBUG_ARTIFACT_PATH}/lib/libflutter_engine.so /tmp/${appName}/lib/libflutter_engine.so", + "CREATE_BUNDLE_FOLDER": "${SSH_PREFIX} agl-driver@${DEVICE_HOSTNAME} mkdir -p /tmp/${appName}{/data/flutter_assets,/lib}", + "COPY_PLATFORM_ID_TO_DEVICE": "${SCP_PREFIX} -r ${PLATFORM_ID_DIR}/default_config.json agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/", + "COPY_ASSETS_TO_DEVICE": "${SCP_PREFIX} -r ${localPath}/* agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/data/flutter_assets", + "DELETE_APP_FOLDER": "${SSH_PREFIX} agl-driver@${DEVICE_HOSTNAME} rm -rf /tmp/${appName}" + }, + "runtime": { + "pre-requisites": { + "x86_64": { + "ubuntu": { + "cmds": [ + "sudo apt install -y qemu-system-x86-64" + ] + }, + "fedora": { + "cmds": [ + "sudo dnf install -y qemu" + ] + } + } + }, + "config": { + "view": [ + { + "window_type": "BG", + "width": 1920, + "height": 1080 + } + ] + }, + "artifacts": { + "http": { + "url": "https://download.automotivelinux.org/AGL/release/${RELEASE_NAME}/${RELEASE_VERSION}", + "artifacts": { + "x86_64": [ + { + "endpoint": "/qemux86-64/deploy/images/qemux86-64/${QEMU_IMAGE}.xz" + } + ] + } + } + }, + "qemu": { + "cmd": "qemu-system-${FORMAL_MACHINE_ARCH}", + "x86_64": { + "image": "${QEMU_IMAGE}", + "args": "-m 2048 ${QEMU_EXTRA} -hda ${QEMU_IMAGE} -cpu kvm64 -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+popcnt -vga virtio -device virtio-rng-pci -serial mon:stdio -serial null -device intel-hda -device hda-duplex -device virtio-net-pci,netdev=net0,mac=${RANDOM_MAC} -netdev user,id=net0,hostfwd=tcp::${CONTAINER_SSH_PORT}-:22,hostfwd=tcp::${FLUTTER_DEBUG_PORT}-:${FLUTTER_DEBUG_PORT}" + }, + "extra": { + "darwin": "-smp cpus=8,sockets=1,cores=8,threads=1", + "ubuntu": "-bios OVMF.fd", + "fedora": "-bios /usr/share/edk2/ovmf/OVMF_CODE.fd" + } + }, + "post_cmds": [ + { + "cwd": "${PLATFORM_ID_DIR}", + "cmds": [ + "bash -c \"rm ${QEMU_IMAGE}|true\"", + "unxz --keep ${QEMU_IMAGE}.xz" + ] + } + ] + }, + "overwrite-existing": true, + "custom-device": { + "id": "agl-qemu-${RELEASE_NAME}", + "label": "AGL ${RELEASE_NAME}-${RELEASE_VERSION} QEMU Image", + "sdkNameAndVersion": "qemu-${RELEASE_NAME} ${RELEASE_VERSION}", + "platform": "linux-x64", + "enabled": true, + "ping": "bash -c \"${PING_CMD}\"", + "pingSuccessRegex": "open", + "postBuild": "bash -c \"${DELETE_USER_PWD}; ${STOP_SERVICE}\"; ", + "install": "bash -c \"${CREATE_BUNDLE_FOLDER} && ${COPY_PLATFORM_ID_TO_DEVICE} && ${COPY_ASSETS_TO_DEVICE} && ${CREATE_ICUDTL_SYMLINK} && ${CREATE_ENGINE_SYMLINK}\"", + "uninstall": "bash -c \"${DELETE_APP_FOLDER}\"", + "runDebug": "bash -c \"${SSH_PREFIX} agl-driver@${DEVICE_HOSTNAME} ${FLUTTER_AUTO_EXE}\"", + "forwardPort": null, + "forwardPortSuccessRegex": null, + "screenshot": null + } +} diff --git a/meta-agl-flutter/tools/configs/desktop-auto.json b/meta-agl-flutter/tools/configs/desktop-auto.json index 943bca085..977a20679 100644 --- a/meta-agl-flutter/tools/configs/desktop-auto.json +++ b/meta-agl-flutter/tools/configs/desktop-auto.json @@ -13,38 +13,33 @@ "env": { "HOMESCREEN_SRC_DIR": "${FLUTTER_WORKSPACE}/app/ivi-homescreen", "HOMESCREEN_BUILD_DIR": "${FLUTTER_WORKSPACE}/app/ivi-homescreen/build", - "HOMESCREEN_CMAKE_ARGS": "-DCMAKE_BUILD_TYPE=Debug -DEXE_OUTPUT_NAME=flutter-auto -DSANITIZE_ADDRESS=OFF -DENABLE_DLT=OFF -DBUILD_UNIT_TESTS=OFF -DBUILD_DOCS=OFF -DBUILD_CRASH_HANDLER=OFF -DLLVM_ROOT=/usr -DBUILD_PLUGIN_FILAMENT_VIEW=OFF -DENABLE_IVI_SHELL_CLIENT=OFF -DENABLE_XDG_CLIENT=ON -DENABLE_AGL_CLIENT=ON -DENABLE_LTO=ON -DDEBUG_PLATFORM_MESSAGES=OFF -DBUILD_BACKEND_WAYLAND_EGL=ON -DBUILD_BACKEND_WAYLAND_VULKAN=OFF -DBUILD_EGL_TRANSPARENCY=ON -DBUILD_EGL_ENABLE_3D=ON -DBUILD_EGL_ENABLE_MULTISAMPLE=ON -DBUILD_PLUGIN_PDF=OFF -DBUILD_PLUGIN_FILAMENT_VIEW=OFF -DBUILD_PLUGIN_NAV_RENDER_VIEW=ON -DBUILD_PLUGIN_LAYER_PLAYGROUND_VIEW=ON -DBUILD_PLUGIN_AUDIOPLAYERS_LINUX=ON -DBUILD_PLUGIN_URL_LAUNCHER=ON -DBUILD_PLUGIN_FILE_SELECTOR=ON -DBUILD_PLUGIN_CAMERA=OFF -DBUILD_PLUGIN_GO_ROUTER=ON -DBUILD_PLUGIN_SECURE_STORAGE=ON", - "HOMESCREEN_EXE": "SPDLOG_LEVEL=debug ${HOMESCREEN_BUILD_DIR}/shell/flutter-auto --j=${PLATFORM_ID_DIR_RELATIVE}/default_config.json --b=${PLATFORM_ID_DIR_RELATIVE}", + "HOMESCREEN_CMAKE_ARGS": "-DCMAKE_BUILD_TYPE=Debug -DEXE_OUTPUT_NAME=flutter-auto -DSANITIZE_ADDRESS=OFF -DENABLE_DLT=OFF -DBUILD_UNIT_TESTS=OFF -DBUILD_DOCS=OFF -DBUILD_CRASH_HANDLER=OFF -DLLVM_ROOT=/usr -DPLUGINS_DIR=${FLUTTER_WORKSPACE}/app/ivi-homescreen-plugins -DENABLE_IVI_SHELL_CLIENT=OFF -DENABLE_XDG_CLIENT=ON -DENABLE_AGL_SHELL_CLIENT=ON -DENABLE_LTO=ON -DDEBUG_PLATFORM_MESSAGES=OFF -DBUILD_BACKEND_WAYLAND_EGL=ON -DBUILD_BACKEND_WAYLAND_VULKAN=OFF -DBUILD_EGL_TRANSPARENCY=ON -DBUILD_EGL_ENABLE_3D=ON -DBUILD_EGL_ENABLE_MULTISAMPLE=ON -DBUILD_PLUGIN_PDF=OFF -DBUILD_PLUGIN_FILAMENT_VIEW=OFF -DBUILD_PLUGIN_NAV_RENDER_VIEW=ON -DBUILD_PLUGIN_AUDIOPLAYERS_LINUX=ON -DBUILD_PLUGIN_URL_LAUNCHER=ON -DBUILD_PLUGIN_FILE_SELECTOR=ON -DBUILD_PLUGIN_CAMERA=OFF -DBUILD_PLUGIN_GO_ROUTER=ON -DBUILD_PLUGIN_SECURE_STORAGE=ON -DBUILD_PLUGIN_DESKTOP_WINDOW_LINUX=ON -DBUILD_WATCHDOG=OFF", + "HOMESCREEN_EXE": "SPDLOG_LEVEL=debug ${HOMESCREEN_BUILD_DIR}/shell/flutter-auto -b ${PLATFORM_ID_DIR_RELATIVE}", "PING_CMD": "loginctl show-session $(awk '/tty/ {print $1}' <(loginctl)) -p Type", "CREATE_BUNDLE_FOLDER": "mkdir -p ${PLATFORM_ID_DIR_RELATIVE}/data", - "COPY_PLATFORM_ID_TO_BUNDLE_FOLDER": "cp -r ${PLATFORM_ID_DIR}/default_config.json ${PLATFORM_ID_DIR_RELATIVE}/", + "COPY_PLATFORM_ID_TO_BUNDLE_FOLDER": "cp -r ${PLATFORM_ID_DIR}/config.toml ${PLATFORM_ID_DIR_RELATIVE}/", "COPY_BUNDLE_FOLDER_TO_PLATOFRM_ID": "cp -r ${BUNDLE_FOLDER}/* ${PLATFORM_ID_DIR_RELATIVE}/", "CREATE_ASSET_SYMLINK": "ln -rsf build/flutter_assets ${PLATFORM_ID_DIR_RELATIVE}/data/flutter_assets", "STAGE_BUNDLE_FOLDER": "${CREATE_BUNDLE_FOLDER} && ${COPY_PLATFORM_ID_TO_BUNDLE_FOLDER} && ${COPY_BUNDLE_FOLDER_TO_PLATOFRM_ID} && ${CREATE_ASSET_SYMLINK}" - }, + }, "runtime": { "config": { - "view": [ - { - "width": 1920, - "height": 1080, - "cursor_theme": "DMZ-White", - "fullscreen": false - } - ] + "global": {"cursor_theme": "DMZ-White"}, + "view": {"width": 1024, "height": 768} }, "pre-requisites": { "x86_64": { "ubuntu": { "cmds": [ "sudo snap install cmake --classic", + "pip3 install clang", "sudo add-apt-repository -y ppa:kisak/kisak-mesa", "sudo apt update -y", "sudo apt install lsb-release wget software-properties-common gnupg apt-file", "sudo apt update", "sudo apt install -y libwayland-dev wayland-protocols mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev mesa-utils libxkbcommon-dev ninja-build", "sudo apt install -y build-essential libvulkan-dev vulkan-tools vulkan-validationlayers vulkan-utils libtool libsecret-1-dev libsdl2-dev libjpeg-dev zenity", - "sudo apt install -y libllvm-ocaml-dev llvm llvm-dev llvm-runtime clang clang-tools libclang-dev libclang1 clang-format python3-clang clangd clang-tidy lldb lld libc++-dev libc++abi-dev libunwind-dev libc++1 libc++abi1", + "sudo apt install -y libllvm-ocaml-dev llvm llvm-dev llvm-runtime clang clang-tools libclang-dev libclang1 clang-format clangd clang-tidy lldb lld libc++-dev libc++abi-dev libunwind-dev libc++1 libc++abi1", "sudo apt autoremove -y", "sudo apt clean -y", "cmake --version", @@ -73,7 +68,7 @@ "cwd": "${HOMESCREEN_BUILD_DIR}", "cmds": [ "cmake -GNinja ${HOMESCREEN_SRC_DIR} ${HOMESCREEN_CMAKE_ARGS}", - "ninja homescreen" + "ninja flutter-auto" ] } ] @@ -81,7 +76,7 @@ "overwrite-existing": true, "custom-device": { "id": "desktop-auto", - "label": "Toyota AGL flutter-auto", + "label": "Toyota flutter-auto", "sdkNameAndVersion": "flutter-auto x86_64", "platform": "linux-x64", "enabled": true, @@ -95,4 +90,4 @@ "forwardPortSuccessRegex": null, "screenshot": null } -}
\ No newline at end of file +} |