summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Winarske <joel.winarske@gmail.com>2022-09-06 17:02:55 -0700
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2022-09-12 10:11:57 +0000
commit3cfd33f931d4154ee6afd1b4cc0a6598927545b6 (patch)
tree4599d734820c1fd2163cc3f7619c85557816cf55
parent85b48f508771b31a0d420b6555cb1fce6e29ecba (diff)
meta-agl-flutter updates
-layer README -flutter workspace configuration file -consolidation of gallery json files -remove flutter sdk version pin; now happens upstream -add engine_sdk.zip to all images (non-production) -add SSH server to debug and profile images -factor out flutter-auto xdg-shell-app-id patch Signed-off-by: Joel Winarske <joel.winarske@gmail.com> Change-Id: I6fdf1277bb4011126103f74eda5e230f34f497d7 (cherry picked from commit ee6873ad9024399cc69f81bab2745eb3a0bb3649)
-rw-r--r--meta-agl-devel.md2
-rw-r--r--meta-agl-flutter/README.md221
-rw-r--r--meta-agl-flutter/conf/include/agl-flutter.inc6
-rw-r--r--meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/flutter-gallery.service2
-rw-r--r--meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-debug.json11
-rw-r--r--meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-profile.json11
-rw-r--r--meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-release.json10
-rw-r--r--meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery_aglflutter.inc11
-rw-r--r--meta-agl-flutter/recipes-graphics/flutter-engine/flutter-engine_git.bbappend1
-rw-r--r--meta-agl-flutter/recipes-graphics/toyota/files/0001-Add-xdg-shell-app-id-command-line-argument.patch38
-rw-r--r--meta-agl-flutter/recipes-graphics/toyota/flutter-auto_aglflutter.inc8
-rw-r--r--meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimedebug.bb10
-rw-r--r--meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimeprofile.bb11
-rw-r--r--meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimerelease.bb7
-rw-r--r--meta-agl-flutter/tools/flutter_workspace_config.json156
15 files changed, 403 insertions, 102 deletions
diff --git a/meta-agl-devel.md b/meta-agl-devel.md
index ee4d0236..84bcfd1e 100644
--- a/meta-agl-devel.md
+++ b/meta-agl-devel.md
@@ -40,5 +40,7 @@ The following list provides a summary of these sub-layers:
* `meta-oem-production-readiness`: Provides libraries and software packages of
IVI product readiness
+* `meta-agl-flutter`: Provides Flutter support.
+
* `templates`: Feature templates that support the `meta-agl-devel` layer.
diff --git a/meta-agl-flutter/README.md b/meta-agl-flutter/README.md
new file mode 100644
index 00000000..86b4f75b
--- /dev/null
+++ b/meta-agl-flutter/README.md
@@ -0,0 +1,221 @@
+# meta-agl-flutter
+
+_This documentation is expecting user to be running Ubuntu 20.04_
+
+## Steps to build `agl-ivi-demo-platform-flutter` image
+
+```
+ export AGL_TOP=$HOME/workspace_agl
+ mkdir -p $AGL_TOP && cd $AGL_TOP
+ repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo -b master
+ repo sync -j $(nproc)
+ source meta-agl/scripts/aglsetup.sh -m qemux86-64 agl-demo
+ bitbake agl-ivi-demo-platform-flutter
+```
+
+This builds AGL demo image that includes Flutter runtime=release.
+
+
+## Steps to build a minimal flutter image
+
+```
+ export AGL_TOP=$HOME/workspace_agl
+ mkdir -p $AGL_TOP && cd $AGL_TOP
+ repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo -b master
+ repo sync -j `grep -c ^processor /proc/cpuinfo`
+ source meta-agl/scripts/aglsetup.sh -m qemux86-64 agl-devel agl-flutter
+```
+
+Build one of the minimal Flutter images below using `bitbake`
+
+1. `agl-image-flutter-runtimedebug`
+ * includes Flutter Engine SDK
+ * includes SSH server
+ * live debugging with target via host
+
+2. `agl-image-flutter-runtimeprofile`
+ * includes Flutter Engine SDK
+ * includes SSH server
+ * runs only Flutter Applications built as AOT profile images
+ * live profiling with target via host
+
+3. `agl-image-flutter-runtimerelease`
+ * includes Flutter Engine SDK
+ * runs only Flutter Applications built as AOT release images
+ * Does not include SSH server
+
+
+## Flutter Engine SDK
+
+If recipe `flutter-engine-runtime<variant>-sdk-dev` is included in your AGL image, `engine_sdk.zip` will be present in `/usr/share/flutter/`.
+
+engine_sdk.zip contains
+* sdk/flutter_sdk.version - The Flutter SDK version
+* sdk/engine.version - The git commit of the Flutter Engine
+* sdk/clang_x64/gen_snapshot - used for creating release/profile AOT image
+
+This recipe should be excluded from image in a production release.
+
+
+## Flutter Workspace Automation
+
+```
+ mkdir -p <path to my workspace> && cd <path to my workspace>
+ curl --proto '=https' --tlsv1.2 -sSf https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl-devel.git;a=blob_plain;f=meta-agl-flutter/tools/flutter_workspace_config.json;hb=HEAD -o flutter_workspace_config.json
+ curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/meta-flutter/meta-flutter/kirkstone/tools/setup_flutter_workspace.py | python3
+```
+
+Additional documentation available [here](https://github.com/meta-flutter/meta-flutter/tree/kirkstone/tools#flutter-workspace-automation)
+
+
+## Startup Service
+
+If you include `flutter-gallery-runtime<variant>-init` it will install a systemd user service, which starts the Flutter Gallery on boot. This is not included in the minimal images.
+
+At runtime you can edit `/usr/share/flutter/default.json` to point to any Flutter bundle.
+
+
+## `/usr/share/flutter/default.json`
+
+For more JSON key value options see [here](https://github.com/toyota-connected/ivi-homescreen/blob/agl/README.md#json-configuration-keys)
+
+
+## Custom Devices
+
+### desktop-auto
+
+This is a desktop build of flutter-auto. The default configuration for backend is set to `egl` backend. To change this to use the `vulkan` backend, change the `backend` key value in `meta-agl-flutter/tools/flutter_workspace_config.json` from `egl` to `vulkan`. If you use the workspace configuration from meta-flutter it defaults to `vulkan`.
+
+If you are running a Gnome Display Manager (GDM) Wayland session, then it will be an available custom-device platform. To enable a Wayland session, you select the gear icon at the login window. If you don't have a gear icon available on your login screen, then you will need to adjust your system settings to enable a Wayland session.
+
+Append `--device-id=desktop-auto` to `flutter <cmd>` to select this device.
+
+### QEMU-agl
+
+This is a QEMU minimal Flutter image as referenced [here](#steps-to-build-a-minimal-flutter-image). The required runtime packages are installed as part of setup_flutter_workspace.py.
+
+If qemu_run was sucessfully invoked, then this platform will be an available `custom-device`. If QEMU instance is not running on port 2222, then this custom-device platform will not be available.
+
+Append `--device-id=AGL-qemu` to `flutter <cmd>` to select this device.
+
+
+## Steps to Test Flutter Images
+
+### Debug
+
+1. Set up Flutter Workspace per [Flutter Workspace Automation](#flutter-workspace-automation).
+
+2. Run the following commands on the host's terminal, a QEMU window and a new terminal for AGL will be brought up.
+
+```
+ cd $FLUTTER_WORKSPACE
+ source ./setup_env.sh
+ qemu_run
+```
+
+3. If running an updated QEMU image, edit `~/.ssh/known_hosts` and remove previous connection.
+
+4. Wait for QEMU image to boot to idle the run
+```
+ ssh -p 2222 root@localhost who
+```
+_Answering with `y` appends QEMU connection to `~/.ssh/known_hosts`_
+
+5. From the same host terminal open Visual Studio Code Select
+ * **Run and Debug**
+ * **gallery(AGL-qemu)** from the drop down combo box
+ * **run** - this launches the Flutter gallery app in the QEMU window​
+
+6. Or run from the same terminal as qemu_run was executed via
+```
+ cd $FLUTTER_WORKSPACE/app/gallery
+ flutter run --device-id=AGL-qemu
+```
+
+
+### Release
+
+1. Change AGL-qemu flutter_runtime value in $AGL_TOP/sources/meta-agl-devel/meta-agl-flutter/tools/flutter_workspace_config.json to `release`.
+
+```
+ {
+ "id": "AGL-qemu",
+ "type": "qemu",
+ "arch": "x86_64",
+ "flutter_runtime": "release",
+ "runtime": {
+```
+
+This enables download of QEMU `release` variant.
+
+2. Run the flutter workspace script
+
+3. Run the following commands on the host's terminal, a QEMU window and a new terminal for AGL will be brought up.
+
+```
+ cd $FLUTTER_WORKSPACE
+ unset QEMU_IMAGE
+ source ./setup_env.sh
+ qemu_run
+```
+
+4. Login AGL as `root`, and execute `passwd -d agl-driver`. Type `exit` and login as `agl-driver`. Run the Flutter Gallery example with the command in AGL's terminal.
+
+```
+ flutter-auto --window-type="BG" --b=/usr/share/flutter/gallery --f
+```
+
+
+### Profile
+
+1. Change AGL-qemu flutter_runtime value in $AGL_TOP/sources/meta-agl-devel/meta-agl-flutter/tools/flutter_workspace_config.json to `profile`.
+
+```
+ {
+ "id": "AGL-qemu",
+ "type": "qemu",
+ "arch": "x86_64",
+ "flutter_runtime": "profile",
+ "runtime": {
+```
+
+This enables download of QEMU `profile` variant.
+
+2. Run the flutter workspace script
+
+3. Run the following commands on the host's terminal, a QEMU window and a new terminal for AGL will be brought up.
+
+```
+ cd $FLUTTER_WORKSPACE
+ unset QEMU_IMAGE
+ source ./setup_env.sh
+ qemu_run
+```
+
+4. If running an updated QEMU image, edit `~/.ssh/known_hosts` and remove previous connection.
+
+5. After waiting for QEMU image to boot to idle issue
+```
+ ssh -p 2222 root@localhost who
+```
+Answering with `y` appends QEMU connection to `~/.ssh/known_hosts`
+
+6. Login AGL as `agl-driver`, and issue the following command
+```
+ flutter-auto --window-type="BG" --b=/usr/share/flutter/gallery --f --observatory-host=0.0.0.0 --observatory-port=1234
+```
+
+The last line of the output message should look similar to this:
+```
+ flutter: The Dart VM service is listening on http://0.0.0.0:1234/xxxxxxxxxxx=/
+```
+
+7. Run the following command in the host terminal, using the correct hash suffix.
+```
+ flutter attach --device-id=AGL-qemu --debug-url=http://127.0.0.1:1234/xxxxxxxxxxx=/
+```
+​
+8. Then you should see the output as below. It tells us the URL of the Flutter DevTools debugger and profiler on AGL x86_64 QEMU Image.
+`An Observatory debugger and profiler on AGL x86_64 QEMU Image is available at: http://127.0.0.1:37383/xxxxxxxxxxx=/`
+​
+9. in the terminal type `v` to launch the debugger.
diff --git a/meta-agl-flutter/conf/include/agl-flutter.inc b/meta-agl-flutter/conf/include/agl-flutter.inc
index a24400c8..7d6fce6d 100644
--- a/meta-agl-flutter/conf/include/agl-flutter.inc
+++ b/meta-agl-flutter/conf/include/agl-flutter.inc
@@ -1,5 +1,5 @@
AGL_FEATURES += "agl-flutter"
-# Over-ride Flutter SDK tag to ensure reproducible builds.
-# This should be updated as required to match meta-flutter updates.
-FLUTTER_SDK_TAG = "3.0.5"
+#########################################
+# FLUTTER_SDK_TAG is now Pinned upstream
+#########################################
diff --git a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/flutter-gallery.service b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/flutter-gallery.service
index 71ab791d..3d4ecbf1 100644
--- a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/flutter-gallery.service
+++ b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/flutter-gallery.service
@@ -3,7 +3,7 @@ Requires=agl-compositor.service
After=agl-compositor.service
[Service]
-ExecStart=/usr/bin/flutter-auto --j=/usr/share/flutter/default.json
+ExecStart=/usr/bin/flutter-auto --j=/usr/share/flutter/default.json --b=/usr/share/flutter/gallery --f
Restart=on-failure
[Install]
diff --git a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-debug.json b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-debug.json
deleted file mode 100644
index 5a84a0bd..00000000
--- a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-debug.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "view" : [ {
- "window_type" : "BG",
- "bundle_path" : "/usr/share/flutter/gallery",
- "vm_args":["--observatory-host", "0.0.0.0", "--observatory-port", "1234"],
- "width" : 1920,
- "height": 1080,
- "fullscreen": true
- }
- ]
-}
diff --git a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-profile.json b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-profile.json
deleted file mode 100644
index 3309fde4..00000000
--- a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-profile.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "view" : [ {
- "window_type" : "BG",
- "bundle_path" : "/usr/share/flutter/gallery",
- "vm_args":["--observatory-host", "0.0.0.0", "--observatory-port", "1234", "--start-paused"],
- "width" : 1920,
- "height": 1080,
- "fullscreen": true
- }
- ]
-}
diff --git a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-release.json b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-release.json
deleted file mode 100644
index 6a2a8448..00000000
--- a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-release.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "view" : [ {
- "window_type" : "BG",
- "bundle_path" : "/usr/share/flutter/gallery",
- "width" : 1920,
- "height": 1080,
- "fullscreen": true
- }
- ]
-}
diff --git a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery_aglflutter.inc b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery_aglflutter.inc
index 533bdd71..c618a2fe 100644
--- a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery_aglflutter.inc
+++ b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery_aglflutter.inc
@@ -2,15 +2,8 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/flutter-gallery:"
SRC_URI += " \
file://flutter-gallery.service \
- file://gallery_on_bg-debug.json \
- file://gallery_on_bg-profile.json \
- file://gallery_on_bg-release.json \
"
-APP_CONFIG = "gallery_on_bg-release.json"
-APP_CONFIG:class-runtimedebug = "gallery_on_bg-debug.json"
-APP_CONFIG:class-runtimeprofile = "gallery_on_bg-profile.json"
-
# To avoid conflicts with the systemd template scheme added via bbappend in
# meta-agl-demo, package the standalone systemd unit separately. This is not
# needed when meta-agl-flutter is used without meta-agl-demo, but that is not
@@ -26,14 +19,10 @@ do_install:append() {
install -D -m 0644 ${WORKDIR}/flutter-gallery.service ${D}${systemd_user_unitdir}/flutter-gallery.service
install -d ${D}${systemd_user_unitdir}/agl-session.target.wants
ln -s ../flutter-gallery.service ${D}${systemd_user_unitdir}/agl-session.target.wants/flutter-gallery.service
-
- install -D -m 0644 ${WORKDIR}/${APP_CONFIG} ${D}${datadir}/flutter/default.json
}
PACKAGE_BEFORE_PN += "${PN}-init"
-FILES:${PN} += "${datadir}"
-
FILES:${PN}-init = "${systemd_user_unitdir}"
RDEPENDS:${PN}-init = "${PN}" \ No newline at end of file
diff --git a/meta-agl-flutter/recipes-graphics/flutter-engine/flutter-engine_git.bbappend b/meta-agl-flutter/recipes-graphics/flutter-engine/flutter-engine_git.bbappend
deleted file mode 100644
index b3ca883f..00000000
--- a/meta-agl-flutter/recipes-graphics/flutter-engine/flutter-engine_git.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-do_install[network] = "1"
diff --git a/meta-agl-flutter/recipes-graphics/toyota/files/0001-Add-xdg-shell-app-id-command-line-argument.patch b/meta-agl-flutter/recipes-graphics/toyota/files/0001-Add-xdg-shell-app-id-command-line-argument.patch
deleted file mode 100644
index 854c8dc8..00000000
--- a/meta-agl-flutter/recipes-graphics/toyota/files/0001-Add-xdg-shell-app-id-command-line-argument.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 394f48a1e535f464879fa94196ee6d73b86894f5 Mon Sep 17 00:00:00 2001
-From: Scott Murray <scott.murray@konsulko.com>
-Date: Thu, 4 Aug 2022 14:36:08 -0400
-Subject: [PATCH] Add xdg-shell-app-id command-line argument
-
-Add a command-line argument for specifying the app id, so that basic
-applications do not need to supply a full JSON configuration just to
-do so.
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- shell/main.cc | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/shell/main.cc b/shell/main.cc
-index deb4876..ba35acc 100644
---- a/shell/main.cc
-+++ b/shell/main.cc
-@@ -161,6 +161,16 @@ int main(int argc, char** argv) {
- FML_DLOG(INFO) << "Window Type: " << config.view.window_type;
- RemoveArgument(config.view.vm_args, "--window-type=" + config.view.window_type);
- }
-+ if (cl.HasOption("xdg-shell-app-id")) {
-+ cl.GetOptionValue("xdg-shell-app-id", &config.app_id);
-+ if (config.app_id.empty()) {
-+ FML_LOG(ERROR)
-+ << "--xdg-shell-app-id option requires an argument (e.g. --xdg-shell-app-id=gallery)";
-+ return EXIT_FAILURE;
-+ }
-+ FML_DLOG(INFO) << "Application ID: " << config.app_id;
-+ RemoveArgument(config.view.vm_args, "--xdg-shell-app-id=" + config.app_id);
-+ }
- }
-
- auto vm_arg_count = config.view.vm_args.size();
---
-2.35.3
-
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 0b580c2a..1fb1a3b4 100644
--- a/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_aglflutter.inc
+++ b/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_aglflutter.inc
@@ -1,12 +1,4 @@
-FILESEXTRAPATHS:append := "${THISDIR}/files:"
-
-SRC_URI += " \
- file://0001-Add-xdg-shell-app-id-command-line-argument.patch \
-"
# For now disable gstreamer to avoid needing to enable "commercial"
# licenses for the stated ffmpeg dependency.
PACKAGECONFIG:remove = "gstreamer"
-
-# Enable verbose logging on runtimedebug image
-PACKAGECONFIG:append:runtimedebug = "verbose"
diff --git a/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimedebug.bb b/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimedebug.bb
index af3688e2..b9260bf3 100644
--- a/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimedebug.bb
+++ b/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimedebug.bb
@@ -10,10 +10,8 @@ IMAGE_INSTALL:append = "\
flutter-auto-runtimedebug \
\
flutter-engine-runtimedebug-sdk-dev \
- \
- flutter-gallery-runtimedebug \
- flutter-gallery-runtimedebug-init \
- flutter-test-texture-egl-runtimedebug \
- flutter-test-secure-storage-runtimedebug \
- flutter-test-localization-runtimedebug \
+ "
+
+IMAGE_FEATURES:append = "\
+ ssh-server-openssh \
"
diff --git a/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimeprofile.bb b/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimeprofile.bb
index 031000a9..8b819922 100644
--- a/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimeprofile.bb
+++ b/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimeprofile.bb
@@ -9,9 +9,18 @@ IMAGE_INSTALL:append = "\
\
flutter-auto-runtimeprofile \
\
+ flutter-engine-runtimeprofile-sdk-dev \
+ \
flutter-gallery-runtimeprofile \
- flutter-gallery-runtimeprofile-init \
+ flutter-test-animated-background-runtimeprofile \
flutter-test-texture-egl-runtimeprofile \
flutter-test-secure-storage-runtimeprofile \
flutter-test-localization-runtimeprofile \
+ \
+ flutter-app-igalia-homescreen-runtimeprofile \
+ flutter-app-pumped-fuel-ped-runtimeprofile \
+ "
+
+IMAGE_FEATURES:append = "\
+ ssh-server-openssh \
"
diff --git a/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimerelease.bb b/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimerelease.bb
index 8220e313..ffc19e84 100644
--- a/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimerelease.bb
+++ b/meta-agl-flutter/recipes-platform/images/agl-image-flutter-runtimerelease.bb
@@ -9,9 +9,14 @@ IMAGE_INSTALL:append = "\
\
flutter-auto-runtimerelease \
\
+ flutter-engine-runtimerelease-sdk-dev \
+ \
flutter-gallery-runtimerelease \
- flutter-gallery-runtimerelease-init \
+ flutter-test-animated-background-runtimerelease \
flutter-test-texture-egl-runtimerelease \
flutter-test-secure-storage-runtimerelease \
flutter-test-localization-runtimerelease \
+ \
+ flutter-app-igalia-homescreen-runtimerelease \
+ flutter-app-pumped-fuel-ped-runtimerelease \
"
diff --git a/meta-agl-flutter/tools/flutter_workspace_config.json b/meta-agl-flutter/tools/flutter_workspace_config.json
new file mode 100644
index 00000000..bb7f23cc
--- /dev/null
+++ b/meta-agl-flutter/tools/flutter_workspace_config.json
@@ -0,0 +1,156 @@
+{
+ "flutter-version": "3.3.1",
+ "platforms": [
+ {
+ "id": "desktop-auto",
+ "type": "host",
+ "arch": "x86_64",
+ "flutter_runtime": "debug",
+ "runtime": {
+ "backend": "egl",
+ "config": {
+ "width": 1920,
+ "height": 1080,
+ "cursor_theme": "DMZ-White"
+ },
+ "install_dependent_packages": true,
+ "artifact_source": "github",
+ "github_owner": "toyota-connected",
+ "github_repo": "ivi-homescreen",
+ "github_workflow": "flutter-auto-linux.yml",
+ "github_artifact": "flutter-auto-${BACKEND}-dbg.amd64.deb.zip"
+ },
+ "overwrite-existing": true,
+ "custom-device": {
+ "id": "desktop-auto",
+ "label": "Toyota flutter-auto",
+ "sdkNameAndVersion": "flutter-auto x86_64",
+ "platform": "linux-x64",
+ "enabled": true,
+ "ping": ["bash", "-c", "loginctl show-session $(awk '/tty/ {print $1}' <(loginctl)) -p Type"],
+ "pingSuccessRegex": "Type=wayland",
+ "postBuild": null,
+ "install": ["bash", "-c", "mkdir -p /tmp/${appName}/data/flutter_assets && cp -r ${BUNDLE_FOLDER}/* /tmp/${appName} && cp -r ${localPath}/* /tmp/${appName}/data/flutter_assets"],
+ "uninstall": ["rm", "-rf", "tmp/${appName}"],
+ "runDebug": ["flutter-auto", "--j=${FLUTTER_WORKSPACE}/.flutter-auto/default_config.json", "--b=/tmp/${appName}"],
+ "forwardPort": null,
+ "forwardPortSuccessRegex": null,
+ "screenshot": null
+ }
+ },
+ {
+ "id": "AGL-qemu",
+ "type": "qemu",
+ "arch": "x86_64",
+ "flutter_runtime": "debug",
+ "runtime": {
+ "config": {
+ "window_type": "BG",
+ "width": 1920,
+ "height": 1080,
+ "fullscreen": true
+ },
+ "install_dependent_packages": true,
+ "relative_path": ".agl/agl-image-flutter-runtime${FLUTTER_RUNTIME}-qemux86-64.wic.vmdk",
+ "artifact_source": "github",
+ "github_owner": "meta-flutter",
+ "github_repo": "meta-flutter",
+ "github_workflow": "kirkstone-agl-x86_64.yml",
+ "github_artifact": "agl-image-flutter-runtime${FLUTTER_RUNTIME}-qemux86-64-linux",
+ "ovmf_path": "/usr/share/ovmf/OVMF.fd",
+ "cmd": "qemu-system-x86_64",
+ "args": "-enable-kvm -m 2048 -bios ${OVMF_PATH} -hda ${QEMU_IMAGE} -cpu kvm64 -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+popcnt -vga virtio -show-cursor -device virtio-rng-pci -serial mon:stdio -serial null -soundhw hda -device virtio-net-pci,netdev=net0,mac=52:54:00:12:35:02 -netdev user,id=net0,hostfwd=tcp::2222-:22,hostfwd=tcp::1234-:1234"
+ },
+ "overwrite-existing": true,
+ "custom-device": {
+ "id": "AGL-qemu",
+ "label": "AGL x86_64 QEMU Image",
+ "sdkNameAndVersion": "agl-image-flutter-runtime${FLUTTER_RUNTIME}-qemux86-64.wic.vmdk",
+ "platform": "linux-x64",
+ "enabled": true,
+ "ping": [
+ "bash", "-c", "(echo >/dev/tcp/localhost/2222) &>/dev/null && echo \"open 2222\" || echo \"close 2222\""
+ ],
+ "pingSuccessRegex": "open 2222",
+ "postBuild": [
+ "bash", "-c", "mkdir -p ${localPath}/../../.flutter-auto/data/flutter_assets && cp -r ${localPath}/* ${localPath}/../../.flutter-auto/data/flutter_assets && cp -r ${FLUTTER_WORKSPACE}/.agl/default_config.json ${localPath}/../../.flutter-auto/ && ssh -p 2222 -t -oBatchMode=yes root@localhost passwd -d agl-driver"
+ ],
+ "uninstall": [
+ "bash", "-c", "ssh -p 2222 -t -t -oBatchMode=yes agl-driver@localhost rm -rf \"/tmp/${appName}\""
+ ],
+ "install": [
+ "bash", "-c", "ssh -p 2222 -t -t -oBatchMode=yes agl-driver@localhost mkdir -p \"/tmp/${appName}/data/flutter_assets\" && scp -r -P 2222 ${localPath}/../../.flutter-auto/* agl-driver@localhost:/tmp/${appName}"
+ ],
+ "runDebug": [
+ "ssh", "-t", "-t", "-p", "2222", "-oBatchMode=yes", "agl-driver@localhost",
+ "flutter-auto",
+ "--j=/tmp/${appName}/default_config.json",
+ "--b=/tmp/${appName}",
+ "--observatory-host=0.0.0.0",
+ "--observatory-port=1234"
+ ],
+ "forwardPort": null,
+ "forwardPortSuccessRegex": null,
+ "screenshot": null
+ }
+ }
+ ],
+ "repos": [
+ {
+ "uri": "https://github.com/flutter/gallery.git",
+ "branch": "master",
+ "rev": "9eb785cb997ff56c46e933c1c591f0a6f31454f6",
+ "pubspec_path": "gallery"
+ },
+ {
+ "uri": "git@github.com:meta-flutter/tests.git",
+ "branch": "main"
+ },
+ {
+ "uri": "https://github.com/meta-flutter/flutter_animated_background.git",
+ "branch": "meta-flutter",
+ "pubspec_path": "flutter_animated_background/example"
+ },
+ {
+ "uri": "https://github.com/mogol/flutter_secure_storage.git",
+ "branch": "develop",
+ "rev": "e716593352b80330e05729486eade7c2167d3c71",
+ "pubspec_path": "flutter_secure_storage/flutter_secure_storage/example"
+ },
+ {
+ "uri": "https://github.com/felipeerias/flutter_homescreen.git",
+ "branch": "main",
+ "pubspec_path": "flutter_homescreen"
+ },
+ {
+ "uri": "https://github.com/bernardpumped/ped.git",
+ "branch": "agl",
+ "pubspec_path": "ped"
+ },
+ {
+ "uri": "https://gerrit.automotivelinux.org/gerrit/apps/flutter-dashboard.git",
+ "branch": "master",
+ "pubspec_path": "flutter-dashboard"
+ },
+ {
+ "uri": "https://gerrit.automotivelinux.org/gerrit/apps/flutter-hvac.git",
+ "branch": "master",
+ "pubspec_path": "flutter-hvac"
+ },
+ {
+ "uri": "https://gerrit.automotivelinux.org/gerrit/apps/flutter-instrument-cluster.git",
+ "branch": "master",
+ "pubspec_path": "flutter-instrument-cluster"
+ },
+ {
+ "uri": "https://gerrit.automotivelinux.org/gerrit/apps/flutter-mediaplayer.git",
+ "branch": "master",
+ "pubspec_path": "flutter-mediaplayer"
+ },
+ {
+ "uri": "https://gerrit.automotivelinux.org/gerrit/apps/flutter-navigation.git",
+ "branch": "master",
+ "pubspec_path": "flutter-navigation"
+ }
+ ]
+}