From b43165328658087277b667152fdbc04fe07cba08 Mon Sep 17 00:00:00 2001 From: Jan-Simon Möller Date: Tue, 15 May 2018 14:46:21 +0200 Subject: 3rd part of the layer/profile rework [1/2] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is the last larger commit in this series and deals with the graphical part. We introduce the graphical profiles: - meta-agl-profile-graphical -- meta-agl-profile-graphical-html5 -- meta-agl-profile-graphical-qt5 Notable changes: - weston-ini-conf moved to the meta-agl-bsp layer. Most BSPs have bbappends, so we need to have the recipes present (but unused) even in the console images. - new image: agl-image-boot = terminal-only + network + package-manaager. Ready for using package-feeds - new image/sdk: agl-image-minimal-crosssdk - agl-service-mediaplayer has a dependency on weston, thus it cannot be in the 'core'. Moved it to profile-graphical. - The wayland-ivi-extension moved to the agl-demo-platform. - The app-framework layer included and pulled 'web-runtime' as dependency. This broke console-only images. This has been moved to be in meta-agl-demo only for now. - added and massaged the agl-features. - found and added a useful script 'oe-depends-dot' that helps to work with the dot files (produced with bitbake -g) Todo: - we'll need another pass through the packagegroups. The dependencies for the layers/profiles are now sorted-out but we might have to add/shuffle a few packages. For further details, see meta-agl/docs/profiles.md. v2: fix meta-agl/meta-security/conf/layer.conf - the immediate expansion previously used in there caused some recipes not being added to BBFILES. v3: fix packagegroup renaming (packagegroup-agl-devel -> packagegroup-agl-core-devel) v4: fix missing packagegroup inclusion (tnx Jose, Scott, Stephane) v5: fix missing packagegroup inclusion v6: explicitely put profile-graphical-qt5 on-top of profile-graphical v7: re-add 'procps' when agl-devel feature is on Bug-AGL: SPEC-145 Change-Id: I24cdcd1118932758d0c55d333338238f2a770877 Signed-off-by: Jan-Simon Möller --- meta-agl-profile-graphical-html5/conf/layer.conf | 10 ++++ .../openivi-html5/openivi-html5.service | 16 +++++++ .../openivi-html5/openivi-html5/openivi-html5.sh | 50 +++++++++++++++++++ .../openivi-html5/openivi-html5_git.bb | 43 +++++++++++++++++ .../images/agl-demo-platform-html5-crosssdk.bb | 56 ++++++++++++++++++++++ .../images/agl-demo-platform-html5.bb | 10 ++++ .../images/agl-demo-platform-html5.inc | 2 + .../packagegroup-agl-demo-platform-html5.bb | 26 ++++++++++ 8 files changed, 213 insertions(+) create mode 100644 meta-agl-profile-graphical-html5/conf/layer.conf create mode 100644 meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.service create mode 100644 meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.sh create mode 100644 meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5_git.bb create mode 100755 meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5-crosssdk.bb create mode 100644 meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.bb create mode 100644 meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.inc create mode 100644 meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb (limited to 'meta-agl-profile-graphical-html5') diff --git a/meta-agl-profile-graphical-html5/conf/layer.conf b/meta-agl-profile-graphical-html5/conf/layer.conf new file mode 100644 index 000000000..4d84dba52 --- /dev/null +++ b/meta-agl-profile-graphical-html5/conf/layer.conf @@ -0,0 +1,10 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH =. "${LAYERDIR}:" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "aglprofilegraphicalhtml5" +BBFILE_PATTERN_aglprofilegraphicalhtml5 = "^${LAYERDIR}/" +BBFILE_PRIORITY_aglprofilegraphicalhtml5 = "70" diff --git a/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.service b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.service new file mode 100644 index 000000000..2c8648475 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.service @@ -0,0 +1,16 @@ +[Unit] +Description=HTML5 runtime for OpenIVI Mobility applications +Requires=afm-user-daemon.service InputEventManager.service +After=afm-user-daemon.service InputEventManager.service +ConditionKernelCommandLine=!agl.nogfx + +[Service] +Type=dbus +BusName=org.agl.openivi +ExecStart=/usr/bin/openivi-html5.sh +Restart=on-failure +RestartSec=5 +TimeoutStopSec=1 + +[Install] +WantedBy=default.target diff --git a/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.sh b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.sh new file mode 100644 index 000000000..a318214ad --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5/openivi-html5.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +if test -z "$XDG_CONFIG_DIRS"; then + export XDG_CONFIG_DIRS=/etc/xdg/ +fi + +if test -z "$XDG_RUNTIME_DIR"; then + export XDG_RUNTIME_DIR=/run/user/$UID + mkdir --parents $XDG_RUNTIME_DIR + chmod 0700 $XDG_RUNTIME_DIR +fi + +# Default homescreen +HOMESCREEN=/usr/share/openivi/example/cluster/index.html + +# Read configuration +HOMESCREEN_CONFIG=$XDG_CONFIG_DIRS/openivi-html5/openivi-html5.ini +if [ -e "$HOMESCREEN_CONFIG" ] ; then + HTML=`sed -n '/^homescreen=\(.*\)$/s//\1/p' < $HOMESCREEN_CONFIG` + if [ -n "$HTML" ] ; then + HOMESCREEN=$HTML + fi +fi + +#the following value shall be modified for your display side +SCREEN_W=1080 +SCREEN_H=1920 + +# Demo is configured to FullHD +QT_W=1080 +QT_H=1920 + +QT_IVI_SURFACE_ID=4194304 QT_WAYLAND_SHELL_INTEGRATION=ivi-shell /usr/bin/openivi-html5 -f -u $HOMESCREEN & + +# qmlscene create 2 surfaces +# 0x80000000 : for off screen buffer ? +# 0x80000001 : visible +# +SURFACE_ID_QML=0x80000001 + +# +# layer-add-surfaces wait till 2 surfaces are created. +# +layer-add-surfaces 1000 2 + +/usr/bin/LayerManagerControl set surface $SURFACE_ID_QML destination region 0 0 $SCREEN_W $SCREEN_H +/usr/bin/LayerManagerControl set surface $SURFACE_ID_QML source region 0 0 $QT_W $QT_H +/usr/bin/LayerManagerControl set layer 1000 render order $SURFACE_ID_QML +/usr/bin/LayerManagerControl set surfaces $SURFACE_ID_QML input focus keyboard +/usr/bin/LayerManagerControl set screen 0 render order 1000 diff --git a/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5_git.bb b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5_git.bb new file mode 100644 index 000000000..168b98c78 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-openivi/openivi-html5/openivi-html5_git.bb @@ -0,0 +1,43 @@ +DESCRIPTION = "OpenIVI Mobility HTML5 environment" +HOMEPAGE = "https://openivimobility.github.io/" +SECTION = "base" +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4641e94ec96f98fabc56ff9cc48be14b" +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI = " \ + git://github.com/openivimobility/openivi-html5.git;branch=master;tag=0b370eea8c7c852365bd717013a523b678abbdba \ + file://openivi-html5.sh \ + file://openivi-html5.service \ +" + +inherit pkgconfig cmake_qt5 externalsrc systemd +PV = "0.1" + +S = "${WORKDIR}/git" + +RDEPENDS_${PN} = "qtbase qtwebkit inputeventmanager windowmanager" +DEPENDS = "qtbase-native qtbase qtwebkit" + +EXTRA_OECMAKE = " -DCMAKE_DISABLE_FIND_PACKAGE_X11=TRUE " + +FILES_${PN} = "/usr/bin/openivi-html5 /usr/share/openivi/*" + +do_install() { + install -d ${D}${bindir} + install -m 0755 openivi-html5 ${D}${bindir} + + install -d ${D}${datadir}/openivi/ + cp -r ${S}/example ${D}${datadir}/openivi/ + + install -p -D ${WORKDIR}/openivi-html5.sh ${D}${bindir}/openivi-html5.sh + + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${systemd_user_unitdir} + install -p -D ${WORKDIR}/openivi-html5.service ${D}${systemd_user_unitdir}/openivi-html5.service + install -d ${D}${sysconfdir}/systemd/user/default.target.wants + ln -sf ${systemd_user_unitdir}/openivi-html5.service ${D}${sysconfdir}/systemd/user/default.target.wants + fi +} + +FILES_${PN} += " ${prefix}/bin/openivi-html5.sh ${systemd_user_unitdir} ${sysconfdir}" diff --git a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5-crosssdk.bb b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5-crosssdk.bb new file mode 100755 index 000000000..a81472bb7 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5-crosssdk.bb @@ -0,0 +1,56 @@ +SUMMARY = "Cross SDK of Full AGL Distribution for IVI profile" + +DESCRIPTION = "SDK image for full AGL Distribution for IVI profile. \ +It includes the full meta-toolchain, plus developement headers and libraries \ +to form a standalone cross SDK." + +require agl-demo-platform-html5.bb + +LICENSE = "MIT" + +IMAGE_FEATURES_append = " dev-pkgs" +IMAGE_INSTALL_append = " kernel-dev kernel-devsrc" + +inherit populate_sdk populate_sdk_qt5 + +# Task do_populate_sdk and do_rootfs can't be exec simultaneously. +# Both exec "createrepo" on the same directory, and so one of them +# can failed (randomly). +addtask do_populate_sdk after do_rootfs + +# native tools to support Chromium build inside SDK (SPEC-942) +TOOLCHAIN_HOST_TASK += " \ + nativesdk-gn \ + nativesdk-ninja \ + nativesdk-gperf \ + nativesdk-zlib \ + nativesdk-xz \ + nativesdk-nspr-dev \ + nativesdk-nss-dev \ + nativesdk-lua \ + " + +# required dependencies for Chromium build inside SDK (SPEC-942) +TOOLCHAIN_TARGET_TASK += " \ + pciutils-dev \ + pulseaudio-dev \ + cairo-dev \ + nss-dev \ + cups-dev \ + gconf-dev \ + libexif-dev \ + pango-dev \ + libdrm-dev \ + libssp-dev \ + lua-dev \ + lua-staticdev \ + ${@bb.utils.contains('LICENSE_FLAGS_WHITELIST', 'commercial', 'ffmpeg-dev', '', d)} \ + " + +# Add wayland-scanner to SDK (SPEC-945) +# Use TOOLCHAIN_HOST_TASK instead of adding to the packagegroup +# wayland-scanner is in nativesdk-wayland-dev ! +# option: add also nativesdk-qtwayland-tools +TOOLCHAIN_HOST_TASK_append = " nativesdk-wayland nativesdk-wayland-dev" + +TOOLCHAIN_HOST_TASK_append = " nativesdk-perl-modules " diff --git a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.bb b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.bb new file mode 100644 index 000000000..c9247a854 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.bb @@ -0,0 +1,10 @@ +DESCRIPTION = "AGL Demo Platform image currently contains a simple HMI and \ +demos." + +LICENSE = "MIT" + +require agl-demo-platform-html5.inc + +IMAGE_INSTALL_append = "\ + packagegroup-agl-demo-platform-html5 \ + " diff --git a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.inc b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.inc new file mode 100644 index 000000000..3005abeb0 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-demo-platform-html5.inc @@ -0,0 +1,2 @@ +# Base image +require recipes-ivi/images/agl-image-ivi.inc diff --git a/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb b/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb new file mode 100644 index 000000000..ee5c1f701 --- /dev/null +++ b/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb @@ -0,0 +1,26 @@ +SUMMARY = "The software for DEMO platform of AGL IVI profile" +DESCRIPTION = "A set of packages belong to AGL Demo Platform" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-demo-platform-html5 \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-agl-image-ivi \ + " + +# add packages for demo platform (include demo apps) here +#RDEPENDS_${PN} += " \ +# packagegroup-agl-demo \ +# " + +# add packages for OpenIVI-HTML5 demo +RDEPENDS_${PN} += " \ + openivi-html5 \ + " -- cgit 1.2.3-korg