From 33cdbee53ea3ec3d2f88e05744ea9e6611c40772 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Thu, 4 Aug 2022 16:53:39 -0400 Subject: meta-agl-flutter: Simplify AGL integration Changes: - Remove Igalia homescreen and Pumped Fuel app recipes since they duplicate what is in meta-flutter. Now that there is a AGL Flutter demo image in meta-agl, any recipes or bbappends for apps should go there except for the flutter-gallery integration for agl-image-flutter (see below). - Move flutter-gallery systemd unit changes out of flutter-auto bbappend to a new flutter-gallery bbappend to simplify using flutter-auto on its own. To facilitate interoperation with the use of flutter-gallery in the agl-ivi-demo-platform-flutter image, the systemd files are split out into a -init package that has been added to agl-image-flutter. - Added back a reworked version of the app-id command-line option patch in the flutter-auto bbappend with the option changed to --xdg-shell-app-id per upstream request. This wil be submitted upstream as time permits. The merged patches that were deleted have been removed from SRC_URI. The intent of the above is to move to meta-agl-flutter just having the minimal set of changes to integrate flutter-auto with AGL use, with the agl-image-flutter image kept as a simple smoketest / example. Bug-AGL: SPEC-4485 Signed-off-by: Scott Murray Change-Id: I171852820be404774d7580778643c801e8fad34f --- .../flutter-app-igalia-homescreen_git.bb | 24 ----------- .../flutter-app-pumped-fuel-ped_git.bb | 34 ---------------- .../flutter-gallery/flutter-gallery.service | 10 +++++ .../flutter-gallery/gallery_on_bg-debug.json | 11 +++++ .../flutter-gallery/gallery_on_bg-profile.json | 11 +++++ .../flutter-gallery/gallery_on_bg-release.json | 10 +++++ .../flutter-apps/flutter-gallery_%.bbappend | 1 + .../flutter-apps/flutter-gallery_aglflutter.inc | 39 ++++++++++++++++++ ...dd-xdg-shell-app-id-command-line-argument.patch | 38 +++++++++++++++++ .../toyota/files/flutter-auto.service | 10 ----- .../toyota/files/gallery_on_bg-debug.json | 11 ----- .../toyota/files/gallery_on_bg-profile.json | 11 ----- .../toyota/files/gallery_on_bg-release.json | 10 ----- .../recipes-graphics/toyota/flutter-auto%.bbappend | 1 - .../toyota/flutter-auto_%.bbappend | 1 + .../toyota/flutter-auto_aglflutter.inc | 47 +++------------------- .../images/agl-image-flutter-runtimedebug.bb | 1 + .../images/agl-image-flutter-runtimeprofile.bb | 4 +- .../images/agl-image-flutter-runtimerelease.bb | 4 +- 19 files changed, 130 insertions(+), 148 deletions(-) delete mode 100644 meta-agl-flutter/recipes-graphics/flutter-apps/flutter-app-igalia-homescreen_git.bb delete mode 100644 meta-agl-flutter/recipes-graphics/flutter-apps/flutter-app-pumped-fuel-ped_git.bb create mode 100644 meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/flutter-gallery.service create mode 100644 meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-debug.json create mode 100644 meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-profile.json create mode 100644 meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-release.json create mode 100644 meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery_%.bbappend create mode 100644 meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery_aglflutter.inc create mode 100644 meta-agl-flutter/recipes-graphics/toyota/files/0001-Add-xdg-shell-app-id-command-line-argument.patch delete mode 100644 meta-agl-flutter/recipes-graphics/toyota/files/flutter-auto.service delete mode 100644 meta-agl-flutter/recipes-graphics/toyota/files/gallery_on_bg-debug.json delete mode 100644 meta-agl-flutter/recipes-graphics/toyota/files/gallery_on_bg-profile.json delete mode 100644 meta-agl-flutter/recipes-graphics/toyota/files/gallery_on_bg-release.json delete mode 100644 meta-agl-flutter/recipes-graphics/toyota/flutter-auto%.bbappend create mode 100644 meta-agl-flutter/recipes-graphics/toyota/flutter-auto_%.bbappend (limited to 'meta-agl-flutter') diff --git a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-app-igalia-homescreen_git.bb b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-app-igalia-homescreen_git.bb deleted file mode 100644 index 9047d603..00000000 --- a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-app-igalia-homescreen_git.bb +++ /dev/null @@ -1,24 +0,0 @@ -SUMMARY = "Igalia Flutter Homescreen" -DESCRIPTION = "A prototype home screen for automotive grade Linux." -AUTHOR = "Igalia" -HOMEPAGE = "https://github.com/felipeerias/flutter_homescreen" -BUGTRACKER = "https://github.com/felipeerias/flutter_homescreen/issues" -SECTION = "graphics" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" - -SRC_URI = "git://github.com/felipeerias/flutter_homescreen.git;protocol=https;branch=main" - -SRCREV = "08bf271f7f1f14153a41005718a2090fa8e783f0" - -S = "${WORKDIR}/git" - -PUBSPEC_APPNAME = "flutter_homescreen" -FLUTTER_APPLICATION_INSTALL_PREFIX = "/flutter" - -FLUTTER_BUILD_ARGS = "bundle -v" - -inherit flutter-app - -BBCLASSEXTEND = "flutterrelease flutterprofile flutterdebug" \ No newline at end of file diff --git a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-app-pumped-fuel-ped_git.bb b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-app-pumped-fuel-ped_git.bb deleted file mode 100644 index 541bc8ec..00000000 --- a/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-app-pumped-fuel-ped_git.bb +++ /dev/null @@ -1,34 +0,0 @@ -SUMMARY = "Pumped End Device" -DESCRIPTION = "Pumped is a combination of 3 core projects to connect \ - vehicle drivers with retail merchants, initially starting \ - with fuel stations. Our objective is to offer the best fuel \ - prices, closest stations, friendliest service, cleanest restrooms, \ - tastiest coffee and so much more, direct to vehicle drivers." -AUTHOR = "Pumped Fuel" -HOMEPAGE = "https://github.com/bernardpumped/ped" -BUGTRACKER = "https://github.com/bernardpumped/ped/issues" -SECTION = "graphics" - -RDEPENDS:${PN} += "\ - geoclue \ - libsecret \ - xdg-user-dirs \ - " - -LICENSE = "GPL-3.0" -LIC_FILES_CHKSUM = "file://COPYING;md5=e49f4652534af377a713df3d9dec60cb" - -SRC_URI = "git://github.com/bernardpumped/ped.git;protocol=https;branch=main" - -SRCREV = "7a670295d5a94508862316e045e789e0dfd01b20" - -S = "${WORKDIR}/git" - -PUBSPEC_APPNAME = "pumped_end_device" -FLUTTER_APPLICATION_INSTALL_PREFIX = "/flutter" - -FLUTTER_BUILD_ARGS = "bundle -v" - -inherit flutter-app - -BBCLASSEXTEND += "flutterrelease flutterdebug flutterprofile" 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 new file mode 100644 index 00000000..71ab791d --- /dev/null +++ b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/flutter-gallery.service @@ -0,0 +1,10 @@ +[Unit] +Requires=agl-compositor.service +After=agl-compositor.service + +[Service] +ExecStart=/usr/bin/flutter-auto --j=/usr/share/flutter/default.json +Restart=on-failure + +[Install] +WantedBy=agl-session.target 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 new file mode 100644 index 00000000..5a84a0bd --- /dev/null +++ b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-debug.json @@ -0,0 +1,11 @@ +{ + "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 new file mode 100644 index 00000000..3309fde4 --- /dev/null +++ b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-profile.json @@ -0,0 +1,11 @@ +{ + "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 new file mode 100644 index 00000000..6a2a8448 --- /dev/null +++ b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery/gallery_on_bg-release.json @@ -0,0 +1,10 @@ +{ + "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_%.bbappend b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery_%.bbappend new file mode 100644 index 00000000..835e86e6 --- /dev/null +++ b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'agl-flutter', 'flutter-gallery_aglflutter.inc', '', d)} 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 new file mode 100644 index 00000000..533bdd71 --- /dev/null +++ b/meta-agl-flutter/recipes-graphics/flutter-apps/flutter-gallery_aglflutter.inc @@ -0,0 +1,39 @@ +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 +# going to be the default usecase for most users, so this still allows them to +# build working agl-image-flutter images in the same build tree. +# +# This can be dropped if/when flutter-gallery is no longer packaged as a demo +# in meta-agl-demo. + +#SYSTEMD_SERVICE:${PN}-init = "flutter-gallery.service" + +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/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 new file mode 100644 index 00000000..854c8dc8 --- /dev/null +++ b/meta-agl-flutter/recipes-graphics/toyota/files/0001-Add-xdg-shell-app-id-command-line-argument.patch @@ -0,0 +1,38 @@ +From 394f48a1e535f464879fa94196ee6d73b86894f5 Mon Sep 17 00:00:00 2001 +From: Scott Murray +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 +--- + 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/files/flutter-auto.service b/meta-agl-flutter/recipes-graphics/toyota/files/flutter-auto.service deleted file mode 100644 index 71ab791d..00000000 --- a/meta-agl-flutter/recipes-graphics/toyota/files/flutter-auto.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Requires=agl-compositor.service -After=agl-compositor.service - -[Service] -ExecStart=/usr/bin/flutter-auto --j=/usr/share/flutter/default.json -Restart=on-failure - -[Install] -WantedBy=agl-session.target diff --git a/meta-agl-flutter/recipes-graphics/toyota/files/gallery_on_bg-debug.json b/meta-agl-flutter/recipes-graphics/toyota/files/gallery_on_bg-debug.json deleted file mode 100644 index 5a84a0bd..00000000 --- a/meta-agl-flutter/recipes-graphics/toyota/files/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/toyota/files/gallery_on_bg-profile.json b/meta-agl-flutter/recipes-graphics/toyota/files/gallery_on_bg-profile.json deleted file mode 100644 index 3309fde4..00000000 --- a/meta-agl-flutter/recipes-graphics/toyota/files/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/toyota/files/gallery_on_bg-release.json b/meta-agl-flutter/recipes-graphics/toyota/files/gallery_on_bg-release.json deleted file mode 100644 index 6a2a8448..00000000 --- a/meta-agl-flutter/recipes-graphics/toyota/files/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/toyota/flutter-auto%.bbappend b/meta-agl-flutter/recipes-graphics/toyota/flutter-auto%.bbappend deleted file mode 100644 index dbc82bc3..00000000 --- a/meta-agl-flutter/recipes-graphics/toyota/flutter-auto%.bbappend +++ /dev/null @@ -1 +0,0 @@ -require ${@bb.utils.contains('AGL_FEATURES', 'agl-flutter', 'flutter-auto_aglflutter.inc', '', d)} diff --git a/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_%.bbappend b/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_%.bbappend new file mode 100644 index 00000000..dbc82bc3 --- /dev/null +++ b/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_%.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'agl-flutter', 'flutter-auto_aglflutter.inc', '', d)} 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 4baaa517..0b580c2a 100644 --- a/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_aglflutter.inc +++ b/meta-agl-flutter/recipes-graphics/toyota/flutter-auto_aglflutter.inc @@ -1,47 +1,12 @@ +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" - - -USER_SERVICE = "flutter-auto.service" - -FILESEXTRAPATHS:append := "${THISDIR}/files:" -SRC_URI += "\ - file://${USER_SERVICE} \ - file://gallery_on_bg-debug.json \ - file://gallery_on_bg-profile.json \ - file://gallery_on_bg-release.json \ - file://0002-shell-configuration-Obey-json-configuration-file.patch \ - file://0003-shell-configuration-Fixes-to-general-options.patch \ - file://0004-Add-app-id-command-line-argument.patch \ - " - - -cmake_do_install:append() { - - install -d ${D}${systemd_user_unitdir}/agl-session.target.wants - install -D -m0644 ${WORKDIR}/${USER_SERVICE} ${D}${systemd_user_unitdir}/${USER_SERVICE} - - install -D -m0644 ${WORKDIR}/gallery_on_bg-release.json ${D}${datadir}/flutter/default.json -} - -cmake_do_install:append:runtimedebug() { - - # the dev host controls starting/stopping the flutter-auto process when runtime=debug - install -D -m0644 ${WORKDIR}/gallery_on_bg-debug.json ${D}${datadir}/flutter/default.json -} - -cmake_do_install:append:runtimeprofile() { - - # the dev host controls starting/stopping the flutter-auto process when runtime=profile - install -D -m0644 ${WORKDIR}/gallery_on_bg-profile.json ${D}${datadir}/flutter/default.json -} - - -FILES:${PN} += "\ - ${systemd_user_unitdir} \ - ${datadir} \ - " 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 6c412597..7432f1de 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 @@ -12,6 +12,7 @@ IMAGE_INSTALL:append = "\ 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 \ 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 a69302b3..031000a9 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 @@ -10,10 +10,8 @@ IMAGE_INSTALL:append = "\ flutter-auto-runtimeprofile \ \ flutter-gallery-runtimeprofile \ + flutter-gallery-runtimeprofile-init \ 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 \ " 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 cf60e8be..8220e313 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 @@ -10,10 +10,8 @@ IMAGE_INSTALL:append = "\ flutter-auto-runtimerelease \ \ flutter-gallery-runtimerelease \ + flutter-gallery-runtimerelease-init \ 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 \ " -- cgit 1.2.3-korg